From 36ecae477e80cb2daedb308ec00be374db8af169 Mon Sep 17 00:00:00 2001
From: Kevin Cristiano <kcristiano@kcristiano.com>
Date: Fri, 5 Jan 2024 07:33:43 -0500
Subject: [PATCH] civicrm release-5.69.0

---
 .../metaboxes/metabox.contact.add.php         |    13 +-
 .../metaboxes/metabox.error.help.php          |     6 +
 .../metaboxes/metabox.error.path.php          |    15 +-
 .../templates/metaboxes/metabox.error.php.php |    16 +-
 .../metaboxes/metabox.options.basepage.php    |    13 +-
 .../metaboxes/metabox.options.cache.php       |     7 +-
 .../metaboxes/metabox.options.email.php       |     9 +-
 .../metaboxes/metabox.options.links.php       |     9 +-
 .../metaboxes/metabox.options.permissions.php |     5 +
 .../metaboxes/metabox.options.shortcode.php   |     9 +-
 .../templates/metaboxes/metabox.repo.ext.php  |    17 +-
 .../templates/metaboxes/metabox.repo.git.php  |    19 +-
 .../metaboxes/metabox.repo.wordpress.php      |    35 +-
 assets/templates/pages/page.error.php         |    13 +-
 assets/templates/pages/page.integration.php   |    11 +-
 assets/templates/pages/page.options.php       |    11 +-
 civicrm.php                                   |   113 +-
 civicrm/CRM/Activity/BAO/Activity.php         |    21 +-
 civicrm/CRM/Activity/Form/Activity.php        |    72 +-
 .../CRM/Activity/Form/ActivityFormTrait.php   |    51 +
 civicrm/CRM/Activity/Form/ActivityView.php    |    16 +-
 civicrm/CRM/Activity/Page/AJAX.php            |     5 +-
 civicrm/CRM/Activity/Page/Tab.php             |    21 +-
 .../CRM/Admin/Form/ParticipantStatusType.php  |     9 +-
 .../CRM/Admin/Form/Preferences/Contribute.php |   154 +-
 civicrm/CRM/Admin/Form/PreferencesDate.php    |     7 +
 .../CRM/Admin/Form/Setting/Miscellaneous.php  |    14 +-
 civicrm/CRM/Admin/Form/SettingTrait.php       |    40 +-
 civicrm/CRM/Admin/Page/Job.php                |     3 -
 civicrm/CRM/Admin/Page/LabelFormats.php       |     6 +-
 civicrm/CRM/Api4/Page/AJAX.php                |     4 +-
 civicrm/CRM/Badge/BAO/Badge.php               |    12 +-
 civicrm/CRM/Batch/Form/Entry.php              |    22 +-
 civicrm/CRM/Campaign/BAO/Survey.php           |     5 +-
 civicrm/CRM/Campaign/Form/Search.php          |     7 +-
 civicrm/CRM/Campaign/Form/Task/Interview.php  |    12 +-
 civicrm/CRM/Campaign/Form/Task/Release.php    |     6 +-
 civicrm/CRM/Campaign/Page/AJAX.php            |     5 +-
 civicrm/CRM/Case/Audit/Audit.php              |     6 +-
 civicrm/CRM/Case/BAO/Case.php                 |    42 +-
 civicrm/CRM/Case/Form/Activity/OpenCase.php   |     9 +-
 civicrm/CRM/Case/Form/ActivityToCase.php      |    13 +
 civicrm/CRM/Case/Form/DeleteClient.php        |     5 +-
 civicrm/CRM/Case/Form/EditClient.php          |     5 +-
 civicrm/CRM/Case/Info.php                     |    11 -
 civicrm/CRM/Case/XMLProcessor/Report.php      |     9 +-
 civicrm/CRM/Contact/BAO/Contact.php           |    23 +-
 civicrm/CRM/Contact/BAO/Contact/Utils.php     |    13 +-
 civicrm/CRM/Contact/BAO/ContactType.php       |     6 +-
 civicrm/CRM/Contact/BAO/Individual.php        |    33 +-
 civicrm/CRM/Contact/BAO/Query.php             |    31 +-
 civicrm/CRM/Contact/BAO/Relationship.php      |     8 +-
 civicrm/CRM/Contact/Form/Contact.php          |    55 +-
 civicrm/CRM/Contact/Form/Edit/Address.php     |     5 +-
 civicrm/CRM/Contact/Form/GroupContact.php     |     9 +-
 civicrm/CRM/Contact/Form/Inline.php           |     1 +
 civicrm/CRM/Contact/Form/Merge.php            |     1 +
 civicrm/CRM/Contact/Form/RelatedContact.php   |     6 +-
 civicrm/CRM/Contact/Form/Search/Builder.php   |     6 +-
 civicrm/CRM/Contact/Form/Task/Delete.php      |    18 +-
 .../CRM/Contact/Form/Task/PDFLetterCommon.php |    39 -
 civicrm/CRM/Contact/Form/Task/PDFTrait.php    |    17 +-
 civicrm/CRM/Contact/Form/Task/Result.php      |     5 +-
 civicrm/CRM/Contact/Import/Parser/Contact.php |   121 +-
 civicrm/CRM/Contact/Selector.php              |     9 +-
 civicrm/CRM/Contact/Task.php                  |     6 +-
 civicrm/CRM/Contribute/BAO/Contribution.php   |    45 +-
 .../CRM/Contribute/BAO/ContributionPage.php   |    13 +-
 .../CRM/Contribute/BAO/ContributionSoft.php   |     4 +
 civicrm/CRM/Contribute/BAO/Premium.php        |    16 +-
 civicrm/CRM/Contribute/DAO/Premium.php        |     5 +-
 civicrm/CRM/Contribute/DAO/Product.php        |    14 +-
 .../Contribute/Form/AbstractEditPayment.php   |    24 +-
 .../CRM/Contribute/Form/AdditionalInfo.php    |     5 +-
 .../CRM/Contribute/Form/AdditionalPayment.php |   169 +-
 .../Contribute/Form/CancelSubscription.php    |     7 +
 civicrm/CRM/Contribute/Form/Contribution.php  |   239 +-
 .../Contribute/Form/Contribution/Confirm.php  |   367 +-
 .../CRM/Contribute/Form/Contribution/Main.php |   370 +-
 .../Contribute/Form/Contribution/ThankYou.php |   106 +-
 .../CRM/Contribute/Form/ContributionBase.php  |   587 +-
 .../Contribute/Form/ContributionCharts.php    |    10 +-
 .../CRM/Contribute/Form/ContributionPage.php  |    13 +
 .../Form/ContributionPage/AddProduct.php      |    18 +-
 .../Form/ContributionPage/Amount.php          |    20 +-
 .../Form/ContributionPage/Premium.php         |    14 -
 .../CRM/Contribute/Form/ContributionRecur.php |     8 +
 .../CRM/Contribute/Form/ContributionView.php  |     2 +
 .../CRM/Contribute/Form/ManagePremiums.php    |     2 +-
 civicrm/CRM/Contribute/Form/Search.php        |     5 +-
 civicrm/CRM/Contribute/Form/Task/Invoice.php  |    16 +-
 civicrm/CRM/Contribute/Form/Task/PDF.php      |    11 +-
 .../CRM/Contribute/Form/Task/PDFLetter.php    |     2 +-
 civicrm/CRM/Contribute/Form/UpdateBilling.php |     2 -
 .../Contribute/Form/UpdateSubscription.php    |    12 +-
 civicrm/CRM/Contribute/Page/DashBoard.php     |     6 +-
 .../CRM/Contribute/Page/ManagePremiums.php    |    61 +-
 .../Contribution/BasicContribution.php        |    59 +-
 .../WorkflowMessage/ContributionTrait.php     |    42 +-
 .../PaymentOrRefundNotification.php           |    34 +
 .../CRM/Contribute/xml/Menu/Contribute.xml    |     5 +
 civicrm/CRM/Core/BAO/ActionSchedule.php       |     1 +
 civicrm/CRM/Core/BAO/Address.php              |    20 +-
 civicrm/CRM/Core/BAO/ConfigSetting.php        |     8 +-
 civicrm/CRM/Core/BAO/CustomField.php          |    46 +-
 civicrm/CRM/Core/BAO/CustomGroup.php          |    10 +-
 civicrm/CRM/Core/BAO/CustomQuery.php          |     2 +-
 civicrm/CRM/Core/BAO/CustomValue.php          |     2 +-
 civicrm/CRM/Core/BAO/File.php                 |     3 +-
 civicrm/CRM/Core/BAO/Mapping.php              |     2 +-
 civicrm/CRM/Core/BAO/MessageTemplate.php      |     7 +
 civicrm/CRM/Core/BAO/Note.php                 |     6 +-
 civicrm/CRM/Core/BAO/UFGroup.php              |    23 +-
 civicrm/CRM/Core/BAO/UFMatch.php              |    28 +
 civicrm/CRM/Core/BAO/UserJob.php              |     4 +-
 civicrm/CRM/Core/Block.php                    |     5 +-
 civicrm/CRM/Core/CodeGen/I18n.php             |     6 +
 civicrm/CRM/Core/CodeGen/Reflection.php       |     6 +-
 civicrm/CRM/Core/CodeGen/Specification.php    |     6 +-
 civicrm/CRM/Core/Component.php                |    41 +-
 civicrm/CRM/Core/Component/Info.php           |    11 -
 civicrm/CRM/Core/Config.php                   |     6 +-
 civicrm/CRM/Core/DAO/MessageTemplate.php      |     9 +-
 civicrm/CRM/Core/DAO/PreferencesDate.php      |     6 +-
 civicrm/CRM/Core/DAO/UFMatch.php              |    11 +-
 civicrm/CRM/Core/Form.php                     |    55 +-
 civicrm/CRM/Core/Form/Renderer.php            |     2 +-
 civicrm/CRM/Core/Form/Search.php              |     6 +-
 civicrm/CRM/Core/Invoke.php                   |     4 +-
 civicrm/CRM/Core/Menu.php                     |     2 +-
 civicrm/CRM/Core/OptionValue.php              |     7 +-
 civicrm/CRM/Core/Page.php                     |    10 +
 civicrm/CRM/Core/Page/AJAX/Location.php       |    31 +-
 civicrm/CRM/Core/Payment.php                  |    47 +-
 civicrm/CRM/Core/Payment/AuthorizeNetIPN.php  |    31 +-
 civicrm/CRM/Core/Payment/Dummy.php            |     4 +-
 civicrm/CRM/Core/Payment/Form.php             |     3 +-
 civicrm/CRM/Core/Payment/ProcessorForm.php    |    18 +-
 civicrm/CRM/Core/Permission.php               |    12 +-
 civicrm/CRM/Core/Resources.php                |    26 +
 civicrm/CRM/Core/Resources/Common.php         |    13 +-
 .../Smarty/plugins/function.sectionTotal.php  |     9 +-
 .../function.simpleActivityContacts.php       |     5 +-
 civicrm/CRM/Core/SmartyCompatibility.php      |     2 +-
 civicrm/CRM/Core/xml/Menu/Admin.xml           |     7 +-
 civicrm/CRM/Custom/Form/CustomData.php        |     2 +-
 civicrm/CRM/Dedupe/Finder.php                 |     5 +-
 civicrm/CRM/Dedupe/Merger.php                 |     5 +-
 civicrm/CRM/Event/BAO/Participant.php         |     5 +-
 civicrm/CRM/Event/BAO/Query.php               |    14 +-
 civicrm/CRM/Event/DAO/Event.php               |    34 +-
 civicrm/CRM/Event/Form/EventFees.php          |     3 +
 .../CRM/Event/Form/ManageEvent/EventInfo.php  |    13 +-
 civicrm/CRM/Event/Form/Participant.php        |   324 +-
 .../Event/Form/ParticipantFeeSelection.php    |     1 +
 civicrm/CRM/Event/Form/Registration.php       |    80 +-
 .../CRM/Event/Form/Registration/Confirm.php   |   218 +-
 .../CRM/Event/Form/Registration/ThankYou.php  |     6 +-
 civicrm/CRM/Event/Form/SelfSvcUpdate.php      |    41 +-
 civicrm/CRM/Event/Form/Task/Badge.php         |     7 +
 civicrm/CRM/Event/Form/Task/Batch.php         |    10 +-
 civicrm/CRM/Event/Tokens.php                  |    10 +-
 .../WorkflowMessage/ParticipantTrait.php      |    35 +-
 civicrm/CRM/Export/BAO/ExportProcessor.php    |    16 +-
 civicrm/CRM/Export/Form/Select.php            |     2 +-
 civicrm/CRM/Extension/Browser.php             |     9 +-
 civicrm/CRM/Extension/Downloader.php          |    11 +-
 civicrm/CRM/Extension/Upgrader/Component.php  |     3 +-
 civicrm/CRM/Financial/BAO/ExportFormat.php    |    13 +
 civicrm/CRM/Financial/BAO/Order.php           |   101 +-
 civicrm/CRM/Financial/BAO/Payment.php         |    15 +-
 .../CRM/Financial/BAO/PaymentProcessor.php    |     7 +-
 civicrm/CRM/Financial/FinancialTrxnTokens.php |    36 +
 .../CRM/Financial/Form/FinancialAccount.php   |     7 +-
 civicrm/CRM/Financial/Form/FinancialType.php  |     6 +-
 civicrm/CRM/Financial/Form/Payment.php        |     7 +-
 .../Form/PaymentProcessorFormTrait.php        |   104 +
 civicrm/CRM/Financial/Form/SalesTaxTrait.php  |     5 +-
 civicrm/CRM/Friend/Form.php                   |    12 +-
 civicrm/CRM/Import/DataSource.php             |   195 +-
 civicrm/CRM/Import/DataSource/CSV.php         |   107 +-
 civicrm/CRM/Import/DataSource/SQL.php         |    10 +-
 civicrm/CRM/Import/Form/DataSource.php        |     2 -
 civicrm/CRM/Import/Form/DataSourceConfig.php  |     4 +-
 civicrm/CRM/Import/Forms.php                  |    10 +-
 civicrm/CRM/Invoicing/Utils.php               |    11 +-
 civicrm/CRM/Mailing/BAO/Mailing.php           |    26 +-
 civicrm/CRM/Mailing/BAO/MailingComponent.php  |     2 +-
 civicrm/CRM/Mailing/BAO/MailingJob.php        |     8 +-
 civicrm/CRM/Mailing/DAO/Mailing.php           |    10 +-
 civicrm/CRM/Mailing/DAO/MailingComponent.php  |     7 +-
 civicrm/CRM/Mailing/DAO/MailingJob.php        |    13 +-
 civicrm/CRM/Mailing/Form/Component.php        |    11 +-
 civicrm/CRM/Mailing/Info.php                  |    17 -
 civicrm/CRM/Mailing/MailStore.php             |     6 +-
 civicrm/CRM/Mailing/MailStore/Maildir.php     |     5 +-
 civicrm/CRM/Mailing/Page/Common.php           |     2 +-
 civicrm/CRM/Mailing/Page/View.php             |    11 +-
 civicrm/CRM/Mailing/PseudoConstant.php        |     2 +-
 civicrm/CRM/Mailing/Selector/Browse.php       |    10 +-
 civicrm/CRM/Mailing/xml/Menu/Mailing.xml      |     9 +
 civicrm/CRM/Member/BAO/MembershipBlock.php    |    42 +-
 civicrm/CRM/Member/BAO/MembershipStatus.php   |    19 +
 civicrm/CRM/Member/BAO/MembershipType.php     |    38 +-
 civicrm/CRM/Member/Form.php                   |    34 +-
 civicrm/CRM/Member/Form/Membership.php        |    24 +-
 civicrm/CRM/Member/Form/MembershipBlock.php   |    45 +-
 civicrm/CRM/Member/Form/MembershipRenewal.php |    21 +-
 civicrm/CRM/Member/Form/MembershipType.php    |    18 +-
 civicrm/CRM/Member/Form/Task/Label.php        |    13 +-
 civicrm/CRM/Member/Form/Task/PDFLetter.php    |    11 +-
 civicrm/CRM/Member/Page/Tab.php               |    38 +-
 civicrm/CRM/Member/Page/UserDashboard.php     |     5 +-
 civicrm/CRM/Member/StatusOverrideTypes.php    |    24 +-
 .../WorkflowMessage/Membership/Membership.php |    81 +-
 .../MembershipOfflineReceipt.php              |     9 -
 .../WorkflowMessage/MembershipTrait.php       |     2 +-
 civicrm/CRM/PCP/Form/Event.php                |     5 +-
 civicrm/CRM/PCP/Page/PCPInfo.php              |     4 +-
 civicrm/CRM/Price/BAO/LineItem.php            |     9 +-
 civicrm/CRM/Price/BAO/PriceField.php          |    14 +-
 civicrm/CRM/Price/BAO/PriceSet.php            |    81 +-
 civicrm/CRM/Price/Page/Option.php             |     2 +-
 civicrm/CRM/Profile/Form.php                  |     7 +-
 civicrm/CRM/Profile/Form/Search.php           |     5 +-
 civicrm/CRM/Profile/Selector/Listings.php     |    19 +-
 civicrm/CRM/Queue/ErrorPolicy.php             |    12 +-
 civicrm/CRM/Queue/TaskRunner.php              |    10 +-
 civicrm/CRM/Report/Form.php                   |     9 +-
 civicrm/CRM/Report/Form/Activity.php          |    60 +-
 .../Report/Form/Campaign/SurveyDetails.php    |     5 +-
 civicrm/CRM/Report/Form/Case/Detail.php       |    34 +-
 civicrm/CRM/Report/Form/Case/TimeSpent.php    |    24 +
 .../Form/Contribute/HouseholdSummary.php      |    42 +-
 .../CRM/Report/Form/Contribute/Summary.php    |     6 +-
 .../CRM/Report/Form/Contribute/TopDonor.php   |    18 +-
 civicrm/CRM/Report/Form/Mailing/Detail.php    |     7 +-
 civicrm/CRM/Report/Form/Mailing/Summary.php   |     5 +
 civicrm/CRM/Report/Form/Member/Detail.php     |    20 +-
 .../CRM/Report/Form/Membership/Summary.php    |     6 +-
 civicrm/CRM/Report/Form/Pledge/Pbnp.php       |     6 +-
 civicrm/CRM/Report/Page/Instance.php          |     2 +-
 civicrm/CRM/Report/Page/Report.php            |     2 +-
 civicrm/CRM/Report/Utils/Get.php              |     5 +-
 civicrm/CRM/Report/Utils/Report.php           |     2 +-
 civicrm/CRM/SMS/Form/Group.php                |    12 +-
 civicrm/CRM/SMS/Page/Provider.php             |     7 -
 civicrm/CRM/UF/Form/Field.php                 |    20 +-
 .../Upgrade/Incremental/MessageTemplates.php  |    13 +-
 .../Upgrade/Incremental/php/FiveSixtyNine.php |    42 +
 .../Incremental/sql/5.69.alpha1.mysql.tpl     |    12 +
 civicrm/CRM/Utils/Address.php                 |    22 +-
 civicrm/CRM/Utils/Cache.php                   |    13 +-
 civicrm/CRM/Utils/Cache/CacheWrapper.php      |   106 +
 civicrm/CRM/Utils/Cache/SqlGroup.php          |     2 +-
 civicrm/CRM/Utils/Chart.php                   |    12 +-
 civicrm/CRM/Utils/Check/Component/Cms.php     |    66 +
 civicrm/CRM/Utils/Check/Component/Env.php     |    50 +
 .../Utils/Check/Component/LocationTypes.php   |    47 +
 .../CRM/Utils/Check/Component/PriceFields.php |    73 +-
 civicrm/CRM/Utils/Check/Component/Smarty.php  |    52 +
 civicrm/CRM/Utils/File.php                    |    25 +-
 civicrm/CRM/Utils/Number.php                  |    36 +-
 civicrm/CRM/Utils/PDF/Label.php               |    14 +
 civicrm/CRM/Utils/PDF/Utils.php               |    31 +-
 civicrm/CRM/Utils/REST.php                    |     6 +-
 civicrm/CRM/Utils/Rule.php                    |    35 +-
 civicrm/CRM/Utils/System.php                  |    14 +-
 civicrm/CRM/Utils/System/Base.php             |     8 +-
 civicrm/CRM/Utils/System/Drupal8.php          |     6 +-
 civicrm/CRM/Utils/System/Joomla.php           |     2 +
 civicrm/CRM/Utils/System/Standalone.php       |    56 +-
 civicrm/CRM/Utils/Token.php                   |    22 +-
 civicrm/Civi/Angular/Manager.php              |   113 +-
 civicrm/Civi/Api4/Action/Entity/GetLinks.php  |     2 +-
 civicrm/Civi/Api4/CustomValue.php             |    11 +
 .../Civi/Api4/Generic/AutocompleteAction.php  |    14 +
 .../Api4/Generic/BasicGetFieldsAction.php     |     1 +
 civicrm/Civi/Api4/Mapping.php                 |     2 +-
 .../Api4/PreferencesDate.php}                 |    35 +-
 civicrm/Civi/Api4/Provider.php                |    24 +
 civicrm/Civi/Api4/Query/Api4SelectQuery.php   |     4 +-
 civicrm/Civi/Api4/Query/SqlFunction.php       |     9 +-
 .../Api4/Query/SqlFunctionGROUP_FIRST.php     |    66 +
 civicrm/Civi/Api4/Queue.php                   |     2 +-
 .../CustomValueAutocompleteProvider.php       |    76 +
 .../EntityAutocompleteProvider.php            |     2 +-
 .../Api4/Service/Schema/Joinable/Joinable.php |    13 +-
 .../Api4/Service/Schema/SchemaMapBuilder.php  |    15 +-
 .../Provider/IsCurrentFieldSpecProvider.php   |     9 +-
 .../Civi/Api4/Service/Spec/SpecFormatter.php  |     7 +-
 civicrm/Civi/Api4/Utils/CoreUtil.php          |     3 +-
 civicrm/Civi/Api4/Utils/FormattingUtil.php    |     5 +-
 civicrm/Civi/Core/Container.php               |    14 +-
 civicrm/Civi/Crypto/CryptoJwt.php             |     9 +-
 .../Import/DataSource/DataSourceInterface.php |   131 +
 .../Import/DataSource/DataSourceTrait.php     |   289 +
 civicrm/Civi/Test/CiviTestListener.php        |     5 +
 .../Civi/Test/ContributionPageTestTrait.php   |   402 +-
 civicrm/Civi/Test/FormTrait.php               |    45 +-
 civicrm/Civi/Test/FormWrapper.php             |    18 +-
 civicrm/Civi/Test/Legacy/CiviTestListener.php |     5 +
 civicrm/Civi/Token/TokenCompatSubscriber.php  |    22 +-
 .../GenericWorkflowMessage.php                |    28 +
 .../WorkflowMessage/Traits/TemplateTrait.php  |     1 +
 civicrm/ang/crmUi.js                          |     2 +-
 civicrm/api/v3/Activity.php                   |    14 +-
 civicrm/api/v3/Contribution.php               |     7 +
 civicrm/api/v3/CustomValue.php                |     2 +-
 civicrm/api/v3/Mailing.php                    |    18 -
 civicrm/api/v3/MessageTemplate.php            |     6 +
 civicrm/api/v3/utils.php                      |    10 +-
 civicrm/bin/ContributionProcessor.php         |     6 +-
 civicrm/civicrm-version.php                   |     2 +-
 civicrm/composer.json                         |     2 +-
 civicrm/composer.lock                         |   305 +-
 civicrm/css/backdrop.css                      |    13 +
 civicrm/css/civicrm.css                       |   106 +-
 .../Civi/AfformAdmin/AfformAdminInjector.php  |    58 +-
 .../Civi/AfformAdmin/AfformAdminMeta.php      |     1 +
 .../ext/afform/admin/ang/afGuiEditor.ang.php  |     2 +-
 civicrm/ext/afform/admin/ang/afGuiEditor.css  |    98 +
 civicrm/ext/afform/admin/ang/afGuiEditor.js   |    23 +
 .../ang/afGuiEditor/afGuiClause.component.js  |    78 +
 .../admin/ang/afGuiEditor/afGuiClause.html    |    43 +
 .../afGuiEditor/afGuiCondition.component.js   |   100 +
 .../admin/ang/afGuiEditor/afGuiCondition.html |     2 +
 .../afGuiConditionalDialog.ctrl.js            |    62 +
 .../afGuiEditor/afGuiConditionalDialog.html   |     7 +
 .../ang/afGuiEditor/afGuiEditor.component.js  |    62 +-
 .../afGuiEditor/afGuiFieldValue.directive.js  |     4 +-
 .../afGuiMenuItemCollapsible.component.js     |    19 +-
 .../afGuiEditor/afGuiMenuItemCollapsible.html |    10 +-
 .../admin/ang/afGuiEditor/config-form.html    |    25 +-
 .../elements/afGuiButton-menu.html            |     2 +
 .../elements/afGuiButton.component.js         |     3 +
 .../afGuiConditionalMenu.directive.js         |    18 +
 .../elements/afGuiConditionalMenu.html        |     9 +
 .../elements/afGuiContainer-menu.html         |     4 +-
 .../elements/afGuiContainer.component.js      |    10 +-
 .../afGuiEditor/elements/afGuiField-menu.html |    15 +-
 .../elements/afGuiField.component.js          |    12 +
 .../elements/afGuiMarkup-menu.html            |     3 +
 .../elements/afGuiMarkup.component.js         |     3 +
 .../elements/afGuiSearchContainer-menu.html   |     2 +-
 .../afGuiEditor/elements/afGuiText-menu.html  |     2 +
 .../elements/afGuiText.component.js           |     3 +
 .../admin/ang/afGuiEditor/inputType/Date.html |     1 -
 civicrm/ext/afform/admin/info.xml             |     6 +-
 .../managed/FormSubmissionSavedSearch.mgd.php |    53 +-
 .../afform/core/CRM/Afform/AfformScanner.php  |    63 +-
 .../ext/afform/core/CRM/Afform/ArrayHtml.php  |     7 +-
 .../core/CRM/Afform/DAO/AfformSubmission.php  |    11 +-
 .../afform/core/CRM/Afform/Page/Verify.php    |    49 +
 .../Civi/Afform/AngularDependencyMapper.php   |   102 +-
 .../Afform/Event/AfformEntitySortEvent.php    |     2 +-
 .../Afform/Event/AfformEventEntityTrait.php   |     2 +-
 .../Civi/Afform/Event/AfformSubmitEvent.php   |     6 +-
 .../ext/afform/core/Civi/Afform/Tokens.php    |   126 +-
 .../Api4/Action/Afform/AbstractProcessor.php  |   165 +-
 .../core/Civi/Api4/Action/Afform/Get.php      |    61 +-
 .../core/Civi/Api4/Action/Afform/Process.php  |    52 +
 .../core/Civi/Api4/Action/Afform/Submit.php   |   203 +-
 .../Civi/Api4/Action/Afform/SubmitFile.php    |     2 +-
 civicrm/ext/afform/core/Civi/Api4/Afform.php  |    27 +
 civicrm/ext/afform/core/afform.php            |    71 +-
 .../afform/core/ang/af/afField.component.js   |     4 +
 .../afform/core/ang/af/afForm.component.js    |    55 +-
 .../ext/afform/core/ang/af/afIf.directive.js  |    80 +
 .../afform/core/ang/af/afTitle.directive.js   |    15 +-
 .../afform/core/ang/af/fields/EntityRef.html  |     2 +-
 .../afform/core/ang/af/fields/TextArea.html   |     2 +-
 .../ext/afform/core/ang/af/fields/Url.html    |     6 +
 civicrm/ext/afform/core/ang/afCore.css        |    32 +-
 civicrm/ext/afform/core/ang/afCore.js         |     2 +
 .../ext/afform/core/ang/afSearchTasks.ang.php |    14 +
 .../afform/core/ang/afSearchTasks.module.js   |     7 +
 .../afformSubmissionProcessTask.ctrl..js      |    59 +
 .../afformSubmissionProcessTask.html          |     7 +
 .../core/ang/afblockContactAddress.aff.json   |     6 -
 .../core/ang/afblockContactAddress.aff.php    |     7 +
 .../core/ang/afblockContactEmail.aff.json     |     6 -
 .../core/ang/afblockContactEmail.aff.php      |     7 +
 .../afform/core/ang/afblockContactIM.aff.json |     6 -
 .../afform/core/ang/afblockContactIM.aff.php  |     7 +
 .../core/ang/afblockContactNote.aff.json      |     7 -
 .../core/ang/afblockContactNote.aff.php       |     7 +
 .../core/ang/afblockContactPhone.aff.json     |     6 -
 .../core/ang/afblockContactPhone.aff.php      |     7 +
 .../core/ang/afblockContactWebsite.aff.json   |     6 -
 .../core/ang/afblockContactWebsite.aff.php    |     7 +
 .../core/ang/afblockNameHousehold.aff.json    |     5 -
 .../core/ang/afblockNameHousehold.aff.php     |     6 +
 .../core/ang/afblockNameIndividual.aff.json   |     5 -
 .../core/ang/afblockNameIndividual.aff.php    |     6 +
 .../core/ang/afblockNameOrganization.aff.json |     5 -
 .../core/ang/afblockNameOrganization.aff.php  |     6 +
 civicrm/ext/afform/core/info.xml              |     7 +-
 .../core/templates/CRM/Afform/Page/Verify.tpl |     6 +
 .../tests/phpunit/CRM/Afform/PageTest.php     |    50 +
 .../phpunit/Civi/Afform/AfformGetTest.php     |     4 +
 civicrm/ext/afform/core/xml/Menu/afform.xml   |    10 +
 .../schema/CRM/Afform/AfformSubmission.xml    |     4 +-
 .../ext/afform/html/ang/afHtmlAdmin.aff.json  |     5 -
 .../ext/afform/html/ang/afHtmlAdmin.aff.php   |     6 +
 civicrm/ext/afform/html/info.xml              |     6 +-
 civicrm/ext/afform/mock/ang/afex.aff.json     |     4 -
 civicrm/ext/afform/mock/ang/afex.aff.php      |     5 +
 .../afform/mock/ang/mock-weird-name.aff.json  |     3 -
 .../afform/mock/ang/mock-weird-name.aff.php   |     4 +
 civicrm/ext/afform/mock/ang/mockFoo.aff.json  |     1 -
 civicrm/ext/afform/mock/ang/mockFoo.aff.php   |     2 +
 civicrm/ext/afform/mock/ang/mockPage.aff.json |     6 -
 civicrm/ext/afform/mock/ang/mockPage.aff.php  |     7 +
 .../afform/mock/ang/mockPublicForm.aff.json   |     7 -
 .../afform/mock/ang/mockPublicForm.aff.php    |     8 +
 .../ext/afform/mock/ang/testAfform.aff.json   |     4 -
 .../ext/afform/mock/ang/testAfform.aff.php    |     5 +
 .../ang/testContactEmailSearchForm.aff.json   |     6 -
 .../ang/testContactEmailSearchForm.aff.php    |     7 +
 .../mock/ang/testMultipleSearchForm.aff.json  |     6 -
 .../mock/ang/testMultipleSearchForm.aff.php   |     7 +
 civicrm/ext/afform/mock/info.xml              |     6 +-
 civicrm/ext/afform/mock/phpunit.xml.dist      |    27 +-
 .../AfformAutocompleteUsageTest.php           |    15 +-
 .../{ => Afform}/AfformContactUsageTest.php   |    92 +-
 .../AfformCustomFieldUsageTest.php            |     5 +-
 .../v4/{ => Afform}/AfformFileUploadTest.php  |     5 +-
 .../{ => Afform}/AfformPrefillUsageTest.php   |     7 +-
 .../AfformRelationshipUsageTest.php           |     9 +-
 .../api/v4/{ => Afform}/AfformRoutingTest.php |    19 +-
 .../api/v4/{ => Afform}/AfformTest.php        |    24 +-
 .../api/v4/{ => Afform}/AfformTestCase.php    |     7 +-
 .../v4/{ => Afform}/AfformUsageTestCase.php   |     3 +-
 .../afform/mock/tests/phpunit/bootstrap.php   |    28 +-
 civicrm/ext/authx/Civi/Authx/Joomla.php       |     1 -
 civicrm/ext/authx/info.xml                    |     6 +-
 .../phpunit/Civi/Authx/AbstractFlowsTest.php  |   387 +
 .../tests/phpunit/Civi/Authx/AllFlowsTest.php |   943 -
 .../phpunit/Civi/Authx/CustomFlowsTest.php    |   102 +
 .../tests/phpunit/Civi/Authx/JwtCredsTest.php |    97 +
 .../phpunit/Civi/Authx/MixedFlowsTest.php     |   166 +
 .../phpunit/Civi/Authx/StatefulFlowsTest.php  |   132 +
 .../phpunit/Civi/Authx/StatelessFlowsTest.php |   141 +
 civicrm/ext/civi_campaign/info.xml            |     6 +-
 .../civi_case}/ang/crmCaseType.ang.php        |     4 +-
 .../{ => ext/civi_case}/ang/crmCaseType.css   |     0
 .../{ => ext/civi_case}/ang/crmCaseType.js    |     0
 .../ang/crmCaseType/activityTypesTable.html   |     0
 .../ang/crmCaseType/caseTypeDetails.html      |     0
 .../civi_case}/ang/crmCaseType/edit.html      |     0
 .../civi_case}/ang/crmCaseType/list.html      |     0
 .../ang/crmCaseType/rolesTable.html           |     0
 .../ang/crmCaseType/sequenceTable.html        |     0
 .../ang/crmCaseType/statusTable.html          |     0
 .../ang/crmCaseType/timelineTable.html        |     0
 civicrm/ext/civi_case/info.xml                |     7 +-
 .../ext/civi_contribute/Civi/Api4/Premium.php |    23 +
 .../Civi/Api4/PremiumsProduct.php             |    23 +
 civicrm/ext/civi_contribute/info.xml          |     6 +-
 civicrm/ext/civi_event/info.xml               |     6 +-
 .../civi_mail/Civi/Api4/MailingComponent.php  |    21 +
 .../ang/afsearchEmailBounceHistory.aff.json   |     7 -
 .../ang/afsearchEmailBounceHistory.aff.php    |     8 +
 .../civi_mail}/ang/crmMailing.ang.php         |     4 +-
 .../{ => ext/civi_mail}/ang/crmMailing.css    |     0
 civicrm/{ => ext/civi_mail}/ang/crmMailing.js |     0
 .../ang/crmMailing/BlockApprove.html          |     0
 .../civi_mail}/ang/crmMailing/BlockApprove.js |     0
 .../ang/crmMailing/BlockHeaderFooter.html     |     0
 .../ang/crmMailing/BlockHeaderFooter.js       |     0
 .../ang/crmMailing/BlockMailing.html          |     0
 .../civi_mail}/ang/crmMailing/BlockMailing.js |     0
 .../ang/crmMailing/BlockPreview.html          |     0
 .../civi_mail}/ang/crmMailing/BlockPreview.js |     0
 .../ang/crmMailing/BlockPublication.html      |     0
 .../ang/crmMailing/BlockPublication.js        |     0
 .../ang/crmMailing/BlockRecipients.html       |     0
 .../ang/crmMailing/BlockRecipients.js         |     0
 .../crmMailing/BlockRecipientsMultiline.html  |     0
 .../crmMailing/BlockRecipientsMultiline.js    |     0
 .../ang/crmMailing/BlockResponses.html        |     0
 .../ang/crmMailing/BlockResponses.js          |     0
 .../ang/crmMailing/BlockReview.html           |     0
 .../civi_mail}/ang/crmMailing/BlockReview.js  |     0
 .../ang/crmMailing/BlockSchedule.html         |     0
 .../ang/crmMailing/BlockSchedule.js           |     0
 .../ang/crmMailing/BlockSummary.html          |     0
 .../civi_mail}/ang/crmMailing/BlockSummary.js |     0
 .../ang/crmMailing/BlockTemplates.html        |     0
 .../ang/crmMailing/BlockTemplates.js          |     0
 .../ang/crmMailing/BlockTracking.html         |     0
 .../ang/crmMailing/BlockTracking.js           |     0
 .../civi_mail}/ang/crmMailing/BodyHtml.html   |     0
 .../civi_mail}/ang/crmMailing/BodyHtml.js     |     0
 .../civi_mail}/ang/crmMailing/BodyText.html   |     0
 .../civi_mail}/ang/crmMailing/BodyText.js     |     0
 .../ang/crmMailing/CreateMailingCtrl.js       |     0
 .../ang/crmMailing/EditMailingCtrl.js         |     0
 .../ang/crmMailing/EditMailingCtrl/2step.html |     0
 .../ang/crmMailing/EditMailingCtrl/base.html  |     0
 .../crmMailing/EditMailingCtrl/unified.html   |     0
 .../crmMailing/EditMailingCtrl/unified2.html  |     0
 .../crmMailing/EditMailingCtrl/wizard.html    |     0
 .../crmMailing/EditMailingCtrl/workflow.html  |     0
 .../ang/crmMailing/EditRecipCtrl.js           |     0
 .../EditRecipOptionsDialogCtrl.html           |     0
 .../crmMailing/EditRecipOptionsDialogCtrl.js  |     0
 .../ang/crmMailing/EditUnsubGroupCtrl.js      |     0
 .../ang/crmMailing/EmailAddrCtrl.js           |     0
 .../ang/crmMailing/EmailBodyCtrl.js           |     0
 .../crmMailing/EmailBodyCtrl/tokenAlert.html  |     0
 .../civi_mail}/ang/crmMailing/FromAddress.js  |     0
 .../ang/crmMailing/ListMailingsCtrl.js        |     0
 .../ang/crmMailing/MsgTemplateCtrl.js         |     0
 .../ang/crmMailing/PreviewComponentCtrl.js    |     0
 .../PreviewComponentDialogCtrl.html           |     0
 .../crmMailing/PreviewComponentDialogCtrl.js  |     0
 .../crmMailing/PreviewMailingDialogCtrl.js    |     0
 .../ang/crmMailing/PreviewMgr/full.html       |     0
 .../ang/crmMailing/PreviewMgr/html.html       |     0
 .../ang/crmMailing/PreviewMgr/text.html       |     0
 .../ang/crmMailing/PreviewRecipCtrl.html      |     0
 .../ang/crmMailing/PreviewRecipCtrl.js        |     0
 .../civi_mail}/ang/crmMailing/RadioDate.js    |     0
 .../civi_mail}/ang/crmMailing/ReviewBool.js   |     0
 .../crmMailing/SaveMsgTemplateDialogCtrl.html |     0
 .../crmMailing/SaveMsgTemplateDialogCtrl.js   |     0
 .../civi_mail}/ang/crmMailing/Templates.js    |     0
 .../civi_mail}/ang/crmMailing/Token.js        |     0
 .../ang/crmMailing/ViewRecipCtrl.js           |     0
 ...MailingRecipientsAutocomplete.component.js |     0
 .../civi_mail}/ang/crmMailing/services.js     |     0
 .../civi_mail}/ang/crmMailingAB.ang.php       |     4 +-
 .../{ => ext/civi_mail}/ang/crmMailingAB.css  |     0
 .../{ => ext/civi_mail}/ang/crmMailingAB.js   |     0
 .../ang/crmMailingAB/BlockMailing.html        |     0
 .../ang/crmMailingAB/BlockMailing.js          |     0
 .../ang/crmMailingAB/BlockSetup.html          |     0
 .../civi_mail}/ang/crmMailingAB/BlockSetup.js |     0
 .../civi_mail}/ang/crmMailingAB/EditCtrl.js   |     0
 .../ang/crmMailingAB/EditCtrl/edit.html       |     0
 .../ang/crmMailingAB/EditCtrl/main.html       |     0
 .../ang/crmMailingAB/EditCtrl/report.html     |     0
 .../civi_mail}/ang/crmMailingAB/ListCtrl.html |     0
 .../civi_mail}/ang/crmMailingAB/ListCtrl.js   |     0
 .../civi_mail}/ang/crmMailingAB/NewCtrl.js    |     0
 .../civi_mail}/ang/crmMailingAB/ReportCtrl.js |     0
 .../civi_mail}/ang/crmMailingAB/Slider.html   |     0
 .../civi_mail}/ang/crmMailingAB/Slider.js     |     0
 .../civi_mail}/ang/crmMailingAB/Stats.js      |     0
 .../ang/crmMailingAB/WinnerDialogCtrl.html    |     0
 .../ang/crmMailingAB/WinnerDialogCtrl.js      |     0
 .../civi_mail}/ang/crmMailingAB/services.js   |     0
 civicrm/ext/civi_mail/info.xml                |     7 +-
 .../civi_member/Civi/Api4/MembershipLog.php   |    25 +
 .../MembershipStatusGetSpecProvider.php       |    72 +
 civicrm/ext/civi_member/info.xml              |     6 +-
 civicrm/ext/civi_pledge/info.xml              |     6 +-
 civicrm/ext/civi_report/info.xml              |     6 +-
 .../ang/afsearchCiviCRMQueues.aff.html        |     5 +
 .../ang/afsearchCiviCRMQueues.aff.php         |    12 +
 ...eadersFootersAndAutomatedMessages.aff.html |     3 +
 ...HeadersFootersAndAutomatedMessages.aff.php |    14 +
 .../ang/afsearchImportExportMappings.aff.html |     7 +
 .../ang/afsearchImportExportMappings.aff.php  |    13 +
 .../afsearchSettingsDatePreferences.aff.html  |     7 +
 .../afsearchSettingsDatePreferences.aff.php   |    13 +
 civicrm/ext/civicrm_admin_ui/info.xml         |     6 +-
 .../managed/SavedSearch_ACL_Roles.mgd.php     |     5 +-
 ...nister_Assigned_Financial_Accounts.mgd.php |     5 +-
 ...vedSearch_Administer_Contact_Types.mgd.php |     7 +-
 ...vedSearch_Administer_Custom_Fields.mgd.php |    27 +-
 ...vedSearch_Administer_Custom_Groups.mgd.php |     6 +-
 ...arch_Administer_Financial_Accounts.mgd.php |     5 +-
 ...dSearch_Administer_Financial_Types.mgd.php |    12 +-
 ...edSearch_Administer_Location_Types.mgd.php |     5 +-
 ...avedSearch_Administer_Manage_Group.mgd.php |    11 +-
 ...arch_Administer_Payment_Processors.mgd.php |     5 +-
 ...vedSearch_Administer_ProfileFields.mgd.php |     5 +-
 .../SavedSearch_Administer_Profiles.mgd.php   |     2 +-
 ...arch_Administer_Relationship_Types.mgd.php |     5 +-
 ...rch_Administer_Scheduled_Reminders.mgd.php |     5 +-
 ...ers_Footers_and_Automated_Messages.mgd.php |   220 +
 ...SavedSearch_Import_Export_Mappings.mgd.php |   149 +
 .../managed/SavedSearch_Manage_ACLs.mgd.php   |     5 +-
 ...edSearch_Manage_Contribution_Pages.mgd.php |     6 +-
 .../SavedSearch_Manage_Mail_Accounts.mgd.php  |     2 +-
 .../SavedSearch_Manage_Scheduled_Jobs.mgd.php |     6 +-
 .../managed/SavedSearch_Queues.mgd.php        |   100 +
 .../SavedSearch_Scheduled_Jobs_Log.mgd.php    |     2 +-
 ...edSearch_Settings_Date_Preferences.mgd.php |   130 +
 .../ang/afsearchFindContributions.aff.html    |    26 +-
 .../ang/afsearchLabelFormat.aff.html          |    14 +
 .../ang/afsearchLabelFormat.aff.php           |    14 +
 civicrm/ext/civicrm_search_ui/info.xml        |     6 +-
 .../managed/SavedSearch_label_format.mgd.php  |   190 +
 civicrm/ext/civigrant/CRM/Grant/BAO/Query.php |     2 +-
 .../civigrant/CRM/Grant/Form/GrantView.php    |    48 +-
 .../CRM/Report/Form/Grant/Statistics.php      |     2 +-
 civicrm/ext/civigrant/info.xml                |     6 +-
 .../templates/CRM/Grant/Form/GrantView.tpl    |     4 +-
 .../Civi/Import/DataSource/Spreadsheet.php    |   182 +
 civicrm/ext/civiimport/info.xml               |     6 +-
 .../CRM/Import/DataSource/Spreadsheet.tpl     |    27 +
 civicrm/ext/ckeditor4/info.xml                |     6 +-
 .../ext/contributioncancelactions/info.xml    |     6 +-
 civicrm/ext/elavon/info.xml                   |     6 +-
 .../CRM/Event/Cart/Form/Checkout/Payment.php  |     7 +-
 .../CRM/Event/Cart/Form/MerParticipant.php    |     2 +-
 civicrm/ext/eventcart/info.xml                |     6 +-
 civicrm/ext/ewaysingle/info.xml               |     6 +-
 civicrm/ext/financialacls/financialacls.php   |    12 +-
 civicrm/ext/financialacls/info.xml            |     9 +-
 .../Civi/Financialacls/BaseTestClass.php      |     2 +
 .../Civi/Financialacls/ProductTest.php        |    36 +
 civicrm/ext/flexmailer/info.xml               |     6 +-
 .../flexmailer/src/Listener/DefaultSender.php |     6 +-
 .../FlexMailer/Listener/SimpleFilterTest.php  |     5 +-
 civicrm/ext/greenwich/dist/bootstrap3.css     |     4 +
 civicrm/ext/greenwich/dist/bootstrap3.min.css |     2 +-
 civicrm/ext/greenwich/info.xml                |     6 +-
 civicrm/ext/greenwich/scss/_tweaks.scss       |     4 +
 .../Form/Search/Custom/ActivitySearch.php     |     4 +-
 .../Contact/Form/Search/Custom/FullText.php   |    12 +-
 .../Contact/Form/Search/Custom/PriceSet.php   |    11 +-
 civicrm/ext/legacycustomsearches/info.xml     |     6 +-
 .../tests/phpunit/Civi/Searches/GroupTest.php |     2 +-
 civicrm/ext/message_admin/info.xml            |     6 +-
 civicrm/ext/oauth-client/info.xml             |     6 +-
 civicrm/ext/payflowpro/info.xml               |     6 +-
 civicrm/ext/recaptcha/info.xml                |     6 +-
 civicrm/ext/scheduled_communications/info.xml |     6 +-
 .../ext/search_kit/CRM/Search/Upgrader.php    |     2 +-
 .../SearchDisplay/AbstractRunAction.php       |     2 +-
 .../Subscriber/DefaultDisplaySubscriber.php   |     7 +-
 civicrm/ext/search_kit/Civi/Search/Meta.php   |     2 +-
 .../search_kit/ang/crmSearchAdmin.module.js   |     4 +-
 .../ang/crmSearchAdmin/compose.html           |     9 +-
 .../ang/crmSearchAdmin/crmSearchClause.html   |     2 +-
 .../crmSearchCondition.component.js           |    27 +
 .../crmSearchAdmin/crmSearchCondition.html    |     9 +-
 .../crmSearchFunction.component.js            |    23 +-
 .../ang/crmSearchAdmin/crmSearchFunction.html |     3 +-
 .../crmSearchFunctionFlag.component.js        |    13 +-
 .../crmSearchAdmin/crmSearchFunctionFlag.html |    10 +-
 .../crmSearchAdmin/resultsTable/debug.html    |    11 +-
 .../ang/crmSearchDisplay/colType/menu.html    |     2 +-
 civicrm/ext/search_kit/info.xml               |     6 +-
 .../v4/SearchDisplay/SearchDownloadTest.php   |     1 +
 civicrm/ext/sequentialcreditnotes/info.xml    |     6 +-
 .../CRM/Standaloneusers/BAO/Role.php          |    57 +-
 .../CRM/Standaloneusers/BAO/User.php          |    66 +
 .../CRM/Standaloneusers/DAO/Role.php          |    16 +-
 .../CRM/Standaloneusers/DAO/User.php          |    18 +-
 .../CRM/Standaloneusers/Page/Login.php        |    16 +-
 .../Standaloneusers/Page/ResetPassword.php    |     3 +
 .../WorkflowMessage/PasswordReset.php         |    12 +-
 .../Api4/Action/User/SendPasswordReset.php    |     2 +-
 .../Civi/Standalone/Security.php              |    24 +-
 .../ang/afformEditRole.aff.html               |     2 +-
 .../ang/afformEditUserAccount.aff.html        |     4 +-
 .../afsearchAdministerUserAccounts.aff.html   |     6 +-
 .../crmChangePassword/crmChangePassword.html  |     3 +-
 .../standaloneusers/ang/crmResetPassword.js   |     1 +
 .../crmResetPassword/crmResetPassword.html    |    51 +-
 .../ext/standaloneusers/css/standalone.css    |    52 +
 civicrm/ext/standaloneusers/info.xml          |     6 +-
 .../SavedSearch_Administer_Roles.mgd.php      |    73 +-
 .../SavedSearch_Administer_Users.mgd.php      |   120 +-
 .../ext/standaloneusers/sql/auto_install.sql  |     2 +-
 .../standaloneusers/sql/auto_uninstall.sql    |     6 +-
 .../ext/standaloneusers/standaloneusers.php   |    35 +
 .../CRM/Standaloneusers/Page/Login.tpl        |   378 +-
 .../Standaloneusers/Page/ResetPassword.tpl    |    15 +-
 .../phpunit/Civi/Standalone/SecurityTest.php  |     6 +
 .../xml/schema/CRM/Standaloneusers/Role.xml   |     7 +
 .../xml/schema/CRM/Standaloneusers/User.xml   |    16 +-
 civicrm/ext/user_dashboard/info.xml           |     6 +-
 civicrm/extension-compatibility.json          |     5 +
 civicrm/js/Common.js                          |     2 +-
 civicrm/js/version.json                       |     1 +
 ...arch_Contact_Summary_Relationships.mgd.php |     4 +-
 civicrm/package.json                          |     3 +-
 .../src/Knp/Snappy/AbstractGenerator.php      |     4 +
 civicrm/release-notes.md                      |    14 +-
 civicrm/release-notes/5.68.1.md               |    41 -
 civicrm/release-notes/5.69.0.md               |  1500 ++
 civicrm/settings/Contribute.setting.php       |    26 +-
 civicrm/settings/Core.setting.php             |     5 +-
 .../setup/plugins/blocks/l10n.civi-setup.php  |     4 +-
 .../init/AvailableLangs.civi-setup.php        |    11 +-
 .../plugins/init/Backdrop.civi-setup.php      |     2 +
 .../setup/plugins/init/Drupal.civi-setup.php  |     2 +
 .../setup/plugins/init/Drupal8.civi-setup.php |     1 +
 .../plugins/init/Standalone.civi-setup.php    |     2 +-
 .../init/StandaloneUsers.civi-setup.php       |    94 +-
 .../plugins/init/WordPress.civi-setup.php     |     1 +
 .../installFiles/l10nDownload.civi-setup.php  |    91 +
 civicrm/setup/res/languages.php               |    54 +
 civicrm/setup/src/Setup/Model.php             |    13 +
 civicrm/sql/civicrm.mysql                     |     2 +
 civicrm/sql/civicrm_data.mysql                | 11837 +++++------
 .../civicrm_extension.sqldata.php             |    10 +-
 .../sql/civicrm_data/civicrm_job.sqldata.php  |   100 +-
 .../civicrm_mailing_component.sqldata.php     |     4 +-
 civicrm/sql/civicrm_drop.mysql                |     6 +-
 civicrm/sql/civicrm_generated.mysql           | 17067 ++++++++--------
 civicrm/sql/civicrm_sample.mysql              |     5 +-
 .../templates/CRM/Activity/Form/Activity.tpl  |     4 +-
 .../CRM/Activity/Form/ActivityView.tpl        |     2 +-
 .../templates/CRM/Activity/Form/Search.tpl    |     8 +-
 .../CRM/Admin/Form/Preferences/Contribute.tpl |     2 +-
 .../CRM/Admin/Form/Setting/Localization.tpl   |     2 +-
 .../CRM/Campaign/Form/Petition/Signature.tpl  |     2 +-
 .../CRM/Campaign/Page/Petition/Confirm.tpl    |     2 +-
 .../Campaign/Page/Petition/SocialNetwork.tpl  |     2 +-
 .../CRM/Campaign/Page/Petition/ThankYou.tpl   |     2 +-
 civicrm/templates/CRM/Case/Form/Activity.tpl  |     2 +-
 civicrm/templates/CRM/Case/Form/Case.tpl      |     2 +-
 civicrm/templates/CRM/Case/Form/CaseView.js   |    11 +
 civicrm/templates/CRM/Case/Form/CaseView.tpl  |    32 +-
 civicrm/templates/CRM/Contact/Form/Merge.tpl  |     6 +-
 .../CRM/Contact/Form/Search/Advanced.tpl      |     8 +-
 .../Contact/Form/Search/AdvancedCriteria.tpl  |    35 +-
 .../CRM/Contact/Form/Search/Builder.tpl       |     6 +-
 .../CRM/Contact/Import/Form/Summary.tpl       |     4 +-
 .../CRM/Contact/Page/View/CustomDataView.tpl  |     8 +-
 .../CRM/Contribute/Form/AdditionalPayment.tpl |     3 -
 .../CRM/Contribute/Form/Contribution.tpl      |     2 -
 .../Contribute/Form/Contribution/Confirm.tpl  |    18 +-
 .../CRM/Contribute/Form/Contribution/Main.tpl |    20 +-
 .../Form/Contribution/MainMembershipBlock.tpl |    33 +-
 .../Form/Contribution/MembershipBlock.tpl     |     6 +-
 .../Form/Contribution/PremiumBlock.tpl        |    42 +-
 .../Contribute/Form/Contribution/ThankYou.tpl |    16 +-
 .../Form/ContributionPage/ThankYou.tpl        |     2 +-
 .../CRM/Contribute/Page/ManagePremiums.tpl    |    10 +-
 .../templates/CRM/Contribute/Page/Premium.tpl |    30 +-
 .../CRM/Core/Form/RecurringEntity.tpl         |     4 +
 civicrm/templates/CRM/Custom/Form/Field.tpl   |     6 +-
 civicrm/templates/CRM/Dashlet/Page/Blog.tpl   |     9 +-
 .../CRM/Event/Form/ManageEvent/EventInfo.tpl  |     4 +
 .../CRM/Event/Form/Registration/Confirm.tpl   |    11 +-
 .../CRM/Event/Form/Registration/ThankYou.tpl  |    14 +-
 .../templates/CRM/Event/Page/EventInfo.tpl    |     2 +-
 civicrm/templates/CRM/Friend/Form.tpl         |     2 +-
 civicrm/templates/CRM/Member/Page/Tab.tpl     |     2 +-
 civicrm/templates/CRM/Price/Form/Field.tpl    |     2 +-
 civicrm/templates/CRM/Price/Form/PriceSet.tpl |    26 +-
 .../CRM/Report/Form/Layout/Table.tpl          |   158 +-
 .../templates/CRM/Report/Form/Statistics.tpl  |     4 +-
 .../CRM/Report/Form/Tabs/Filters.tpl          |     2 +-
 civicrm/templates/CRM/common/formButtons.tpl  |    16 +-
 civicrm/templates/CRM/common/jcalendar.tpl    |     2 +-
 civicrm/templates/CRM/common/joomla.tpl       |     4 -
 civicrm/templates/CRM/common/paymentBlock.tpl |     3 +-
 civicrm/templates/CRM/common/standalone.tpl   |     9 +-
 civicrm/vendor/autoload.php                   |     2 +-
 civicrm/vendor/composer/autoload_classmap.php |     1 -
 civicrm/vendor/composer/autoload_files.php    |     5 +-
 civicrm/vendor/composer/autoload_psr4.php     |     2 -
 civicrm/vendor/composer/autoload_real.php     |    14 +-
 civicrm/vendor/composer/autoload_static.php   |    28 +-
 civicrm/vendor/composer/installed.json        |   316 +-
 civicrm/vendor/composer/installed.php         |    57 +-
 civicrm/vendor/firebase/php-jwt/CHANGELOG.md  |   105 +
 civicrm/vendor/firebase/php-jwt/LICENSE       |     2 +-
 civicrm/vendor/firebase/php-jwt/README.md     |   295 +-
 civicrm/vendor/firebase/php-jwt/composer.json |    13 +-
 .../php-jwt/src/BeforeValidException.php      |     1 +
 .../firebase/php-jwt/src/CachedKeySet.php     |   258 +
 .../firebase/php-jwt/src/ExpiredException.php |     1 +
 civicrm/vendor/firebase/php-jwt/src/JWK.php   |   203 +-
 civicrm/vendor/firebase/php-jwt/src/JWT.php   |   396 +-
 civicrm/vendor/firebase/php-jwt/src/Key.php   |    64 +
 .../php-jwt/src/SignatureInvalidException.php |     1 +
 civicrm/vendor/guzzlehttp/guzzle/.php_cs      |    23 -
 civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md |   245 +-
 civicrm/vendor/guzzlehttp/guzzle/Dockerfile   |    18 -
 civicrm/vendor/guzzlehttp/guzzle/README.md    |    45 +-
 civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md |    56 +-
 .../vendor/guzzlehttp/guzzle/composer.json    |    36 +-
 .../guzzlehttp/guzzle/src/BodySummarizer.php  |    28 +
 .../guzzle/src/BodySummarizerInterface.php    |    13 +
 .../vendor/guzzlehttp/guzzle/src/Client.php   |   240 +-
 .../guzzlehttp/guzzle/src/ClientInterface.php |    23 +-
 .../guzzlehttp/guzzle/src/ClientTrait.php     |   241 +
 .../guzzle/src/Cookie/CookieJar.php           |   130 +-
 .../guzzle/src/Cookie/CookieJarInterface.php  |    23 +-
 .../guzzle/src/Cookie/FileCookieJar.php       |    46 +-
 .../guzzle/src/Cookie/SessionCookieJar.php    |    35 +-
 .../guzzle/src/Cookie/SetCookie.php           |   276 +-
 .../src/Exception/BadResponseException.php    |    30 +-
 .../guzzle/src/Exception/ClientException.php  |     1 +
 .../guzzle/src/Exception/ConnectException.php |    39 +-
 .../guzzle/src/Exception/GuzzleException.php  |    22 +-
 .../guzzle/src/Exception/RequestException.php |   108 +-
 .../guzzle/src/Exception/SeekException.php    |    27 -
 .../guzzle/src/Exception/ServerException.php  |     1 +
 .../Exception/TooManyRedirectsException.php   |     1 +
 .../src/Exception/TransferException.php       |     1 +
 .../guzzle/src/Handler/CurlFactory.php        |   440 +-
 .../src/Handler/CurlFactoryInterface.php      |     8 +-
 .../guzzle/src/Handler/CurlHandler.php        |    26 +-
 .../guzzle/src/Handler/CurlMultiHandler.php   |   141 +-
 .../guzzle/src/Handler/EasyHandle.php         |    80 +-
 .../guzzle/src/Handler/HeaderProcessor.php    |    42 +
 .../guzzle/src/Handler/MockHandler.php        |   138 +-
 .../guzzlehttp/guzzle/src/Handler/Proxy.php   |    40 +-
 .../guzzle/src/Handler/StreamHandler.php      |   437 +-
 .../guzzlehttp/guzzle/src/HandlerStack.php    |   142 +-
 .../guzzle/src/MessageFormatter.php           |    87 +-
 .../guzzle/src/MessageFormatterInterface.php  |    18 +
 .../guzzlehttp/guzzle/src/Middleware.php      |   116 +-
 civicrm/vendor/guzzlehttp/guzzle/src/Pool.php |    63 +-
 .../guzzle/src/PrepareBodyMiddleware.php      |    33 +-
 .../guzzle/src/RedirectMiddleware.php         |   116 +-
 .../guzzlehttp/guzzle/src/RequestOptions.php  |    77 +-
 .../guzzlehttp/guzzle/src/RetryMiddleware.php |    84 +-
 .../guzzlehttp/guzzle/src/TransferStats.php   |    55 +-
 .../guzzlehttp/guzzle/src/UriTemplate.php     |   237 -
 .../vendor/guzzlehttp/guzzle/src/Utils.php    |   355 +-
 .../guzzlehttp/guzzle/src/functions.php       |   275 +-
 .../guzzle/src/functions_include.php          |     2 +-
 .../symfony/deprecation-contracts/.gitignore  |     3 +
 .../deprecation-contracts/CHANGELOG.md        |     5 +
 .../LICENSE                                   |     2 +-
 .../symfony/deprecation-contracts/README.md   |    26 +
 .../deprecation-contracts/composer.json       |    35 +
 .../deprecation-contracts/function.php        |    27 +
 .../vendor/symfony/polyfill-intl-idn/Idn.php  |   925 -
 .../vendor/symfony/polyfill-intl-idn/Info.php |    23 -
 .../vendor/symfony/polyfill-intl-idn/LICENSE  |    19 -
 .../symfony/polyfill-intl-idn/README.md       |    12 -
 .../Resources/unidata/DisallowedRanges.php    |   375 -
 .../Resources/unidata/Regex.php               |    24 -
 .../Resources/unidata/deviation.php           |     8 -
 .../Resources/unidata/disallowed.php          |  2638 ---
 .../unidata/disallowed_STD3_mapped.php        |   308 -
 .../unidata/disallowed_STD3_valid.php         |    71 -
 .../Resources/unidata/ignored.php             |   273 -
 .../Resources/unidata/mapped.php              |  5778 ------
 .../Resources/unidata/virama.php              |    65 -
 .../symfony/polyfill-intl-idn/bootstrap.php   |   145 -
 .../symfony/polyfill-intl-idn/bootstrap80.php |   125 -
 .../symfony/polyfill-intl-idn/composer.json   |    44 -
 .../polyfill-intl-normalizer/Normalizer.php   |   310 -
 .../polyfill-intl-normalizer/README.md        |    14 -
 .../Resources/stubs/Normalizer.php            |    17 -
 .../unidata/canonicalComposition.php          |   945 -
 .../unidata/canonicalDecomposition.php        |  2065 --
 .../Resources/unidata/combiningClass.php      |   876 -
 .../unidata/compatibilityDecomposition.php    |  3695 ----
 .../polyfill-intl-normalizer/bootstrap.php    |    23 -
 .../polyfill-intl-normalizer/bootstrap80.php  |    19 -
 .../polyfill-intl-normalizer/composer.json    |    39 -
 civicrm/xml/schema/Contribute/Premium.xml     |     3 +
 civicrm/xml/schema/Contribute/Product.xml     |     6 +
 civicrm/xml/schema/Core/MessageTemplate.xml   |     3 +
 civicrm/xml/schema/Core/PreferencesDate.xml   |     4 +-
 civicrm/xml/schema/Core/UFMatch.xml           |     6 +
 civicrm/xml/schema/Event/Event.xml            |    12 +
 civicrm/xml/schema/Mailing/Mailing.xml        |     8 +
 .../xml/schema/Mailing/MailingComponent.xml   |     5 +-
 civicrm/xml/schema/Mailing/MailingJob.xml     |    11 +
 civicrm/xml/templates/civicrm_sample.tpl      |     5 +-
 .../xml/templates/civicrm_state_province.tpl  |  8231 ++++----
 civicrm/xml/templates/drop.tpl                |     7 +-
 civicrm/xml/templates/languages_setup.tpl     |     5 +
 .../contribution_invoice_receipt_html.tpl     |     4 +-
 .../contribution_offline_receipt_html.tpl     |     2 +-
 .../contribution_offline_receipt_text.tpl     |     2 +-
 .../contribution_online_receipt_html.tpl      |     4 +-
 .../contribution_online_receipt_text.tpl      |   203 -
 .../event_offline_receipt_html.tpl            |     6 +-
 .../event_online_receipt_html.tpl             |    23 +-
 .../event_online_receipt_text.tpl             |     4 +-
 .../membership_offline_receipt_html.tpl       |     6 +-
 .../membership_offline_receipt_text.tpl       |     6 +-
 .../membership_online_receipt_html.tpl        |   628 +-
 .../membership_online_receipt_subject.tpl     |     2 +-
 .../membership_online_receipt_text.tpl        |   237 -
 .../payment_or_refund_notification_html.tpl   |   242 +-
 ...payment_or_refund_notification_subject.tpl |     2 +-
 .../payment_or_refund_notification_text.tpl   |   116 -
 civicrm/xml/version.xml                       |     2 +-
 .../civicrm.metabox.contact.add.php           |   109 +-
 includes/admin-pages/civicrm.page.error.php   |     2 +-
 .../admin-pages/civicrm.page.integration.php  |     4 +-
 includes/admin-pages/civicrm.page.options.php |    44 +-
 includes/civicrm.admin.php                    |    30 +-
 includes/civicrm.basepage.php                 |   117 +-
 includes/civicrm.functions.php                |    36 +-
 includes/civicrm.shortcodes.modal.php         |     3 +-
 includes/civicrm.shortcodes.php               |    93 +-
 includes/civicrm.users.php                    |    19 +-
 phpcs.xml                                     |   111 +
 phpunit.xml.dist                              |    16 +-
 readme.txt                                    |     4 +-
 wp-cli/README.md                              |   139 +-
 wp-cli/civicrm.php                            |  1454 --
 wp-cli/commands/command-api-v3.php            |   194 +
 wp-cli/commands/command-base.php              |   552 +
 wp-cli/commands/command-cache.php             |    46 +
 wp-cli/commands/command-civicrm.php           |    76 +
 wp-cli/commands/command-core.php              |  2170 ++
 wp-cli/commands/command-db.php                |  1243 ++
 wp-cli/commands/command-debug.php             |    71 +
 wp-cli/commands/command-job.php               |    71 +
 wp-cli/commands/command-pipe.php              |    68 +
 .../commands/legacy/command-cache-clear.php   |    35 +
 .../commands/legacy/command-debug-disable.php |    36 +
 .../commands/legacy/command-debug-enable.php  |    36 +
 wp-cli/commands/legacy/command-install.php    |   113 +
 wp-cli/commands/legacy/command-mail-queue.php |    36 +
 .../legacy/command-member-records.php         |    36 +
 wp-cli/commands/legacy/command-restore.php    |   209 +
 wp-cli/commands/legacy/command-sql-cli.php    |    41 +
 wp-cli/commands/legacy/command-sql-conf.php   |    37 +
 .../commands/legacy/command-sql-connect.php   |    37 +
 wp-cli/commands/legacy/command-sql-dump.php   |    60 +
 wp-cli/commands/legacy/command-sql-query.php  |    49 +
 wp-cli/commands/legacy/command-update-cfg.php |    54 +
 wp-cli/commands/legacy/command-upgrade-db.php |   104 +
 wp-cli/commands/legacy/command-upgrade.php    |   162 +
 .../utilities/class-backup-restorer.php       |    67 +
 .../commands/utilities/class-logger-dummy.php |    18 +
 .../utilities/class-zip-extractor.php         |    75 +
 wp-cli/wp-cli-civicrm.php                     |   192 +
 930 files changed, 41688 insertions(+), 49876 deletions(-)
 create mode 100644 civicrm/CRM/Activity/Form/ActivityFormTrait.php
 create mode 100644 civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php
 create mode 100644 civicrm/CRM/Financial/FinancialTrxnTokens.php
 create mode 100644 civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php
 create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php
 create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl
 create mode 100644 civicrm/CRM/Utils/Cache/CacheWrapper.php
 create mode 100644 civicrm/CRM/Utils/Check/Component/LocationTypes.php
 create mode 100644 civicrm/CRM/Utils/Check/Component/Smarty.php
 rename civicrm/{templates/CRM/common/localNav.tpl => Civi/Api4/PreferencesDate.php} (58%)
 create mode 100644 civicrm/Civi/Api4/Provider.php
 create mode 100644 civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php
 create mode 100644 civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php
 create mode 100644 civicrm/Civi/Import/DataSource/DataSourceInterface.php
 create mode 100644 civicrm/Civi/Import/DataSource/DataSourceTrait.php
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js
 create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html
 create mode 100644 civicrm/ext/afform/core/CRM/Afform/Page/Verify.php
 create mode 100644 civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php
 create mode 100644 civicrm/ext/afform/core/ang/af/afIf.directive.js
 create mode 100644 civicrm/ext/afform/core/ang/af/fields/Url.html
 create mode 100644 civicrm/ext/afform/core/ang/afSearchTasks.ang.php
 create mode 100644 civicrm/ext/afform/core/ang/afSearchTasks.module.js
 create mode 100644 civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js
 create mode 100644 civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactAddress.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactAddress.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactEmail.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactEmail.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactIM.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactIM.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactNote.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactNote.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactPhone.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactPhone.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php
 delete mode 100644 civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json
 create mode 100644 civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php
 create mode 100644 civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl
 create mode 100644 civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php
 create mode 100644 civicrm/ext/afform/core/xml/Menu/afform.xml
 delete mode 100644 civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json
 create mode 100644 civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/afex.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/afex.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/mock-weird-name.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/mock-weird-name.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/mockFoo.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/mockFoo.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/mockPage.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/mockPage.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/mockPublicForm.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/mockPublicForm.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/testAfform.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/testAfform.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php
 delete mode 100644 civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json
 create mode 100644 civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformAutocompleteUsageTest.php (95%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformContactUsageTest.php (84%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformCustomFieldUsageTest.php (95%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformFileUploadTest.php (97%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformPrefillUsageTest.php (96%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformRelationshipUsageTest.php (96%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformRoutingTest.php (78%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformTest.php (94%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformTestCase.php (66%)
 rename civicrm/ext/afform/mock/tests/phpunit/api/v4/{ => Afform}/AfformUsageTestCase.php (91%)
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php
 delete mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php
 create mode 100644 civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType.ang.php (60%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType.css (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType.js (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/activityTypesTable.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/caseTypeDetails.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/edit.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/list.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/rolesTable.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/sequenceTable.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/statusTable.html (100%)
 rename civicrm/{ => ext/civi_case}/ang/crmCaseType/timelineTable.html (100%)
 create mode 100644 civicrm/ext/civi_contribute/Civi/Api4/Premium.php
 create mode 100644 civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php
 create mode 100644 civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php
 delete mode 100644 civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json
 create mode 100644 civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing.ang.php (80%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing.css (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockApprove.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockApprove.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockHeaderFooter.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockHeaderFooter.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockMailing.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockMailing.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockPreview.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockPreview.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockPublication.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockPublication.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockRecipients.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockRecipients.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockRecipientsMultiline.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockRecipientsMultiline.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockResponses.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockResponses.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockReview.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockReview.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockSchedule.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockSchedule.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockSummary.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockSummary.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockTemplates.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockTemplates.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockTracking.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BlockTracking.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BodyHtml.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BodyHtml.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BodyText.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/BodyText.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/CreateMailingCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/2step.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/base.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/unified.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/unified2.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/wizard.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditMailingCtrl/workflow.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditRecipCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditRecipOptionsDialogCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditRecipOptionsDialogCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EditUnsubGroupCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EmailAddrCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EmailBodyCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/EmailBodyCtrl/tokenAlert.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/FromAddress.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/ListMailingsCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/MsgTemplateCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewComponentCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewComponentDialogCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewComponentDialogCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewMailingDialogCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewMgr/full.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewMgr/html.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewMgr/text.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewRecipCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/PreviewRecipCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/RadioDate.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/ReviewBool.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/SaveMsgTemplateDialogCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/SaveMsgTemplateDialogCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/Templates.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/Token.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/ViewRecipCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailing/services.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB.ang.php (67%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB.css (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/BlockMailing.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/BlockMailing.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/BlockSetup.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/BlockSetup.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/EditCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/EditCtrl/edit.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/EditCtrl/main.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/EditCtrl/report.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/ListCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/ListCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/NewCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/ReportCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/Slider.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/Slider.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/Stats.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/WinnerDialogCtrl.html (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/WinnerDialogCtrl.js (100%)
 rename civicrm/{ => ext/civi_mail}/ang/crmMailingAB/services.js (100%)
 create mode 100644 civicrm/ext/civi_member/Civi/Api4/MembershipLog.php
 create mode 100644 civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html
 create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php
 create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php
 create mode 100644 civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html
 create mode 100644 civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php
 create mode 100644 civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php
 create mode 100644 civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php
 create mode 100644 civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl
 create mode 100644 civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php
 create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php
 create mode 100644 civicrm/ext/standaloneusers/css/standalone.css
 create mode 100644 civicrm/js/version.json
 delete mode 100644 civicrm/release-notes/5.68.1.md
 create mode 100644 civicrm/release-notes/5.69.0.md
 create mode 100644 civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php
 create mode 100644 civicrm/setup/res/languages.php
 create mode 100644 civicrm/vendor/firebase/php-jwt/CHANGELOG.md
 create mode 100644 civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php
 create mode 100644 civicrm/vendor/firebase/php-jwt/src/Key.php
 delete mode 100644 civicrm/vendor/guzzlehttp/guzzle/.php_cs
 delete mode 100644 civicrm/vendor/guzzlehttp/guzzle/Dockerfile
 create mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php
 create mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
 create mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php
 delete mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
 create mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
 create mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
 delete mode 100644 civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php
 create mode 100644 civicrm/vendor/symfony/deprecation-contracts/.gitignore
 create mode 100644 civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md
 rename civicrm/vendor/symfony/{polyfill-intl-normalizer => deprecation-contracts}/LICENSE (96%)
 create mode 100644 civicrm/vendor/symfony/deprecation-contracts/README.md
 create mode 100644 civicrm/vendor/symfony/deprecation-contracts/composer.json
 create mode 100644 civicrm/vendor/symfony/deprecation-contracts/function.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Idn.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Info.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/LICENSE
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/README.md
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-idn/composer.json
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/README.md
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
 delete mode 100644 civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json
 create mode 100644 civicrm/xml/templates/languages_setup.tpl
 create mode 100644 phpcs.xml
 delete mode 100644 wp-cli/civicrm.php
 create mode 100755 wp-cli/commands/command-api-v3.php
 create mode 100644 wp-cli/commands/command-base.php
 create mode 100755 wp-cli/commands/command-cache.php
 create mode 100644 wp-cli/commands/command-civicrm.php
 create mode 100755 wp-cli/commands/command-core.php
 create mode 100755 wp-cli/commands/command-db.php
 create mode 100755 wp-cli/commands/command-debug.php
 create mode 100755 wp-cli/commands/command-job.php
 create mode 100755 wp-cli/commands/command-pipe.php
 create mode 100755 wp-cli/commands/legacy/command-cache-clear.php
 create mode 100755 wp-cli/commands/legacy/command-debug-disable.php
 create mode 100755 wp-cli/commands/legacy/command-debug-enable.php
 create mode 100755 wp-cli/commands/legacy/command-install.php
 create mode 100755 wp-cli/commands/legacy/command-mail-queue.php
 create mode 100755 wp-cli/commands/legacy/command-member-records.php
 create mode 100755 wp-cli/commands/legacy/command-restore.php
 create mode 100755 wp-cli/commands/legacy/command-sql-cli.php
 create mode 100755 wp-cli/commands/legacy/command-sql-conf.php
 create mode 100755 wp-cli/commands/legacy/command-sql-connect.php
 create mode 100755 wp-cli/commands/legacy/command-sql-dump.php
 create mode 100755 wp-cli/commands/legacy/command-sql-query.php
 create mode 100755 wp-cli/commands/legacy/command-update-cfg.php
 create mode 100755 wp-cli/commands/legacy/command-upgrade-db.php
 create mode 100755 wp-cli/commands/legacy/command-upgrade.php
 create mode 100755 wp-cli/commands/utilities/class-backup-restorer.php
 create mode 100755 wp-cli/commands/utilities/class-logger-dummy.php
 create mode 100755 wp-cli/commands/utilities/class-zip-extractor.php
 create mode 100755 wp-cli/wp-cli-civicrm.php

diff --git a/assets/templates/metaboxes/metabox.contact.add.php b/assets/templates/metaboxes/metabox.contact.add.php
index 31f4df7514..5faefe1c03 100644
--- a/assets/templates/metaboxes/metabox.contact.add.php
+++ b/assets/templates/metaboxes/metabox.contact.add.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.contact.add.php -->
 <?php
 
@@ -37,19 +42,19 @@ do_action('civicrm/metabox/contact/add/pre');
   <?php wp_nonce_field('civicrm_quick_add_action', 'civicrm_quick_add_nonce'); ?>
 
   <div class="input-text-wrap" id="contact-first-name-wrap">
-    <label for="civicrm_quick_add_first_name"><?php _e('First Name', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_first_name"><?php esc_html_e('First Name', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_first_name" id="civicrm_quick_add_first_name" autocomplete="off" />
     <br class="clear" />
   </div>
 
   <div class="input-text-wrap" id="contact-last-name-wrap">
-    <label for="civicrm_quick_add_last_name"><?php _e('Last Name', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_last_name"><?php esc_html_e('Last Name', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_last_name" id="civicrm_quick_add_last_name" autocomplete="off" />
     <br class="clear" />
   </div>
 
   <div class="input-text-wrap" id="contact-email-wrap">
-    <label for="civicrm_quick_add_email"><?php _e('Email', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_email"><?php esc_html_e('Email', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_email" id="civicrm_quick_add_email" autocomplete="off" />
     <br class="clear" />
   </div>
@@ -63,7 +68,7 @@ do_action('civicrm/metabox/contact/add/pre');
 </form>
 
 <div class="contacts-added-wrap<?php echo $visiblity_class; ?>">
-  <h3><?php _e('Recently Added Contacts', 'civicrm'); ?></h3>
+  <h3><?php esc_html_e('Recently Added Contacts', 'civicrm'); ?></h3>
 
   <div class="civicrm_quick_add_success notice notice-success inline" style="background-color: #f7f7f7; display: none;">
     <p></p>
diff --git a/assets/templates/metaboxes/metabox.error.help.php b/assets/templates/metaboxes/metabox.error.help.php
index 61a0de8040..ba26a724f4 100644
--- a/assets/templates/metaboxes/metabox.error.help.php
+++ b/assets/templates/metaboxes/metabox.error.help.php
@@ -17,8 +17,14 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.help.php -->
 <p><?php printf(
+  /* translators: 1: Opening anchor tag, 2: Closing anchor tag, 3: Opening anchor tag, 4: Closing anchor tag, 5: Opening anchor tag, 6: Closing anchor tag. */
   __('Please review the %1$sWordPress Installation Guide%2$s and the %3$sTroubleshooting page%4$s for assistance. If you still need help, you can often find solutions to your issue by searching for the error message in the %5$sinstallation support section of the community forum%6$s.', 'civicrm'),
   '<a href="https://docs.civicrm.org/installation/en/latest/wordpress/">', '</a>',
   '<a href="https://docs.civicrm.org/sysadmin/en/latest/troubleshooting/">', '</a>',
diff --git a/assets/templates/metaboxes/metabox.error.path.php b/assets/templates/metaboxes/metabox.error.path.php
index 432730a88e..5dd42f00ff 100644
--- a/assets/templates/metaboxes/metabox.error.path.php
+++ b/assets/templates/metaboxes/metabox.error.path.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.path.php -->
-<p><?php printf(
-  __('The path for including CiviCRM code files does appear to be set properly. Most likely there is an error in the %s setting in your CiviCRM settings file.', 'civicrm'),
-  '<code>civicrm_root</code>'
-); ?></p>
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
+<p><?php printf(__('The path for including CiviCRM code files does appear to be set properly. Most likely there is an error in the %s setting in your CiviCRM settings file.', 'civicrm'), '<code>civicrm_root</code>'); ?></p>
 
-<p><?php _e('Your CiviCRM settings file location is set to:', 'civicrm'); ?><br><pre><?php echo CIVICRM_SETTINGS_PATH; ?></pre></p>
+<p><?php esc_html_e('Your CiviCRM settings file location is set to:', 'civicrm'); ?><br><pre><?php echo esc_html(CIVICRM_SETTINGS_PATH); ?></pre></p>
 
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
 <p><?php printf(__('%s is currently set to:', 'civicrm'), '<code>civicrm_root</code>'); ?><br><pre><?php echo $civicrm_root; ?></pre></p>
 
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
 <p><?php printf(__('Please check that your CiviCRM settings file is where it should be and that %s is set correctly in it. Also check that the CiviCRM code directory is where it should be. If these are both fine, then you will have to look in your logs for more information.', 'civicrm'), '<code>civicrm_root</code>'); ?></p>
diff --git a/assets/templates/metaboxes/metabox.error.php.php b/assets/templates/metaboxes/metabox.error.php.php
index 58634cce28..841de08530 100644
--- a/assets/templates/metaboxes/metabox.error.php.php
+++ b/assets/templates/metaboxes/metabox.error.php.php
@@ -17,13 +17,15 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.php.php -->
-<p><?php printf(
-  __('CiviCRM requires PHP version %1$s or greater. You are running PHP version %2$s', 'civicrm'),
-  CIVICRM_WP_PHP_MINIMUM,
-  PHP_VERSION
-); ?></p>
+<?php /* translators: 1: The minimum PHP version, 2: The current PHP version. */ ?>
+<p><?php printf(__('CiviCRM requires PHP version %1$s or greater. You are running PHP version %2$s', 'civicrm'), CIVICRM_WP_PHP_MINIMUM, PHP_VERSION); ?></p>
 
-<p><?php _e('You will have to upgrade PHP before you can run this version CiviCRM.', 'civicrm'); ?></p>
+<p><?php esc_html_e('You will have to upgrade PHP before you can run this version CiviCRM.', 'civicrm'); ?></p>
 
-<p><?php _e('To continue using CiviCRM without upgrading PHP, you will have to revert both the plugin and the database to a backup of your previous version.', 'civicrm'); ?></p>
+<p><?php esc_html_e('To continue using CiviCRM without upgrading PHP, you will have to revert both the plugin and the database to a backup of your previous version.', 'civicrm'); ?></p>
diff --git a/assets/templates/metaboxes/metabox.options.basepage.php b/assets/templates/metaboxes/metabox.options.basepage.php
index 54676e9532..b58b37068a 100644
--- a/assets/templates/metaboxes/metabox.options.basepage.php
+++ b/assets/templates/metaboxes/metabox.options.basepage.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.basepage.php -->
 <?php
 
@@ -33,15 +38,15 @@ do_action('civicrm/metabox/basepage/pre');
 </div>
 
 <p>
-  <?php _e('CiviCRM needs a WordPress Page to show its content on the public-facing pages of your website.', 'civicrm'); ?>
+  <?php esc_html_e('CiviCRM needs a WordPress Page to show its content on the public-facing pages of your website.', 'civicrm'); ?>
   <?php if (!($basepage instanceof WP_Post)) : ?>
-    <em class="basepage_feedback"><?php _e('Please select a Page from the drop-down for CiviCRM to use as its Base Page. If CiviCRM was able to create one automatically, there should be one with the title "CiviCRM". If not, please select another suitable WordPress Page.', 'civicrm'); ?></em>
+    <em class="basepage_feedback"><?php esc_html_e('Please select a Page from the drop-down for CiviCRM to use as its Base Page. If CiviCRM was able to create one automatically, there should be one with the title "CiviCRM". If not, please select another suitable WordPress Page.', 'civicrm'); ?></em>
   <?php else : ?>
-    <em class="basepage_feedback"><?php _e('It appears that your Base Page has been set. Looking good.', 'civicrm'); ?></em>
+    <em class="basepage_feedback"><?php esc_html_e('It appears that your Base Page has been set. Looking good.', 'civicrm'); ?></em>
   <?php endif; ?>
 </p>
 
-<label for="page_id" class="screen-reader-text"><?php _e('Choose Base Page', 'civicrm'); ?></label>
+<label for="page_id" class="screen-reader-text"><?php esc_html_e('Choose Base Page', 'civicrm'); ?></label>
 <?php wp_dropdown_pages($params); ?>
 
 <p class="submit">
diff --git a/assets/templates/metaboxes/metabox.options.cache.php b/assets/templates/metaboxes/metabox.options.cache.php
index 922619d49b..2da32a4076 100644
--- a/assets/templates/metaboxes/metabox.options.cache.php
+++ b/assets/templates/metaboxes/metabox.options.cache.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.cache.php -->
 <?php
 
@@ -35,7 +40,7 @@ do_action('civicrm/metabox/cache/pre');
   <p></p>
 </div>
 
-<p><?php _e('You may sometimes find yourself in situations that require the CiviCRM caches to be cleared, e.g. when template files need to be refreshed.', 'civicrm'); ?></p>
+<p><?php esc_html_e('You may sometimes find yourself in situations that require the CiviCRM caches to be cleared, e.g. when template files need to be refreshed.', 'civicrm'); ?></p>
 
 <p class="submit">
   <?php submit_button(esc_html__('Clear Caches', 'civicrm'), 'primary', 'civicrm_cache_submit', FALSE, $options); ?>
diff --git a/assets/templates/metaboxes/metabox.options.email.php b/assets/templates/metaboxes/metabox.options.email.php
index 5152c342a0..6b9c4bf0cf 100644
--- a/assets/templates/metaboxes/metabox.options.email.php
+++ b/assets/templates/metaboxes/metabox.options.email.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.email.php -->
 <?php
 
@@ -32,9 +37,9 @@ do_action('civicrm/metabox/email_sync/pre');
   <p></p>
 </div>
 
-<p><?php _e('When a WordPress User updates their Email, CiviCRM will automatically update the Primary Email of their linked Contact record. This setting lets you choose whether the reverse update should happen - i.e. if the Primary Email of a Contact that has a linked WordPress User is updated, do you want CiviCRM to update the WordPress User Email?', 'civicrm'); ?></p>
+<p><?php esc_html_e('When a WordPress User updates their Email, CiviCRM will automatically update the Primary Email of their linked Contact record. This setting lets you choose whether the reverse update should happen - i.e. if the Primary Email of a Contact that has a linked WordPress User is updated, do you want CiviCRM to update the WordPress User Email?', 'civicrm'); ?></p>
 
-<label for="sync_email" class="screen-reader-text"><?php _e('Sync Emails', 'civicrm'); ?></label>
+<label for="sync_email" class="screen-reader-text"><?php esc_html_e('Sync Emails', 'civicrm'); ?></label>
 <select name="sync_email" id="sync_email">
   <option value="yes"<?php echo $selected_yes; ?>><?php esc_html_e('Yes', 'civicrm'); ?></option>
   <option value="no"<?php echo $selected_no; ?>><?php esc_html_e('No', 'civicrm'); ?></option>
diff --git a/assets/templates/metaboxes/metabox.options.links.php b/assets/templates/metaboxes/metabox.options.links.php
index fe2e31f503..a82f1dde14 100644
--- a/assets/templates/metaboxes/metabox.options.links.php
+++ b/assets/templates/metaboxes/metabox.options.links.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.links.php -->
 <?php
 
@@ -28,7 +33,7 @@
 do_action('civicrm/metabox/links/pre');
 
 ?>
-<p><?php _e('Below is a list of shortcuts to some CiviCRM admin pages that are important when you are setting up CiviCRM. When these settings are correctly configured, your CiviCRM installation should be ready for you to customise to your requirements.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Below is a list of shortcuts to some CiviCRM admin pages that are important when you are setting up CiviCRM. When these settings are correctly configured, your CiviCRM installation should be ready for you to customise to your requirements.', 'civicrm'); ?></p>
 
 <ul>
   <?php foreach ($admin_links as $admin_link) : ?>
@@ -40,7 +45,7 @@ do_action('civicrm/metabox/links/pre');
 
 <hr>
 
-<p><?php _e('Shortcuts to some CiviCRM maintenance tasks.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Shortcuts to some CiviCRM maintenance tasks.', 'civicrm'); ?></p>
 
 <ul>
   <?php foreach ($maintenance_links as $maintenance_link) : ?>
diff --git a/assets/templates/metaboxes/metabox.options.permissions.php b/assets/templates/metaboxes/metabox.options.permissions.php
index 0a8b01cf4e..3de191cf94 100644
--- a/assets/templates/metaboxes/metabox.options.permissions.php
+++ b/assets/templates/metaboxes/metabox.options.permissions.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.permissions.php -->
 <?php
 
diff --git a/assets/templates/metaboxes/metabox.options.shortcode.php b/assets/templates/metaboxes/metabox.options.shortcode.php
index 278d1c82b2..117cf2a200 100644
--- a/assets/templates/metaboxes/metabox.options.shortcode.php
+++ b/assets/templates/metaboxes/metabox.options.shortcode.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.shortcode.php -->
 <?php
 
@@ -32,9 +37,9 @@ do_action('civicrm/metabox/shortcode/pre');
   <p></p>
 </div>
 
-<p><?php _e('When a CiviCRM Shortcode is embedded in a Post/Page without "hijack" being set, it is shown embedded in the content in "Shortcode Mode". If any action is taken via the Shortcode, a query string is appended to the URL and the Post/Page is shown in "Base Page Mode" and the title and content are overwritten. Choose to keep this legacy behaviour or move to the new "Remain in Shortcode Mode" behaviour.', 'civicrm'); ?></p>
+<p><?php esc_html_e('When a CiviCRM Shortcode is embedded in a Post/Page without "hijack" being set, it is shown embedded in the content in "Shortcode Mode". If any action is taken via the Shortcode, a query string is appended to the URL and the Post/Page is shown in "Base Page Mode" and the title and content are overwritten. Choose to keep this legacy behaviour or move to the new "Remain in Shortcode Mode" behaviour.', 'civicrm'); ?></p>
 
-<label for="shortcode_mode" class="screen-reader-text"><?php _e('Display Mode', 'civicrm'); ?></label>
+<label for="shortcode_mode" class="screen-reader-text"><?php esc_html_e('Display Mode', 'civicrm'); ?></label>
 <select name="shortcode_mode" id="shortcode_mode">
   <option value="modern"<?php echo $selected_modern; ?>><?php esc_html_e('Remain in Shortcode Mode', 'civicrm'); ?></option>
   <option value="legacy"<?php echo $selected_legacy; ?>><?php esc_html_e('Legacy Base Page Mode', 'civicrm'); ?></option>
diff --git a/assets/templates/metaboxes/metabox.repo.ext.php b/assets/templates/metaboxes/metabox.repo.ext.php
index b20f68ab78..b1589da766 100644
--- a/assets/templates/metaboxes/metabox.repo.ext.php
+++ b/assets/templates/metaboxes/metabox.repo.ext.php
@@ -17,19 +17,24 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.ext.php -->
-<p><?php _e('Extensions are a bit like plugins because they enhance what CiviCRM can do. You can find, install and manage many of them in CiviCRM.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Extensions are a bit like plugins because they enhance what CiviCRM can do. You can find, install and manage many of them in CiviCRM.', 'civicrm'); ?></p>
 
 <ul>
-  <li><em><a href="<?php echo $extensions_url; ?>"><?php _e('Go to your CiviCRM Extensions Page', 'civicrm'); ?></a></em></li>
+  <li><em><a href="<?php echo $extensions_url; ?>"><?php esc_html_e('Go to your CiviCRM Extensions Page', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
 
-<p><?php _e('Here are some other places you can find them.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Here are some other places you can find them.', 'civicrm'); ?></p>
 
 <ul>
-  <li><em><a href="https://civicrm.org/extensions/wordpress"><?php _e('Search CiviCRM Website for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://lab.civicrm.org/explore/projects?tag=wordpress"><?php _e('Search CiviCRM GitLab for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://github.com/search?p=2&q=civicrm+extension&type=Repositories"><?php _e('Search GitHub for "CiviCRM Extensions"', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://civicrm.org/extensions/wordpress"><?php esc_html_e('Search CiviCRM Website for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://lab.civicrm.org/explore/projects?tag=wordpress"><?php esc_html_e('Search CiviCRM GitLab for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://github.com/search?p=2&q=civicrm+extension&type=Repositories"><?php esc_html_e('Search GitHub for "CiviCRM Extensions"', 'civicrm'); ?></a></em></li>
 </ul>
diff --git a/assets/templates/metaboxes/metabox.repo.git.php b/assets/templates/metaboxes/metabox.repo.git.php
index 842ab671a4..8e0cca035c 100644
--- a/assets/templates/metaboxes/metabox.repo.git.php
+++ b/assets/templates/metaboxes/metabox.repo.git.php
@@ -17,13 +17,18 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.git.php -->
-<p><?php _e('For the more adventurous, here is a list of plugins that are hosted in git repositories around the web. You may need a bit more technical confidence to install and upgrade these plugins.', 'civicrm'); ?></p>
+<p><?php esc_html_e('For the more adventurous, here is a list of plugins that are hosted in git repositories around the web. You may need a bit more technical confidence to install and upgrade these plugins.', 'civicrm'); ?></p>
 
 <hr/>
 
 <ul>
-  <li><em><a href="https://github.com/search?q=civicrm+wordpress&amp;type=Repositories"><?php _e('Search GitHub for CiviCRM &amp; WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://github.com/search?q=civicrm+wordpress&amp;type=Repositories"><?php esc_html_e('Search GitHub for CiviCRM &amp; WordPress', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
@@ -31,16 +36,16 @@
 <div class="plugin-repo-list-wrapper">
   <?php if (!empty($plugins->messages)) : ?>
     <ul class="plugin-repo-list">
-      <?php foreach ($plugins->messages as $plugin) : ?>
+      <?php foreach ($plugins->messages as $civicrm_plugin) : ?>
         <li>
-          <strong><a href="<?php echo $plugin['url']; ?>/"><?php echo $plugin['name']; ?></a></strong><br>
-          <?php if (!empty($plugin['short_description'])) : ?>
-            <span class="description"><?php echo $plugin['short_description']; ?></span><br>
+          <strong><a href="<?php echo esc_url($civicrm_plugin['url']); ?>/"><?php echo esc_html($civicrm_plugin['name']); ?></a></strong><br>
+          <?php if (!empty($civicrm_plugin['short_description'])) : ?>
+            <span class="description"><?php echo esc_html($civicrm_plugin['short_description']); ?></span><br>
           <?php endif; ?>
         </li>
       <?php endforeach; ?>
     </ul>
   <?php else : ?>
-    <p><?php _e('Could not fetch list of plugins.', 'civicrm'); ?></p>
+    <p><?php esc_html_e('Could not fetch list of plugins.', 'civicrm'); ?></p>
   <?php endif; ?>
 </div>
diff --git a/assets/templates/metaboxes/metabox.repo.wordpress.php b/assets/templates/metaboxes/metabox.repo.wordpress.php
index 6f1a9de155..e4aad6b130 100644
--- a/assets/templates/metaboxes/metabox.repo.wordpress.php
+++ b/assets/templates/metaboxes/metabox.repo.wordpress.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.wordpress.php -->
-<p><?php _e('The easiest way to extend CiviCRM and integrate it with WordPress is through installing plugins that are hosted in the WordPress Plugin Directory. These can be installed and updated through the normal WordPress admin screens.', 'civicrm'); ?></p>
+<p><?php esc_html_e('The easiest way to extend CiviCRM and integrate it with WordPress is through installing plugins that are hosted in the WordPress Plugin Directory. These can be installed and updated through the normal WordPress admin screens.', 'civicrm'); ?></p>
 
 <hr/>
 
 <ul>
-  <li><em><a href="https://wordpress.org/plugins/tags/civicrm/"><?php _e('Search the WordPress Plugin Directory for plugins tagged CiviCRM', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://wordpress.org/plugins/search/civicrm/"><?php _e('Search the WordPress Plugin Directory for references to CiviCRM', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://wordpress.org/plugins/tags/civicrm/"><?php esc_html_e('Search the WordPress Plugin Directory for plugins tagged CiviCRM', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://wordpress.org/plugins/search/civicrm/"><?php esc_html_e('Search the WordPress Plugin Directory for references to CiviCRM', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
@@ -32,20 +37,26 @@
 <div class="plugin-directory-list-wrapper">
   <?php if (!empty($plugins->plugins)) : ?>
     <ul class="plugin-directory-list">
-      <?php foreach ($plugins->plugins as $plugin) : ?>
+      <?php foreach ($plugins->plugins as $civicrm_plugin) : ?>
         <li>
-          <strong><a href="<?php echo __('https://wordpress.org/plugins/') . $plugin['slug']; ?>/"><?php echo $plugin['name']; ?></a></strong><br>
-          <?php printf(__('Version %s', 'civicrm'), $plugin['version']); ?><br>
-          <?php printf(__('%d+ active installations', 'civicrm'), $plugin['active_installs']); ?></br>
-          <?php printf(__('Tested up to WordPress %s', 'civicrm'), $plugin['tested']); ?><br>
-          <?php printf(__('Last updated %s ago', 'civicrm'), human_time_diff(strtotime($plugin['last_updated']))); ?><br>
-          <?php if (!empty($plugin['short_description'])) : ?>
-            <span class="description"><?php echo $plugin['short_description']; ?></span><br>
+          <?php /* Deliberate use of default domain so that WordPress "translates" the URL. */ ?>
+          <?php /* phpcs:ignore WordPress.WP.I18n.MissingArgDomain */ ?>
+          <strong><a href="<?php echo esc_url(__('https://wordpress.org/plugins/') . $civicrm_plugin['slug']); ?>/"><?php echo esc_html($civicrm_plugin['name']); ?></a></strong><br>
+          <?php /* translators: %s: The plugin version. */ ?>
+          <?php echo esc_html(sprintf(__('Version %s', 'civicrm'), $civicrm_plugin['version'])); ?><br>
+          <?php /* translators: %d: The number of installs. */ ?>
+          <?php echo esc_html(sprintf(__('%d+ active installations', 'civicrm'), $civicrm_plugin['active_installs'])); ?></br>
+          <?php /* translators: %s: The version of WordPress the plugin is tested to. */ ?>
+          <?php echo esc_html(sprintf(__('Tested up to WordPress %s', 'civicrm'), $civicrm_plugin['tested'])); ?><br>
+          <?php /* translators: %s: The date of the last plugin update. */ ?>
+          <?php echo esc_html(sprintf(__('Last updated %s ago', 'civicrm'), human_time_diff(strtotime($civicrm_plugin['last_updated'])))); ?><br>
+          <?php if (!empty($civicrm_plugin['short_description'])) : ?>
+            <span class="description"><?php echo esc_html($civicrm_plugin['short_description']); ?></span><br>
           <?php endif; ?>
         </li>
       <?php endforeach; ?>
     </ul>
   <?php else : ?>
-    <p><?php _e('Could not fetch list of plugins.', 'civicrm'); ?></p>
+    <p><?php esc_html_e('Could not fetch list of plugins.', 'civicrm'); ?></p>
   <?php endif; ?>
 </div>
diff --git a/assets/templates/pages/page.error.php b/assets/templates/pages/page.error.php
index 692bf283a5..7655e8779a 100644
--- a/assets/templates/pages/page.error.php
+++ b/assets/templates/pages/page.error.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.error.php -->
 <div class="wrap civicrm-wrap civicrm-error-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('CiviCRM Troubleshooting', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('CiviCRM Troubleshooting', 'civicrm'); ?></h1>
 
-  <p><?php _e('Something seems to be wrong with your CiviCRM installation. This page will help you try and troubleshoot the problem.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('Something seems to be wrong with your CiviCRM installation. This page will help you try and troubleshoot the problem.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_error_form" action="">
 
@@ -34,14 +39,14 @@
 
     <div id="poststuff">
 
-      <div id="post-body" class="metabox-holder columns-<?php echo $columns;?>">
+      <div id="post-body" class="metabox-holder columns-<?php echo $columns; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
           <?php do_meta_boxes($screen->id, 'side', NULL); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', NULL);  ?>
+          <?php do_meta_boxes($screen->id, 'normal', NULL); ?>
           <?php do_meta_boxes($screen->id, 'advanced', NULL); ?>
         </div>
 
diff --git a/assets/templates/pages/page.integration.php b/assets/templates/pages/page.integration.php
index 3eca996f40..acbbfa9f39 100644
--- a/assets/templates/pages/page.integration.php
+++ b/assets/templates/pages/page.integration.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.integration.php -->
 <div class="wrap civicrm-wrap civicrm-integration-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('Integrating CiviCRM with WordPress', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('Integrating CiviCRM with WordPress', 'civicrm'); ?></h1>
 
-  <p><?php _e('We have collected some resources to help you make the most of CiviCRM in WordPress.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('We have collected some resources to help you make the most of CiviCRM in WordPress.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_integration_form" action="<?php /* echo $this->page_submit_url_get(); */ ?>">
 
@@ -39,7 +44,7 @@
       <div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', '');  ?>
+          <?php do_meta_boxes($screen->id, 'normal', ''); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
diff --git a/assets/templates/pages/page.options.php b/assets/templates/pages/page.options.php
index 436a8c94a3..7efd657cf7 100644
--- a/assets/templates/pages/page.options.php
+++ b/assets/templates/pages/page.options.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.options.php -->
 <div class="wrap civicrm-wrap civicrm-settings-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('CiviCRM Settings', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('CiviCRM Settings', 'civicrm'); ?></h1>
 
-  <p><?php _e('We have collected some settings here because they are important for configuring CiviCRM in WordPress.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('We have collected some settings here because they are important for configuring CiviCRM in WordPress.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_options_form" action="<?php echo $this->page_submit_url_get(); ?>">
 
@@ -40,7 +45,7 @@
       <div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', '');  ?>
+          <?php do_meta_boxes($screen->id, 'normal', ''); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
diff --git a/civicrm.php b/civicrm.php
index e0ff081581..51c593b1e0 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.68.1
+ * Version: 5.69.0
  * Requires at least: 4.9
  * Requires PHP:      7.3
  * Author: CiviCRM LLC
@@ -36,7 +36,7 @@ if (!defined('ABSPATH')) {
 }
 
 // Set version here: changing it forces Javascript and CSS to reload.
-define('CIVICRM_PLUGIN_VERSION', '5.68.1');
+define('CIVICRM_PLUGIN_VERSION', '5.69.0');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
@@ -197,6 +197,38 @@ class CiviCRM_For_WordPress {
    */
   public $admin;
 
+  /**
+   * @var array
+   * Reference to the original $_GET value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_get;
+
+  /**
+   * @var array
+   * Reference to the original $_POST value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_post;
+
+  /**
+   * @var array
+   * Reference to the original $_COOKIE value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_cookie;
+
+  /**
+   * @var array
+   * Reference to the original $_REQUEST value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_request;
+
   // ---------------------------------------------------------------------------
   // Setup
   // ---------------------------------------------------------------------------
@@ -217,15 +249,12 @@ class CiviCRM_For_WordPress {
       // Create instance.
       self::$instance = new CiviCRM_For_WordPress();
 
-      // Include legacy global scope functions.
+      // Include global scope functions.
       include_once CIVICRM_PLUGIN_DIR . 'includes/civicrm.functions.php';
 
-      /*
-       * Incorporate WP-CLI Integration based on drush CiviCRM functionality.
-       * @see https://github.com/andy-walker/wp-cli-civicrm
-       */
+      // Add WP-CLI commands.
       if (defined('WP_CLI') && WP_CLI) {
-        include_once CIVICRM_PLUGIN_DIR . 'wp-cli/civicrm.php';
+        include_once CIVICRM_PLUGIN_DIR . 'wp-cli/wp-cli-civicrm.php';
       }
 
       // Delay setup until 'plugins_loaded' to allow other plugins to load as well.
@@ -329,8 +358,10 @@ class CiviCRM_For_WordPress {
     update_option('civicrm_activation_in_progress', 'false');
 
     // When installed via the WordPress UI, try and redirect to the Installer page.
-    if (!is_multisite() && !isset($_GET['activate-multi']) && !CIVICRM_INSTALLED) {
-      wp_redirect(admin_url('admin.php?page=civicrm-install'));
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    $activate_multi = isset($_GET['activate-multi']) ? sanitize_text_field(wp_unslash($_GET['activate-multi'])) : '';
+    if (!is_multisite() && empty($activate_multi) && !CIVICRM_INSTALLED) {
+      wp_safe_redirect(admin_url('admin.php?page=civicrm-install'));
       exit;
     }
 
@@ -518,6 +549,7 @@ class CiviCRM_For_WordPress {
   public function enable_translation() {
 
     // Load translations.
+    // phpcs:ignore WordPress.WP.DeprecatedParameters.Load_plugin_textdomainParam2Found
     load_plugin_textdomain(
       // Unique name.
       'civicrm',
@@ -549,11 +581,9 @@ class CiviCRM_For_WordPress {
    */
   public function civicrm_in_wordpress_set() {
 
-    // Get identifying query var.
+    // Store identifying query var.
     $page = get_query_var('civiwp');
-
-    // Store.
-    self::$in_wordpress = ($page == 'CiviCRM') ? TRUE : FALSE;
+    self::$in_wordpress = ($page === 'CiviCRM') ? TRUE : FALSE;
 
   }
 
@@ -697,7 +727,7 @@ class CiviCRM_For_WordPress {
     }
 
     // Bail if filters are suppressed on this query.
-    if (TRUE == $query->get('suppress_filters')) {
+    if (TRUE === $query->get('suppress_filters')) {
       return;
     }
 
@@ -709,10 +739,10 @@ class CiviCRM_For_WordPress {
     $alreadyRegistered = TRUE;
 
     // Redirect if old query var is present.
-    if ('CiviCRM' == get_query_var('page') && 'CiviCRM' != get_query_var('civiwp')) {
+    if ('CiviCRM' === get_query_var('page') && 'CiviCRM' !== get_query_var('civiwp')) {
       $redirect_url = remove_query_arg('page', FALSE);
       $redirect_url = add_query_arg('civiwp', 'CiviCRM', $redirect_url);
-      wp_redirect($redirect_url, 301);
+      wp_safe_redirect($redirect_url, 301);
       exit();
     }
 
@@ -1155,6 +1185,7 @@ class CiviCRM_For_WordPress {
     $original_timezone = date_default_timezone_get();
     $wp_site_timezone = $this->get_timezone_string();
     if ($wp_site_timezone) {
+      // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set
       date_default_timezone_set($wp_site_timezone);
       CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
     }
@@ -1178,7 +1209,8 @@ class CiviCRM_For_WordPress {
      * Bypass synchronize if running upgrade to avoid any serious non-recoverable
      * error which might hinder the upgrade process.
      */
-    if (CRM_Utils_Array::value('q', $_GET) != 'civicrm/upgrade') {
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    if (CRM_Utils_Array::value('q', $_GET) !== 'civicrm/upgrade') {
       $this->users->sync_user($current_user);
     }
 
@@ -1200,6 +1232,7 @@ class CiviCRM_For_WordPress {
 
     // Restore original timezone.
     if ($original_timezone) {
+      // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set
       date_default_timezone_set($original_timezone);
     }
 
@@ -1248,8 +1281,10 @@ class CiviCRM_For_WordPress {
      * @see https://www.php.net/manual/en/timezones.others.php
      */
     $offset = get_option('gmt_offset');
+    // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
     if (0 != $offset && floor($offset) == $offset) {
-      $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset);
+      $offset_int = (int) $offset;
+      $offset_string = $offset > 0 ? "-$offset" : '+' . abs($offset_int);
       $tzstring = 'Etc/GMT' . $offset_string;
     }
 
@@ -1272,6 +1307,9 @@ class CiviCRM_For_WordPress {
    */
   private function remove_wp_magic_quotes() {
 
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+
     // Save original arrays.
     $this->wp_get     = $_GET;
     $this->wp_post    = $_POST;
@@ -1284,6 +1322,9 @@ class CiviCRM_For_WordPress {
     $_COOKIE  = stripslashes_deep($_COOKIE);
     $_REQUEST = stripslashes_deep($_REQUEST);
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
     // Test for query var.
     $q = get_query_var('q');
     if (!empty($q)) {
@@ -1369,6 +1410,8 @@ class CiviCRM_For_WordPress {
     $_COOKIE  = $this->wp_cookie;
     $_REQUEST = $this->wp_request;
 
+    unset($this->wp_get, $this->wp_post, $this->wp_cookie, $this->wp_request);
+
   }
 
   /**
@@ -1394,7 +1437,12 @@ class CiviCRM_For_WordPress {
     // Grab query var.
     $html = get_query_var('html');
     if (empty($html)) {
-      $html = isset($_GET['html']) ? $_GET['html'] : '';
+      // We do not use $html apart to test for empty.
+      // phpcs:disable WordPress.Security.NonceVerification.Recommended
+      // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
+      $html = isset($_GET['html']) ? wp_unslash($_GET['html']) : '';
+      // phpcs:enable WordPress.Security.NonceVerification.Recommended
+      // phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
     }
 
     /*
@@ -1402,9 +1450,11 @@ class CiviCRM_For_WordPress {
      * pages. Maybe the menu-XML should include some metadata to make this
      * unnecessary?
      */
-    if (CRM_Utils_Array::value('HTTP_X_REQUESTED_WITH', $_SERVER) == 'XMLHttpRequest'
-        || ($argdata['args'][0] == 'civicrm' && in_array($argdata['args'][1], ['ajax', 'file']))
+    if (CRM_Utils_Array::value('HTTP_X_REQUESTED_WITH', $_SERVER) === 'XMLHttpRequest'
+        || ($argdata['args'][0] === 'civicrm' && in_array($argdata['args'][1], ['ajax', 'file']))
+        // phpcs:disable WordPress.Security.NonceVerification.Recommended
         || !empty($_REQUEST['snippet'])
+        // phpcs:enable WordPress.Security.NonceVerification.Recommended
         || strpos($argdata['argString'], 'civicrm/event/ical') === 0 && empty($html)
         || strpos($argdata['argString'], 'civicrm/contact/imagefile') === 0
     ) {
@@ -1433,7 +1483,9 @@ class CiviCRM_For_WordPress {
     // Get path from query vars.
     $q = get_query_var('q');
     if (empty($q)) {
-      $q = isset($_GET['q']) ? $_GET['q'] : '';
+      // phpcs:disable WordPress.Security.NonceVerification.Recommended
+      $q = isset($_GET['q']) ? sanitize_text_field(wp_unslash($_GET['q'])) : '';
+      // phpcs:enable WordPress.Security.NonceVerification.Recommended
     }
 
     /*
@@ -1466,25 +1518,18 @@ class CiviCRM_For_WordPress {
   /**
    * Get base URL.
    *
-   * Clone of CRM_Utils_System_WordPress::getBaseUrl() whose access is set to
-   * private. Until it is public, we cannot access the URL of the Base Page since
-   * CRM_Utils_System_WordPress::url().
-   *
-   * 27-09-2016
-   * CRM-16421 CRM-17633 WIP Changes to support WordPress in it's own directory.
-   * https://wiki.civicrm.org/confluence/display/CRM/WordPress+installed+in+its+own+directory+issues
-   * For now leave hard coded wp-admin references.
-   * TODO: remove wp-admin references and replace with admin_url() in the future.
-   * TODO: Look at best way to get path to admin_url.
+   * Clone of CRM_Utils_System_WordPress::getBaseUrl() whose access was set to
+   * private. Now that it is public, we can access that method instead.
    *
    * @since 4.4
    *
    * @param bool $absolute Passing TRUE prepends the scheme and domain, FALSE doesn't.
    * @param bool $frontend Passing FALSE returns the admin URL.
-   * @param $forceBackend Passing TRUE overrides $frontend and returns the admin URL.
+   * @param bool $forceBackend Passing TRUE overrides $frontend and returns the admin URL.
    * @return mixed|null|string
    */
   public function get_base_url($absolute, $frontend, $forceBackend) {
+    _deprecated_function(__METHOD__, '5.69', 'CRM_Utils_System::getBaseUrl');
     $config = CRM_Core_Config::singleton();
     if ((is_admin() && !$frontend) || $forceBackend) {
       return Civi::paths()->getUrl('[wp.backend]/.', $absolute ? 'absolute' : 'relative');
diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php
index 8405e21c4b..1b9722d5cc 100644
--- a/civicrm/CRM/Activity/BAO/Activity.php
+++ b/civicrm/CRM/Activity/BAO/Activity.php
@@ -691,9 +691,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
     foreach ($result as $id => $activity) {
       $isBulkActivity = (!$bulkActivityTypeID || ($bulkActivityTypeID === $activity['activity_type_id']));
       foreach ($mappingParams as $apiKey => $expectedName) {
-        if (in_array($apiKey, [
-          'target_contact_name',
-        ])) {
+        if (in_array($apiKey, ['target_contact_name'])) {
 
           if ($isBulkActivity) {
             // @todo  - how is this used? Couldn't we use 'is_bulk' or something clearer?
@@ -1830,6 +1828,9 @@ AND cl.modified_id  = c.id
     $followupParams['activity_type_id'] = $params['followup_activity_type_id'];
     // Get Subject of Follow-up Activiity, CRM-4491
     $followupParams['subject'] = $params['followup_activity_subject'] ?? NULL;
+    if (!is_array($params['followup_assignee_contact_id']) && !empty($params['followup_assignee_contact_id'])) {
+      $params['followup_assignee_contact_id'] = explode(",", $params['followup_assignee_contact_id']);
+    }
     $followupParams['assignee_contact_id'] = $params['followup_assignee_contact_id'] ?? NULL;
 
     // Create target contact for followup.
@@ -2160,7 +2161,7 @@ AND cl.modified_id  = c.id
     }
 
     // Check for target and assignee contacts.
-    // First check for supper permission.
+    // First check for super permission.
     $supPermission = 'view all contacts';
     if ($action == CRM_Core_Action::UPDATE) {
       $supPermission = 'edit all contacts';
@@ -2296,13 +2297,9 @@ INNER JOIN  civicrm_option_group grp ON (grp.id = option_group_id AND grp.name =
    * @return bool
    */
   public static function checkEditInboundEmailsPermissions() {
-    if (CRM_Core_Permission::check('edit inbound email basic information')
-      || CRM_Core_Permission::check('edit inbound email basic information and content')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['edit inbound email basic information', /* OR */ 'edit inbound email basic information and content'],
+    ]);
   }
 
   /**
@@ -2314,7 +2311,7 @@ INNER JOIN  civicrm_option_group grp ON (grp.id = option_group_id AND grp.name =
     $viewOnlyActivities = [
       'Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Email'),
     ];
-    if (self::checkEditInboundEmailsPermissions()) {
+    if (!self::checkEditInboundEmailsPermissions()) {
       $viewOnlyActivities['Inbound Email'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email');
     }
     return $viewOnlyActivities;
diff --git a/civicrm/CRM/Activity/Form/Activity.php b/civicrm/CRM/Activity/Form/Activity.php
index cefbe57ae3..c88631dceb 100644
--- a/civicrm/CRM/Activity/Form/Activity.php
+++ b/civicrm/CRM/Activity/Form/Activity.php
@@ -20,6 +20,8 @@
  */
 class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
 
+  use CRM_Activity_Form_ActivityFormTrait;
+
   /**
    * The id of the object being edited / created
    *
@@ -65,7 +67,6 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
    */
   protected $_sourceContactId;
   protected $_targetContactId;
-  protected $_asigneeContactId;
 
   protected $_single;
 
@@ -266,36 +267,19 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
     $this->assign('context', $this->_context);
 
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this);
-
-    if ($this->_action & CRM_Core_Action::DELETE) {
+    if ($this->getAction() & CRM_Core_Action::DELETE) {
       if (!CRM_Core_Permission::check('delete activities')) {
         CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
       }
     }
 
-    // CRM-6957
-    // When we come from contact search, activity id never comes.
-    // So don't try to get from object, it might gives you wrong one.
-
-    // if we're not adding new one, there must be an id to
-    // an activity we're trying to work on.
-    if ($this->_action != CRM_Core_Action::ADD &&
-      get_class($this->controller) !== 'CRM_Contact_Controller_Search'
-    ) {
-      $this->_activityId = CRM_Utils_Request::retrieve('id', 'Positive', $this);
-    }
-
-    $this->_activityTypeId = CRM_Utils_Request::retrieve('atype', 'Positive', $this);
+    $this->_activityTypeId = $this->getActivityValue('activity_type_id') ?: CRM_Utils_Request::retrieve('atype', 'Positive', $this);
     $this->assign('atype', $this->_activityTypeId);
-
     $this->assign('activityId', $this->_activityId);
 
     // Check for required permissions, CRM-6264.
-    if ($this->_activityId &&
-      in_array($this->_action, [
-        CRM_Core_Action::UPDATE,
-        CRM_Core_Action::VIEW,
-      ]) &&
+    if ($this->getActivityID() &&
+      in_array($this->_action, [CRM_Core_Action::UPDATE, CRM_Core_Action::VIEW]) &&
       !CRM_Activity_BAO_Activity::checkPermission($this->_activityId, $this->_action)
     ) {
       CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
@@ -307,13 +291,6 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       $this->assign('allow_edit_inbound_emails', CRM_Activity_BAO_Activity::checkEditInboundEmailsPermissions());
     }
 
-    if (!$this->_activityTypeId && $this->_activityId) {
-      $this->_activityTypeId = CRM_Core_DAO::getFieldValue('CRM_Activity_DAO_Activity',
-        $this->_activityId,
-        'activity_type_id'
-      );
-    }
-
     $this->assignActivityType();
 
     // Check the mode when this form is called either single or as
@@ -376,8 +353,10 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       [$this->_activityTypeName, $activityTypeDescription] = CRM_Core_BAO_OptionValue::getActivityTypeDetails($this->_activityTypeId);
     }
 
-    // Set activity type name and description to template.
-    $this->assign('activityTypeName', $this->_activityTypeName ?? FALSE);
+    // Set activity type name and description to template. Type should no longer be used anywhere
+    // except the case_activity workflow template - unsure how to test that... We want to remove
+    // it due to mis-naming of the variable. The workflow template can use a token...
+    $this->assign('activityTypeName', $this->_activityTypeName);
     $this->assign('activityTypeDescription', $activityTypeDescription ?? FALSE);
 
     // set user context
@@ -406,13 +385,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       }
       $this->assign('searchKey', $qfKey);
     }
-    elseif (in_array($this->_context, [
-      'standalone',
-      'home',
-      'dashlet',
-      'dashletFullscreen',
-    ])
-    ) {
+    elseif (in_array($this->_context, ['standalone', 'home', 'dashlet', 'dashletFullscreen'])) {
       $urlParams = 'reset=1';
       $urlString = 'civicrm/dashboard';
     }
@@ -1272,8 +1245,29 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
         }
       }
     }
-
     $this->assign('activityTypeNameAndLabel', $activityTypeNameAndLabel);
   }
 
+  /**
+   * Get the activity ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getActivityID(): ?int {
+    // CRM-6957
+    // When we come from contact search, activity id never comes.
+    // So don't try to get from object, it might gives you wrong one.
+    if ($this->controller instanceof \CRM_Contact_Controller_Search) {
+      return NULL;
+    }
+    if (!isset($this->_activityId) && $this->_action != CRM_Core_Action::ADD) {
+      $this->_activityId = CRM_Utils_Request::retrieve('id', 'Positive', $this);
+    }
+    return $this->_activityId ? (int) $this->_activityId : FALSE;
+  }
+
 }
diff --git a/civicrm/CRM/Activity/Form/ActivityFormTrait.php b/civicrm/CRM/Activity/Form/ActivityFormTrait.php
new file mode 100644
index 0000000000..81f0195099
--- /dev/null
+++ b/civicrm/CRM/Activity/Form/ActivityFormTrait.php
@@ -0,0 +1,51 @@
+<?php
+
+use Civi\API\EntityLookupTrait;
+
+/**
+ * Trait implements functions to retrieve activity related values.
+ */
+trait CRM_Activity_Form_ActivityFormTrait {
+
+  use EntityLookupTrait;
+
+  /**
+   * Get the value for a field relating to the activity.
+   *
+   * All values returned in apiv4 format. Escaping may be required.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @param string $fieldName
+   *
+   * @return mixed
+   * @throws \CRM_Core_Exception
+   */
+  public function getActivityValue(string $fieldName) {
+    if ($this->isDefined('Activity')) {
+      return $this->lookup('Activity', $fieldName);
+    }
+    $id = $this->getActivityID();
+    if ($id) {
+      $this->define('Activity', 'Activity', ['id' => $id]);
+      return $this->lookup('Activity', $fieldName);
+    }
+    return NULL;
+  }
+
+  /**
+   * Get the selected Activity ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getActivityID(): ?int {
+    throw new CRM_Core_Exception('`getActivityID` must be implemented');
+  }
+
+}
diff --git a/civicrm/CRM/Activity/Form/ActivityView.php b/civicrm/CRM/Activity/Form/ActivityView.php
index 553c16ebb8..e5223a6f12 100644
--- a/civicrm/CRM/Activity/Form/ActivityView.php
+++ b/civicrm/CRM/Activity/Form/ActivityView.php
@@ -25,6 +25,15 @@ class CRM_Activity_Form_ActivityView extends CRM_Core_Form {
    */
   public $submitOnce = TRUE;
 
+  /**
+   * Used by CRM_Mailing_BAO_Mailing::getMailingContent(), so cannot be removed
+   * (even though at first glance it may look safe)
+   *
+   * @var bool
+   * @internal
+   */
+  public $_mailing_id;
+
   /**
    * Set variables up before form is built.
    */
@@ -42,12 +51,7 @@ class CRM_Activity_Form_ActivityView extends CRM_Core_Form {
     }
 
     $session = CRM_Core_Session::singleton();
-    if (!in_array($context, [
-      'home',
-      'dashlet',
-      'dashletFullscreen',
-    ])
-    ) {
+    if (!in_array($context, ['home', 'dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$cid}&selectedChild=activity");
     }
     else {
diff --git a/civicrm/CRM/Activity/Page/AJAX.php b/civicrm/CRM/Activity/Page/AJAX.php
index 5c2c63ec9f..9977d747dd 100644
--- a/civicrm/CRM/Activity/Page/AJAX.php
+++ b/civicrm/CRM/Activity/Page/AJAX.php
@@ -325,10 +325,7 @@ class CRM_Activity_Page_AJAX {
 
     // Mark previous activity as deleted. If it was a non-case activity
     // then just change the subject.
-    if (in_array($params['mode'], [
-      'move',
-      'file',
-    ])) {
+    if (in_array($params['mode'], ['move', 'file'])) {
       $caseActivity = new CRM_Case_DAO_CaseActivity();
       $caseActivity->case_id = $params['caseID'];
       $caseActivity->activity_id = $otherActivity->id;
diff --git a/civicrm/CRM/Activity/Page/Tab.php b/civicrm/CRM/Activity/Page/Tab.php
index bca1f8abbe..1845e3d5ff 100644
--- a/civicrm/CRM/Activity/Page/Tab.php
+++ b/civicrm/CRM/Activity/Page/Tab.php
@@ -20,6 +20,20 @@
  */
 class CRM_Activity_Page_Tab extends CRM_Core_Page {
 
+  /**
+   * Case ID, passed in via query param.
+   *
+   * @var int
+   */
+  public $_caseId;
+
+  /**
+   * Contact ID, passed in via query param
+   *
+   * @var int
+   */
+  public $_contactId;
+
   /**
    * Browse all activities for a particular contact.
    */
@@ -111,7 +125,7 @@ class CRM_Activity_Page_Tab extends CRM_Core_Page {
     $this->assign('contactID', $this->_contactId);
 
     // check logged in url permission
-    CRM_Contact_Page_View::checkUserPermission($this);
+    CRM_Contact_Page_View::checkUserPermission($this, $this->_contactId);
 
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'browse');
     $this->assign('action', $this->_action);
@@ -184,10 +198,7 @@ class CRM_Activity_Page_Tab extends CRM_Core_Page {
         'Print PDF Letter'
       );
 
-      if (in_array($activityTypeId, [
-        $emailTypeValue,
-        $letterTypeValue,
-      ])) {
+      if (in_array($activityTypeId, [$emailTypeValue, $letterTypeValue])) {
         return;
       }
     }
diff --git a/civicrm/CRM/Admin/Form/ParticipantStatusType.php b/civicrm/CRM/Admin/Form/ParticipantStatusType.php
index 7eb9523568..b48b822ff8 100644
--- a/civicrm/CRM/Admin/Form/ParticipantStatusType.php
+++ b/civicrm/CRM/Admin/Form/ParticipantStatusType.php
@@ -21,6 +21,13 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form {
    */
   public $submitOnce = TRUE;
 
+  /**
+   * Used to make sure a malicious POST does not change is_reserved
+   *
+   * @var bool
+   */
+  protected $_isReserved = FALSE;
+
   /**
    * Explicitly declare the entity api name.
    */
@@ -70,7 +77,7 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form {
     if (empty($defaults['weight'])) {
       $defaults['weight'] = CRM_Utils_Weight::getDefaultWeight('CRM_Event_DAO_ParticipantStatusType');
     }
-    $this->_isReserved = $defaults['is_reserved'] ?? NULL;
+    $this->_isReserved = $defaults['is_reserved'] ?? FALSE;
     if ($this->_isReserved) {
       $this->freeze(['name', 'class', 'is_active']);
     }
diff --git a/civicrm/CRM/Admin/Form/Preferences/Contribute.php b/civicrm/CRM/Admin/Form/Preferences/Contribute.php
index e6182123ee..db4ffc3ac4 100644
--- a/civicrm/CRM/Admin/Form/Preferences/Contribute.php
+++ b/civicrm/CRM/Admin/Form/Preferences/Contribute.php
@@ -15,161 +15,23 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Core\SettingsMetadata;
+
 /**
  * This class generates form components for the display preferences.
  */
 class CRM_Admin_Form_Preferences_Contribute extends CRM_Admin_Form_Preferences {
 
-  /**
-   * Our standards for settings are to have a setting per value with defined metadata.
-   *
-   * Unfortunately the 'contribution_invoice_settings' has been added in non-compliance.
-   * We use this array to hack-handle.
-   *
-   * These are now stored as individual settings but this form still does weird & wonderful things.
-   *
-   * Note the 'real' settings on this form are added via metadata definition - ie
-   * 'settings_pages' => ['contribute' => ['weight' => 1]], in their metadata.
-   *
-   * @var array
-   */
-  protected $invoiceSettings = [];
-
   /**
    * Build the form object.
-   *
-   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     parent::buildQuickForm();
-    $this->invoiceSettings = [
-      'invoice_prefix' => [
-        'html_type' => 'text',
-        'title' => ts('Invoice Prefix'),
-        'weight' => 1,
-        'description' => ts('Enter prefix to be display on PDF for invoice'),
-      ],
-      'due_date' => [
-        'html_type' => 'text',
-        'title' => ts('Due Date'),
-        'weight' => 3,
-        'description' => '',
-      ],
-      'due_date_period' => [
-        'html_type' => 'select',
-        'title' => ts('For transmission'),
-        'weight' => 4,
-        'description' => ts('Select the interval for due date.'),
-        'option_values' => [
-          'select' => ts('- select -'),
-          'days' => ts('Days'),
-          'months' => ts('Months'),
-          'years' => ts('Years'),
-        ],
-      ],
-      'notes' => [
-        'html_type' => 'wysiwyg',
-        'title' => ts('Notes or Standard Terms'),
-        'weight' => 5,
-        'description' => ts('Enter note or message to be displayed on PDF invoice or credit notes '),
-        'attributes' => ['rows' => 2, 'cols' => 40],
-      ],
-      'is_email_pdf' => [
-        'html_type' => 'checkbox',
-        'title' => ts('Automatically email invoice when user purchases online'),
-        'weight' => 6,
-        'description' => ts('Should a pdf invoice be emailed automatically?'),
-      ],
-      'tax_term' => [
-        'html_type' => 'text',
-        'title' => ts('Tax Term'),
-        'weight' => 7,
-        'description' => '',
-      ],
-      'tax_display_settings' => [
-        'html_type' => 'select',
-        'title' => ts('Tax Display Settings'),
-        'weight' => 8,
-        'description' => '',
-        'option_values' => [
-          'Do_not_show' => ts('Do not show breakdown, only show total - i.e %1', [
-            1 => CRM_Utils_Money::format(120),
-          ]),
-          'Inclusive' => ts('Show [tax term] inclusive price - i.e. %1', [
-            1 => ts('%1 (includes [tax term] of %2)', [1 => CRM_Utils_Money::format(120), 2 => CRM_Utils_Money::format(20)]),
-          ]),
-          'Exclusive' => ts('Show [tax term] exclusive price - i.e. %1', [
-            1 => ts('%1 + %2 [tax term]', [1 => CRM_Utils_Money::format(120), 2 => CRM_Utils_Money::format(20)]),
-          ]),
-        ],
-      ],
-    ];
-
-    // @todo this is a faux metadata approach - we should be honest & add them correctly or find a way to make this
-    // compatible with our settings standards.
-    foreach ($this->invoiceSettings as $fieldName => $fieldValue) {
-      switch ($fieldValue['html_type']) {
-        case 'text':
-          $this->addElement('text',
-            $fieldName,
-            $fieldValue['title'],
-            [
-              'maxlength' => 64,
-              'size' => 32,
-            ]
-          );
-          break;
-
-        case 'checkbox':
-          $this->add($fieldValue['html_type'],
-            $fieldName,
-            $fieldValue['title']
-          );
-          break;
-
-        case 'select':
-          $this->addElement('select',
-            $fieldName,
-            $fieldValue['title'],
-            $fieldValue['option_values'],
-            CRM_Utils_Array::value('attributes', $fieldValue)
-          );
-          break;
-
-        case 'wysiwyg':
-          $this->add('wysiwyg', $fieldName, $fieldValue['title'], $fieldValue['attributes']);
-          break;
-      }
-    }
-
-    $this->assign('htmlFields', $this->invoiceSettings);
-  }
-
-  /**
-   * Set default values for the form.
-   *
-   * default values are retrieved from the database
-   */
-  public function setDefaultValues() {
-    $defaults = parent::setDefaultValues();
-    $defaults = array_merge($defaults, Civi::settings()->get('contribution_invoice_settings'));
-    return $defaults;
-  }
-
-  /**
-   * Process the form after the input has been submitted and validated.
-   */
-  public function postProcess() {
-    // store the submitted values in an array
-    $params = $this->controller->exportValues($this->_name);
-    $invoiceParams = array_intersect_key($params, $this->invoiceSettings);
-    // This is a hack - invoicing is it's own setting but it is being used from invoice params
-    // too. This means that saving from api will not have the desired core effect.
-    // but we should fix that elsewhere - ie. stop abusing the settings
-    // and fix the code repetition associated with invoicing
-    $invoiceParams['invoicing'] = $params['invoicing'] ?? 0;
-    Civi::settings()->set('contribution_invoice_settings', $invoiceParams);
-    parent::postProcess();
+    $invoiceSettings = SettingsMetadata::getMetadata(['name' => ['invoice_prefix', 'tax_term', 'invoice_notes', 'invoice_due_date', 'invoice_is_email_pdf', 'invoice_due_date_period', 'tax_display_settings']], NULL, TRUE);
+    // Let the main template file deal with the main setting & then Contribute.tpl
+    // can stick the invoice settings in a div that can show-hide-toggle if invoicing is enabled.
+    $this->assign('fields', $this->filterMetadataByWeight(array_diff_key($this->getSettingsMetaData(), $invoiceSettings)));
+    $this->assign('invoiceDependentFields', $invoiceSettings);
   }
 
 }
diff --git a/civicrm/CRM/Admin/Form/PreferencesDate.php b/civicrm/CRM/Admin/Form/PreferencesDate.php
index 3f9337bb89..da8e438a45 100644
--- a/civicrm/CRM/Admin/Form/PreferencesDate.php
+++ b/civicrm/CRM/Admin/Form/PreferencesDate.php
@@ -20,6 +20,13 @@
  */
 class CRM_Admin_Form_PreferencesDate extends CRM_Admin_Form {
 
+  /**
+   * @return string
+   */
+  public function getDefaultEntity(): string {
+    return 'PreferencesDate';
+  }
+
   /**
    * Build the form object.
    */
diff --git a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
index cf07535068..cc221644ae 100644
--- a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
+++ b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
@@ -48,9 +48,13 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
   /**
    * Basic setup.
    */
-  public function preProcess() {
-    // check for post max size
-    CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'), TRUE);
+  public function preProcess(): void {
+    $maxImportFileSize = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'));
+    $postMaxSize = CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'));
+    if ($maxImportFileSize > $postMaxSize) {
+      CRM_Core_Session::setStatus(ts("Note: Upload max filesize ('upload_max_filesize') should not exceed Post max size ('post_max_size') as defined in PHP.ini, please check with your system administrator."), ts("Warning"), "alert");
+    }
+
     // This is a temp hack for the fact we really don't need to hard-code each setting in the tpl but
     // we haven't worked through NOT doing that. These settings have been un-hardcoded.
     $this->assign('pure_config_settings', [
@@ -100,8 +104,8 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
     $errors = [];
 
     // validate max file size
-    $iniBytes = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), FALSE);
-    $inputBytes = CRM_Utils_Number::formatUnitSize($fields['maxFileSize'] . 'M', FALSE);
+    $iniBytes = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'));
+    $inputBytes = ((int) $fields['maxFileSize']) * 1024 * 1024;
 
     if ($inputBytes > $iniBytes) {
       $errors['maxFileSize'] = ts("Maximum file size cannot exceed limit defined in \"php.ini\" (\"upload_max_filesize=%1\").", [
diff --git a/civicrm/CRM/Admin/Form/SettingTrait.php b/civicrm/CRM/Admin/Form/SettingTrait.php
index 705e0ab600..eb8d592cf7 100644
--- a/civicrm/CRM/Admin/Form/SettingTrait.php
+++ b/civicrm/CRM/Admin/Form/SettingTrait.php
@@ -150,21 +150,7 @@ trait CRM_Admin_Form_SettingTrait {
    */
   protected function getSettingsOrderedByWeight() {
     $settingMetaData = $this->getSettingsMetaData();
-    $filter = $this->getSettingPageFilter();
-
-    usort($settingMetaData, function ($a, $b) use ($filter) {
-      // Handle cases in which a comparison is impossible. Such will be considered ties.
-      if (
-        // A comparison can't be made unless both setting weights are declared.
-        !isset($a['settings_pages'][$filter]['weight'], $b['settings_pages'][$filter]['weight'])
-        // A pair of settings might actually have the same weight.
-        || $a['settings_pages'][$filter]['weight'] === $b['settings_pages'][$filter]['weight']
-      ) {
-        return 0;
-      }
-
-      return $a['settings_pages'][$filter]['weight'] > $b['settings_pages'][$filter]['weight'] ? 1 : -1;
-    });
+    $settingMetaData = $this->filterMetadataByWeight($settingMetaData);
 
     return $settingMetaData;
   }
@@ -412,4 +398,28 @@ trait CRM_Admin_Form_SettingTrait {
     }
   }
 
+  /**
+   * @param array $settingMetaData
+   *
+   * @return array
+   */
+  protected function filterMetadataByWeight(array $settingMetaData): array {
+    $filter = $this->getSettingPageFilter();
+
+    usort($settingMetaData, function ($a, $b) use ($filter) {
+      // Handle cases in which a comparison is impossible. Such will be considered ties.
+      if (
+        // A comparison can't be made unless both setting weights are declared.
+        !isset($a['settings_pages'][$filter]['weight'], $b['settings_pages'][$filter]['weight'])
+        // A pair of settings might actually have the same weight.
+        || $a['settings_pages'][$filter]['weight'] === $b['settings_pages'][$filter]['weight']
+      ) {
+        return 0;
+      }
+
+      return $a['settings_pages'][$filter]['weight'] > $b['settings_pages'][$filter]['weight'] ? 1 : -1;
+    });
+    return $settingMetaData;
+  }
+
 }
diff --git a/civicrm/CRM/Admin/Page/Job.php b/civicrm/CRM/Admin/Page/Job.php
index f8a1a10171..fb7c9f103e 100644
--- a/civicrm/CRM/Admin/Page/Job.php
+++ b/civicrm/CRM/Admin/Page/Job.php
@@ -120,9 +120,6 @@ class CRM_Admin_Page_Job extends CRM_Core_Page_Basic {
     $this->_action = CRM_Utils_Request::retrieve('action', 'String',
       $this, FALSE, 0
     );
-    $this->_context = CRM_Utils_Request::retrieve('context', 'String',
-      $this, FALSE, 0
-    );
 
     if (($this->_action & CRM_Core_Action::COPY) && (!empty($this->_id))) {
       try {
diff --git a/civicrm/CRM/Admin/Page/LabelFormats.php b/civicrm/CRM/Admin/Page/LabelFormats.php
index ea4dead9d9..630be0ef6b 100644
--- a/civicrm/CRM/Admin/Page/LabelFormats.php
+++ b/civicrm/CRM/Admin/Page/LabelFormats.php
@@ -51,19 +51,19 @@ class CRM_Admin_Page_LabelFormats extends CRM_Core_Page_Basic {
       self::$_links = [
         CRM_Core_Action::UPDATE => [
           'name' => ts('Edit'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=update&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Edit Label Format'),
         ],
         CRM_Core_Action::COPY => [
           'name' => ts('Copy'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=copy&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Copy Label Format'),
         ],
         CRM_Core_Action::DELETE => [
           'name' => ts('Delete'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=delete&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Delete Label Format'),
         ],
diff --git a/civicrm/CRM/Api4/Page/AJAX.php b/civicrm/CRM/Api4/Page/AJAX.php
index bea9ec4822..3e968cd0f9 100644
--- a/civicrm/CRM/Api4/Page/AJAX.php
+++ b/civicrm/CRM/Api4/Page/AJAX.php
@@ -137,10 +137,10 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page {
       $status = $statusMap[get_class($e)] ?? 500;
       // Send error code (but don't overwrite success code if there are multiple calls and one was successful)
       $this->httpResponseCode = $this->httpResponseCode ?: $status;
-      if (CRM_Core_Permission::check('view debug output') || ($e->getErrorData()['show_detailed_error'] ?? FALSE)) {
+      if (CRM_Core_Permission::check('view debug output') || (method_exists($e, 'getErrorData') && ($e->getErrorData()['show_detailed_error'] ?? FALSE))) {
         $response['error_code'] = $e->getCode();
         $response['error_message'] = $e->getMessage();
-        if (!empty($params['debug'])) {
+        if (!empty($params['debug']) && CRM_Core_Permission::check('view debug output')) {
           if (method_exists($e, 'getUserInfo')) {
             $response['debug']['info'] = $e->getUserInfo();
           }
diff --git a/civicrm/CRM/Badge/BAO/Badge.php b/civicrm/CRM/Badge/BAO/Badge.php
index d3486b13ff..d189683660 100644
--- a/civicrm/CRM/Badge/BAO/Badge.php
+++ b/civicrm/CRM/Badge/BAO/Badge.php
@@ -24,6 +24,11 @@ use Civi\Token\TokenProcessor;
  */
 class CRM_Badge_BAO_Badge {
 
+  /**
+   * @var CRM_Utils_PDF_Label
+   */
+  public $pdf;
+
   /**
    * @var bool
    */
@@ -168,9 +173,6 @@ class CRM_Badge_BAO_Badge {
    * @param int $cellspacing
    */
   public function labelCreator($formattedRow, $cellspacing = 0) {
-    $this->lMarginLogo = 18;
-    $this->tMarginName = 20;
-
     $x = $this->pdf->GetAbsX();
     $y = $this->pdf->getY();
 
@@ -363,10 +365,8 @@ class CRM_Badge_BAO_Badge {
       $y = $this->pdf->GetY();
     }
 
-    $this->imgRes = 300;
-
     if ($img) {
-      [$w, $h] = self::getImageProperties($img, $this->imgRes, $w, $h);
+      [$w, $h] = self::getImageProperties($img, 300, $w, $h);
       $this->pdf->Image($img, $x, $y, $w, $h, '', '', '', FALSE, 72, '', FALSE,
         FALSE, $this->debug, FALSE, FALSE, FALSE);
     }
diff --git a/civicrm/CRM/Batch/Form/Entry.php b/civicrm/CRM/Batch/Form/Entry.php
index b17c8c733b..7a472a9fe1 100644
--- a/civicrm/CRM/Batch/Form/Entry.php
+++ b/civicrm/CRM/Batch/Form/Entry.php
@@ -107,6 +107,11 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
    */
   protected $currentRowExistingMembership;
 
+  /**
+   * @var array
+   */
+  protected $_priceSet;
+
   /**
    * Get the contribution id for the current row.
    *
@@ -650,10 +655,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
         $lineItem = [];
         CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'], $value, $lineItem[$priceSetId]);
 
-        // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-        // function to get correct amount level consistently. Remove setting of the amount level in
-        // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-        // to cover all variants.
+        // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
         unset($value['amount_level']);
 
         //CRM-11529 for back office transactions
@@ -915,7 +917,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
   /**
    * Send email receipt.
    *
-   * @param CRM_Core_Form $form
+   * @param CRM_Batch_Form_Entry $form
    *   Form object.
    * @param array $formValues
    *
@@ -952,22 +954,22 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
     }
     $form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id));
 
-    [$form->_contributorDisplayName, $form->_contributorEmail]
+    [$contributorDisplayName, $contributorEmail]
       = CRM_Contact_BAO_Contact_Location::getEmailDetails($formValues['contact_id']);
-    $form->_receiptContactId = $formValues['contact_id'];
+    $receiptContactId = $formValues['contact_id'];
 
     CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'workflow' => 'membership_offline_receipt',
         'from' => $this->getFromEmailAddress(),
-        'toName' => $form->_contributorDisplayName,
-        'toEmail' => $form->_contributorEmail,
+        'toName' => $contributorDisplayName,
+        'toEmail' => $contributorEmail,
         'PDFFilename' => ts('receipt') . '.pdf',
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'isTest' => (bool) ($form->_action & CRM_Core_Action::PREVIEW),
         'modelProps' => [
           'contributionID' => $this->getCurrentRowContributionID(),
-          'contactID' => $form->_receiptContactId,
+          'contactID' => $receiptContactId,
           'membershipID' => $this->getCurrentRowMembershipID(),
         ],
       ]
diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php
index f0220a12b2..9976b33dcf 100644
--- a/civicrm/CRM/Campaign/BAO/Survey.php
+++ b/civicrm/CRM/Campaign/BAO/Survey.php
@@ -266,10 +266,7 @@ SELECT  survey.id    as id,
 
     $select = $from = [];
     foreach ($returnProperties as $property => $ignore) {
-      $value = (in_array($property, [
-        'city',
-        'street_address',
-      ])) ? 'address' : $property;
+      $value = (in_array($property, ['city', 'street_address'])) ? 'address' : $property;
       switch ($property) {
         case 'sort_name':
         case 'contact_type':
diff --git a/civicrm/CRM/Campaign/Form/Search.php b/civicrm/CRM/Campaign/Form/Search.php
index dcbf439915..528bf2ce5d 100644
--- a/civicrm/CRM/Campaign/Form/Search.php
+++ b/civicrm/CRM/Campaign/Form/Search.php
@@ -65,12 +65,7 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search {
     //operation for state machine.
     $this->_operation = CRM_Utils_Request::retrieve('op', 'String', $this, FALSE, 'reserve');
     //validate operation.
-    if (!in_array($this->_operation, [
-      'reserve',
-      'release',
-      'interview',
-    ])
-    ) {
+    if (!in_array($this->_operation, ['reserve', 'release', 'interview'])) {
       $this->_operation = 'reserve';
       $this->set('op', $this->_operation);
     }
diff --git a/civicrm/CRM/Campaign/Form/Task/Interview.php b/civicrm/CRM/Campaign/Form/Task/Interview.php
index 34a7c5978c..653f67c0cb 100644
--- a/civicrm/CRM/Campaign/Form/Task/Interview.php
+++ b/civicrm/CRM/Campaign/Form/Task/Interview.php
@@ -59,11 +59,7 @@ class CRM_Campaign_Form_Task_Interview extends CRM_Campaign_Form_Task {
     $this->_reserveToInterview = $this->get('reserveToInterview');
     if ($this->_reserveToInterview || $this->_votingTab) {
       //user came from voting tab / reserve form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->{"_$fld"} = $this->get($fld);
       }
       //get the target voter ids.
@@ -428,11 +424,7 @@ WHERE {$clause}
     }
     elseif ($buttonName == '_qf_Interview_next_interviewToRelease') {
       //get ready to jump to release form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->controller->set($fld, $this->{"_$fld"});
       }
       $this->controller->set('interviewToRelease', TRUE);
diff --git a/civicrm/CRM/Campaign/Form/Task/Release.php b/civicrm/CRM/Campaign/Form/Task/Release.php
index 8cfb78ba14..ae17d3be8c 100644
--- a/civicrm/CRM/Campaign/Form/Task/Release.php
+++ b/civicrm/CRM/Campaign/Form/Task/Release.php
@@ -50,11 +50,7 @@ class CRM_Campaign_Form_Task_Release extends CRM_Campaign_Form_Task {
     $this->_interviewToRelease = $this->get('interviewToRelease');
     if ($this->_interviewToRelease) {
       //user came from interview form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->{"_$fld"} = $this->get($fld);
       }
 
diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php
index 69e15a5585..7d99c2f666 100644
--- a/civicrm/CRM/Campaign/Page/AJAX.php
+++ b/civicrm/CRM/Campaign/Page/AJAX.php
@@ -127,10 +127,7 @@ class CRM_Campaign_Page_AJAX {
     }
 
     //format multi-select group and contact types.
-    foreach ([
-      'group',
-      'contact_type',
-    ] as $param) {
+    foreach (['group', 'contact_type'] as $param) {
       $paramValue = $params[$param] ?? NULL;
       if ($paramValue) {
         unset($params[$param]);
diff --git a/civicrm/CRM/Case/Audit/Audit.php b/civicrm/CRM/Case/Audit/Audit.php
index 620ef00941..9f9128241f 100644
--- a/civicrm/CRM/Case/Audit/Audit.php
+++ b/civicrm/CRM/Case/Audit/Audit.php
@@ -102,11 +102,7 @@ class CRM_Case_Audit_Audit {
 
               //CRM-4570
               if ($printReport) {
-                if (!in_array($label, [
-                  'Activity Type',
-                  'Status',
-                ])
-                ) {
+                if (!in_array($label, ['Activity Type', 'Status'])) {
                   $caseActivities[$activityindex][$fieldindex] = [];
                   $caseActivities[$activityindex][$fieldindex]['name'] = $name;
                   $caseActivities[$activityindex][$fieldindex]['label'] = $label;
diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php
index d6d3c55cd9..c0d1a23dbe 100644
--- a/civicrm/CRM/Case/BAO/Case.php
+++ b/civicrm/CRM/Case/BAO/Case.php
@@ -639,7 +639,7 @@ HERESQL;
 
     $order = NULL;
     if (!empty($params['sortBy'])) {
-      if (strstr($params['sortBy'], 'date ')) {
+      if (str_contains($params['sortBy'], 'date ')) {
         $params['sortBy'] = str_replace('date', 'activity_date_time', $params['sortBy']);
       }
       $order = "ORDER BY " . $params['sortBy'];
@@ -768,17 +768,19 @@ HERESQL;
 
     $caseTypes = CRM_Case_PseudoConstant::caseType();
     $caseStatuses = CRM_Case_PseudoConstant::caseStatus();
-    $caseTypes = array_flip($caseTypes);
 
     // get statuses as headers for the table
     $url = CRM_Utils_System::url('civicrm/case/search', "reset=1&force=1&all=1&case_status_id=");
-    foreach ($caseStatuses as $key => $name) {
-      $caseSummary['headers'][$key]['status'] = $name;
+    $rows = [];
+    foreach ($caseStatuses as $key => $caseStatusLabel) {
+      $caseSummary['headers'][$key]['status'] = $caseStatusLabel;
       $caseSummary['headers'][$key]['url'] = $url . $key;
+      foreach ($caseTypes as $caseTypeLabel) {
+        $rows[$caseTypeLabel][$caseStatusLabel] = ['count' => NULL, 'url' => NULL];
+      }
     }
 
     // build rows with actual data
-    $rows = [];
     $myGroupByClause = $mySelectClause = $myCaseFromClause = $myCaseWhereClauseA = $myCaseWhereClauseB = '';
 
     if ($allCases) {
@@ -827,10 +829,7 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas
 
     $res = CRM_Core_DAO::executeQuery($query);
     while ($res->fetch()) {
-      if (!isset($rows[$res->case_type])) {
-        $rows[$res->case_type] = array_fill_keys($caseStatuses, []);
-      }
-      if (!empty($rows[$res->case_type]) && !empty($rows[$res->case_type][$res->case_status])) {
+      if (!empty($rows[$res->case_type][$res->case_status]['count'])) {
         $rows[$res->case_type][$res->case_status]['count'] = $rows[$res->case_type][$res->case_status]['count'] + 1;
       }
       else {
@@ -842,7 +841,7 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas
         ];
       }
     }
-    $caseSummary['rows'] = array_merge($caseTypes, $rows);
+    $caseSummary['rows'] = $rows;
 
     return $caseSummary;
   }
@@ -2503,7 +2502,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
     $actionOperations = ['view', 'edit', 'delete'];
     if (in_array($operation, $actionOperations)) {
 
-      //do cache when user has non/supper permission.
+      // Do cache when user has non-super permission.
       static $allowOperations;
 
       if (!is_array($allowOperations) ||
@@ -2542,12 +2541,8 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
         //has permissions.
         if (!empty($hasPermissions)) {
           //need to check activity object specific.
-          if (in_array($operation, [
-            'view',
-            'edit',
-          ])
-          ) {
-            //do we have supper permission.
+          if (in_array($operation, ['view', 'edit'])) {
+            // Check for super permission.
             if (in_array('access all cases and activities', $hasPermissions[$operation])) {
               $allowOperations[$operation] = $allow = TRUE;
             }
@@ -2609,8 +2604,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
         }
       }
       else {
-        //use cache.
-        //here contact might have supper/non permission.
+        // Use cache; user might have non-super permission.
         $allow = $allowOperations[$operation];
       }
     }
@@ -2710,13 +2704,9 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
       return FALSE;
     }
 
-    if (CRM_Core_Permission::check('access my cases and activities') ||
-      CRM_Core_Permission::check('access all cases and activities')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['access my cases and activities', /* OR */ 'access all cases and activities'],
+    ]);
   }
 
   /**
diff --git a/civicrm/CRM/Case/Form/Activity/OpenCase.php b/civicrm/CRM/Case/Form/Activity/OpenCase.php
index 1c3092f0bc..6f01cce1b4 100644
--- a/civicrm/CRM/Case/Form/Activity/OpenCase.php
+++ b/civicrm/CRM/Case/Form/Activity/OpenCase.php
@@ -32,10 +32,6 @@ class CRM_Case_Form_Activity_OpenCase {
    * @throws \CRM_Core_Exception
    */
   public static function preProcess(&$form) {
-    //get multi client case configuration
-    $xmlProcessorProcess = new CRM_Case_XMLProcessor_Process();
-    $form->_allowMultiClient = (bool) $xmlProcessorProcess->getAllowMultipleCaseClients();
-
     if ($form->_context == 'caseActivity') {
       $contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $form);
       $atype = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Case Start Date');
@@ -140,9 +136,12 @@ class CRM_Case_Form_Activity_OpenCase {
       return;
     }
     if ($form->_context == 'standalone') {
+      //get multi client case configuration
+      $xmlProcessorProcess = new CRM_Case_XMLProcessor_Process();
+
       $form->addEntityRef('client_id', ts('Client'), [
         'create' => TRUE,
-        'multiple' => $form->_allowMultiClient,
+        'multiple' => (bool) $xmlProcessorProcess->getAllowMultipleCaseClients(),
       ], TRUE);
     }
 
diff --git a/civicrm/CRM/Case/Form/ActivityToCase.php b/civicrm/CRM/Case/Form/ActivityToCase.php
index fddff50fe3..ac182876bb 100644
--- a/civicrm/CRM/Case/Form/ActivityToCase.php
+++ b/civicrm/CRM/Case/Form/ActivityToCase.php
@@ -20,6 +20,19 @@
  */
 class CRM_Case_Form_ActivityToCase extends CRM_Core_Form {
 
+  /**
+   * Case Activity being copied or moved
+   * @var int
+   */
+  public $_activityId;
+
+
+  /**
+   * Current CiviCase ID associated with the activity
+   * @var int
+   */
+  public $_currentCaseId;
+
   /**
    * Build all the data structures needed to build the form.
    *
diff --git a/civicrm/CRM/Case/Form/DeleteClient.php b/civicrm/CRM/Case/Form/DeleteClient.php
index c7614416ea..58978fb33f 100644
--- a/civicrm/CRM/Case/Form/DeleteClient.php
+++ b/civicrm/CRM/Case/Form/DeleteClient.php
@@ -66,10 +66,7 @@ class CRM_Case_Form_DeleteClient extends CRM_Core_Form {
     elseif ($context == 'dashboard') {
       $url = CRM_Utils_System::url('civicrm/case', 'reset=1');
     }
-    elseif (in_array($context, [
-      'dashlet',
-      'dashletFullscreen',
-    ])) {
+    elseif (in_array($context, ['dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/dashboard', 'reset=1');
     }
     $session = CRM_Core_Session::singleton();
diff --git a/civicrm/CRM/Case/Form/EditClient.php b/civicrm/CRM/Case/Form/EditClient.php
index 16e7257b73..cf0c5ea7e0 100644
--- a/civicrm/CRM/Case/Form/EditClient.php
+++ b/civicrm/CRM/Case/Form/EditClient.php
@@ -45,10 +45,7 @@ class CRM_Case_Form_EditClient extends CRM_Core_Form {
     elseif ($context == 'dashboard') {
       $url = CRM_Utils_System::url('civicrm/case', 'reset=1');
     }
-    elseif (in_array($context, [
-      'dashlet',
-      'dashletFullscreen',
-    ])) {
+    elseif (in_array($context, ['dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/dashboard', 'reset=1');
     }
     $session = CRM_Core_Session::singleton();
diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php
index bd4037ceff..7f1e548c48 100644
--- a/civicrm/CRM/Case/Info.php
+++ b/civicrm/CRM/Case/Info.php
@@ -40,17 +40,6 @@ class CRM_Case_Info extends CRM_Core_Component_Info {
     ];
   }
 
-  /**
-   * @inheritDoc
-   */
-  public function getAngularModules() {
-    global $civicrm_root;
-
-    $result = [];
-    $result['crmCaseType'] = include "$civicrm_root/ang/crmCaseType.ang.php";
-    return $result;
-  }
-
   /**
    * @inheritDoc
    * @param bool $getAllUnconditionally
diff --git a/civicrm/CRM/Case/XMLProcessor/Report.php b/civicrm/CRM/Case/XMLProcessor/Report.php
index 05b29fb534..6e42fb4bf3 100644
--- a/civicrm/CRM/Case/XMLProcessor/Report.php
+++ b/civicrm/CRM/Case/XMLProcessor/Report.php
@@ -30,6 +30,11 @@ class CRM_Case_XMLProcessor_Report extends CRM_Case_XMLProcessor {
    */
   protected $_redactionStringRules = [];
 
+  /**
+   * @var array
+   */
+  public $_redactionRegexRules;
+
   /**
    */
   public function __construct() {
@@ -529,7 +534,7 @@ WHERE      a.id = %1
           if ($value) {
             // Note: this is already taken care in getDisplayValue above, but sometimes
             // strings like '^A^A' creates problem. So to fix this special case -
-            if (strstr($value, CRM_Core_DAO::VALUE_SEPARATOR)) {
+            if (str_contains($value, CRM_Core_DAO::VALUE_SEPARATOR)) {
               $value = trim($value, CRM_Core_DAO::VALUE_SEPARATOR);
             }
             if (($typeValue['type'] ?? NULL) == 'String' ||
@@ -725,7 +730,7 @@ LIMIT  1
    * @param int $caseID
    * @param string $activitySetName
    * @param array $params
-   * @param CRM_Core_Form $form
+   * @param CRM_Case_XMLProcessor_Report $form
    *
    * @return CRM_Core_Smarty
    */
diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php
index fc3435e30f..d5ab1a5c4e 100644
--- a/civicrm/CRM/Contact/BAO/Contact.php
+++ b/civicrm/CRM/Contact/BAO/Contact.php
@@ -1272,12 +1272,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       $fields = CRM_Contact_DAO_Contact::import();
 
       // get the fields thar are meant for contact types
-      if (in_array($contactType, [
-        'Individual',
-        'Household',
-        'Organization',
-        'All',
-      ])) {
+      if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
         $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
       }
 
@@ -1431,12 +1426,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         $fields = CRM_Contact_DAO_Contact::export();
 
         // The fields are meant for contact types.
-        if (in_array($contactType, [
-          'Individual',
-          'Household',
-          'Organization',
-          'All',
-        ])) {
+        if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
           $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
         }
         // add current employer for individuals
@@ -3057,10 +3047,7 @@ LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
           continue;
         }
         // build directly accessible action menu.
-        if (in_array($values['ref'], [
-          'view-contact',
-          'edit-contact',
-        ])) {
+        if (in_array($values['ref'], ['view-contact', 'edit-contact'])) {
           $contextMenu['primaryActions'][$key] = [
             'title' => $values['title'],
             'ref' => $values['ref'],
@@ -3169,9 +3156,7 @@ LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
         ) {
           $hasAllPermissions = TRUE;
         }
-        elseif (in_array($menuOptions['ref'], [
-          'new-email',
-        ])) {
+        elseif (in_array($menuOptions['ref'], ['new-email'])) {
           // grant permissions for these tasks.
           $hasAllPermissions = TRUE;
         }
diff --git a/civicrm/CRM/Contact/BAO/Contact/Utils.php b/civicrm/CRM/Contact/BAO/Contact/Utils.php
index 2b972e77f3..f4a67da52e 100644
--- a/civicrm/CRM/Contact/BAO/Contact/Utils.php
+++ b/civicrm/CRM/Contact/BAO/Contact/Utils.php
@@ -584,10 +584,7 @@ UPDATE civicrm_contact
       }
 
       // check permission on acl basis.
-      if (in_array($task, [
-        'view',
-        'edit',
-      ])) {
+      if (in_array($task, ['view', 'edit'])) {
         $aclPermission = CRM_Core_Permission::VIEW;
         if ($task == 'edit') {
           $aclPermission = CRM_Core_Permission::EDIT;
@@ -946,14 +943,6 @@ INNER JOIN civicrm_contact contact_target ON ( contact_target.id = act.contact_i
       throw new CRM_Core_Exception(ts('Incorrect greeting value id %1, or no default greeting for this contact type and greeting type.', [1 => $valueID]));
     }
 
-    // build return properties based on tokens
-    $greetingTokens = CRM_Utils_Token::getTokens($greetingString);
-    $tokens = $greetingTokens['contact'] ?? NULL;
-    $greetingsReturnProperties = [];
-    if (is_array($tokens)) {
-      $greetingsReturnProperties = array_fill_keys(array_values($tokens), 1);
-    }
-
     // Process ALL contacts only when force=1 or force=2 is passed. Else only contacts with NULL greeting or addressee value are updated.
     $processAll = $processOnlyIdSet = FALSE;
     if ($force == 1) {
diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php
index de18235c96..0059f499e4 100644
--- a/civicrm/CRM/Contact/BAO/ContactType.php
+++ b/civicrm/CRM/Contact/BAO/ContactType.php
@@ -693,11 +693,7 @@ LIMIT 1";
 
     $relationshipCount = CRM_Core_DAO::singleValueQuery($relationshipQuery);
 
-    if (!empty($relationshipCount)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return (bool) $relationshipCount;
   }
 
   /**
diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php
index 200c7b54d7..fc375bb4ab 100644
--- a/civicrm/CRM/Contact/BAO/Individual.php
+++ b/civicrm/CRM/Contact/BAO/Individual.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  * Class contains functions for individual contact type.
  */
@@ -185,19 +187,18 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
         }
       }
 
-      //build the sort name.
-      $format = Civi::settings()->get('sort_name_format');
-      $sortName = CRM_Utils_Address::format($formatted, $format,
-        FALSE, FALSE, $tokenFields
-      );
-      $sortName = trim($sortName);
-
-      //build the display name.
-      $format = Civi::settings()->get('display_name_format');
-      $displayName = CRM_Utils_Address::format($formatted, $format,
-        FALSE, FALSE, $tokenFields
-      );
-      $displayName = trim($displayName);
+      $formatted['id'] = $contact->id ?? $params['id'] ?? 0;
+      $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+        'class' => __CLASS__,
+        'schema' => ['contactId'],
+      ]);
+      $tokenProcessor->addRow(['contactId' => $contactFields['id'] ?? 0, 'contact' => $formatted]);
+      $tokenProcessor->addMessage('sort_name', Civi::settings()->get('sort_name_format'), 'text/plain');
+      $tokenProcessor->addMessage('display_name', Civi::settings()->get('display_name_format'), 'text/plain');
+      $tokenProcessor->evaluate();
+      $row = $tokenProcessor->getRow(0);
+      $sortName = trim($row->render('sort_name'));
+      $displayName = trim($row->render('display_name'));
     }
 
     //start further check for email.
@@ -266,11 +267,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
    * @return bool
    */
   public static function dataExists($params) {
-    if ($params['contact_type'] == 'Individual') {
-      return TRUE;
-    }
-
-    return FALSE;
+    return $params['contact_type'] == 'Individual';
   }
 
 }
diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php
index 6fb4936ad1..6855885fdd 100644
--- a/civicrm/CRM/Contact/BAO/Query.php
+++ b/civicrm/CRM/Contact/BAO/Query.php
@@ -3213,27 +3213,28 @@ WHERE  $smartGroupClause
    *
    * @throws \CRM_Core_Exception
    */
-  public function tagSearch(&$values) {
+  public function tagSearch(array $values): void {
     [$name, $op, $value, $grouping, $wildcard] = $values;
 
-    $op = "LIKE";
+    $op = 'LIKE';
     $value = "%{$value}%";
     $escapedValue = CRM_Utils_Type::escape("%{$value}%", 'String');
 
     $useAllTagTypes = $this->getWhereValues('all_tag_types', $grouping);
     $tagTypesText = $this->getWhereValues('tag_types_text', $grouping);
 
-    $etTable = "`civicrm_entity_tag-" . uniqid() . "`";
-    $tTable = "`civicrm_tag-" . uniqid() . "`";
-
-    if ($useAllTagTypes[2]) {
+    $etTable = '`civicrm_entity_tag-' . uniqid() . '`';
+    $tTable = '`civicrm_tag-' . uniqid() . '`';
+    // All Tag Types will only be added as a field on the form if tags are available
+    // for entities other than contact
+    if ($useAllTagTypes && $useAllTagTypes[2]) {
       $this->_tables[$etTable] = $this->_whereTables[$etTable]
         = " LEFT JOIN civicrm_entity_tag {$etTable} ON ( {$etTable}.entity_id = contact_a.id)
             LEFT JOIN civicrm_tag {$tTable} ON ( {$etTable}.tag_id = {$tTable}.id  )";
 
       // search tag in cases
-      $etCaseTable = "`civicrm_entity_case_tag-" . uniqid() . "`";
-      $tCaseTable = "`civicrm_case_tag-" . uniqid() . "`";
+      $etCaseTable = '`civicrm_entity_case_tag-' . uniqid() . '`';
+      $tCaseTable = '`civicrm_case_tag-' . uniqid() . '`';
       $this->_tables[$etCaseTable] = $this->_whereTables[$etCaseTable]
         = " LEFT JOIN civicrm_case_contact ON civicrm_case_contact.contact_id = contact_a.id
             LEFT JOIN civicrm_case
@@ -3242,8 +3243,8 @@ WHERE  $smartGroupClause
             LEFT JOIN civicrm_entity_tag {$etCaseTable} ON ( {$etCaseTable}.entity_table = 'civicrm_case' AND {$etCaseTable}.entity_id = civicrm_case.id )
             LEFT JOIN civicrm_tag {$tCaseTable} ON ( {$etCaseTable}.tag_id = {$tCaseTable}.id  )";
       // search tag in activities
-      $etActTable = "`civicrm_entity_act_tag-" . uniqid() . "`";
-      $tActTable = "`civicrm_act_tag-" . uniqid() . "`";
+      $etActTable = '`civicrm_entity_act_tag-' . uniqid() . '`';
+      $tActTable = '`civicrm_act_tag-' . uniqid() . '`';
       $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
       $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
 
@@ -3260,8 +3261,8 @@ WHERE  $smartGroupClause
       $this->_qill[$grouping][] = ts('Tag %1 %2', [1 => $tagTypesText[2], 2 => $op]) . ' ' . $value;
     }
     else {
-      $etTable = "`civicrm_entity_tag-" . uniqid() . "`";
-      $tTable = "`civicrm_tag-" . uniqid() . "`";
+      $etTable = '`civicrm_entity_tag-' . uniqid() . "`";
+      $tTable = '`civicrm_tag-' . uniqid() . '`';
       $this->_tables[$etTable] = $this->_whereTables[$etTable] = " LEFT JOIN civicrm_entity_tag {$etTable} ON ( {$etTable}.entity_id = contact_a.id  AND
       {$etTable}.entity_table = 'civicrm_contact' )
                 LEFT JOIN civicrm_tag {$tTable} ON ( {$etTable}.tag_id = {$tTable}.id  ) ";
@@ -3364,7 +3365,7 @@ WHERE  $smartGroupClause
       elseif ($op == '!=') {
         $this->_where[$grouping][] = "{$etTable}.entity_id NOT IN (SELECT entity_id FROM civicrm_entity_tag cet WHERE cet.entity_table = 'civicrm_contact' AND " . self::buildClause("cet.tag_id", '=', $value, 'Int') . ")";
       }
-      elseif ($op == '=' || strstr($op, 'IN')) {
+      elseif ($op == '=' || str_contains($op, 'IN')) {
         $op = ($op == '=') ? 'IN' : $op;
         $this->_where[$grouping][] = "{$etTable}.tag_id $op ( $value )";
       }
@@ -4116,7 +4117,7 @@ WHERE  $smartGroupClause
 
     if (self::caseImportant($op)) {
       $value = implode("[[:cntrl:]]|[[:cntrl:]]", (array) $value);
-      $op = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
+      $op = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
       $value = "[[:cntrl:]]" . $value . "[[:cntrl:]]";
     }
 
@@ -5364,7 +5365,7 @@ civicrm_relationship.start_date > {$today}
       }
 
       $date = $format = NULL;
-      if (strstr($op, 'IN')) {
+      if (str_contains($op, 'IN')) {
         $format = [];
         foreach ($value as &$date) {
           $date = CRM_Utils_Date::processDate($date, NULL, FALSE, $dateFormat);
diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php
index 9d231e0fe4..2afef78d87 100644
--- a/civicrm/CRM/Contact/BAO/Relationship.php
+++ b/civicrm/CRM/Contact/BAO/Relationship.php
@@ -1590,13 +1590,7 @@ contact_id_a IN ( %1 ) OR contact_id_b IN ( %1 ) AND id IN (" . implode(',', $re
       return TRUE;
     }
 
-    $recordsFound = (int) CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM civicrm_relationship WHERE relationship_type_id IN ( " . implode(',', $membershipTypeRelationshipTypeIDs) . " ) AND contact_id_a IN ( %1, %2 ) AND contact_id_b IN ( %1, %2 ) AND id NOT IN (" . implode(',', $relIds) . ")", $relParamas);
-
-    if ($recordsFound) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM civicrm_relationship WHERE relationship_type_id IN ( " . implode(',', $membershipTypeRelationshipTypeIDs) . " ) AND contact_id_a IN ( %1, %2 ) AND contact_id_b IN ( %1, %2 ) AND id NOT IN (" . implode(',', $relIds) . ")", $relParamas);
   }
 
   /**
diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php
index 65da378bee..99d0761d00 100644
--- a/civicrm/CRM/Contact/Form/Contact.php
+++ b/civicrm/CRM/Contact/Form/Contact.php
@@ -25,6 +25,8 @@
  */
 class CRM_Contact_Form_Contact extends CRM_Core_Form {
 
+  use CRM_Contact_Form_ContactFormTrait;
+
   /**
    * The contact type of the form.
    *
@@ -128,6 +130,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
 
   /**
    * Build all the data structures needed to build the form.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function preProcess() {
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'add');
@@ -183,14 +187,9 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
       $this->_contactId = NULL;
     }
     else {
-      //update mode
-      if (!$this->_contactId) {
-        $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
-      }
-
-      if ($this->_contactId) {
+      if ($this->getContactID()) {
         $defaults = [];
-        $params = ['id' => $this->_contactId];
+        $params = ['id' => $this->getContactID()];
         $returnProperities = ['id', 'contact_type', 'contact_sub_type', 'modified_date', 'is_deceased'];
         CRM_Core_DAO::commonRetrieve('CRM_Contact_DAO_Contact', $params, $defaults, $returnProperities);
 
@@ -359,14 +358,15 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
         CRM_Contact_Form_Edit_CustomData::preProcess($this);
       }
       else {
-        $contactSubType = array_filter(explode(CRM_Core_DAO::VALUE_SEPARATOR, (string) $this->_contactSubType));
-        // need contact sub type to build related grouptree array during post process
-        if (!empty($_POST['qfKey'])) {
-          $contactSubType = $_POST['contact_sub_type'] ?? NULL;
-        }
-        //only custom data has preprocess hence directly call it
-        CRM_Custom_Form_CustomData::preProcess($this, NULL, $contactSubType,
-          1, $this->_contactType, $this->_contactId
+        // The reason we call this here is that it sets the _groupTree property which is later used
+        // in setDefaultValues and buildForm. (Ideally instead we would have a trait with getCustomGroup & getCustomFields
+        // that can be called at appropriate times). In order for buildForm to add the right fields it needs
+        // to know any contact sub types that are being added in the submission. Since this runs before
+        // the buildForm adds the contact_sub_type to the form we need to look in _submitValues for it - submitValues
+        // is a un-sanitised version of what is in the form submission (_POST) whereas `getSubmittedValues()` retrieves
+        // 'allowed' POSTED values - ie values which match available fields, with some localization handling.
+        CRM_Custom_Form_CustomData::preProcess($this, NULL, $this->isSubmitted() ? ($this->_submitValues['contact_sub_type'] ?? []) : $this->getContactValue('contact_sub_type'),
+          1, $this->_contactType, $this->getContactID()
         );
         $this->assign('customValueCount', $this->_customValueCount);
       }
@@ -680,10 +680,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
             if (!empty($blockValues['is_primary'])) {
               $hasPrimary[] = $instance;
               if (!$primaryID &&
-                in_array($name, [
-                  'email',
-                  'openid',
-                ]) && !empty($blockValues[$name])
+                in_array($name, ['email', 'openid']) &&
+                !empty($blockValues[$name])
               ) {
                 $primaryID = $blockValues[$name];
               }
@@ -1397,10 +1395,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
           'street_name',
           'street_unit',
         ] as $fld) {
-          if (in_array($fld, [
-            'street_name',
-            'street_unit',
-          ])) {
+          if (in_array($fld, ['street_name', 'street_unit'])) {
             $streetAddress .= ' ';
           }
           // CRM-17619 - if the street number suffix begins with a number, add a space
@@ -1510,4 +1505,18 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
     return "$number$str";
   }
 
+  /**
+   * Get the contact ID being edited.
+   *
+   * @return int||null
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getContactID(): ?int {
+    if (!$this->_contactId) {
+      $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
+    }
+    return $this->_contactId ? (int) $this->_contactId : NULL;
+  }
+
 }
diff --git a/civicrm/CRM/Contact/Form/Edit/Address.php b/civicrm/CRM/Contact/Form/Edit/Address.php
index 4c82a7ff51..ea280315fc 100644
--- a/civicrm/CRM/Contact/Form/Edit/Address.php
+++ b/civicrm/CRM/Contact/Form/Edit/Address.php
@@ -283,10 +283,7 @@ class CRM_Contact_Form_Edit_Address {
             'street_name',
             'street_unit',
           ] as $fld) {
-            if (in_array($fld, [
-              'street_name',
-              'street_unit',
-            ])) {
+            if (in_array($fld, ['street_name', 'street_unit'])) {
               $streetAddress .= ' ';
             }
             // CRM-17619 - if the street number suffix begins with a number, add a space
diff --git a/civicrm/CRM/Contact/Form/GroupContact.php b/civicrm/CRM/Contact/Form/GroupContact.php
index 79d4c29c1d..b865f568db 100644
--- a/civicrm/CRM/Contact/Form/GroupContact.php
+++ b/civicrm/CRM/Contact/Form/GroupContact.php
@@ -34,6 +34,13 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form {
    */
   protected $_contactId;
 
+  /**
+   * The context this page is being rendered in
+   *
+   * @var string
+   */
+  protected $_context;
+
   /**
    * Explicitly declare the entity api name.
    */
@@ -100,7 +107,7 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form {
     if (count($groupSelect) > 1) {
       $session = CRM_Core_Session::singleton();
       // user dashboard
-      if (strstr($session->readUserContext(), 'user')) {
+      if (str_contains($session->readUserContext(), 'user')) {
         $msg = ts('Join a Group');
       }
       else {
diff --git a/civicrm/CRM/Contact/Form/Inline.php b/civicrm/CRM/Contact/Form/Inline.php
index ea93dde40d..253f667311 100644
--- a/civicrm/CRM/Contact/Form/Inline.php
+++ b/civicrm/CRM/Contact/Form/Inline.php
@@ -157,6 +157,7 @@ abstract class CRM_Contact_Form_Inline extends CRM_Core_Form {
     $smarty = CRM_Core_Smarty::singleton();
     $smarty->assign('contactId', $cid);
     $smarty->assign('external_identifier', CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'external_identifier'));
+    $smarty->assign('created_date', CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'created_date'));
     $smarty->assign('lastModified', CRM_Core_BAO_Log::lastModified($cid, 'civicrm_contact'));
     $viewOptions = CRM_Core_BAO_Setting::valueOptions(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
       'contact_view_options', TRUE
diff --git a/civicrm/CRM/Contact/Form/Merge.php b/civicrm/CRM/Contact/Form/Merge.php
index c59df6e82f..95c12ffaf3 100644
--- a/civicrm/CRM/Contact/Form/Merge.php
+++ b/civicrm/CRM/Contact/Form/Merge.php
@@ -200,6 +200,7 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form {
           'main' => NULL,
           'other' => NULL,
           'location_entity' => NULL,
+          'location_block_index' => NULL,
         ];
       }
       $this->assign('rows', $assignedRows);
diff --git a/civicrm/CRM/Contact/Form/RelatedContact.php b/civicrm/CRM/Contact/Form/RelatedContact.php
index 68f64b7086..bdacf82490 100644
--- a/civicrm/CRM/Contact/Form/RelatedContact.php
+++ b/civicrm/CRM/Contact/Form/RelatedContact.php
@@ -137,11 +137,7 @@ class CRM_Contact_Form_RelatedContact extends CRM_Core_Form {
     $params = $this->controller->exportValues($this->_name);
 
     $locType = CRM_Core_BAO_LocationType::getDefault();
-    foreach ([
-      'phone',
-      'email',
-      'address',
-    ] as $locFld) {
+    foreach (['phone', 'email', 'address'] as $locFld) {
       if (!empty($this->_defaults[$locFld]) && $this->_defaults[$locFld][1]['location_type_id']) {
         $params[$locFld][1]['is_primary'] = $this->_defaults[$locFld][1]['is_primary'];
         $params[$locFld][1]['location_type_id'] = $this->_defaults[$locFld][1]['location_type_id'];
diff --git a/civicrm/CRM/Contact/Form/Search/Builder.php b/civicrm/CRM/Contact/Form/Search/Builder.php
index a0a1e70f0f..44108ea0d8 100644
--- a/civicrm/CRM/Contact/Form/Search/Builder.php
+++ b/civicrm/CRM/Contact/Form/Search/Builder.php
@@ -65,8 +65,6 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
       }
     }
 
-    $this->_loadedMappingId = $this->get('savedMapping');
-
     if ($this->get('showSearchForm')) {
       $this->assign('showSearchForm', TRUE);
     }
@@ -201,7 +199,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
             $fldType = $fldValue['type'] ?? NULL;
             $type = CRM_Utils_Type::typeToString($fldType);
 
-            if (strstr($v[1], 'IN')) {
+            if (str_contains($v[1], 'IN')) {
               if (empty($v[2])) {
                 $errorMsg["value[$v[3]][$v[4]]"] = ts("Please enter a value.");
               }
@@ -221,7 +219,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
 
           if ($type && empty($errorMsg)) {
             // check for valid format while using IN Operator
-            if (strstr($v[1], 'IN')) {
+            if (str_contains($v[1], 'IN')) {
               if (!is_array($v[2])) {
                 $inVal = trim($v[2]);
                 //checking for format to avoid db errors
diff --git a/civicrm/CRM/Contact/Form/Task/Delete.php b/civicrm/CRM/Contact/Form/Task/Delete.php
index 1c35f9e00d..0f9d4518e1 100644
--- a/civicrm/CRM/Contact/Form/Task/Delete.php
+++ b/civicrm/CRM/Contact/Form/Task/Delete.php
@@ -32,10 +32,26 @@ class CRM_Contact_Form_Task_Delete extends CRM_Contact_Form_Task {
 
   /**
    * Cache shared address message so we don't query twice
-   * @var string
+   *
+   * @var array
    */
   protected $_sharedAddressMessage = NULL;
 
+  /**
+   * @var string
+   */
+  protected $_searchKey;
+
+  /**
+   * @var bool
+   */
+  protected $_skipUndelete;
+
+  /**
+   * @var bool
+   */
+  protected $_restore;
+
   /**
    * Build all the data structures needed to build the form.
    */
diff --git a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
index 926ce85f86..b4da3de89e 100644
--- a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
+++ b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
@@ -36,45 +36,6 @@ class CRM_Contact_Form_Task_PDFLetterCommon extends CRM_Core_Form_Task_PDFLetter
     ];
   }
 
-  /**
-   * Build all the data structures needed to build the form.
-   *
-   * @deprecated
-   *
-   * @param CRM_Core_Form $form
-   */
-  public static function preProcess(&$form) {
-    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
-    $defaults = [];
-    $form->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
-    if (is_numeric(key($form->_fromEmails))) {
-      $emailID = (int) key($form->_fromEmails);
-      $defaults = CRM_Core_BAO_Email::getEmailSignatureDefaults($emailID);
-    }
-    if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
-      $defaults['from_email_address'] = current(CRM_Core_BAO_Domain::getNameAndEmail(FALSE, TRUE));
-    }
-    $form->setDefaults($defaults);
-    $form->setTitle(ts('Print/Merge Document'));
-  }
-
-  /**
-   * @deprecated
-   * @param CRM_Core_Form $form
-   * @param int $cid
-   */
-  public static function preProcessSingle(&$form, $cid) {
-    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
-    $form->_contactIds = explode(',', $cid);
-    // put contact display name in title for single contact mode
-    if (count($form->_contactIds) === 1) {
-      $form->setTitle(
-        ts('Print/Merge Document for %1',
-        [1 => CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'display_name')])
-      );
-    }
-  }
-
   /**
    * Get the categories required for rendering tokens.
    *
diff --git a/civicrm/CRM/Contact/Form/Task/PDFTrait.php b/civicrm/CRM/Contact/Form/Task/PDFTrait.php
index 9e8219c27d..95ac51e317 100644
--- a/civicrm/CRM/Contact/Form/Task/PDFTrait.php
+++ b/civicrm/CRM/Contact/Form/Task/PDFTrait.php
@@ -169,9 +169,9 @@ trait CRM_Contact_Form_Task_PDFTrait {
   public function preProcessPDF(): void {
     $form = $this;
     $defaults = [];
-    $form->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
-    if (is_numeric(key($form->_fromEmails))) {
-      $emailID = (int) key($form->_fromEmails);
+    $fromEmails = $this->getFromEmails();
+    if (is_numeric(key($fromEmails))) {
+      $emailID = (int) key($fromEmails);
       $defaults = CRM_Core_BAO_Email::getEmailSignatureDefaults($emailID);
     }
     if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
@@ -181,6 +181,15 @@ trait CRM_Contact_Form_Task_PDFTrait {
     $form->setTitle(ts('Print/Merge Document'));
   }
 
+  /**
+   * Get an array of email IDS from which the back-office user may select the from field.
+   *
+   * @return array
+   */
+  protected function getFromEmails(): array {
+    return CRM_Core_BAO_Email::getFromEmail();
+  }
+
   /**
    * Returns the filename for the pdf by striping off unwanted characters and limits the length to 200 characters.
    *
@@ -272,7 +281,7 @@ trait CRM_Contact_Form_Task_PDFTrait {
 
     if ($tee) {
       $tee->stop();
-      $content = file_get_contents($tee->getFileName(), NULL, NULL, NULL, 5);
+      $content = file_get_contents($tee->getFileName(), FALSE, NULL, 0, 5);
       if (empty($content)) {
         throw new \CRM_Core_Exception("Failed to capture document content (type=$type)!");
       }
diff --git a/civicrm/CRM/Contact/Form/Task/Result.php b/civicrm/CRM/Contact/Form/Task/Result.php
index 03bcfe8d1f..36692eef6f 100644
--- a/civicrm/CRM/Contact/Form/Task/Result.php
+++ b/civicrm/CRM/Contact/Form/Task/Result.php
@@ -30,10 +30,7 @@ class CRM_Contact_Form_Task_Result extends CRM_Contact_Form_Task {
     $this->set('searchRows', '');
 
     $context = $this->get('context');
-    if (in_array($context, [
-      'smog',
-      'amtg',
-    ])) {
+    if (in_array($context, ['smog', 'amtg'])) {
       $urlParams = 'reset=1&force=1&context=smog&gid=';
       $urlParams .= ($context == 'smog') ? $this->get('gid') : $this->get('amtgID');
       $session->replaceUserContext(CRM_Utils_System::url('civicrm/group/search', $urlParams));
diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php
index 2b38376013..8fda4d76af 100644
--- a/civicrm/CRM/Contact/Import/Parser/Contact.php
+++ b/civicrm/CRM/Contact/Import/Parser/Contact.php
@@ -28,8 +28,6 @@ require_once 'api/v3/utils.php';
  */
 class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
-  use CRM_Contact_Import_MetadataTrait;
-
   private $externalIdentifiers = [];
 
   /**
@@ -155,7 +153,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         }
       }
 
-      [$formatted, $params] = $this->processContact($params, $formatted, TRUE);
+      $formatted['id'] = $params['id'] = $this->processContact($params, TRUE);
 
       //format common data, CRM-4062
       $this->formatCommonData($params, $formatted);
@@ -177,7 +175,8 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
       //relationship contact insert
       foreach ($this->getRelatedContactsParams($params) as $key => $field) {
-        [$formatting, $field] = $this->processContact($field, $field, FALSE);
+        $field['id'] = $this->processContact($field, FALSE);
+        $formatting = $field;
         //format common data, CRM-4062
         $this->formatCommonData($field, $formatting);
         $isUpdate = empty($formatting['id']) ? 'new' : 'updated';
@@ -308,7 +307,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         !array_key_exists($customFieldID, $addressCustomFields)
       ) {
         // @todo - this can probably go....
-        if ($customFields[$customFieldID]['data_type'] == 'Boolean') {
+        if ($customFields[$customFieldID]['data_type'] === 'Boolean') {
           if (empty($val) && !is_numeric($val) && $this->isFillDuplicates()) {
             //retain earlier value when Import mode is `Fill`
             unset($params[$key]);
@@ -466,6 +465,26 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     }
   }
 
+  /**
+   * Get sorted available relationships.
+   *
+   * @return array
+   */
+  protected function getRelationships(): array {
+    $cacheKey = 'importable_contact_relationship_field_metadata' . $this->getContactType() . $this->getContactSubType();
+    if (Civi::cache('fields')->has($cacheKey)) {
+      return Civi::cache('fields')->get($cacheKey);
+    }
+    //Relationship importables
+    $relations = CRM_Contact_BAO_Relationship::getContactRelationshipType(
+      NULL, NULL, NULL, $this->getContactType(),
+      FALSE, 'label', TRUE, $this->getContactSubType()
+    );
+    asort($relations);
+    Civi::cache('fields')->set($cacheKey, $relations);
+    return $relations;
+  }
+
   /**
    * @param array $params
    *
@@ -747,7 +766,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
       if (is_numeric($locTypeId) &&
         !in_array($fieldName, $multiplFields) &&
-        substr($fieldName, 0, 7) != 'custom_'
+        substr($fieldName, 0, 7) !== 'custom_'
       ) {
         $index = $locTypeId;
 
@@ -913,22 +932,21 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         }
       }
       else {
-        if (is_array($params[$key]) ?? FALSE) {
-          foreach ($params[$key] as $innerKey => $value) {
-            if ($modeFill) {
-              $getValue = CRM_Utils_Array::retrieveValueRecursive($contact, $key);
-              if (isset($getValue)) {
-                foreach ($getValue as $cnt => $values) {
-                  if ((!empty($getValue[$cnt]['location_type_id']) && !empty($params[$key][$innerKey]['location_type_id'])) && $getValue[$cnt]['location_type_id'] == $params[$key][$innerKey]['location_type_id']) {
-                    unset($params[$key][$innerKey]);
-                  }
+
+        foreach ($value as $innerKey => $locationValues) {
+          if ($modeFill) {
+            $getValue = CRM_Utils_Array::retrieveValueRecursive($contact, $key);
+            if (isset($getValue)) {
+              foreach ($getValue as $cnt => $values) {
+                if ((!empty($getValue[$cnt]['location_type_id']) && !empty($params[$key][$innerKey]['location_type_id'])) && $getValue[$cnt]['location_type_id'] == $params[$key][$innerKey]['location_type_id']) {
+                  unset($params[$key][$innerKey]);
                 }
               }
             }
           }
-          if (count($params[$key]) == 0) {
-            unset($params[$key]);
-          }
+        }
+        if (count($params[$key]) == 0) {
+          unset($params[$key]);
         }
       }
     }
@@ -1035,6 +1053,58 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     return TRUE;
   }
 
+  /**
+   * Get metadata for contact importable fields.
+   *
+   * @internal this function will be made private in the near future. It is
+   * currently used by a core form but should not be called directly & once fixed
+   * will be private.
+   *
+   * @return array
+   */
+  public function getContactImportMetadata(): array {
+    $cacheKey = 'importable_contact_field_metadata' . $this->getContactType() . $this->getContactSubType();
+    if (Civi::cache('fields')->has($cacheKey)) {
+      return Civi::cache('fields')->get($cacheKey);
+    }
+    $contactFields = CRM_Contact_BAO_Contact::importableFields($this->getContactType());
+    // exclude the address options disabled in the Address Settings
+    $fields = CRM_Core_BAO_Address::validateAddressOptions($contactFields);
+
+    //CRM-5125
+    //supporting import for contact subtypes
+    $csType = NULL;
+    if ($this->getContactSubType()) {
+      //custom fields for sub type
+      $subTypeFields = CRM_Core_BAO_CustomField::getFieldsForImport($this->getContactSubType());
+
+      if (!empty($subTypeFields)) {
+        foreach ($subTypeFields as $customSubTypeField => $details) {
+          $fields[$customSubTypeField] = $details;
+        }
+      }
+    }
+
+    foreach ($this->getRelationships() as $key => $var) {
+      [$type] = explode('_', $key);
+      $relationshipType[$key]['title'] = $var;
+      $relationshipType[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/';
+      $relationshipType[$key]['import'] = TRUE;
+      $relationshipType[$key]['relationship_type_id'] = $type;
+      $relationshipType[$key]['related'] = TRUE;
+    }
+
+    if (!empty($relationshipType)) {
+      $fields = array_merge($fields, [
+        'related' => [
+          'title' => ts('- related contact info -'),
+        ],
+      ], $relationshipType);
+    }
+    Civi::cache('fields')->set($cacheKey, $fields);
+    return $fields;
+  }
+
   /**
    * Format location block ready for importing.
    *
@@ -1546,25 +1616,24 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
   /**
    * @param array $params
-   * @param array $formatted
    * @param bool $isMainContact
    *
-   * @return array[]
+   * @return int|null
    * @throws \CRM_Core_Exception
    */
-  protected function processContact(array $params, array $formatted, bool $isMainContact): array {
-    $params['id'] = $formatted['id'] = $this->lookupContactID($params, $isMainContact);
-    if ($params['id'] && !empty($params['contact_sub_type'])) {
+  protected function processContact(array $params, bool $isMainContact): ?int {
+    $contactID = $this->lookupContactID($params, $isMainContact);
+    if ($contactID && !empty($params['contact_sub_type'])) {
       $contactSubType = Contact::get(FALSE)
-        ->addWhere('id', '=', $params['id'])
+        ->addWhere('id', '=', $contactID)
         ->addSelect('contact_sub_type')
         ->execute()
         ->first()['contact_sub_type'];
-      if (!empty($contactSubType) && $contactSubType[0] !== $params['contact_sub_type'] && !CRM_Contact_BAO_ContactType::isAllowEdit($params['id'], $contactSubType[0])) {
+      if (!empty($contactSubType) && $contactSubType[0] !== $params['contact_sub_type'] && !CRM_Contact_BAO_ContactType::isAllowEdit($contactID, $contactSubType[0])) {
         throw new CRM_Core_Exception('Mismatched contact SubTypes :', CRM_Import_Parser::NO_MATCH);
       }
     }
-    return [$formatted, $params];
+    return $contactID;
   }
 
   /**
diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php
index 8ad89811a2..b4f0fd2a0a 100644
--- a/civicrm/CRM/Contact/Selector.php
+++ b/civicrm/CRM/Contact/Selector.php
@@ -81,6 +81,13 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
    */
   protected $_contextMenu;
 
+  /**
+   * The search context
+   *
+   * @var string
+   */
+  public $_context;
+
   /**
    * Params is the array in a value used by the search query creator
    *
@@ -191,8 +198,6 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
       );
       self::$_columnHeaders = NULL;
 
-      $this->_customFields = CRM_Core_BAO_CustomField::getFieldsForImport('Individual');
-
       $this->_returnProperties = CRM_Contact_BAO_Contact::makeHierReturnProperties($this->_fields);
       $this->_returnProperties['contact_type'] = 1;
       $this->_returnProperties['contact_sub_type'] = 1;
diff --git a/civicrm/CRM/Contact/Task.php b/civicrm/CRM/Contact/Task.php
index 4a6989bd07..a992548150 100644
--- a/civicrm/CRM/Contact/Task.php
+++ b/civicrm/CRM/Contact/Task.php
@@ -301,11 +301,7 @@ class CRM_Contact_Task extends CRM_Core_Task {
         self::LABEL_CONTACTS => self::$_tasks[self::LABEL_CONTACTS]['title'],
       ];
 
-      foreach ([
-        self::MAP_CONTACTS,
-        self::CREATE_MAILING,
-        self::TASK_SMS,
-      ] as $task) {
+      foreach ([self::MAP_CONTACTS, self::CREATE_MAILING, self::TASK_SMS] as $task) {
         if (isset(self::$_tasks[$task]) &&
           !empty(self::$_tasks[$task]['title'])
         ) {
diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php
index a04da212f2..c1bb81b39e 100644
--- a/civicrm/CRM/Contribute/BAO/Contribution.php
+++ b/civicrm/CRM/Contribute/BAO/Contribution.php
@@ -1064,6 +1064,9 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im
       if ($paidByName === 'Check') {
         $val['check_number'] = $resultDAO->check_number;
       }
+      else {
+        $val['check_number'] = NULL;
+      }
       $rows[] = $val;
     }
     return $rows;
@@ -1775,11 +1778,14 @@ LEFT JOIN  civicrm_contribution contribution ON ( componentPayment.contribution_
    * Use api contribute.completetransaction
    * For failures use failPayment (preferably exposing by api in the process).
    *
+   * @deprecated since 5.69 Will be remvoed ASAP since this is old & crufty &
+   * should never have been used outside core.
    */
   public static function transitionComponents($params) {
     // @todo fix the one place that calls this function to use Payment.create
     // remove this.
     // get minimum required values.
+    CRM_Core_Error::deprecatedFunctionWarning('use Payment.create api');
     $contributionId = $params['contribution_id'];
 
     // we process only ( Completed, Cancelled, or Failed ) contributions.
@@ -2629,16 +2635,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
         foreach ($this->_relatedObjects['membership'] as $membership) {
           if ($membership->id) {
             $values['membership_id'] = $membership->id;
-            $values['isMembership'] = TRUE;
-            $values['membership_assign'] = TRUE;
-
             // need to set the membership values here
             $template->assign('membership_name',
               CRM_Member_PseudoConstant::membershipType($membership->membership_type_id)
             );
-            $template->assign('mem_start_date', $membership->start_date);
-            $template->assign('mem_join_date', $membership->join_date);
-            $template->assign('mem_end_date', $membership->end_date);
             $membership_status = CRM_Member_PseudoConstant::membershipStatus($membership->status_id, NULL, 'label');
             $template->assign('mem_status', $membership_status);
             if ($membership_status === 'Pending' && $membership->is_pay_later == 1) {
@@ -4135,13 +4135,14 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
    * settings we will live with an inconsistency because it's too hard to change for now.
    * https://github.com/civicrm/civicrm-core/pull/8562#issuecomment-227874245
    *
-   *
    * @param string $name
    *
    * @return string
    *
+   * @deprecated since 5.68 will be removed around 5.74.
    */
   public static function checkContributeSettings($name) {
+    CRM_Core_Error::deprecatedFunctionWarning('Use \Civi::settings()->get() with the actual setting name');
     $contributeSettings = Civi::settings()->get('contribution_invoice_settings');
     return $contributeSettings[$name] ?? NULL;
   }
@@ -4214,11 +4215,7 @@ LIMIT 1;";
       }
       // @todo remove all this stuff in favour of letting the api call further down handle in
       // (it is a duplication of what the api does).
-      $dates = array_fill_keys([
-        'join_date',
-        'start_date',
-        'end_date',
-      ], NULL);
+      $dates = [];
       if ($currentMembership) {
         /*
          * Fixed FOR CRM-4433
@@ -4241,9 +4238,9 @@ LIMIT 1;";
       }
       else {
         //get the status for membership.
-        $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'],
-          $dates['end_date'],
-          $dates['join_date'],
+        $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'] ?? NULL,
+          $dates['end_date'] ?? NULL,
+          $dates['join_date'] ?? NULL,
           'now',
          TRUE,
           $membershipParams['membership_type_id'],
@@ -4257,7 +4254,23 @@ LIMIT 1;";
       //so make status override false.
       $membershipParams['is_override'] = FALSE;
       $membershipParams['status_override_end_date'] = 'null';
-      civicrm_api3('Membership', 'create', $membershipParams);
+      $membership = civicrm_api3('Membership', 'create', $membershipParams);
+      $membership = $membership['values'][$membership['id']];
+      // Update activity to Completed.
+      // Perhaps this should be in Membership::create? Test cover in
+      // api_v3_ContributionTest.testPendingToCompleteContribution.
+      $priorMembershipStatus = $memberships[$membership['id']]['status_id'] ?? NULL;
+      Activity::update(FALSE)->setValues([
+        'status_id:name' => 'Completed',
+        'subject' => ts('Status changed from %1 to %2'), [
+          1 => CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $priorMembershipStatus),
+          2 => CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $membership['status_id']),
+        ],
+
+      ])->addWhere('source_record_id', '=', $membership['id'])
+        ->addWhere('status_id:name', '=', 'Scheduled')
+        ->addWhere('activity_type_id:name', 'IN', ['Membership Signup', 'Membership Renewal'])
+        ->execute();
     }
   }
 
diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php
index a2a5ce289d..9be8c666de 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionPage.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php
@@ -147,7 +147,6 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       'customPre_grouptitle',
       'customPost_grouptitle',
       'useForMember',
-      'membership_assign',
       'amount',
       'receipt_date',
       'is_pay_later',
@@ -351,7 +350,6 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
         'customPost' => $values['customPost'],
         'customPost_grouptitle' => $values['customPost_grouptitle'],
         'useForMember' => $values['useForMember'],
-        'membership_assign' => $values['membership_assign'],
         'amount' => $values['amount'],
         'is_pay_later' => $values['is_pay_later'],
         'receipt_date' => !$values['receipt_date'] ? NULL : date('YmdHis', strtotime($values['receipt_date'])),
@@ -405,11 +403,18 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       }
 
       // use either the contribution or membership receipt, based on whether it’s a membership-related contrib or not
+      $tokenContext = ['contactId' => (int) $contactID];
+      if (!empty($tplParams['contributionID'])) {
+        $tokenContext['contributionId'] = $tplParams['contributionID'];
+      }
+      if (!empty($values['membership_id'])) {
+        $tokenContext['membershipId'] = $values['membership_id'];
+      }
       $sendTemplateParams = [
-        'workflow' => !empty($values['isMembership']) ? 'membership_online_receipt' : 'contribution_online_receipt',
+        'workflow' => !empty($values['membership_id']) ? 'membership_online_receipt' : 'contribution_online_receipt',
         'contactId' => $contactID,
         'tplParams' => $tplParams,
-        'tokenContext' => $tplParams['contributionID'] ? ['contributionId' => (int) $tplParams['contributionID'], 'contactId' => $contactID] : ['contactId' => $contactID],
+        'tokenContext' => $tokenContext,
         'isTest' => $isTest,
         'PDFFilename' => 'receipt.pdf',
       ];
diff --git a/civicrm/CRM/Contribute/BAO/ContributionSoft.php b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
index 2a2885c95f..4fbad1a2f5 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionSoft.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
@@ -498,6 +498,10 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
         }
       }
     }
+    if (!is_array($params)) {
+      CRM_Core_Error::deprecatedWarning('this could indicate a bug - see https://lab.civicrm.org/dev/core/-/issues/4881');
+      $params = [];
+    }
 
     //remove name related fields and construct name string with prefix/suffix
     //which will be later assigned to template
diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php
index d0314a12f5..349545ca5a 100644
--- a/civicrm/CRM/Contribute/BAO/Premium.php
+++ b/civicrm/CRM/Contribute/BAO/Premium.php
@@ -59,9 +59,22 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
     return static::deleteRecord(['id' => $premiumID]);
   }
 
+  /**
+   * Whitelist of possible values for the entity_table field
+   *
+   * @return array
+   */
+  public static function entityTables(): array {
+    return [
+      'civicrm_contribution_page' => ts('Contribution Page'),
+    ];
+  }
+
   /**
    * Build Premium Block im Contribution Pages.
    *
+   * @deprecated since 5.69 will be removed around 5.75
+   *
    * @param CRM_Core_Form $form
    * @param int $pageID
    * @param bool $formItems
@@ -69,6 +82,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * @param string $selectedOption
    */
   public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $selectedProductID = NULL, $selectedOption = NULL) {
+    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
     $form->add('hidden', "selectProduct", $selectedProductID, ['id' => 'selectProduct']);
 
     $premiumDao = new CRM_Contribute_DAO_Premium();
@@ -126,7 +140,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
         }
       }
       if (count($products)) {
-        $form->assign('showPremium', $formItems);
+        $form->assign('showPremiumSelectionFields', $formItems);
         $form->assign('showSelectOptions', $formItems);
         $form->assign('premiumBlock', $premiumBlock);
       }
diff --git a/civicrm/CRM/Contribute/DAO/Premium.php b/civicrm/CRM/Contribute/DAO/Premium.php
index bf3b18a2fd..6597edb70d 100644
--- a/civicrm/CRM/Contribute/DAO/Premium.php
+++ b/civicrm/CRM/Contribute/DAO/Premium.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Premium.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:adb794a4061201b488eb8149f61553d5)
+ * (GenCodeChecksum:3463ecde633704e18dc34fb992825c11)
  */
 
 /**
@@ -206,6 +206,9 @@ class CRM_Contribute_DAO_Premium extends CRM_Core_DAO {
           'entity' => 'Premium',
           'bao' => 'CRM_Contribute_BAO_Premium',
           'localizable' => 0,
+          'pseudoconstant' => [
+            'callback' => 'CRM_Contribute_BAO_Premium::entityTables',
+          ],
           'add' => '1.4',
         ],
         'entity_id' => [
diff --git a/civicrm/CRM/Contribute/DAO/Product.php b/civicrm/CRM/Contribute/DAO/Product.php
index 460a15467c..9e9322baa8 100644
--- a/civicrm/CRM/Contribute/DAO/Product.php
+++ b/civicrm/CRM/Contribute/DAO/Product.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Product.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b75121858ccfcc711d4904ed7f4ef6d1)
+ * (GenCodeChecksum:6bd62695324c0ebd78baa0eca84db6e8)
  */
 
 /**
@@ -38,6 +38,18 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'add' => 'civicrm/admin/contribute/managePremiums/edit?action=add&reset=1',
+    'update' => 'civicrm/admin/contribute/managePremiums/edit?action=update&id=[id]&reset=1',
+    'delete' => 'civicrm/admin/contribute/managePremiums/edit?action=delete&id=[id]&reset=1',
+    'browse' => 'civicrm/admin/contribute/managePremiums/',
+  ];
+
   /**
    * @var int|string|null
    *   (SQL type: int unsigned)
diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
index 6b9b5472ef..aff8f72a66 100644
--- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
+++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
@@ -70,13 +70,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
    */
   protected $_paymentProcessors = [];
 
-  /**
-   * Instance of the payment processor object.
-   *
-   * @var CRM_Core_Payment
-   */
-  protected $_paymentObject;
-
   /**
    * Entity that $this->_id relates to.
    *
@@ -160,8 +153,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
    */
   public $_pledgeValues;
 
-  public $_contributeMode = 'direct';
-
   public $_context;
 
   public $_compId;
@@ -413,17 +404,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
     $this->assign_by_ref('paymentProcessor', $this->_paymentProcessor);
   }
 
-  /**
-   * Get current currency from DB or use default currency.
-   *
-   * @param array $submittedValues
-   *
-   * @return string
-   */
-  public function getCurrency($submittedValues = []) {
-    return $submittedValues['currency'] ?? $this->_values['currency'] ?? CRM_Core_Config::singleton()->defaultCurrency;
-  }
-
   /**
    * @param array $submittedValues
    *
@@ -678,14 +658,14 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
     return $title;
   }
 
-  protected function assignContactEmailDetails() {
+  protected function assignContactEmailDetails(): void {
     if ($this->getContactID()) {
       [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID());
       if (!$displayName) {
         $displayName = civicrm_api3('contact', 'getvalue', ['id' => $this->getContactID(), 'return' => 'display_name']);
       }
-      $this->assign('displayName', $displayName);
     }
+    $this->assign('displayName', $displayName ?? NULL);
   }
 
   protected function assignContactID(): void {
diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php
index 7f1d5e393f..6e418805db 100644
--- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php
+++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php
@@ -367,10 +367,7 @@ class CRM_Contribute_Form_AdditionalInfo {
     $form->assign('ccContribution', $ccContribution);
     if ($ccContribution) {
       $form->assignBillingName($params);
-      $form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-        $params,
-        $form->_bltID
-      ));
+      $form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params));
 
       $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params);
       $form->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']);
diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php
index e6e6cb824c..6292703094 100644
--- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php
+++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php
@@ -15,11 +15,12 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Payment\Exception\PaymentProcessorException;
+
 /**
  * This form records additional payments needed when event/contribution is partially paid.
  */
 class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_AbstractEditPayment {
-  public $_contributeMode = 'direct';
 
   /**
    * Id of the component entity
@@ -49,7 +50,14 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
 
   protected $_paymentType = NULL;
 
-  protected $_contributionId = NULL;
+  /**
+   * Internal property for contribution ID - use getContributionID().
+   *
+   * @var int
+   *
+   * @internal
+   */
+  protected $_contributionId;
 
   protected $fromEmailId = NULL;
 
@@ -73,24 +81,14 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     $this->assign('id', $this->_id);
     $this->assign('suppressPaymentFormButtons', $this->isBeingCalledFromSelectorContext());
 
-    if ($this->_view == 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
+    if ($this->_view === 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
       $title = $this->assignPaymentInfoBlock();
       $this->setTitle($title);
       return;
     }
-    if ($this->_component == 'event') {
-      $this->_contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_id, 'contribution_id', 'participant_id');
-    }
-    else {
-      $this->_contributionId = $this->_id;
-    }
 
-    $paymentDetails = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_id, $this->_component, FALSE, TRUE);
     $paymentAmt = $this->getAmountDue();
 
-    $this->_amtPaid = $paymentDetails['paid'];
-    $this->_amtTotal = $paymentDetails['total'];
-
     if ($paymentAmt >= 0) {
       $this->_owed = $paymentAmt;
     }
@@ -101,7 +99,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
       throw new CRM_Core_Exception(ts('Credit card payment is not for Refund payments use'));
     }
 
-    list($this->_contributorDisplayName, $this->_contributorEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
+    [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
 
     $this->assign('contributionMode', $this->_mode);
     $this->assign('contactId', $this->_contactID);
@@ -139,7 +137,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    * @throws \CRM_Core_Exception
    */
   public function setDefaultValues() {
-    if ($this->_view == 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
+    if ($this->_view === 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
       return NULL;
     }
     $defaults = [];
@@ -314,39 +312,38 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
   public function submit($submittedValues) {
     $this->_params = $submittedValues;
     $this->beginPostProcess();
-    // _contributorContactID may no longer need to be set - setting it here
-    // was for use in processBillingAddress
-    $this->_contributorContactID = $this->_contactID;
     $this->processBillingAddress($this->_contactID, (string) $this->_contributorEmail);
-    $participantId = NULL;
-    if ($this->_component === 'event') {
-      $participantId = $this->_id;
-    }
-
+    $paymentResult = [];
     if ($this->_mode) {
       // process credit card
-      $this->assign('contributeMode', 'direct');
-      $this->processCreditCard();
-    }
-
-    // @todo we should clean $ on the form & pass in skipCleanMoney
-    $trxnsData = $this->_params;
-    if ($this->isARefund()) {
-      $trxnsData['total_amount'] = -$trxnsData['total_amount'];
-    }
-    $trxnsData['participant_id'] = $participantId;
-    $trxnsData['contribution_id'] = $this->_contributionId;
-    // From the
-    $trxnsData['is_send_contribution_notification'] = FALSE;
+      $paymentResult = $this->processCreditCard();
+    }
+
+    $totalAmount = $this->getSubmittedValue('total_amount');
+    $trxnsData = [
+      'total_amount' => $this->isARefund() ? -$totalAmount : $totalAmount,
+      'check_number' => $this->getSubmittedValue('check_number'),
+      'fee_amount' => $paymentResult['fee_amount'] ?? 0,
+      'contribution_id' => $this->getContributionID(),
+      'payment_processor_id' => $this->getPaymentProcessorID(),
+      'card_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_FinancialTrxn', 'card_type_id', $this->getSubmittedValue('credit_card_type')),
+      'pan_truncation' => substr((string) $this->getSubmittedValue('credit_card_number'), -4),
+      'trxn_result_code' => $paymentResult['trxn_result_code'] ?? NULL,
+      'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+      'trxn_id' => $paymentResult['trxn_id'] ?? NULL,
+      'trxn_date' => $this->getSubmittedValue('trxn_date'),
+      // This form sends payment notification only, for historical reasons.
+      'is_send_contribution_notification' => FALSE,
+    ];
     $paymentID = civicrm_api3('Payment', 'create', $trxnsData)['id'];
 
-    if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) {
+    if ($this->getContributionID() && CRM_Core_Permission::access('CiviMember')) {
       $membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
       if ($membershipPaymentCount) {
         $this->ajaxResponse['updateTabs']['#tab_member'] = CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactID);
       }
     }
-    if ($this->_contributionId && CRM_Core_Permission::access('CiviEvent')) {
+    if ($this->getContributionID() && CRM_Core_Permission::access('CiviEvent')) {
       $participantPaymentCount = civicrm_api3('ParticipantPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
       if ($participantPaymentCount) {
         $this->ajaxResponse['updateTabs']['#tab_participant'] = CRM_Contact_BAO_Contact::getCountComponent('participant', $this->_contactID);
@@ -365,48 +362,23 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success');
   }
 
-  public function processCreditCard() {
-    $config = CRM_Core_Config::singleton();
-    $session = CRM_Core_Session::singleton();
-
+  public function processCreditCard(): ?array {
     // we need to retrieve email address
     if ($this->_context === 'standalone' && !empty($this->_params['is_email_receipt'])) {
       [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId);
       $this->assign('displayName', $displayName);
     }
 
-    $this->_params['amount'] = $this->_params['total_amount'];
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
-    $this->_params['amount_level'] = 0;
-    $this->_params['currencyID'] = CRM_Utils_Array::value('currency',
-      $this->_params,
-      $config->defaultCurrency
-    );
-
-    if (empty($this->_params['invoice_id'])) {
-      $this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
-    }
-    else {
-      $this->_params['invoiceID'] = $this->_params['invoice_id'];
-    }
-
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-      $this->_params,
-      $this->_bltID
-    ));
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
 
-    //Add common data to formatted params
-    $params = $this->_params;
-    CRM_Contribute_Form_AdditionalInfo::postProcessCommon($params, $this->_params, $this);
     // at this point we've created a contact and stored its address etc
     // all the payment processors expect the name and address to be in the
     // so we copy stuff over to first_name etc.
     $paymentParams = $this->_params;
     $paymentParams['contactID'] = $this->_contactId;
-    CRM_Core_Payment_Form::mapParams($this->_bltID, $this->_params, $paymentParams, TRUE);
+    $paymentParams['amount'] = $this->getSubmittedValue('total_amount');
+    $paymentParams['currency'] = $this->getCurrency();
+    CRM_Core_Payment_Form::mapParams($this->_bltID, $this->getSubmittedValues(), $paymentParams, TRUE);
 
     $paymentParams['contributionPageID'] = NULL;
     if (!empty($this->_params['is_email_receipt'])) {
@@ -421,36 +393,33 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
 
     if ($paymentParams['amount'] > 0.0) {
       try {
-        // force a reset of the payment processor in case the form changed it, CRM-7179
-        $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor);
+        // Re-retrieve the payment processor in case the form changed it, CRM-7179
+        $payment = \Civi\Payment\System::singleton()->getById($this->getPaymentProcessorID());
         $result = $payment->doPayment($paymentParams);
       }
-      catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
+      catch (PaymentProcessorException $e) {
         Civi::log()->error('Payment processor exception: ' . $e->getMessage());
         $urlParams = "action=add&cid={$this->_contactId}&id={$this->_contributionId}&component={$this->_component}&mode={$this->_mode}";
         CRM_Core_Error::statusBounce($e->getMessage(), CRM_Utils_System::url('civicrm/payment/add', $urlParams));
       }
     }
-
     if (!empty($result)) {
       $this->_params = array_merge($this->_params, $result);
     }
 
     $this->set('params', $this->_params);
-
-    // set source if not set
-    if (empty($this->_params['source'])) {
-      $userID = $session->get('userID');
-      $userSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $userID,
-        'sort_name'
-      );
-      $this->_params['source'] = ts('Submit Credit Card Payment by: %1', [1 => $userSortName]);
-    }
+    return [
+      'fee_amount' => $result['fee_amount'] ?? 0,
+      'trxn_id' => $result['trxn_id'] ?? NULL,
+      'trxn_result_code' => $result['trxn_result_code'] ?? NULL,
+    ];
   }
 
   /**
    * Wrapper for unit testing the post process submit function.
    *
+   * @deprecated since 5.69 will be removed around 5.75
+   *
    * @param array $params
    * @param string|null $creditCardMode
    * @param string $entityType
@@ -458,6 +427,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    * @throws \CRM_Core_Exception
    */
   public function testSubmit($params, $creditCardMode = NULL, $entityType = 'contribute') {
+    CRM_Core_Error::deprecatedFunctionWarning('use FormTrait in tests');
     $this->_bltID = 5;
     // Required because processCreditCard calls set method on this.
     $_SERVER['REQUEST_METHOD'] = 'GET';
@@ -468,11 +438,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     if (!empty($params['contribution_id'])) {
       $this->_contributionId = $params['contribution_id'];
 
-      $paymentDetails = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_contributionId, $entityType, FALSE, TRUE);
-
       $paymentAmount = $this->getAmountDue();
-      $this->_amtPaid = $paymentDetails['paid'];
-      $this->_amtTotal = $paymentDetails['total'];
 
       if ($paymentAmount > 0) {
         $this->_owed = $paymentAmount;
@@ -532,9 +498,40 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    */
   protected function getAmountDue(): float {
     if (!isset($this->amountDue)) {
-      $this->amountDue = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_contributionId);
+      $this->amountDue = CRM_Contribute_BAO_Contribution::getContributionBalance($this->getContributionID());
     }
     return $this->amountDue;
   }
 
+  /**
+   * Get the selected Contribution ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getContributionID(): int {
+    if (!$this->_contributionId) {
+      $component = CRM_Utils_Request::retrieve('component', 'String', $this, FALSE, 'contribution');
+      if ($component === 'event') {
+        $this->_contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_id, 'contribution_id', 'participant_id');
+      }
+      else {
+        $this->_contributionId = $this->_id;
+      }
+    }
+    return (int) $this->_contributionId;
+  }
+
+  /**
+   * Get the payment processor ID.
+   *
+   * @return int
+   */
+  public function getPaymentProcessorID(): int {
+    return (int) ($this->getSubmittedValue('payment_processor_id') ?: $this->_paymentProcessor['id']);
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php
index 8ce402c574..450132d244 100644
--- a/civicrm/CRM/Contribute/Form/CancelSubscription.php
+++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php
@@ -28,6 +28,13 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib
    */
   protected $_donorEmail = '';
 
+  /**
+   * The contributor display name (for emails)
+   *
+   * @var string
+   */
+  protected $_donorDisplayName = '';
+
   /**
    * Should custom data be suppressed on this form.
    *
diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php
index 8227fb63af..739caae201 100644
--- a/civicrm/CRM/Contribute/Form/Contribution.php
+++ b/civicrm/CRM/Contribute/Form/Contribution.php
@@ -19,6 +19,7 @@ use Civi\Payment\Exception\PaymentProcessorException;
 class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment {
   use CRM_Contact_Form_ContactFormTrait;
   use CRM_Contribute_Form_ContributeFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the contribution that we are processing.
@@ -95,8 +96,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
    */
   public $_pledgeValues;
 
-  public $_contributeMode = 'direct';
-
   public $_context;
 
   /**
@@ -612,16 +611,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       ($this->_priceSetId || !empty($_POST['price_set_id']))
     ) {
       $buildPriceSet = TRUE;
-      $getOnlyPriceSetElements = TRUE;
-      if (!$this->_priceSetId) {
-        $this->_priceSetId = $_POST['price_set_id'];
-        $getOnlyPriceSetElements = FALSE;
-      }
-
       $this->buildPriceSet();
-
-      // get only price set form elements.
-      if ($getOnlyPriceSetElements) {
+      if (!$this->isSubmitted()) {
+        // This is being called in overload mode to render the price set.
         return;
       }
     }
@@ -1154,8 +1146,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       $this->_lineItem = $lineItem;
     }
 
-    $this->_paymentObject = Civi\Payment\System::singleton()->getById($submittedValues['payment_processor_id']);
-    $this->_paymentProcessor = $this->_paymentObject->getPaymentProcessor();
+    $paymentObject = Civi\Payment\System::singleton()->getById($submittedValues['payment_processor_id']);
+    $this->_paymentProcessor = $paymentObject->getPaymentProcessor();
 
     // Set source if not set
     if (empty($submittedValues['source'])) {
@@ -1180,10 +1172,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     }
 
     $this->_params['amount'] = $this->_params['total_amount'];
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
+    // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
     $this->_params['amount_level'] = 0;
     $this->_params['description'] = ts("Contribution submitted by a staff person using contributor's credit card");
     $this->_params['currencyID'] = CRM_Utils_Array::value('currency',
@@ -1416,12 +1405,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     }
 
     if (isset($params['amount'])) {
-      $contributionParams = array_merge(CRM_Contribute_Form_Contribution_Confirm::getContributionParams(
-        $params, $financialType->id,
-        NULL, $receiptDate,
+      $contributionParams = array_merge($this->getContributionParams(
+        $params, $financialType->id, $receiptDate,
         $recurringContributionID), $contributionParams
       );
-      $contributionParams['non_deductible_amount'] = CRM_Contribute_Form_Contribution_Confirm::getNonDeductibleAmount($params, $financialType, FALSE, $form);
+      $contributionParams['non_deductible_amount'] = $this->getNonDeductibleAmount($params, $financialType, FALSE, $form);
       $contributionParams['skipCleanMoney'] = TRUE;
       // @todo this is the wrong place for this - it should be done as close to form submission
       // as possible
@@ -1430,23 +1418,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
 
       if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        // @todo - interrogate the line items passed in on the params array.
-        // No reason to assume line items will be set on the form.
-        foreach ($form->_lineItem as $lineItemKey => $lineItemValue) {
-          foreach ($lineItemValue as $key => $value) {
-            if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-              if (isset($dataArray[$value['tax_rate']])) {
-                $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + $value['tax_amount'];
-              }
-              else {
-                $dataArray[$value['tax_rate']] = $value['tax_amount'];
-              }
-            }
-          }
-        }
         $smarty = CRM_Core_Smarty::singleton();
-        $smarty->assign('dataArray', $dataArray);
+        // @todo - probably this assign is no longer needed as we use a token.
         $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL);
       }
     }
@@ -1484,6 +1457,75 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     return $contribution;
   }
 
+  /**
+   * Get non-deductible amount.
+   *
+   * Previously shared function - was quite broken in the other flow.
+   * Maybe here too
+   *
+   * This is a bit too much about wierd form interpretation to be this deep.
+   *
+   * @see https://issues.civicrm.org/jira/browse/CRM-11885
+   *  if non_deductible_amount exists i.e. Additional Details fieldset was opened [and staff typed something] -> keep
+   * it.
+   *
+   * @param array $params
+   * @param CRM_Financial_BAO_FinancialType $financialType
+   * @param bool $online
+   * @param CRM_Contribute_Form_Contribution_Confirm $form
+   *
+   * @return array
+   */
+  private function getNonDeductibleAmount($params, $financialType, $online, $form) {
+    if (isset($params['non_deductible_amount']) && (!empty($params['non_deductible_amount']))) {
+      return $params['non_deductible_amount'];
+    }
+    $priceSetId = $params['priceSetId'] ?? NULL;
+    // return non-deductible amount if it is set at the price field option level
+    if ($priceSetId && !empty($form->_lineItem)) {
+      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $form->_lineItem);
+    }
+
+    if (!empty($nonDeductibleAmount)) {
+      return $nonDeductibleAmount;
+    }
+    else {
+      if ($financialType->is_deductible) {
+        if ($online && isset($params['selectProduct'])) {
+          $selectProduct = $params['selectProduct'] ?? NULL;
+        }
+        if (!$online && isset($params['product_name'][0])) {
+          $selectProduct = $params['product_name'][0];
+        }
+        // if there is a product - compare the value to the contribution amount
+        if (isset($selectProduct) &&
+          $selectProduct !== 'no_thanks'
+        ) {
+          $productDAO = new CRM_Contribute_DAO_Product();
+          $productDAO->id = $selectProduct;
+          $productDAO->find(TRUE);
+          // product value exceeds contribution amount
+          if ($params['amount'] < $productDAO->price) {
+            $nonDeductibleAmount = $params['amount'];
+            return $nonDeductibleAmount;
+          }
+          // product value does NOT exceed contribution amount
+          else {
+            return $productDAO->price;
+          }
+        }
+        // contribution is deductible - but there is no product
+        else {
+          return '0.00';
+        }
+      }
+      // contribution is NOT deductible
+      else {
+        return $params['amount'];
+      }
+    }
+  }
+
   /**
    * Create the recurring contribution record.
    *
@@ -1529,6 +1571,61 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     return $recurring->id;
   }
 
+  /**
+   * Set the parameters to be passed to contribution create function.
+   *
+   * Previously shared function.
+   *
+   * @param array $params
+   * @param int $financialTypeID
+   * @param string $receiptDate
+   * @param int $recurringContributionID
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  private function getContributionParams(
+    $params, $financialTypeID, $receiptDate, $recurringContributionID) {
+    $contributionParams = [
+      'financial_type_id' => $financialTypeID,
+      'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
+      'tax_amount' => $params['tax_amount'] ?? NULL,
+      'amount_level' => $params['amount_level'] ?? NULL,
+      'invoice_id' => $params['invoiceID'],
+      'currency' => $params['currencyID'],
+      'is_pay_later' => $params['is_pay_later'] ?? 0,
+      //configure cancel reason, cancel date and thankyou date
+      //from 'contribution' type profile if included
+      'cancel_reason' => $params['cancel_reason'] ?? 0,
+      'cancel_date' => isset($params['cancel_date']) ? CRM_Utils_Date::format($params['cancel_date']) : NULL,
+      'thankyou_date' => isset($params['thankyou_date']) ? CRM_Utils_Date::format($params['thankyou_date']) : NULL,
+      //setting to make available to hook - although seems wrong to set on form for BAO hook availability
+      'skipLineItem' => $params['skipLineItem'] ?? 0,
+    ];
+
+    if (!empty($params["is_email_receipt"])) {
+      $contributionParams += [
+        'receipt_date' => $receiptDate,
+      ];
+    }
+
+    if ($recurringContributionID) {
+      $contributionParams['contribution_recur_id'] = $recurringContributionID;
+    }
+
+    $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
+    if (isset($contributionParams['invoice_id'])) {
+      $contributionParams['id'] = CRM_Core_DAO::getFieldValue(
+        'CRM_Contribute_DAO_Contribution',
+        $contributionParams['invoice_id'],
+        'id',
+        'invoice_id'
+      );
+    }
+
+    return $contributionParams;
+  }
+
   /**
    * Generate the data to construct a snippet based pane.
    *
@@ -1859,7 +1956,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
       $params = [
         'contact_id' => $this->_contactID,
-        'currency' => $this->getCurrency($submittedValues),
+        'currency' => $this->getCurrency(),
         'skipCleanMoney' => TRUE,
         'id' => $this->_id,
       ];
@@ -1870,7 +1967,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
       $fields = [
         'financial_type_id',
-        'contribution_status_id',
         'payment_instrument_id',
         'cancel_reason',
         'source',
@@ -1881,6 +1977,21 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       foreach ($fields as $f) {
         $params[$f] = $formValues[$f] ?? NULL;
       }
+      if ($this->_id && $action & CRM_Core_Action::UPDATE) {
+        // Can only be updated to contribution which is handled via Payment.create
+        $params['contribution_status_id'] = $this->getSubmittedValue('contribution_status_id');
+
+        // Set is_pay_later flag for back-office offline Pending status contributions CRM-8996
+        // else if contribution_status is changed to Completed is_pay_later flag is changed to 0, CRM-15041
+        if ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending')) {
+          $params['is_pay_later'] = 1;
+        }
+        elseif ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) {
+          // @todo - if the contribution is new then it should be Pending status & then we use
+          // Payment.create to update to Completed.
+          $params['is_pay_later'] = 0;
+        }
+      }
 
       $params['revenue_recognition_date'] = NULL;
       if (!empty($formValues['revenue_recognition_date'])) {
@@ -1901,17 +2012,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
         $params['cancel_date'] = $params['cancel_reason'] = 'null';
       }
 
-      // Set is_pay_later flag for back-office offline Pending status contributions CRM-8996
-      // else if contribution_status is changed to Completed is_pay_later flag is changed to 0, CRM-15041
-      if ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending')) {
-        $params['is_pay_later'] = 1;
-      }
-      elseif ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) {
-        // @todo - if the contribution is new then it should be Pending status & then we use
-        // Payment.create to update to Completed.
-        $params['is_pay_later'] = 0;
-      }
-
       // Add Additional common information to formatted params.
       CRM_Contribute_Form_AdditionalInfo::postProcessCommon($formValues, $params, $this);
       if ($pId) {
@@ -1932,21 +2032,21 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       if (!empty($params['note']) && !empty($submittedValues['note'])) {
         unset($params['note']);
       }
-      $contribution = CRM_Contribute_BAO_Contribution::create($params);
-
       $previousStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $this->_values['contribution_status_id'] ?? NULL);
       // process associated membership / participant, CRM-4395
-      if ($contribution->id && $action & CRM_Core_Action::UPDATE
+      if ($this->getContributionID() && $this->getAction() & CRM_Core_Action::UPDATE
         && in_array($previousStatus, ['Pending', 'Partially paid'], TRUE)
         && 'Completed' === CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $this->getSubmittedValue('contribution_status_id'))) {
-        // @todo use Payment.create to do this, remove transitioncomponents function
-        // if contribution is being created with a completed status it should be
-        // created pending & then Payment.create adds the payment
-        CRM_Contribute_BAO_Contribution::transitionComponents([
-          'contribution_id' => $contribution->id,
-          'receive_date' => $contribution->receive_date,
+        // @todo make users use add payment form.
+        civicrm_api3('Payment', 'create', [
+          'contribution_id' => $this->getContributionID(),
+          'total_amount' => $this->getContributionValue('balance_amount'),
+          'currency' => $this->getSubmittedValue('currency'),
+          'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+          'check_number' => $this->getSubmittedValue('check_number'),
         ]);
       }
+      $contribution = CRM_Contribute_BAO_Contribution::create($params);
 
       array_unshift($this->statusMessage, ts('The contribution record has been saved.'));
 
@@ -2027,11 +2127,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     foreach ($lineItem as $key => $value) {
       foreach ($value as $v) {
         if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) {
-          $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + ($v['tax_amount'] ?? 0);
         }
         else {
           if (isset($v['tax_rate'])) {
-            $taxRate[(string) $v['tax_rate']] = $v['tax_amount'] ?? NULL;
             $getTaxDetails = TRUE;
           }
         }
@@ -2040,14 +2138,13 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
     if ($action & CRM_Core_Action::UPDATE) {
       $totalTaxAmount = $submittedValues['tax_amount'] ?? $this->_values['tax_amount'];
+      // Assign likely replaced by a token
       $this->assign('totalTaxAmount', $totalTaxAmount);
-      $this->assign('dataArray', $taxRate);
     }
     else {
       if (!empty($submittedValues['price_set_id'])) {
         $this->assign('totalTaxAmount', $submittedValues['tax_amount']);
         $this->assign('getTaxDetails', $getTaxDetails);
-        $this->assign('dataArray', $taxRate);
       }
       else {
         $this->assign('totalTaxAmount', CRM_Utils_Array::value('tax_amount', $submittedValues));
@@ -2298,13 +2395,19 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
   /**
    * Get the price set ID.
    *
-   * Note that the function currently returns NULL if not submitted
-   * but will over time be fixed to always return an ID.
+   * @api Supported for external use.
    *
    * @return int|null
    */
-  protected function getPriceSetID() {
-    return $this->getSubmittedValue('price_set_id');
+  public function getPriceSetID(): ?int {
+    $priceSetID = $this->getSubmittedValue('price_set_id') ?: CRM_Utils_Request::retrieve('priceSetId', 'Integer');
+    // Ideally we would use $this->isFormBuilt() here to know when to access the _POST
+    // array directly. However, the parent sets isBuilt before, building the form,
+    // rather than after.
+    if (!$priceSetID && !empty($this->getSubmitValue('price_set_id'))) {
+      return (int) $this->getSubmitValue('price_set_id');
+    }
+    return $priceSetID ?? NULL;
   }
 
   /**
@@ -2363,7 +2466,7 @@ WHERE  contribution_id = {$id}
 
     $form->assign('is_recur_interval', $form->_values['is_recur_interval'] ?? NULL);
     $form->assign('is_recur_installments', $form->_values['is_recur_installments'] ?? NULL);
-    $paymentObject = $form->getVar('_paymentObject');
+    $paymentObject = $this->getPaymentProcessorObject();
     if ($paymentObject) {
       $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [
         'is_recur_installments' => !empty($form->_values['is_recur_installments']),
diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
index daf64aa0f6..ab9987f216 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
@@ -144,21 +144,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    *
    * @param array $params
    * @param int $financialTypeID
-   * @param array $paymentProcessorOutcome
    * @param string $receiptDate
    * @param int $recurringContributionID
    *
    * @return array
    * @throws \CRM_Core_Exception
    */
-  public static function getContributionParams(
+  private function getContributionParams(
     $params, $financialTypeID,
-    $paymentProcessorOutcome, $receiptDate, $recurringContributionID) {
+    $receiptDate, $recurringContributionID) {
     $contributionParams = [
       'financial_type_id' => $financialTypeID,
       'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
       'tax_amount' => $params['tax_amount'] ?? NULL,
-      'amount_level' => $params['amount_level'] ?? NULL,
+      'amount_level' => $this->getMainContributionAmountLevel(),
       'invoice_id' => $params['invoiceID'],
       'currency' => $params['currencyID'],
       'is_pay_later' => $params['is_pay_later'] ?? 0,
@@ -206,18 +205,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param array $params
    * @param CRM_Financial_BAO_FinancialType $financialType
    * @param bool $online
-   * @param CRM_Contribute_Form_Contribution_Confirm $form
    *
    * @return array
    */
-  public static function getNonDeductibleAmount($params, $financialType, $online, $form) {
+  private function getNonDeductibleAmount($params, $financialType, $online) {
     if (isset($params['non_deductible_amount']) && (!empty($params['non_deductible_amount']))) {
       return $params['non_deductible_amount'];
     }
     $priceSetId = $params['priceSetId'] ?? NULL;
     // return non-deductible amount if it is set at the price field option level
-    if ($priceSetId && !empty($form->_lineItem)) {
-      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $form->_lineItem);
+    if ($priceSetId && !empty($this->getLineItems())) {
+      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, [$this->getPriceSetID() => $this->getLineItems()]);
     }
 
     if (!empty($nonDeductibleAmount)) {
@@ -265,16 +263,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    */
   public function preProcess() {
     parent::preProcess();
-
-    // lineItem isn't set until Register postProcess
-    $this->_lineItem = $this->get('lineItem');
     $this->_ccid = $this->get('ccid');
 
     $this->_params = $this->controller->exportValues('Main');
     $this->_params['ip_address'] = CRM_Utils_System::ipAddress();
     $this->_params['amount'] = $this->get('amount');
     if (isset($this->_params['amount'])) {
-      $this->setFormAmountFields($this->_params['priceSetId']);
+      $this->setFormAmountFields($this->getPriceSetID());
     }
 
     $this->_useForMember = $this->get('useForMember');
@@ -324,7 +319,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $blocks = ['email', 'phone', 'im', 'url', 'openid'];
       foreach ($this->_params['onbehalf'] as $loc => $value) {
         $field = $typeId = NULL;
-        if (strstr($loc, '-')) {
+        if (str_contains($loc, '-')) {
           [$field, $locType] = explode('-', $loc);
         }
 
@@ -413,7 +408,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
             }
           }
         }
-        elseif (strstr($loc, 'custom')) {
+        elseif (str_contains($loc, 'custom')) {
           if ($value && isset($this->_params['onbehalf']["{$loc}_id"])) {
             $value = $this->_params['onbehalf']["{$loc}_id"];
           }
@@ -432,11 +427,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     elseif (!empty($this->_values['is_for_organization'])) {
       // no on behalf of an organization, CRM-5519
       // so reset loc blocks from main params.
-      foreach ([
-        'phone',
-        'email',
-        'address',
-      ] as $blk) {
+      foreach (['phone', 'email', 'address'] as $blk) {
         if (isset($this->_params[$blk])) {
           unset($this->_params[$blk]);
         }
@@ -448,6 +439,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $params = $this->processPcp($this, $this->_params);
       $this->_params = $params;
     }
+    else {
+      $this->assign('pcpBlock');
+    }
     $this->_params['invoiceID'] = $this->get('invoiceID');
 
     //carry campaign from profile.
@@ -464,6 +458,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
   /**
    * Build the form object.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function buildQuickForm() {
     // FIXME: Some of this code is identical to Thankyou.php and should be broken out into a shared function
@@ -482,23 +478,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']);
       $this->buildCustom($this->_values['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
     }
+    else {
+      $this->assign('honoreeProfileFields');
+    }
     $this->assign('receiptFromEmail', $this->_values['receipt_from_email'] ?? NULL);
     $this->assign('amount_block_is_active', $this->isFormSupportsNonMembershipContributions());
-
-    // Make a copy of line items array to use for display only
-    $tplLineItems = $this->_lineItem;
-    if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
-      $taxAmount = 0;
-      foreach ($tplLineItems ?? [] as $lineItems) {
-        foreach ($lineItems as $lineItem) {
-          $taxAmount += (float) ($lineItem['tax_amount'] ?? 0);
-        }
-      }
-
-      $this->assign('totalTaxAmount', $taxAmount);
-      $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm());
-    }
-
+    $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
+    $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount());
     $isDisplayLineItems = $this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config');
     $this->assign('isDisplayLineItems', $isDisplayLineItems);
 
@@ -509,18 +495,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $this->_params['is_quick_config'] = 1;
     }
     else {
-      $this->assignLineItemsToTemplate($tplLineItems);
+      $this->assign('lineItem', [$this->getPriceSetID() => $this->order->getLineItems()]);
     }
 
     if (!empty($params['selectProduct']) && $params['selectProduct'] !== 'no_thanks') {
       $option = $params['options_' . $params['selectProduct']] ?? NULL;
-      $productID = $params['selectProduct'];
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE,
-        $productID, $option
-      );
-      $this->set('productID', $productID);
+      $this->buildPremiumsBlock(FALSE, $option);
       $this->set('option', $option);
     }
+    else {
+      $this->assign('products');
+    }
     if (CRM_Core_Component::isEnabled('CiviMember') && empty($this->_ccid)) {
       if (isset($params['selectMembership']) &&
         $params['selectMembership'] !== 'no_thanks'
@@ -560,6 +545,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $this->buildCustom($this->_values['onbehalf_profile_id'], 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
     }
+    else {
+      $this->assign('onbehalfProfile');
+    }
 
     $this->_separateMembershipPayment = $this->isSeparateMembershipPayment();
     $this->assign('is_separate_payment', $this->isSeparateMembershipPayment());
@@ -664,8 +652,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL, $isTest = NULL) {
     $separateMembershipPayment = FALSE;
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
-
       $membershipTypeIds = $membershipTypes = [];
       $membershipPriceset = (!empty($this->_priceSetId) && $this->_useForMember);
 
@@ -691,19 +677,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
 
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
-        $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
         // Check if we support auto-renew on this contribution page
@@ -730,7 +704,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
                 if ($membership->find(TRUE)) {
                   $this->assign('renewal_mode', TRUE);
                   $memType['current_membership'] = $membership->end_date;
-                  $this->_currentMemberships[$membership->membership_type_id] = $membership->membership_type_id;
                 }
               }
               $membershipTypes[] = $memType;
@@ -761,7 +734,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
               if ($membership && $membership['membership_type_id.duration_unit:name'] !== 'lifetime') {
                 $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -778,6 +750,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', FALSE);
+      $this->assignTotalAmounts();
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
       //give preference to user submitted auto_renew value.
@@ -1054,14 +1027,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     if (isset($params['amount'])) {
-      $contributionParams = array_merge(self::getContributionParams(
-        $params, $financialType->id,
-        NULL, $receiptDate,
+      $contributionParams = array_merge($this->getContributionParams(
+        $params, $financialType->id, $receiptDate,
         $recurringContributionID), $contributionParams
       );
 
       $contributionParams['payment_processor'] = $result ? ($result['payment_processor'] ?? NULL) : NULL;
-      $contributionParams['non_deductible_amount'] = self::getNonDeductibleAmount($params, $financialType, TRUE, $form);
+      $contributionParams['non_deductible_amount'] = $this->getNonDeductibleAmount($params, $financialType, TRUE, $form);
       $contributionParams['skipCleanMoney'] = TRUE;
       // @todo this is the wrong place for this - it should be done as close to form submission
       // as possible
@@ -1069,26 +1041,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
 
-      if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        // @todo - interrogate the line items passed in on the params array.
-        // No reason to assume line items will be set on the form.
-        foreach ($form->_lineItem as $lineItemKey => $lineItemValue) {
-          foreach ($lineItemValue as $key => $value) {
-            if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-              if (isset($dataArray[$value['tax_rate']])) {
-                $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + $value['tax_amount'];
-              }
-              else {
-                $dataArray[$value['tax_rate']] = $value['tax_amount'];
-              }
-            }
-          }
-        }
-        $smarty = CRM_Core_Smarty::singleton();
-        $smarty->assign('dataArray', $dataArray);
-      }
-
       // lets store it in the form variable so postProcess hook can get to this and use it
       $form->_contributionID = $contribution->id;
     }
@@ -1165,15 +1117,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     // CRM-14354: For an auto-renewing membership with an additional contribution,
     // if separate payments is not enabled, make sure only the membership fee recurs
-    if (!empty($this->_membershipBlock)
-      && $this->_membershipBlock['is_separate_payment'] === '0'
+    if ($this->isSeparateMembershipPayment()
       && isset($params['selectMembership'])
-      && $this->_values['is_allow_other_amount'] == '1'
+      && $this->getContributionPageValue('is_allow_other_amount')
       // CRM-16331
-      && !empty($this->_membershipTypeValues)
-      && !empty($this->_membershipTypeValues[$params['selectMembership']]['minimum_fee'])
+      && !empty($this->order->getMembershipTotalAmount())
     ) {
-      $recurParams['amount'] = $this->_membershipTypeValues[$params['selectMembership']]['minimum_fee'];
+      $recurParams['amount'] = $this->order->getMembershipTotalAmount();
     }
 
     $recurParams['is_test'] = 0;
@@ -1372,7 +1322,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   protected function processMembership($membershipParams, $contactID, $customFieldsFormatted, $premiumParams,
                                 $membershipLineItems): void {
 
-    $membershipTypeIDs = (array) $membershipParams['selectMembership'];
+    $membershipTypeIDs = array_keys($this->order->getMembershipTypes());
     $membershipTypes = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIDs);
     $membershipType = empty($membershipTypes) ? [] : reset($membershipTypes);
 
@@ -1403,7 +1353,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->postProcessMembership($membershipParams, $contactID, $premiumParams, $customFieldsFormatted, $membershipType, $membershipTypeIDs, $isPaidMembership, $this->_membershipId, $isProcessSeparateMembershipTransaction, $financialTypeID,
       $membershipLineItems);
 
-    $this->assign('membership_assign', TRUE);
     $this->set('membershipTypeID', $membershipParams['selectMembership']);
   }
 
@@ -1441,31 +1390,31 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $membershipContribution = NULL;
     $isTest = $membershipParams['is_test'] ?? FALSE;
     $errors = $paymentResults = [];
-    $this->_values['isMembership'] = TRUE;
+
     $isRecurForFirstTransaction = $this->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL;
 
     $totalAmount = $membershipParams['amount'];
 
     if ($isPaidMembership) {
-      if ($isProcessSeparateMembershipTransaction) {
+      if ($this->isSeparatePaymentSelected()) {
         // If we have 2 transactions only one can use the invoice id.
         $membershipParams['invoiceID'] .= '-2';
         if (!empty($membershipParams['auto_renew'])) {
           $isRecurForFirstTransaction = FALSE;
         }
+        $membershipParams['total_amount'] = $totalAmount;
+        $membershipParams['skipLineItem'] = 0;
+        CRM_Price_BAO_LineItem::getLineItemArray($membershipParams);
       }
-
-      if (!$isProcessSeparateMembershipTransaction) {
+      else {
         // Skip line items in the contribution processing transaction.
         // We will create them with the membership for proper linking.
         $membershipParams['skipLineItem'] = 1;
+        // Since we are not letting Contribution::create set up the line items
+        // we need to specify the tax.
+        $membershipParams['tax_amount'] = $this->order->getTotalTaxAmount();
       }
-      else {
-        $membershipParams['total_amount'] = $totalAmount;
-        $membershipParams['skipLineItem'] = 0;
-        CRM_Price_BAO_LineItem::getLineItemArray($membershipParams);
 
-      }
       $paymentResult = $this->processConfirm(
         $membershipParams,
         $contactID,
@@ -1484,14 +1433,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
     }
 
-    if ($isProcessSeparateMembershipTransaction) {
+    if ($this->isSeparatePaymentSelected()) {
       try {
-        $this->_lineItem = $unprocessedLineItems;
         if (empty($this->_params['auto_renew']) && !empty($membershipParams['is_recur'])) {
           unset($membershipParams['is_recur']);
         }
         [$membershipContribution, $secondPaymentResult] = $this->processSecondaryFinancialTransaction($contactID, array_merge($membershipParams, ['skipLineItem' => 1]),
-          $isTest, $unprocessedLineItems, $membershipDetails['minimum_fee'] ?? 0, $membershipDetails['financial_type_id'] ?? NULL);
+          $isTest, $membershipDetails['minimum_fee'] ?? 0, $membershipDetails['financial_type_id'] ?? NULL);
         $paymentResults[] = ['contribution_id' => $membershipContribution->id, 'result' => $secondPaymentResult];
         $totalAmount = $membershipContribution->total_amount;
       }
@@ -1513,29 +1461,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     //@todo it should no longer be possible for it to get to this point & membership to not be an array
     if (is_array($membershipTypeIDs) && !empty($membershipContributionID)) {
       $typesTerms = $membershipParams['types_terms'] ?? [];
-
-      $membershipLines = $nonMembershipLines = [];
-      foreach ($unprocessedLineItems as $priceSetID => $lines) {
-        foreach ($lines as $line) {
-          if (!empty($line['membership_type_id'])) {
-            $membershipLines[$line['membership_type_id']] = $line['price_field_value_id'];
-          }
-        }
-      }
-
-      $i = 1;
       $this->_params['createdMembershipIDs'] = [];
-      foreach ($membershipTypeIDs as $memType) {
-        $membershipLineItems = [];
-        if ($i < count($membershipTypeIDs)) {
-          $membershipLineItems[$priceSetID][$membershipLines[$memType]] = $unprocessedLineItems[$priceSetID][$membershipLines[$memType]];
-          unset($unprocessedLineItems[$priceSetID][$membershipLines[$memType]]);
-        }
-        else {
-          $membershipLineItems = $unprocessedLineItems;
-        }
-        $i++;
-        $numTerms = $typesTerms[$memType] ?? 1;
+      $firstMembershipTypeID = reset($membershipTypeIDs);
+      foreach ($membershipTypeIDs as $membershipTypeID) {
+        $membershipLineItems = [$this->getPriceSetID() => $this->getLineItemsForMembershipCreate((int) $membershipTypeID, $firstMembershipTypeID)];
+        $numTerms = $typesTerms[$membershipTypeID] ?? 1;
         $contributionRecurID = $this->_params['contributionRecurID'] ?? NULL;
 
         $membershipSource = NULL;
@@ -1563,7 +1493,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         }
 
         [$membership, $renewalMode, $dates] = self::legacyProcessMembership(
-          $contactID, $memType, $isTest,
+          $contactID, $membershipTypeID, $isTest,
           date('YmdHis'), $membershipParams['cms_contactID'] ?? NULL,
           $customFieldsFormatted,
           $numTerms, $membershipID, $pending,
@@ -1572,10 +1502,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         );
 
         $this->set('renewal_mode', $renewalMode);
-        if (!empty($dates)) {
-          $this->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d'));
-          $this->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d'));
-        }
 
         if (!empty($membershipContribution)) {
           // Next line is probably redundant. Checks prevent it happening twice.
@@ -1593,24 +1519,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
           //CRM-15232: Check if membership is created and on the basis of it use
           //membership receipt template to send payment receipt
-          $this->_values['isMembership'] = TRUE;
-        }
-      }
-      if ($this->_priceSetId && !empty($this->_useForMember) && !empty($this->_lineItem)) {
-        foreach ($this->_lineItem[$this->_priceSetId] as & $priceFieldOp) {
-          if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) {
-            $membershipOb = $membership;
-            $priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->start_date) : '-';
-            $priceFieldOp['end_date'] = $membershipOb->end_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->end_date) : '-';
-          }
-          else {
-            $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A';
-          }
+          $this->_values['membership_id'] = $membership->id;
         }
-        $this->_values['lineItem'] = $this->_lineItem;
-        $this->assign('lineItem', $this->_lineItem);
       }
     }
+    $this->assign('lineItem', $this->isQuickConfig() ? NULL : [$this->getPriceSetID() => $this->getLineItems()]);
 
     if (!empty($errors)) {
       $message = $this->compileErrorMessage($errors);
@@ -1640,7 +1553,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       // If this is a single membership-related contribution, it won't have
       // be performed yet, so do it now.
-      if ($isPaidMembership && !$isProcessSeparateMembershipTransaction) {
+      if ($isPaidMembership && !$this->isSeparatePaymentSelected()) {
+        $paymentParams['amount'] = $this->getMainContributionAmount();
         $paymentActionResult = $payment->doPayment($paymentParams);
         $paymentResults[] = ['contribution_id' => $paymentResult['contribution']->id, 'result' => $paymentActionResult];
       }
@@ -1675,8 +1589,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     $emailValues = array_merge($membershipParams, $this->_values);
-    $emailValues['membership_assign'] = 1;
     $emailValues['useForMember'] = !empty($this->_useForMember);
+    $emailValues['membership_id'] = !empty($membership) ? $membership->id : NULL;
 
     // Finally send an email receipt for pay-later scenario (although it might sometimes be caught above!)
     if ($totalAmount == 0) {
@@ -1740,7 +1654,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $contactID
    * @param array $tempParams
    * @param bool $isTest
-   * @param array $lineItems
    * @param $minimumFee
    * @param int $financialTypeID
    *
@@ -1749,7 +1662,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @throws \CRM_Core_Exception
    * @throws \Civi\Payment\Exception\PaymentProcessorException
    */
-  private function processSecondaryFinancialTransaction($contactID, $tempParams, $isTest, $lineItems, $minimumFee,
+  private function processSecondaryFinancialTransaction($contactID, $tempParams, $isTest, $minimumFee,
                                                    $financialTypeID): array {
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $financialTypeID;
@@ -1778,7 +1691,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->_params['separate_membership_payment'] = 1;
     $contributionParams = [
       'contact_id' => $contactID,
-      'line_item' => $lineItems,
+      'line_item' => [$this->getPriceSetID() => $this->getSecondaryMembershipContributionLineItems()],
       'is_test' => $isTest,
       'campaign_id' => $tempParams['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL,
       'contribution_page_id' => $this->_id,
@@ -1854,6 +1767,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   /**
    * This function sets the fields.
    *
+   * The results of it are likely unused.
+   *
    * - $this->_params['amount_level']
    * - $this->_params['selectMembership']
    * And under certain circumstances sets
@@ -1862,7 +1777,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $priceSetID
    */
   public function setFormAmountFields($priceSetID) {
-    $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_params['priceSetId'], 'is_quick_config');
     $priceField = new CRM_Price_DAO_PriceField();
     $priceField->price_set_id = $priceSetID;
     $priceField->orderBy('weight');
@@ -1873,16 +1787,15 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       if ($priceField->name == "contribution_amount") {
         $paramWeDoNotUnderstand = $priceField->id;
       }
-      if ($isQuickConfig && !empty($this->_params["price_{$priceField->id}"])) {
+      if ($this->isQuickConfig() && !empty($this->_params["price_{$priceField->id}"])) {
         if ($this->_values['fee'][$priceField->id]['html_type'] != 'Text') {
-          // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-          // function to get correct amount level consistently. Remove setting of the amount level in
-          // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-          // to cover all variants.
+          // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
+          // We expect this to be ignored.
           $this->_params['amount_level'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue',
             $this->_params["price_{$priceField->id}"], 'label');
         }
         if ($priceField->name == "membership_amount") {
+          // We expect this to be ignored.
           $this->_params['selectMembership'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue',
             $this->_params["price_{$priceField->id}"], 'membership_type_id');
         }
@@ -1901,6 +1814,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         && ($this->_params["price_{$paramWeDoNotUnderstand}"] ?? NULL) < 1
         && empty($this->_params["price_{$priceField->id}"])
       ) {
+        // We expect this to be ignored.
         $this->_params['amount'] = NULL;
       }
 
@@ -1914,6 +1828,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         && ($this->_values['fee'][$priceField->id]['name'] ?? NULL) == 'contribution_amount'
         && ($this->_params["price_{$priceField->id}"] ?? NULL) == '-1'
       ) {
+        // We expect this to be ignored.
         $this->_params['amount'] = NULL;
       }
     }
@@ -1932,7 +1847,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $form->_id = $params['id'];
 
     CRM_Contribute_BAO_ContributionPage::setValues($form->_id, $form->_values);
-    $form->_separateMembershipPayment = $form->isSeparateMembershipPayment();
     //this way the mocked up controller ignores the session stuff
     $_SERVER['REQUEST_METHOD'] = 'GET';
     $form->controller = new CRM_Contribute_Controller_Contribution();
@@ -1940,18 +1854,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     $paramsProcessedForForm = $form->_params = self::getFormParams($params['id'], $params);
 
-    $order = new CRM_Financial_BAO_Order();
-    $order->setPriceSetIDByContributionPageID($params['id']);
-    $order->setPriceSelectionFromUnfilteredInput($params);
+    $form->order = new CRM_Financial_BAO_Order();
+    $form->order->setPriceSetIDByContributionPageID($params['id']);
+    $form->order->setPriceSelectionFromUnfilteredInput($params);
     if (isset($params['amount']) && !$form->isSeparateMembershipPayment()) {
       // @todo deprecate receiving amount, calculate on the form.
-      $order->setOverrideTotalAmount((float) $params['amount']);
+      $form->order->setOverrideTotalAmount((float) $params['amount']);
     }
-    $amount = $order->getTotalAmount();
-    if ($form->isSeparateMembershipPayment()) {
-      $amount -= $order->getMembershipTotalAmount();
-    }
-    $form->_amount = $params['amount'] = $form->_params['amount'] = $amount;
     // hack these in for test support.
     $form->_fields['billing_first_name'] = 1;
     $form->_fields['billing_last_name'] = 1;
@@ -1981,25 +1890,14 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       // It can be blank with a $0 transaction - then no processor needs to be selected
       $form->_paymentProcessor = $form->_paymentProcessors[$form->_params['payment_processor_id']];
     }
-    if (!empty($params['payment_processor_id'])) {
-      // The concept of contributeMode is deprecated as is the billing_mode concept.
-      if ($form->_paymentProcessor['billing_mode'] == 1) {
-        $form->_contributeMode = 'direct';
-      }
-      else {
-        $form->_contributeMode = 'notify';
-      }
-    }
 
     if (!empty($params['useForMember'])) {
       $form->set('useForMember', 1);
       $form->_useForMember = 1;
     }
     $priceFields = $priceFields[$priceSetID]['fields'];
-
-    $form->_lineItem = [$priceSetID => $order->getLineItems()];
     $membershipPriceFieldIDs = [];
-    foreach ($order->getLineItems() as $lineItem) {
+    foreach ($form->order->getLineItems() as $lineItem) {
       if (!empty($lineItem['membership_type_id'])) {
         $form->set('useForMember', 1);
         $form->_useForMember = 1;
@@ -2134,29 +2032,29 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     if (!empty($this->_values['onbehalf_profile_id']) && empty($this->_ccid)) {
       $behalfOrganization = [];
       $orgFields = ['organization_name', 'organization_id', 'org_option'];
-      foreach ($orgFields as $fld) {
-        if (array_key_exists($fld, $params)) {
-          $behalfOrganization[$fld] = $params[$fld];
-          unset($params[$fld]);
+      foreach ($orgFields as $organizationField) {
+        if (array_key_exists($organizationField, $params)) {
+          $behalfOrganization[$organizationField] = $params[$organizationField];
+          unset($params[$organizationField]);
         }
       }
 
       if (is_array($params['onbehalf']) && !empty($params['onbehalf'])) {
-        foreach ($params['onbehalf'] as $fld => $values) {
-          if (strstr($fld, 'custom_')) {
-            $behalfOrganization[$fld] = $values;
+        foreach ($params['onbehalf'] as $onBehalfField => $values) {
+          if (str_contains($onBehalfField, 'custom_')) {
+            $behalfOrganization[$onBehalfField] = $values;
           }
-          elseif (!(strstr($fld, '-'))) {
-            if (in_array($fld, [
+          elseif (!str_contains($onBehalfField, '-')) {
+            if (in_array($onBehalfField, [
               'contribution_campaign_id',
               'member_campaign_id',
             ])) {
-              $fld = 'campaign_id';
+              $onBehalfField = 'campaign_id';
             }
             else {
-              $behalfOrganization[$fld] = $values;
+              $behalfOrganization[$onBehalfField] = $values;
             }
-            $this->_params[$fld] = $values;
+            $this->_params[$onBehalfField] = $values;
           }
         }
       }
@@ -2164,7 +2062,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       if (array_key_exists('onbehalf_location', $params) && is_array($params['onbehalf_location'])) {
         foreach ($params['onbehalf_location'] as $block => $vals) {
           //fix for custom data (of type checkbox, multi-select)
-          if (substr($block, 0, 7) == 'custom_') {
+          if (str_starts_with($block, 'custom_')) {
             continue;
           }
           // fix the index of block elements
@@ -2290,8 +2188,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->_useForMember = $this->get('useForMember');
 
     // store the fact that this is a membership and membership type is selected
-    if ($this->isMembershipSelected($membershipParams)) {
-      $this->doMembershipProcessing($contactID, $membershipParams, $premiumParams, $this->_lineItem);
+    if ($this->isMembershipSelected()) {
+      $this->doMembershipProcessing($contactID, $membershipParams, $premiumParams);
     }
     else {
       // at this point we've created a contact and stored its address etc
@@ -2302,19 +2200,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $paymentParams['skipLineItem'] = 0;
 
       if (!isset($paymentParams['line_item'])) {
-        $paymentParams['line_item'] = $this->_lineItem;
+        $paymentParams['line_item'] = [$this->getPriceSetID() => $this->getLineItems()];
       }
 
       if (!empty($paymentParams['onbehalf']) &&
         is_array($paymentParams['onbehalf'])
       ) {
         foreach ($paymentParams['onbehalf'] as $key => $value) {
-          if (strstr($key, 'custom_')) {
+          if (str_contains($key, 'custom_')) {
             $this->_params[$key] = $value;
           }
         }
       }
-
+      $paymentParams['amount'] = $this->getMainContributionAmount();
+      $paymentParams['line_item'] = [$this->getPriceSetID() => $this->getMainContributionLineItems()];
       $result = $this->processConfirm($paymentParams,
         $contactID,
         $this->wrangleFinancialTypeID($this->_values['financial_type_id']),
@@ -2355,20 +2254,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
   /**
    * Return True/False if we have a membership selected on the contribution page
-   * @param array $membershipParams
    *
    * @return bool
    */
-  private function isMembershipSelected($membershipParams) {
-    $priceFieldIds = $this->get('memberPriceFieldIDS');
-    if ((!empty($membershipParams['selectMembership']) && $membershipParams['selectMembership'] != 'no_thanks')
-        && empty($priceFieldIds)) {
-      return TRUE;
-    }
-    else {
-      $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
-    }
-    return !empty($membershipParams['selectMembership']);
+  private function isMembershipSelected(): bool {
+    return !empty($this->getMembershipLineItems());
   }
 
   /**
@@ -2408,11 +2298,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $contactID
    * @param array $membershipParams
    * @param array $premiumParams
-   * @param array $formLineItems
    */
-  protected function doMembershipProcessing($contactID, $membershipParams, $premiumParams, $formLineItems) {
+  protected function doMembershipProcessing($contactID, $membershipParams, $premiumParams) {
     if (!$this->_useForMember) {
-      $this->assign('membership_assign', TRUE);
       $this->set('membershipTypeID', $this->_params['selectMembership']);
     }
 
@@ -2456,7 +2344,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       is_array($membershipParams['onbehalf'])
     ) {
       foreach ($membershipParams['onbehalf'] as $key => $value) {
-        if (strstr($key, 'custom_')) {
+        if (str_contains($key, 'custom_')) {
           $customFieldId = explode('_', $key);
           CRM_Core_BAO_CustomField::formatCustomField(
             $customFieldId[1],
@@ -2471,21 +2359,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
-    if (!empty($membershipParams['selectMembership'])) {
-      // CRM-12233
-      $membershipLineItems = $formLineItems;
-      if ($this->_separateMembershipPayment && $this->isFormSupportsNonMembershipContributions()) {
-        $membershipLineItems = [];
-        foreach ($this->_values['fee'] as $key => $feeValues) {
-          if ($feeValues['name'] == 'membership_amount') {
-            $fieldId = $this->_params['price_' . $key];
-            $membershipLineItems[$this->_priceSetId][$fieldId] = $this->_lineItem[$this->_priceSetId][$fieldId];
-            unset($this->_lineItem[$this->_priceSetId][$fieldId]);
-            break;
-          }
-        }
-      }
+    if ($this->isMembershipSelected()) {
+      // CRM-12233.
       try {
+        $membershipLineItems = [$this->getPriceSetID() => $this->getMainContributionLineItems()];
+        $membershipParams['amount'] = $this->getMainContributionAmount();
         $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $premiumParams, $membershipLineItems);
       }
       catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
@@ -2632,11 +2510,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       CRM_Utils_Date::mysqlToIso($form->_params['receive_date'])
     );
 
-    if (empty($form->_values['amount'])) {
-      // If the amount is not in _values[], set it
-      $form->_values['amount'] = $form->_params['amount'];
-    }
-
     if (isset($paymentParams['contribution_source'])) {
       $paymentParams['source'] = $paymentParams['contribution_source'];
     }
@@ -2713,19 +2586,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         $form->_params['source'] = $paymentParams['contribution_source'];
       }
 
-      // get the price set values for receipt.
-      if ($form->_priceSetId && $form->_lineItem) {
-        $form->_values['lineItem'] = $form->_lineItem;
-        $form->_values['priceSetID'] = $form->_priceSetId;
-      }
-
       $form->_values['contribution_id'] = $contribution->id;
       $form->_values['contribution_page_id'] = $contribution->contribution_page_id;
 
       if (!empty($form->_paymentProcessor)) {
         try {
           $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor);
-          if ($form->_contributeMode == 'notify') {
+          if ($this->getPaymentProcessorObject()->supports('noReturn')) {
             // We want to get rid of this & make it generic - eg. by making payment processing the last thing
             // and always calling it first.
             $form->postProcessHook();
@@ -3026,4 +2893,36 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     return [$membership, $renewalMode, $dates];
   }
 
+  /**
+   * Get the line items for the membership create call.
+   *
+   * This form follows a legacy code path - rather than creating the membership
+   * and then creating the contribution / order with the right line items it
+   * creates the contribution and then the membership & uses some old code in
+   * the membership BAO to create the line items. In order to do this it needs to
+   * separate out the line items into the separate membership create calls.
+   * However, any non-membership lines need to be assigned to one & only one
+   * of these line item splits.
+   *
+   * Where we have separate payments enabled then we should ignore any non-membership
+   * line items as they will have been processed as part of the non-membership
+   * contribution.
+   *
+   * @param int $membershipTypeID
+   * @param int $defaultMembershipTypeID
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getLineItemsForMembershipCreate(int $membershipTypeID, int $defaultMembershipTypeID): array {
+    $lineItemSplit = [];
+    foreach ($this->getLineItems() as $lineItem) {
+      if (empty($lineItem['membership_type_id']) && $this->isSeparateMembershipPayment()) {
+        continue;
+      }
+      $lineItemSplit[$lineItem['membership_type_id'] ?: $defaultMembershipTypeID][$lineItem['price_field_id']] = $lineItem;
+    }
+    return $lineItemSplit[$membershipTypeID];
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php
index 46cf7e28c0..8b5544e590 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/Main.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Membership;
+
 /**
  * This class generates form components for processing a Contribution.
  */
@@ -39,6 +41,22 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   protected $_paymentProcessorID;
   protected $_snippet;
 
+  /**
+   * Variable for legacy paypal express implementation.
+   *
+   * @var string
+   *
+   * @internal - only to be used by legacy paypal express implementation.
+   */
+  public $_expressButtonName;
+
+  /**
+   * Existing memberships the contact has.
+   *
+   * @var array
+   */
+  private $existingMemberships;
+
   /**
    * Get the active UFGroups (profiles) on this form
    * Many forms load one or more UFGroups (profiles).
@@ -70,12 +88,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
   /**
    * Set variables up before form is built.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \CRM_Contribute_Exception_InactiveContributionPageException
    */
   public function preProcess() {
     parent::preProcess();
 
     $this->_paymentProcessors = $this->get('paymentProcessors');
     $this->preProcessPaymentOptions();
+    // If the in-use payment processor is the Dummy processor we assign the name so that a test warning is displayed.
+    $this->assign('dummyTitle', $this->getPaymentProcessorValue('payment_processor_type_id.class') === 'CRM_Dummy' ? $this->getPaymentProcessorValue('payment_processor_type_id.front_end_title') : '');
 
     $this->assignFormVariablesByContributionID();
 
@@ -99,8 +122,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     if (!empty($this->_pcpInfo['id']) && !empty($this->_pcpInfo['intro_text'])) {
       $this->assign('intro_text', $this->_pcpInfo['intro_text']);
     }
-    elseif (!empty($this->_values['intro_text'])) {
-      $this->assign('intro_text', $this->_values['intro_text']);
+    else {
+      $this->assign('intro_text', $this->getContributionPageValue('intro_text'));
     }
 
     $qParams = "reset=1&amp;id={$this->_id}";
@@ -209,7 +232,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $entityId = $memtypeID = NULL;
     if ($this->_priceSetId) {
-      if (($this->isMembershipPriceSet() && !empty($this->_currentMemberships)) || $this->_defaultMemTypeId) {
+      if (($this->isMembershipPriceSet() && !$this->isDefined('CurrentMembership')) || $this->_defaultMemTypeId) {
         $selectedCurrentMemTypes = [];
         foreach ($this->_priceSet['fields'] as $key => $val) {
           foreach ($val['options'] as $keys => $values) {
@@ -225,7 +248,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
               break;
             }
             elseif ($opMemTypeId &&
-              in_array($opMemTypeId, $this->_currentMemberships) &&
+              !empty($this->getExistingMemberships()[$opMemTypeId]) &&
               !in_array($opMemTypeId, $selectedCurrentMemTypes)
             ) {
               CRM_Price_BAO_PriceSet::setDefaultPriceSetField($priceFieldName, $keys, $val['html_type'], $this->_defaults);
@@ -350,7 +373,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
       // build price set form.
       $this->set('priceSetId', $this->_priceSetId);
       if (empty($this->_ccid)) {
-        $this->buildPriceSet($this, $this->getFormContext());
+        $this->buildPriceSet($this);
       }
       if ($this->_values['is_monetary'] &&
         $this->_values['is_recur'] && empty($this->_values['pledge_id'])
@@ -361,7 +384,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     //we allow premium for pledge during pledge creation only.
     if (empty($this->_values['pledge_id']) && empty($this->_ccid)) {
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, TRUE);
+      $this->buildPremiumsBlock(TRUE);
     }
 
     //don't build pledge block when mid is passed
@@ -473,19 +496,18 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    * Build the price set form.
    *
    * @param CRM_Core_Form $form
-   * @param string|null $component
    *
    * @return void
    * @throws \CRM_Core_Exception
    */
-  private function buildPriceSet(&$form, $component = NULL) {
+  private function buildPriceSet($form) {
     $validPriceFieldIds = array_keys($this->getPriceFieldMetaData());
     $form->assign('priceSet', $form->_priceSet);
 
     // @todo - this hook wrangling can be done earlier if we set the form on $this->>order.
     $feeBlock = &$form->_values['fee'];
     // Call the buildAmount hook.
-    CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock);
+    CRM_Utils_Hook::buildAmount($this->getFormContext(), $form, $feeBlock);
 
     // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions
     $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM');
@@ -529,6 +551,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
             ];
           }
 
+          if (!empty($field['options'])) {
+            foreach ($field['options'] as $option) {
+              if (!empty($option['membership_type_id.auto_renew'])) {
+                $extra += [
+                  'onclick' => "return showHideAutoRenew(CRM.$(this).data('membershipTypeId'));",
+                ];
+                $this->assign('membershipFieldID', $fieldID);
+              }
+            }
+          }
+
           CRM_Price_BAO_PriceField::addQuickFormElement($form,
             'price_' . $fieldID,
             $field['id'],
@@ -546,7 +579,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   }
 
   /**
-   * Get the idea of the other amount field if the form is configured to offer it.
+   * Get the ID of the other amount field if the form is configured to offer it.
    *
    * The other amount field is an alternative to the configured radio options,
    * specific to this form.
@@ -566,7 +599,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   }
 
   /**
-   * Get the idea of the other amount field if the form is configured to offer an other amount.
+   * Get the ID of the main amount field if the form is configured to offer an other amount.
    *
    * The other amount field is an alternative to the configured radio options,
    * specific to this form.
@@ -595,19 +628,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    *
    * @throws \CRM_Core_Exception
    */
-  private function buildMembershipBlock() {
+  private function buildMembershipBlock(): ?bool {
     $cid = $this->_membershipContactID;
-    $isTest = (bool) ($this->getAction() & CRM_Core_Action::PREVIEW);
     $separateMembershipPayment = FALSE;
     $this->addOptionalQuickFormElement('auto_renew');
+    $this->addExpectedSmartyVariable('renewal_mode');
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
-
-      $membershipTypeIds = $membershipTypes = $radio = $radioOptAttrs = [];
+      $membershipTypeIds = $membershipTypes = $radio = [];
       // This is always true if this line is reachable - remove along with the upcoming if.
       $membershipPriceset = TRUE;
 
-      $allowAutoRenewMembership = $autoRenewOption = FALSE;
+      $allowAutoRenewMembership = FALSE;
       $autoRenewMembershipTypeOptions = [];
 
       $separateMembershipPayment = $this->_membershipBlock['is_separate_payment'] ?? NULL;
@@ -624,75 +655,38 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
         }
       }
 
+      //because we take first membership record id for renewal
+      $memberships = $this->getExistingMemberships();
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        // @todo - this appears to be unreachable - it seems likely it has been broken for
-        // a while so remove may be an OK alternative to fix
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
         $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
-        // Check if we support auto-renew on this contribution page
-        // FIXME: If any of the payment processors do NOT support recurring you cannot setup an
-        //   auto-renew payment even if that processor is not selected.
-        $allowAutoRenewOpt = TRUE;
-        if (is_array($this->_paymentProcessors)) {
-          foreach ($this->_paymentProcessors as $id => $val) {
-            if ($id && !$val['is_recur']) {
-              $allowAutoRenewOpt = FALSE;
-            }
-          }
-        }
+        $allowAutoRenewOpt = $this->isPageHasPaymentProcessorSupportForRecurring();
         foreach ($membershipTypeIds as $value) {
           $memType = $membershipTypeValues[$value];
           if ($memType['is_active']) {
-
+            $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = $this->getConfiguredAutoRenewOptionForMembershipType($value);
             if ($allowAutoRenewOpt) {
-              $javascriptMethod = ['onclick' => "return showHideAutoRenew( this.value );"];
-              $isAvailableAutoRenew = $this->_membershipBlock['auto_renew'][$value] ?? 1;
-              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = (int) $memType['auto_renew'] * $isAvailableAutoRenew;
               $allowAutoRenewMembership = TRUE;
             }
             else {
               $javascriptMethod = NULL;
-              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = 0;
             }
 
             //add membership type.
             $radio[$memType['id']] = NULL;
-            $radioOptAttrs[$memType['id']] = $javascriptMethod;
             if ($cid) {
               //show current membership, skip pending and cancelled membership records,
-              //because we take first membership record id for renewal
-              $membership = \Civi\Api4\Membership::get(FALSE)
-                ->addSelect('end_date', 'membership_type_id', 'membership_type_id.duration_unit:name')
-                ->addWhere('contact_id', '=', $cid)
-                ->addWhere('membership_type_id', '=', $memType['id'])
-                ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
-                ->addWhere('is_test', '=', (bool) $isTest)
-                ->addOrderBy('end_date', 'DESC')
-                ->execute()
-                ->first();
-
+              $membership = $memberships[$memType['id']] ?? NULL;
               if ($membership) {
                 if ($membership["membership_type_id.duration_unit:name"] === 'lifetime') {
                   unset($radio[$memType['id']]);
-                  unset($radioOptAttrs[$memType['id']]);
                   $this->assign('hasExistingLifetimeMembership', TRUE);
+                  unset($memberships[$memType['id']]);
                   continue;
                 }
-                $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
+                $this->define('Membership', 'CurrentMembership', $membership);
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -711,15 +705,15 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
       $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', TRUE);
+      $this->assign('renewal_mode', !empty($memberships));
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('allowAutoRenewMembership', $allowAutoRenewMembership);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
       //give preference to user submitted auto_renew value.
       $takeUserSubmittedAutoRenew = (!empty($_POST) || $this->isSubmitted());
       $this->assign('takeUserSubmittedAutoRenew', $takeUserSubmittedAutoRenew);
-
+      $autoRenewOption = $this->getAutoRenewOption();
       // Assign autorenew option (0:hide,1:optional,2:required) so we can use it in confirmation etc.
-      $autoRenewOption = CRM_Price_BAO_PriceSet::checkAutoRenewForPriceSet($this->_priceSetId);
       $this->assign('autoRenewOption', $autoRenewOption);
 
       if ((!$this->_values['is_pay_later'] || is_array($this->_paymentProcessors)) && ($allowAutoRenewMembership || $autoRenewOption)) {
@@ -747,7 +741,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $form->assign('is_recur_interval', $this->getContributionPageValue('is_recur_interval'));
     $form->assign('is_recur_installments', $this->getContributionPageValue('is_recur_installments'));
-    $paymentObject = $form->getVar('_paymentObject');
+    $paymentObject = $this->getPaymentProcessorObject();
     if ($paymentObject) {
       $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [
         'is_recur_installments' => !empty($form->_values['is_recur_installments']),
@@ -843,8 +837,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     ) {
 
       // appears to be unreachable - selectMembership never set...
-      $isTest = $self->_action & CRM_Core_Action::PREVIEW;
-      $lifeMember = CRM_Member_BAO_Membership::getAllContactMembership($self->_membershipContactID, $isTest, TRUE);
+      $lifeMember = CRM_Member_BAO_Membership::getAllContactMembership($self->_membershipContactID, $self->isTest(), TRUE);
 
       $membershipOrgDetails = CRM_Member_BAO_MembershipType::getAllMembershipTypes();
       $unallowedOrgs = [];
@@ -1002,7 +995,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
           $errors['_qf_default'] = ts('Please select at least one membership option.');
         }
       }
-
+      // @todo - processAmount is to be deprectated - can we use getTotalAmount or
+      // a function of self->order here?
       CRM_Price_BAO_PriceSet::processAmount($self->_values['fee'],
         $fields, $lineItem
       );
@@ -1161,11 +1155,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
         $amountID = $params['amount'] ?? NULL;
 
         if ($amountID) {
-          // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-          // function to get correct amount level consistently. Remove setting of the amount level in
-          // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-          // to cover all variants.
-          $params['amount_level'] = $formValues[$amountID]['label'] ?? NULL;
           $amount = $formValues[$amountID]['value'] ?? NULL;
         }
       }
@@ -1175,10 +1164,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
   /**
    * Process the form submission.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function postProcess() {
     // we first reset the confirm page so it accepts new values
     $this->controller->resetPage('Confirm');
+    // Update order to the submitted values (in case the back button has been used
+    // and the submitted values have changed.
+    $this->set('lineItem', NULL);
+    $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+    $this->order->recalculateLineItems();
 
     // get the submitted form values.
     $params = $this->controller->exportValues($this->_name);
@@ -1209,8 +1205,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     $params['currencyID'] = CRM_Core_Config::singleton()->defaultCurrency;
 
     if ($this->isQuickConfig()) {
+      // @todo - this is silly cruft - we can likely remove it.
       $priceField = new CRM_Price_DAO_PriceField();
-      $priceField->price_set_id = $params['priceSetId'];
+      $priceField->price_set_id = $this->getPriceSetID();
       $priceField->orderBy('weight');
       $priceField->find();
 
@@ -1222,116 +1219,29 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
             case 'membership_amount':
               $this->_params['selectMembership'] = $params['selectMembership'] = $priceOptions[$selectedPriceOptionID]['membership_type_id'] ?? NULL;
               $this->set('selectMembership', $params['selectMembership']);
-
-            case 'contribution_amount':
-              $params['amount'] = $selectedPriceOptionID;
-              if ($priceField->name == 'contribution_amount' ||
-                  ($priceField->name == 'membership_amount' &&
-                    ($this->_membershipBlock['is_separate_payment'] ?? NULL) == 0)
-              ) {
-                $this->_values['amount'] = $priceOptions[$selectedPriceOptionID]['amount'] ?? NULL;
-              }
-              $this->_values[$selectedPriceOptionID]['value'] = $priceOptions[$selectedPriceOptionID]['amount'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['label'] = $priceOptions[$selectedPriceOptionID]['label'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['amount_id'] = $priceOptions[$selectedPriceOptionID]['id'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['weight'] = $priceOptions[$selectedPriceOptionID]['weight'] ?? NULL;
               break;
 
             case 'other_amount':
+              // Only used now when deciding whether to assign
+              // amount_level to the template in subsequent screens.
               $params['amount_other'] = $selectedPriceOptionID;
               break;
           }
         }
       }
     }
-    $balance = $this->getContributionBalance();
-    if ($balance) {
-      $params['amount'] = $balance;
-    }
-    else {
-      // from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID
-      $params['amount'] = $this->computeAmount($params, $this->_values);
-    }
-
-    $params['separate_amount'] = $params['amount'];
-    // @todo - stepping through the code indicates that amount is always set before this point so it never matters.
-    // Move more of the above into this function...
-    $params['amount'] = $this->getMainContributionAmount($params);
-    //If the membership & contribution is used in contribution page & not separate payment
-    $memPresent = $membershipLabel = $fieldOption = NULL;
-    $proceFieldAmount = 0;
-    if (property_exists($this, '_separateMembershipPayment') && $this->_separateMembershipPayment == 0) {
-      if ($this->isQuickConfig()) {
-        foreach ($this->_priceSet['fields'] as $fieldKey => $fieldVal) {
-          if ($fieldVal['name'] == 'membership_amount' && !empty($params['price_' . $fieldKey])) {
-            $fieldId = $fieldVal['id'];
-            $fieldOption = $params['price_' . $fieldId];
-            $proceFieldAmount += $fieldVal['options'][$this->_submitValues['price_' . $fieldId]]['amount'];
-            $memPresent = TRUE;
-          }
-          else {
-            if (!empty($params['price_' . $fieldKey]) && $memPresent && ($fieldVal['name'] == 'other_amount' || $fieldVal['name'] == 'contribution_amount')) {
-              $fieldId = $fieldVal['id'];
-              if ($fieldVal['name'] == 'other_amount') {
-                $proceFieldAmount += $this->_submitValues['price_' . $fieldId];
-              }
-              elseif ($fieldVal['name'] == 'contribution_amount' && $this->_submitValues['price_' . $fieldId] > 0) {
-                $proceFieldAmount += $fieldVal['options'][$this->_submitValues['price_' . $fieldId]]['amount'];
-              }
-              unset($params['price_' . $fieldId]);
-              break;
-            }
-          }
-        }
-      }
-    }
-
-    if (!isset($params['amount_other'])) {
-      $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params));
-    }
 
-    $priceSetID = $this->getPriceSetID();
+    $params['amount'] = $this->getMainContributionAmount();
+    $this->set('amount_level', $this->order->getAmountLevel());
     if (!empty($this->_ccid)) {
+      // @todo - verify that this is the same as `$this->>getLineItems()` which it should be & consolidate
       $this->set('lineItem', [$this->getPriceSetID() => $this->getExistingContributionLineItems()]);
     }
-    elseif ($priceSetID) {
-      $lineItem = [];
-      if ($this->isQuickConfig()) {
-        foreach ($this->_values['fee'] as $key => & $val) {
-          if ($val['name'] == 'other_amount' && $val['html_type'] == 'Text' && !empty($params['price_' . $key])) {
-            // Clean out any currency symbols.
-            $params['price_' . $key] = CRM_Utils_Rule::cleanMoney($params['price_' . $key]);
-            if ($params['price_' . $key] != 0) {
-              foreach ($val['options'] as $optionKey => & $options) {
-                $options['amount'] = $params['price_' . $key] ?? NULL;
-                break;
-              }
-            }
-            $params['price_' . $key] = 1;
-            break;
-          }
-        }
-      }
-
+    else {
       if ($this->_membershipBlock) {
-        $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetID]);
-      }
-      else {
-        CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetID], $priceSetID);
-      }
-
-      if ($proceFieldAmount) {
-        $lineItem[$priceSetID][$fieldOption]['unit_price'] = $proceFieldAmount;
-        $lineItem[$priceSetID][$fieldOption]['line_total'] = $proceFieldAmount;
-        if (isset($lineItem[$priceSetID][$fieldOption]['tax_amount'])) {
-          $proceFieldAmount += $lineItem[$priceSetID][$fieldOption]['tax_amount'];
-        }
-        if (!$this->_membershipBlock['is_separate_payment']) {
-          //require when separate membership not used
-          $params['amount'] = $proceFieldAmount;
-        }
+        $this->processAmountAndGetAutoRenew($params);
       }
-      $this->set('lineItem', $lineItem);
+      $this->set('lineItem', [$this->getPriceSetID() => $this->getLineItems()]);
     }
 
     if ($params['amount'] != 0 && (($this->_values['is_pay_later'] &&
@@ -1347,13 +1257,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     // Would be nice to someday understand the point of this set.
     $this->set('is_pay_later', $params['is_pay_later']);
-
-    if ($this->_membershipBlock && $this->_membershipBlock['is_separate_payment'] && !empty($params['separate_amount'])) {
-      $this->set('amount', $params['separate_amount']);
-    }
-    else {
-      $this->set('amount', $params['amount']);
-    }
+    $this->set('amount', $this->getMainContributionAmount());
 
     // generate and set an invoiceID for this transaction
     $invoiceID = md5(uniqid(rand(), TRUE));
@@ -1438,14 +1342,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    * Set form variables if contribution ID is found
    */
   public function assignFormVariablesByContributionID(): void {
-    $dummyTitle = 0;
-    foreach ($this->_paymentProcessors as $pp) {
-      if ($pp['class_name'] === 'Payment_Dummy') {
-        $dummyTitle = $pp['name'];
-        break;
-      }
-    }
-    $this->assign('dummyTitle', $dummyTitle);
+    $this->assign('isPaymentOnExistingContribution', (bool) $this->getExistingContributionID());
     $this->assign('pendingAmount', $this->getContributionBalance());
     if (empty($this->getExistingContributionID())) {
       return;
@@ -1457,8 +1354,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $lineItems = $this->getExistingContributionLineItems();
     $this->assign('lineItem', [$this->getPriceSetID() => $lineItems]);
-    $this->assign('is_quick_config', $this->isQuickConfig());
     $this->assign('priceSetID', $this->getPriceSetID());
+    $this->assign('is_quick_config', $this->isQuickConfig());
   }
 
   /**
@@ -1880,4 +1777,109 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     }
   }
 
+  /**
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function getExistingMemberships(): array {
+    if ($this->existingMemberships === NULL) {
+      $availableMembershipTypeIDs = $this->getAvailableMembershipTypeIDs();
+      if (!empty($availableMembershipTypeIDs)) {
+        $this->existingMemberships = (array) Membership::get(FALSE)
+          ->addSelect('*', 'membership_type_id.duration_unit:name')
+          ->addWhere('contact_id', '=', $this->_membershipContactID)
+          ->addWhere('membership_type_id', 'IN', $availableMembershipTypeIDs)
+          ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
+          ->addWhere('is_test', '=', $this->isTest())
+          ->addOrderBy('end_date', 'DESC')
+          ->execute();
+      }
+    }
+    return $this->existingMemberships ?? [];
+  }
+
+  /**
+   * Get the membership type IDs available in the price set.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  private function getAvailableMembershipTypeIDs(): array {
+    $membershipTypeIDs = [];
+    foreach ($this->getMembershipLineItems() as $lineItem) {
+      $membershipTypeIDs[$lineItem['membership_type_id']] = $lineItem['membership_type_id'];
+    }
+    return $membershipTypeIDs;
+  }
+
+  /**
+   * @return int
+   */
+  private function getAutoRenewOption(): int {
+    $autoRenewOption = 0;
+    foreach ($this->getPriceFieldMetaData() as $field) {
+      foreach ($field['options'] as $option) {
+        if ($option['membership_type_id.auto_renew'] === 1) {
+          $autoRenewOption = 1;
+          break 2;
+        }
+        if ($option['membership_type_id.auto_renew'] === 2) {
+          $autoRenewOption = 2;
+        }
+      }
+    }
+    return $autoRenewOption;
+  }
+
+  /**
+   * Get configured auto renew option.
+   *
+   * One of
+   * 0 = never
+   * 1 = optional
+   * 2 - always
+   *
+   * This is based on the membership type but 1 can be moved up or down by membership block configuration.
+   *
+   * @param int $membershipTypeID
+   *
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  private function getConfiguredAutoRenewOptionForMembershipType($membershipTypeID): int {
+    if (!$this->isPageHasPaymentProcessorSupportForRecurring()) {
+      return 0;
+    }
+    if (!$this->isQuickConfig()) {
+      return CRM_Member_BAO_MembershipType::getMembershipType($membershipTypeID)['auto_renew'];
+    }
+    $membershipTypeAutoRenewOption = CRM_Member_BAO_MembershipType::getMembershipType($membershipTypeID)['auto_renew'];
+    if ($membershipTypeAutoRenewOption === 2 || $membershipTypeAutoRenewOption === 0) {
+      // It is not possible to override never or always at the membership block leve.
+      return $membershipTypeAutoRenewOption;
+    }
+    // For quick config it is possible to override the give option membership type setting in the membership block.
+    return $this->_membershipBlock['auto_renew'][$membershipTypeID] ?? $membershipTypeAutoRenewOption;
+  }
+
+  /**
+   * Is there payment processor support for recurring contributions on the the contribution page.
+   *
+   * As our front end js is not clever enough to deal with switching this returns FALSE
+   * if any configured processor will not do recurring.
+   *
+   * @return bool
+   */
+  private function isPageHasPaymentProcessorSupportForRecurring(): bool {
+    if (is_array($this->_paymentProcessors)) {
+      foreach ($this->_paymentProcessors as $id => $val) {
+        if ($id && !$val['is_recur']) {
+          return FALSE;
+        }
+      }
+    }
+    return TRUE;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
index 9c0a93bccf..2a146f154c 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
@@ -36,18 +36,29 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
 
   /**
    * Set variables up before form is built.
+   *
+   * @throws \CRM_Contribute_Exception_InactiveContributionPageException
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
 
     $this->_params = $this->get('params');
-    $this->_lineItem = $this->get('lineItem');
     $this->_useForMember = $this->get('useForMember');
     $this->assign('thankyou_title', CRM_Utils_Array::value('thankyou_title', $this->_values));
     $this->assign('thankyou_text', CRM_Utils_Array::value('thankyou_text', $this->_values));
     $this->assign('thankyou_footer', CRM_Utils_Array::value('thankyou_footer', $this->_values));
     $this->assign('max_reminders', CRM_Utils_Array::value('max_reminders', $this->_values));
     $this->assign('initial_reminder_day', CRM_Utils_Array::value('initial_reminder_day', $this->_values));
+    $this->assignTotalAmounts();
+    // Link (button) for users to create their own Personal Campaign page
+    if ($linkText = CRM_PCP_BAO_PCP::getPcpBlockStatus($this->getContributionPageID(), 'contribute')) {
+      $linkTextUrl = CRM_Utils_System::url('civicrm/contribute/campaign',
+        'action=add&reset=1&pageId=' . $this->getContributionPageID() . '&component=contribute',
+        FALSE, NULL, TRUE
+      );
+    }
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $linkText);
     $this->setTitle(CRM_Utils_Array::value('thankyou_title', $this->_values));
     // Make the contributionPageID available to the template
     $this->assign('contributionPageID', $this->_id);
@@ -58,7 +69,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     if ($this->_params['is_pay_later']) {
       $this->assign('pay_later_receipt', $this->_values['pay_later_receipt']);
     }
-    $this->assign('is_for_organization', CRM_Utils_Array::value('is_for_organization', $this->_params));
+    $this->assign('is_for_organization', $this->_params['is_for_organization'] ?? NULL);
   }
 
   /**
@@ -85,52 +96,34 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     // FIXME: Some of this code is identical to Confirm.php and should be broken out into a shared function
     $this->assignToTemplate();
     $this->_ccid = $this->get('ccid');
-    $productID = $this->get('productID');
     $option = $this->get('option');
     $membershipTypeID = $this->get('membershipTypeID');
     $this->assign('receiptFromEmail', CRM_Utils_Array::value('receipt_from_email', $this->_values));
 
-    if ($productID) {
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE, $productID, $option);
+    if ($this->getProductID()) {
+      $this->buildPremiumsBlock(FALSE, $option);
+    }
+    else {
+      $this->assign('products');
     }
 
     $params = $this->_params;
-    $invoicing = CRM_Invoicing_Utils::isInvoicingEnabled();
-    // Make a copy of line items array to use for display only
-    $tplLineItems = $this->_lineItem;
-    if ($invoicing) {
-      $getTaxDetails = FALSE;
-      foreach ($this->_lineItem as $key => $value) {
-        foreach ($value as $k => $v) {
-          if (isset($v['tax_rate'])) {
-            if ($v['tax_rate'] != '') {
-              $getTaxDetails = TRUE;
-              // Cast to float to display without trailing zero decimals
-              $tplLineItems[$key][$k]['tax_rate'] = (float) $v['tax_rate'];
-            }
-          }
-        }
-      }
-    }
     $this->assign('getTaxDetails', (bool) $this->order->getTotalTaxAmount());
     $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount());
     $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
-
-    if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) {
-      $this->assign('lineItem', $tplLineItems);
-    }
-    else {
+    $this->assign('lineItem', $this->isQuickConfig() ? NULL : [$this->getPriceSetID() => $this->order->getLineItems()]);
+    if (!$this->isQuickConfig()) {
       if (is_array($membershipTypeID)) {
         $membershipTypeID = current($membershipTypeID);
       }
-      $this->assign('is_quick_config', 1);
       $this->_params['is_quick_config'] = 1;
     }
-    $this->assign('priceSetID', $this->_priceSetId);
+    $this->assign('is_quick_config', $this->isQuickConfig());
+    $this->assign('priceSetID', $this->getPriceSetID());
     $this->assign('useForMember', $this->get('useForMember'));
 
     if (!empty($this->_values['honoree_profile_id']) && !empty($params['soft_credit_type_id'])) {
-      $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE);
+      $softCreditTypes = CRM_Core_OptionGroup::values('soft_credit_type', FALSE);
 
       $this->assign('soft_credit_type', $softCreditTypes[$params['soft_credit_type_id']]);
       CRM_Contribute_BAO_ContributionSoft::formatHonoreeProfileFields($this, $params['honor']);
@@ -139,12 +132,15 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']);
       $this->buildCustom($this->_values['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
     }
+    else {
+      $this->assign('honoreeProfileFields');
+    }
 
     $qParams = "reset=1&amp;id={$this->_id}";
     //pcp elements
+    $this->assign('pcpBlock', FALSE);
     if ($this->_pcpId) {
       $qParams .= "&amp;pcpId={$this->_pcpId}";
-      $this->assign('pcpBlock', FALSE);
 
       // display honor roll data only if it's enabled for the PCP page
       if (!empty($this->_pcpInfo['is_honor_roll'])) {
@@ -163,19 +159,17 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->assign('qParams', $qParams);
-
+    $this->assign('membershipBlock', $this->_membershipBlock);
+    $this->assign('membership_trx_id', $this->get('membership_trx_id'));
     if ($membershipTypeID) {
-      $transactionID = $this->get('membership_trx_id');
       $membershipAmount = $this->get('membership_amount');
       $renewalMode = $this->get('renewal_mode');
-      $this->assign('membership_trx_id', $transactionID);
       $this->assign('membership_amount', $membershipAmount);
       $this->assign('renewal_mode', $renewalMode);
 
       $this->buildMembershipBlock(
         $this->_membershipContactID,
-        $membershipTypeID,
-        NULL
+        $membershipTypeID
       );
 
       if (!empty($params['auto_renew'])) {
@@ -184,7 +178,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->_separateMembershipPayment = $this->get('separateMembershipPayment');
-    $this->assign("is_separate_payment", $this->_separateMembershipPayment);
+    $this->assign('is_separate_payment', $this->_separateMembershipPayment);
 
     if (empty($this->_ccid)) {
       $this->buildCustom($this->_values['custom_pre_id'], 'customPre', TRUE);
@@ -208,6 +202,9 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
 
       $this->buildCustom($this->_values['onbehalf_profile_id'], 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
     }
+    else {
+      $this->assign('onbehalfProfile');
+    }
 
     $this->_trxnId = $this->_params['trxn_id'] ?? NULL;
 
@@ -220,7 +217,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     $defaults = [];
     $fields = [];
     foreach ($this->_fields as $name => $dontCare) {
-      if ($name != 'onbehalf' || $name != 'honor') {
+      if ($name !== 'onbehalf' || $name !== 'honor') {
         $fields[$name] = 1;
       }
     }
@@ -269,15 +266,18 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       $subUrl = "eid={$this->_id}&pcomponent=contribute";
       $tellAFriend = TRUE;
     }
+    else {
+      $this->assign('friendText');
+    }
 
     if ($tellAFriend) {
       if ($this->_action & CRM_Core_Action::PREVIEW) {
-        $url = CRM_Utils_System::url("civicrm/friend",
+        $url = CRM_Utils_System::url('civicrm/friend',
           "reset=1&action=preview&{$subUrl}"
         );
       }
       else {
-        $url = CRM_Utils_System::url("civicrm/friend",
+        $url = CRM_Utils_System::url('civicrm/friend',
           "reset=1&{$subUrl}"
         );
       }
@@ -285,6 +285,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->assign('isPendingOutcome', $this->isPendingOutcome($params));
+    $this->assign('paymentProcessorName', $this->getPaymentProcessorValue('frontend_title'));
     $this->freeze();
 
     // can we blow away the session now to prevent hackery
@@ -301,17 +302,15 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
    *   Contact checked for having a current membership for a particular membership.
    * @param int|array $selectedMembershipTypeID
    *   Selected membership id.
-   * @param null $isTest
    *
    * @return bool
    *   Is this a separate membership payment
    *
    * @throws \CRM_Core_Exception
    */
-  private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL, $isTest = NULL) {
+  private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL) {
     $separateMembershipPayment = FALSE;
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
 
       $membershipTypeIds = $membershipTypes = [];
       $membershipPriceset = (!empty($this->_priceSetId) && $this->_useForMember);
@@ -338,19 +337,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       }
 
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
-        $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
         // Check if we support auto-renew on this contribution page
@@ -392,14 +379,16 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
                 ->addWhere('contact_id', '=', $cid)
                 ->addWhere('membership_type_id', '=', $memType['id'])
                 ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
-                ->addWhere('is_test', '=', (bool) $isTest)
+                // @todo - this FALSE is dubious but respects the previous code behaviour.
+                // This code is from a previously shared function & likely not relevant on the
+                // thank you form anyway....
+                ->addWhere('is_test', '=', FALSE)
                 ->addOrderBy('end_date', 'DESC')
                 ->execute()
                 ->first();
 
               if ($membership && $membership['membership_type_id.duration_unit:name'] !== 'lifetime') {
                 $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -414,7 +403,6 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
         }
       }
 
-      $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', FALSE);
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php
index 31b76b29f8..1040711c72 100644
--- a/civicrm/CRM/Contribute/Form/ContributionBase.php
+++ b/civicrm/CRM/Contribute/Form/ContributionBase.php
@@ -15,6 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\PremiumsProduct;
 use Civi\Api4\PriceSet;
 
 /**
@@ -23,6 +24,7 @@ use Civi\Api4\PriceSet;
 class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   use CRM_Financial_Form_FrontEndPaymentFormTrait;
   use CRM_Contribute_Form_ContributeFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the contribution page that we are processing.
@@ -60,8 +62,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    */
   public $_paymentProcessor;
 
-  public $_paymentObject = NULL;
-
   /**
    * Order object, used to calculate amounts, line items etc.
    *
@@ -166,22 +166,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
 
   public $_action;
 
-  /**
-   * Contribution mode.
-   *
-   * In general we are trying to deprecate this parameter but some templates and processors still
-   * require it to denote whether the processor redirects offsite (notify) or not.
-   *
-   * The intent is that this knowledge should not be required and all contributions should
-   * be created in a pending state and updated based on the payment result without needing to be
-   * aware of the processor workings.
-   *
-   * @var string
-   *
-   * @deprecated
-   */
-  public $_contributeMode;
-
   /**
    * Contribution page supports memberships
    * @var bool
@@ -244,6 +228,53 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID());
   }
 
+  /**
+   * Provide support for extensions that are used to being able to retrieve _lineItem
+   *
+   * Note extension should call getPriceSetID() and getLineItems() directly.
+   * They are supported for external use per the api annotation.
+   *
+   * @param string $name
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function __get($name) {
+    if ($name === '_lineItem') {
+      CRM_Core_Error::deprecatedWarning('attempt to access undefined property _lineItem - use externally supported function getLineItems()');
+      return [$this->getPriceSetID() => $this->getLineItems()];
+    }
+    CRM_Core_Error::deprecatedWarning('attempt to access invalid property :' . $name);
+  }
+
+  /**
+   * Provide support for extensions that are used to being able to retrieve _lineItem
+   *
+   * Note extension should call getPriceSetID() and getLineItems() directly.
+   * They are supported for external use per the api annotation.
+   *
+   * @param string $name
+   * @param mixed $value
+   */
+  public function __set($name, $value) {
+    if ($name === '_lineItem') {
+      CRM_Core_Error::deprecatedWarning('attempt to access undefined property _lineItem - use externally supported function setLineItems()');
+      $this->order->setLineItems($value[$this->getPriceSetID()]);
+      return;
+    }
+    CRM_Core_Error::deprecatedWarning('attempt to set invalid property :' . $name);
+  }
+
+  /**
+   * Is the form being submitted in test mode.
+   *
+   * @api this function is supported for external use.
+   *
+   * @return bool
+   */
+  public function isTest(): bool {
+    return (bool) ($this->getAction() & CRM_Core_Action::PREVIEW);
+  }
+
   /**
    * Get the price set for the contribution page.
    *
@@ -253,6 +284,10 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    *
    * Out of caution we still allow `get`, `set` to take precedence.
    *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
    * @return int|null
    * @throws \CRM_Core_Exception
    */
@@ -322,46 +357,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     $this->_emailExists = $this->get('emailExists');
 
     $this->_contactID = $this->_membershipContactID = $this->getContactID();
-    $this->getRenewalMembershipID();
 
     if ($this->getRenewalMembershipID()) {
-      $membership = new CRM_Member_DAO_Membership();
-      $membership->id = $this->getRenewalMembershipID();
-
-      if ($membership->find(TRUE)) {
-        $this->_defaultMemTypeId = $membership->membership_type_id;
-        if ($membership->contact_id != $this->_contactID) {
-          $validMembership = FALSE;
-          $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), NULL, NULL, 'Organization');
-          if (!empty($organizations) && array_key_exists($membership->contact_id, $organizations)) {
-            $this->_membershipContactID = $membership->contact_id;
-            $this->assign('membershipContactID', $this->_membershipContactID);
-            $this->assign('membershipContactName', $organizations[$this->_membershipContactID]['name']);
-            $validMembership = TRUE;
-          }
-          else {
-            $membershipType = new CRM_Member_BAO_MembershipType();
-            $membershipType->id = $membership->membership_type_id;
-            if ($membershipType->find(TRUE)) {
-              // CRM-14051 - membership_type.relationship_type_id is a CTRL-A padded string w one or more ID values.
-              // Convert to comma separated list.
-              $inheritedRelTypes = implode(',', CRM_Utils_Array::explodePadded($membershipType->relationship_type_id));
-              $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), $membershipType->relationship_type_id);
-              if (array_key_exists($membership->contact_id, $permContacts)) {
-                $this->_membershipContactID = $membership->contact_id;
-                $validMembership = TRUE;
-              }
-            }
-          }
-          if (!$validMembership) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
-          }
-        }
-      }
-      else {
-        CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
-      }
-      unset($membership);
+      $this->defineRenewalMembership();
     }
 
     // we do not want to display recently viewed items, so turn off
@@ -382,10 +380,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     // In tests price set id is not always set - it is unclear if this is just
     // poor test set up or it is possible in 'the real world'
     if ($this->getPriceSetID()) {
-      $this->order = new CRM_Financial_BAO_Order();
-      $this->order->setPriceSetID($this->getPriceSetID());
-      $this->order->setIsExcludeExpiredFields(TRUE);
-      $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+      $this->initializeOrder();
     }
     else {
       CRM_Core_Error::deprecatedFunctionWarning('forms require a price set ID');
@@ -489,16 +484,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       $this->_pcpInfo = $pcp['pcpInfo'];
     }
 
-    // Link (button) for users to create their own Personal Campaign page
-    if ($linkText = CRM_PCP_BAO_PCP::getPcpBlockStatus($this->_id, 'contribute')) {
-      $linkTextUrl = CRM_Utils_System::url('civicrm/contribute/campaign',
-        "action=add&reset=1&pageId={$this->_id}&component=contribute",
-        FALSE, NULL, TRUE
-      );
-      $this->assign('linkTextUrl', $linkTextUrl);
-      $this->assign('linkText', $linkText);
-    }
-
     $this->assign('pledgeBlock', !empty($this->_values['pledge_block_id']));
 
     // @todo - move this check to `getMembershipBlock`
@@ -512,8 +497,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     // on every form, rather than being passed from form to form.
     $this->set('amount_block_is_active', $this->isFormSupportsNonMembershipContributions());
 
-    $this->_contributeMode = $this->get('contributeMode');
-
     //assigning is_monetary and is_email_receipt to template
     $this->assign('is_monetary', $this->_values['is_monetary']);
     $this->assign('is_email_receipt', $this->_values['is_email_receipt']);
@@ -549,6 +532,118 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     }
   }
 
+  /**
+   * Set the selected line items.
+   *
+   * This returns all selected line items, even if they will
+   * be split to a secondary contribution.
+   *
+   * @api Supported for external use.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getLineItems(): array {
+    return $this->order->getLineItems();
+  }
+
+  /**
+   * Set the selected line items.
+   *
+   * This returns all selected line items, even if they will
+   * be split to a secondary contribution.
+   *
+   * @api Supported for external use.
+   */
+  public function setLineItems($lineItems): void {
+    $this->order->setLineItems($lineItems);
+    $this->set('_lineItem', $lineItems);
+  }
+
+  /**
+   * Set the selected line items.
+   *
+   * @internal
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getMainContributionLineItems(): array {
+    $membershipLineItems = $this->getSecondaryMembershipContributionLineItems();
+    $allLineItems = $this->getOrder()->getLineItems();
+    if (!$membershipLineItems || $allLineItems === $membershipLineItems) {
+      return $allLineItems;
+    }
+    $mainContributionLineItems = [];
+    foreach ($allLineItems as $index => $lineItem) {
+      if (empty($lineItem['membership_type_id'])) {
+        $mainContributionLineItems[$index] = $lineItem;
+      }
+    }
+    return $mainContributionLineItems;
+  }
+
+  /**
+   * Is the form separate payment AND has the user selected 2 options,
+   * resulting in 2 payments.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function isSeparatePaymentSelected(): bool {
+    return (bool) $this->getSecondaryMembershipContributionLineItems();
+  }
+
+  /**
+   * Set the line items for the secondary membership contribution.
+   *
+   * Return false if the page is not configured for separate contributions,
+   * or if only the membership or the contribution has been selected.
+   *
+   * @internal
+   *
+   * @return array|false
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getSecondaryMembershipContributionLineItems() {
+    if (!$this->isSeparateMembershipPayment()) {
+      return FALSE;
+    }
+    $lineItems = [];
+    foreach ($this->getLineItems() as $index => $lineItem) {
+      if (!empty($lineItem['membership_type_id'])) {
+        $lineItems[$index] = $lineItem;
+      }
+    }
+    if (empty($lineItems) || count($lineItems) === count($this->getLineItems())) {
+      return FALSE;
+    }
+    return $lineItems;
+  }
+
+  /**
+   * Get membership line items.
+   *
+   * Get all line items relating to membership, regardless of primary or secondary membership.
+   *
+   * @internal
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getMembershipLineItems(): array {
+    $lineItems = [];
+    foreach ($this->getLineItems() as $index => $lineItem) {
+      if (!empty($lineItem['membership_type_id'])) {
+        $lineItems[$index] = $lineItem;
+      }
+    }
+    return $lineItems;
+  }
+
   /**
    * Initiate price set such that various non-BAO things are set on the form.
    *
@@ -616,67 +711,34 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    */
   public function assignToTemplate() {
     $this->set('name', $this->assignBillingName($this->_params));
-
-    $this->assign('paymentProcessor', $this->_paymentProcessor);
-    $vars = [
-      'amount',
-      'currencyID',
-      'credit_card_type',
-      'trxn_id',
-      'amount_level',
-    ];
-
-    if (isset($this->_values['is_recur']) && !empty($this->_paymentProcessor['is_recur'])) {
-      $this->assign('is_recur_enabled', 1);
-      $vars = array_merge($vars, [
-        'is_recur',
-        'frequency_interval',
-        'frequency_unit',
-        'installments',
-      ]);
-    }
-
-    if (CRM_Core_Component::isEnabled('CiviPledge') &&
-      !empty($this->_params['is_pledge'])
-    ) {
-      // TODO: Assigned variable appears to be unused
-      $this->assign('pledge_enabled', 1);
-
-      $vars = array_merge($vars, [
-        'is_pledge',
-        'pledge_frequency_interval',
-        'pledge_frequency_unit',
-        'pledge_installments',
-      ]);
-    }
-
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
-    if (isset($this->_params['amount_other']) || isset($this->_params['selectMembership'])) {
-      $this->_params['amount_level'] = '';
-    }
-
-    foreach ($vars as $v) {
-      if (isset($this->_params[$v])) {
-        if ($v == "amount" && $this->_params[$v] === 0) {
-          $this->_params[$v] = CRM_Utils_Money::format($this->_params[$v], NULL, NULL, TRUE);
-        }
-        $this->assign($v, $this->_params[$v]);
-      }
-    }
-
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-      $this->_params,
-      $this->_bltID
-    ));
-
-    if (!empty($this->_params['onbehalf_profile_id']) && !empty($this->_params['onbehalf'])) {
+    $this->assign('currencyID', $this->_params['currencyID'] ?? NULL);
+    $this->assign('credit_card_type', $this->_params['credit_card_type'] ?? NULL);
+    $this->assign('trxn_id', $this->_params['trxn_id'] ?? NULL);
+    $this->assign('amount_level', $this->order->getAmountLevel());
+    $this->assign('amount', $this->getMainContributionAmount() > 0 ? CRM_Utils_Money::format($this->getMainContributionAmount(), NULL, NULL, TRUE) : NULL);
+
+    $isRecurEnabled = isset($this->_values['is_recur']) && !empty($this->_paymentProcessor['is_recur']);
+    $this->assign('is_recur_enabled', $isRecurEnabled);
+    $this->assign('is_recur', $isRecurEnabled ? ($this->_params['is_recur'] ?? NULL) : NULL);
+    $this->assign('frequency_interval', $isRecurEnabled ? ($this->_params['frequency_interval'] ?? NULL) : NULL);
+    $this->assign('frequency_unit', $isRecurEnabled ? ($this->_params['frequency_unit'] ?? NULL) : NULL);
+    $this->assign('installments', $isRecurEnabled ? ($this->_params['installments'] ?? NULL) : NULL);
+    $isPledgeEnabled = CRM_Core_Component::isEnabled('CiviPledge') && !empty($this->_params['is_pledge']);
+    // @todo Assigned pledge_enabled variable appears to be unused
+    $this->assign('pledge_enabled', $isPledgeEnabled);
+    $this->assign('is_pledge', $isPledgeEnabled ? ($this->_params['is_pledge'] ?? NULL) : NULL);
+    $this->assign('pledge_frequency_interval', $isPledgeEnabled ? ($this->_params['pledge_frequency_interval'] ?? NULL) : NULL);
+    $this->assign('pledge_frequency_unit', $isPledgeEnabled ? ($this->_params['pledge_frequency_unit'] ?? NULL) : NULL);
+    $this->assign('pledge_installments', $isPledgeEnabled ? ($this->_params['pledge_installments'] ?? NULL) : NULL);
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
+
+    $isDisplayOnBehalf = !empty($this->_params['onbehalf_profile_id']) && !empty($this->_params['onbehalf']);
+    if ($isDisplayOnBehalf) {
       $this->assign('onBehalfName', $this->_params['organization_name']);
       $locTypeId = array_keys($this->_params['onbehalf_location']['email']);
-      $this->assign('onBehalfEmail', $this->_params['onbehalf_location']['email'][$locTypeId[0]]['email']);
+      $onBehalfEmail = $this->_params['onbehalf_location']['email'][$locTypeId[0]]['email'] ?? NULL;
     }
+    $this->assign('onBehalfEmail', $onBehalfEmail ?? NULL);
     $this->assignPaymentFields();
     $this->assignEmailField();
     $this->assign('emailExists', $this->_emailExists);
@@ -850,6 +912,62 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     $this->assign($name, $fields ?? NULL);
   }
 
+  /**
+   * Build Premium Block im Contribution Pages.
+   *
+   * @param bool $formItems
+   * @param string $selectedOption
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  protected function buildPremiumsBlock(bool $formItems = FALSE, $selectedOption = NULL): void {
+    $selectedProductID = $this->getProductID();
+    $this->add('hidden', 'selectProduct', $selectedProductID, ['id' => 'selectProduct']);
+    $premiumProducts = PremiumsProduct::get()
+      ->addSelect('product_id.*')
+      ->addSelect('product_id')
+      ->addSelect('premiums_id.*')
+      ->addWhere('product_id.is_active', '=', TRUE)
+      ->addWhere('premiums_id.entity_id', '=', $this->getContributionPageID())
+      ->addWhere('premiums_id.entity_table', '=', 'civicrm_contribution_page')
+      ->addOrderBy('weight')
+      ->execute();
+    $products = [];
+    $premium = [];
+    foreach ($premiumProducts as $premiumProduct) {
+      $product = ['options' => NULL];
+      foreach ($premiumProduct as $key => $value) {
+        if (str_starts_with($key, 'product_id.')) {
+          if ($key === 'product_id.options' && $selectedProductID === $product['id'] && $selectedOption) {
+            // In this case we are on the thank you or confirm page so assign
+            // the selected option to the page for display.
+            $product['options'] = ts('Selected Option') . ': ' . $selectedOption;
+          }
+          else {
+            $product[str_replace('product_id.', '', $key)] = $value;
+          }
+        }
+        if (str_starts_with($key, 'premiums_id.')) {
+          $premium[str_replace('premiums_id.', '', $key)] = $value;
+        }
+      }
+      $options = array_filter(explode(',', $product['options']));
+      $productOptions = [];
+      foreach ($options as $option) {
+        $optionValue = trim($option);
+        if ($optionValue) {
+          $productOptions[$optionValue] = $optionValue;
+        }
+      }
+      if (!empty($options)) {
+        $this->addElement('select', 'options_' . $product['id'], NULL, $productOptions);
+      }
+      $products[$premiumProduct['product_id']] = $product;
+    }
+    $this->assign('premiumBlock', $premium);
+    $this->assign('products', $products ?? NULL);
+  }
+
   /**
    * Assign payment field information to the template.
    *
@@ -858,7 +976,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   public function assignPaymentFields() {
     //fix for CRM-3767
     $isMonetary = FALSE;
-    if ($this->_amount > 0.0) {
+    if ($this->order->getTotalAmount() > 0.0) {
       $isMonetary = TRUE;
     }
     elseif (!empty($this->_params['selectMembership'])) {
@@ -870,8 +988,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
 
     // The concept of contributeMode is deprecated.
     // The payment processor object can provide info about the fields it shows.
-    if ($isMonetary && $this->_paymentProcessor['object'] instanceof \CRM_Core_Payment) {
-      $paymentProcessorObject = $this->_paymentProcessor['object'];
+    if ($isMonetary) {
+      $paymentProcessorObject = $this->getPaymentProcessorObject();
       $this->assign('paymentAgreementTitle', $paymentProcessorObject->getText('agreementTitle', []));
       $this->assign('paymentAgreementText', $paymentProcessorObject->getText('agreementText', []));
       $paymentFields = $paymentProcessorObject->getPaymentFormFields();
@@ -902,9 +1020,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
         }
       }
       $this->assign('paymentFieldsetLabel', CRM_Core_Payment_Form::getPaymentLabel($paymentProcessorObject));
-      $this->assign('paymentFields', $paymentFields);
-
     }
+    $this->assign('paymentFields', $paymentFields ?? []);
   }
 
   /**
@@ -1026,30 +1143,33 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       $priceFieldValue = $this->_params["price_{$priceFieldId}"];
     }
     $selectedMembershipTypeID = $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_type_id'] ?? NULL;
-    if (!$selectedMembershipTypeID) {
+    if (!$selectedMembershipTypeID || !$this->getPaymentProcessorValue('is_recur')) {
       return;
     }
 
     // Check if membership the selected membership is automatically opted into auto renew or give user the option.
     // In the 2nd case we check that the user has in deed opted in (auto renew as at June 22 is the field name for the membership auto renew checkbox)
     // Also check that the payment Processor used can support recurring contributions.
-    $membershipTypes = CRM_Price_BAO_PriceSet::getMembershipTypesFromPriceSet($this->getPriceSetID());
-    if (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
-      || (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']) &&
-        !empty($this->_params['auto_renew']))
-        && !empty($this->_paymentProcessor['is_recur'])
+    $membershipTypeDetails = CRM_Member_BAO_MembershipType::getMembershipType($selectedMembershipTypeID);
+    if (
+      // 2 means required
+      $membershipTypeDetails['auto_renew'] === 2
+      // 1 means optional - so they must also select the check box on the form
+      || ($membershipTypeDetails['auto_renew'] === 1 && !empty($this->_params['auto_renew']))
     ) {
       $this->_params['auto_renew'] = TRUE;
       $this->_params['is_recur'] = $this->_values['is_recur'] = 1;
-      $membershipTypeDetails = \Civi\Api4\MembershipType::get(FALSE)
-        ->addWhere('id', '=', $selectedMembershipTypeID)
-        ->execute()
-        ->first();
-      $this->_params['frequency_interval'] = $this->_params['frequency_interval'] ?? $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_num_terms'];
-      $this->_params['frequency_unit'] = $this->_params['frequency_unit'] ?? $membershipTypeDetails['duration_unit'];
+      // If membership_num_terms is not specified on the the price field value (which seems not uncommon
+      // in default config) then the membership type provides the values.
+      // @todo - access the line item value from $this->getLineItems() rather than _values['fee']
+      $membershipNumTerms = $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_num_terms'] ?? 1;
+      $membershipDurationInterval = $membershipTypeDetails['duration_interval'] ?? 1;
+      $this->_params['frequency_interval'] = $this->getSubmittedValue('frequency_interval') ?? ($membershipNumTerms * $membershipDurationInterval);
+      $this->_params['frequency_unit'] = $this->getSubmittedValue('frequency_unit') ?? $membershipTypeDetails['duration_unit'];
     }
-    elseif (!$this->_separateMembershipPayment && (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
-      || in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']))) {
+    // This seems like it repeats the above with less care...
+    elseif (!$this->_separateMembershipPayment && ($membershipTypeDetails['auto_renew'] === 2
+      || $membershipTypeDetails['auto_renew'] === 1)) {
       // otherwise check if we have a separate membership payment setting as that will allow people to independently opt into recurring contributions and memberships
       // If we don't have that and the membership type is auto recur or opt into recur set is_recur to 0.
       $this->_params['is_recur'] = $this->_values['is_recur'] = 0;
@@ -1057,58 +1177,61 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   }
 
   /**
-   * Get the payment processor object for the submission, returning the manual one for offline payments.
+   * Get the amount for the main contribution.
+   *
+   * If there is a separate membership contribution this is the 'other one'. Otherwise there
+   * is only one.
    *
-   * @return CRM_Core_Payment
+   * @return float
+   *
+   * @throws \CRM_Core_Exception
    */
-  protected function getPaymentProcessorObject() {
-    if (!empty($this->_paymentProcessor)) {
-      return $this->_paymentProcessor['object'];
+  protected function getMainContributionAmount(): float {
+    $amount = 0;
+    foreach ($this->getMainContributionLineItems() as $lineItem) {
+      // Line total inclusive should really be always set but this is a safe fall back.
+      $amount += $lineItem['line_total_inclusive'] ?? ($lineItem['line_total'] + $lineItem['tax_amount']);
     }
-    return new CRM_Core_Payment_Manual();
+    return $amount;
   }
 
   /**
-   * Get the amount for the main contribution.
-   *
-   * The goal is to expand this function so that all the argy-bargy of figuring out the amount
-   * winds up here as the main spaghetti shrinks.
+   * Get the amount level description for the main contribution.
    *
    * If there is a separate membership contribution this is the 'other one'. Otherwise there
    * is only one.
    *
-   * @param $params
-   *
-   * @return float
+   * @return string
    *
    * @throws \CRM_Core_Exception
    */
-  protected function getMainContributionAmount($params) {
-    if (!empty($params['selectMembership'])) {
-      if (empty($params['amount']) && !$this->_separateMembershipPayment) {
-        return CRM_Member_BAO_MembershipType::getMembershipType($params['selectMembership'])['minimum_fee'] ?? 0;
+  protected function getMainContributionAmountLevel(): string {
+    $amountLevel = [];
+    if ($this->getSecondaryMembershipContributionLineItems()) {
+      // This is really only needed transitionally because the
+      // test ConfirmTest::testSeparatePaymentConfirm has some set up configuration
+      // issues that will take a bit longer to work through (the labels
+      // should be Contribution Amount or Other Amount but in that test set up they are not.
+      return '';
+    }
+    foreach ($this->getMainContributionLineItems() as $lineItem) {
+      if ($lineItem['label'] !== ts('Contribution Amount') && $lineItem['label'] !== ts('Other Amount')) {
+        $amountLevel[] = $lineItem['label'] . ' - ' . (float) $lineItem['qty'];
       }
     }
-    return $params['amount'] ?? 0;
+    return empty($amountLevel) ? '' : CRM_Utils_Array::implodePadded($amountLevel);
   }
 
   /**
    * Wrapper for processAmount that also sets autorenew.
    *
-   * @param $fields
-   *   This is the output of the function CRM_Price_BAO_PriceSet::getSetDetail($priceSetID, FALSE, FALSE);
-   *   And, it would make sense to introduce caching into that function and call it from here rather than
-   *   require the $fields array which is passed from pillar to post around the form in order to pass it in here.
    * @param array $params
    *   Params reflecting form input e.g with fields 'price_5' => 7, 'price_8' => array(7, 8)
-   * @param $lineItems
-   *   Line item array to be altered.
    */
-  public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems) {
-    CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $this->getPriceSetID());
+  public function processAmountAndGetAutoRenew(&$params) {
     $autoRenew = [];
     $autoRenew[0] = $autoRenew[1] = $autoRenew[2] = 0;
-    foreach ($lineItems as $lineItem) {
+    foreach ($this->getLineItems() as $lineItem) {
       if (!empty($lineItem['auto_renew']) &&
         is_numeric($lineItem['auto_renew'])
       ) {
@@ -1243,6 +1366,15 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return $this->_ccid ?: CRM_Utils_Request::retrieve('ccid', 'Positive', $this);
   }
 
+  /**
+   * @return int|bool
+   */
+  protected function getProductID() {
+    $productID = $this->getSubmittedValue('selectProduct') ? (int) $this->getSubmittedValue('selectProduct') : FALSE;
+    $this->set('productID', $productID);
+    return $productID;
+  }
+
   /**
    * Get the submitted value, accessing it from whatever form in the flow it is
    * submitted on.
@@ -1329,4 +1461,107 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return NULL;
   }
 
+  protected function getOrder(): CRM_Financial_BAO_Order {
+    if (!$this->order) {
+      $this->initializeOrder();
+    }
+    return $this->order;
+  }
+
+  protected function initializeOrder(): void {
+    $this->order = new CRM_Financial_BAO_Order();
+    $this->order->setPriceSetID($this->getPriceSetID());
+    $this->order->setIsExcludeExpiredFields(TRUE);
+    if ($this->get('lineItem')) {
+      $this->order->setLineItems($this->get('lineItem')[$this->getPriceSetID()]);
+    }
+    if ($this->getExistingContributionID()) {
+      $this->order->setTemplateContributionID($this->getExistingContributionID());
+    }
+    $this->order->setForm($this);
+    foreach ($this->getPriceFieldMetaData() as $priceField) {
+      if ($priceField['html_type'] === 'Text') {
+        $this->submittableMoneyFields[] = 'price_' . $priceField['id'];
+      }
+    }
+    $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+  }
+
+  protected function defineRenewalMembership(): void {
+    $membership = new CRM_Member_DAO_Membership();
+    $membership->id = $this->getRenewalMembershipID();
+
+    if ($membership->find(TRUE)) {
+      $this->_defaultMemTypeId = $membership->membership_type_id;
+      if ($membership->contact_id != $this->_contactID) {
+        $validMembership = FALSE;
+        $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), NULL, NULL, 'Organization');
+        if (!empty($organizations) && array_key_exists($membership->contact_id, $organizations)) {
+          $this->_membershipContactID = $membership->contact_id;
+          $this->assign('membershipContactID', $this->_membershipContactID);
+          $this->assign('membershipContactName', $organizations[$this->_membershipContactID]['name']);
+          $validMembership = TRUE;
+        }
+        else {
+          $membershipType = new CRM_Member_BAO_MembershipType();
+          $membershipType->id = $membership->membership_type_id;
+          if ($membershipType->find(TRUE)) {
+            // CRM-14051 - membership_type.relationship_type_id is a CTRL-A padded string w one or more ID values.
+            // Convert to comma separated list.
+            $inheritedRelTypes = implode(',', CRM_Utils_Array::explodePadded($membershipType->relationship_type_id));
+            $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), $membershipType->relationship_type_id);
+            if (array_key_exists($membership->contact_id, $permContacts)) {
+              $this->_membershipContactID = $membership->contact_id;
+              $validMembership = TRUE;
+            }
+          }
+        }
+        if (!$validMembership) {
+          CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
+        }
+      }
+    }
+    else {
+      CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
+    }
+  }
+
+  /**
+   * Assign the total amounts for display on Confirm and ThankYou pages.
+   *
+   * These values are used in the separate payments section.
+   *
+   * @return void
+   * @throws \CRM_Core_Exception
+   */
+  protected function assignTotalAmounts(): void {
+    // orderTotal includes both payments, if separate.
+    $orderTotal = $this->getOrder() ? $this->order->getTotalAmount() : 0;
+    $membershipTotalAmount = $this->getOrder() ? $this->order->getMembershipTotalAmount() : 0;
+    $this->assign('orderTotal', $orderTotal);
+    $this->assign('membershipTotalAmount', $membershipTotalAmount);
+    $this->assign('nonMembershipTotalAmount', $orderTotal - $membershipTotalAmount);
+  }
+
+  /**
+   * Get the currency for the form.
+   *
+   * Rather historic - might have unneeded stuff
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    $currency = $this->_values['currency'] ?? NULL;
+    // For event forms, currency is in a different spot
+    if (empty($currency)) {
+      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+    }
+    if (empty($currency)) {
+      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    }
+    // @todo If empty there is a problem - we should probably put in a deprecation notice
+    // to warn if that seems to be happening.
+    return (string) $currency;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/ContributionCharts.php b/civicrm/CRM/Contribute/Form/ContributionCharts.php
index 666546e0ca..892b9006f4 100644
--- a/civicrm/CRM/Contribute/Form/ContributionCharts.php
+++ b/civicrm/CRM/Contribute/Form/ContributionCharts.php
@@ -172,13 +172,15 @@ class CRM_Contribute_Form_ContributionCharts extends CRM_Core_Form {
           $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0";
         }
         elseif ($chartKey == 'by_year') {
+          $year = substr($index, 0, 4);
+          $year = is_numeric($year) ? (int) $year : date('Y');
           if (!empty($config->fiscalYearStart) && ($config->fiscalYearStart['M'] != 1 || $config->fiscalYearStart['d'] != 1)) {
-            $startDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], substr($index, 0, 4)));
-            $endDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], (substr($index, 0, 4)) + 1));
+            $startDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], $year));
+            $endDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], $year + 1));
           }
           else {
-            $startDate = CRM_Utils_Date::format(['Y' => substr($index, 0, 4)]);
-            $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, substr($index, 0, 4)));
+            $startDate = CRM_Utils_Date::format(['Y' => $year]);
+            $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, $year));
           }
           $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0";
         }
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage.php b/civicrm/CRM/Contribute/Form/ContributionPage.php
index 3b8f5a1d6f..104e2801de 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage.php
@@ -14,6 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
+use Civi\Api4\MembershipBlock;
 
 /**
  * Contribution Page form.
@@ -413,6 +414,18 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form {
     return $this->_id ? (int) $this->_id : NULL;
   }
 
+  /**
+   * Get the membership Block ID, if any, attached to the contribution page.
+   *
+   * @return int|null
+   */
+  public function getMembershipBlockID(): ?int {
+    return MembershipBlock::get(FALSE)
+      ->addWhere('entity_table', '=', 'civicrm_contribution_page')
+      ->addWhere('entity_id', '=', $this->getContributionPageID())
+      ->addWhere('is_active', '=', TRUE)->execute()->first()['id'] ?? NULL;
+  }
+
   /**
    * Get the price set ID for the contribution page.
    *
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
index ca0a6f9b4a..27dbb75895 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
@@ -187,23 +187,7 @@ class CRM_Contribute_Form_ContributionPage_AddProduct extends CRM_Contribute_For
     $this->addRule('weight', ts('Please enter integer value for weight'), 'integer');
     $session->pushUserContext(CRM_Utils_System::url($urlParams, 'action=update&reset=1&id=' . $this->_id));
 
-    if ($this->_single) {
-      $this->addButtons([
-        [
-          'type' => 'next',
-          'name' => ts('Save'),
-          'spacing' => '&nbsp;&nbsp;&nbsp;&nbsp;',
-          'isDefault' => TRUE,
-        ],
-        [
-          'type' => 'cancel',
-          'name' => ts('Cancel'),
-        ],
-      ]);
-    }
-    else {
-      parent::buildQuickForm();
-    }
+    parent::buildQuickForm();
   }
 
   /**
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
index 03df84064a..69667cabcb 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
@@ -483,10 +483,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
         $val = $defaultVal;
       }
 
-      if (in_array($field, [
-        'min_amount',
-        'max_amount',
-      ])) {
+      if (in_array($field, ['min_amount', 'max_amount'])) {
         $val = CRM_Utils_Rule::cleanMoney($val);
       }
 
@@ -546,10 +543,12 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
     $contributionPageID = $contributionPage->id;
 
     // prepare for data cleanup.
-    $deleteAmountBlk = $deletePledgeBlk = $deletePriceSet = FALSE;
-    if ($this->_priceSetID) {
-      $deletePriceSet = TRUE;
-    }
+    $deleteAmountBlk = $deletePledgeBlk = FALSE;
+    // We delete the link to the price set (the price set entity record) when
+    // one exists and there is neither a contribution or membership section enabled.
+    // This amount form can set & unset the contribution section but must check the database
+    // for the membership section (membership block).
+    $deletePriceSet = $this->_priceSetID && !$this->getSubmittedValue('amount_block_is_active') && !$this->getMembershipBlockID();
     if ($this->_pledgeBlockID) {
       $deletePledgeBlk = TRUE;
     }
@@ -561,9 +560,9 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
 
       if (!empty($params['amount_block_is_active'])) {
         // handle price set.
+        $deletePriceSet = FALSE;
         if ($priceSetID) {
           // add/update price set.
-          $deletePriceSet = FALSE;
           if (!empty($params['price_field_id']) || !empty($params['price_field_other'])) {
             $deleteAmountBlk = TRUE;
           }
@@ -571,8 +570,6 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
           CRM_Price_BAO_PriceSet::addTo('civicrm_contribution_page', $contributionPageID, $priceSetID);
         }
         else {
-
-          $deletePriceSet = FALSE;
           // process contribution amount block
           $deleteAmountBlk = FALSE;
 
@@ -798,7 +795,6 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
           }
           else {
             $deleteAmountBlk = TRUE;
-            $deletePriceSet = TRUE;
           }
         }
       }
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
index 258c4e1cba..53cde454f2 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
@@ -68,20 +68,6 @@ class CRM_Contribute_Form_ContributionPage_Premium extends CRM_Contribute_Form_C
     $this->add('text', 'premiums_nothankyou_label', ts('No Thank-you Label'), $attributes['premiums_nothankyou_label']);
     $positions = [1 => ts('Before Premiums'), 2 => ts('After Premiums')];
     $this->add('select', 'premiums_nothankyou_position', ts('No Thank-you Option'), $positions);
-    $showForm = TRUE;
-
-    if ($this->_single) {
-      if ($this->_id) {
-        $daoPremium = new CRM_Contribute_DAO_Premium();
-        $daoPremium->entity_id = $this->_id;
-        $daoPremium->entity_table = 'civicrm_contribution_page';
-        $daoPremium->premiums_active = 1;
-        if ($daoPremium->find(TRUE)) {
-          $showForm = FALSE;
-        }
-      }
-    }
-    $this->assign('showForm', $showForm);
 
     parent::buildQuickForm();
     $this->addFormRule(['CRM_Contribute_Form_ContributionPage_Premium', 'formRule'], $this);
diff --git a/civicrm/CRM/Contribute/Form/ContributionRecur.php b/civicrm/CRM/Contribute/Form/ContributionRecur.php
index 7402e94cad..09fb3fd3c0 100644
--- a/civicrm/CRM/Contribute/Form/ContributionRecur.php
+++ b/civicrm/CRM/Contribute/Form/ContributionRecur.php
@@ -83,6 +83,14 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form {
    */
   protected $selfService;
 
+  /**
+   * Used by `CRM_Contribute_Form_UpdateSubscription`
+   *
+   * @var CRM_Core_DAO
+   * @deprecated This is being set temporarily - we should eventually just use the getter fn.
+   */
+  protected $_subscriptionDetails = NULL;
+
   /**
    * Explicitly declare the entity api name.
    */
diff --git a/civicrm/CRM/Contribute/Form/ContributionView.php b/civicrm/CRM/Contribute/Form/ContributionView.php
index d68c4d3087..5edd85bb46 100644
--- a/civicrm/CRM/Contribute/Form/ContributionView.php
+++ b/civicrm/CRM/Contribute/Form/ContributionView.php
@@ -30,6 +30,8 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
    */
   public function preProcess() {
     $id = $this->getContributionID();
+    $this->assign('taxTerm', Civi::settings()->get('tax_term'));
+    $this->assign('getTaxDetails', \Civi::settings()->get('invoicing'));
 
     // Check permission for action.
     $actionMapping = [
diff --git a/civicrm/CRM/Contribute/Form/ManagePremiums.php b/civicrm/CRM/Contribute/Form/ManagePremiums.php
index 247c3df103..85e25503d0 100644
--- a/civicrm/CRM/Contribute/Form/ManagePremiums.php
+++ b/civicrm/CRM/Contribute/Form/ManagePremiums.php
@@ -264,7 +264,7 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form {
       catch (CRM_Core_Exception $e) {
         $message = ts("This Premium is linked to an <a href='%1'>Online Contribution page</a>. Please remove it before deleting this Premium.", [1 => CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1')]);
         CRM_Core_Session::setStatus($message, ts('Cannot delete Premium'), 'error');
-        CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1&action=browse'));
+        CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1'));
         return;
       }
       CRM_Core_Session::setStatus(
diff --git a/civicrm/CRM/Contribute/Form/Search.php b/civicrm/CRM/Contribute/Form/Search.php
index 8997b4208e..f1401dfc8e 100644
--- a/civicrm/CRM/Contribute/Form/Search.php
+++ b/civicrm/CRM/Contribute/Form/Search.php
@@ -259,10 +259,7 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search {
       $this->_formValues['is_template'] = 0;
     }
 
-    foreach ([
-      'contribution_amount_low',
-      'contribution_amount_high',
-    ] as $f) {
+    foreach (['contribution_amount_low', 'contribution_amount_high'] as $f) {
       if (isset($this->_formValues[$f])) {
         // @todo - stop changing formValues - respect submitted form values, change a working array.
         $this->_formValues[$f] = CRM_Utils_Rule::cleanMoney($this->_formValues[$f]);
diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php
index f8b885edcb..bf148d7e08 100644
--- a/civicrm/CRM/Contribute/Form/Task/Invoice.php
+++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php
@@ -282,16 +282,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       $amountDue = ($input['amount'] - $amountPaid);
 
       // retrieving the subtotal and sum of same tax_rate
-      $dataArray = [];
       $subTotal = 0;
       $lineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionID);
       foreach ($lineItem as $taxRate) {
-        if (isset($dataArray[(string) $taxRate['tax_rate']])) {
-          $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + ($taxRate['tax_amount'] ?? 0);
-        }
-        else {
-          $dataArray[(string) $taxRate['tax_rate']] = $taxRate['tax_amount'] ?? NULL;
-        }
         $subTotal += $taxRate['subTotal'] ?? 0;
       }
 
@@ -385,8 +378,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'notes' => $invoiceNotes,
         // @todo not used in shipped template from 5.53
         'lineItem' => $lineItem,
-        // @todo not used in shipped template from 5.53
-        'dataArray' => $dataArray,
         // @todo not used in shipped template from 5.52
         'refundedStatusId' => $refundedStatusId,
         // @todo not used in shipped template from 5.52
@@ -436,6 +427,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'tplParams' => $tplParams,
         'PDFFilename' => $pdfFileName,
         'tokenContext' => ['contributionId' => $contribution->id, 'contactId' => $contribution->contact_id],
+        'modelProps' => [
+          'userEnteredText' => $params['email_comment'] ?? NULL,
+        ],
       ];
 
       // from email address
@@ -504,10 +498,10 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         $fileName = self::putFile($html, $pdfFileName, $pdfFormat);
         self::addActivities($subject, $contribution->contact_id, $fileName, $params, $contribution->id);
       }
-      elseif ($component == 'event') {
+      elseif ($component === 'event') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
+        $sendTemplateParams['tplParams'] = $tplParams;
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_confirm'] ?? NULL;
diff --git a/civicrm/CRM/Contribute/Form/Task/PDF.php b/civicrm/CRM/Contribute/Form/Task/PDF.php
index df39acc994..b48c98da10 100644
--- a/civicrm/CRM/Contribute/Form/Task/PDF.php
+++ b/civicrm/CRM/Contribute/Form/Task/PDF.php
@@ -95,7 +95,7 @@ AND    {$this->_componentClause}";
     $this->add('checkbox', 'receipt_update', ts('Update receipt dates for these contributions'), FALSE);
     $this->add('checkbox', 'override_privacy', ts('Override privacy setting? (Do not email / Do not mail)'), FALSE);
 
-    $this->add('select', 'from_email_address', ts('From Email'), $this->_fromEmails, FALSE);
+    $this->add('select', 'from_email_address', ts('From Email'), $this->getFromEmails(), FALSE);
 
     $this->addButtons([
       [
@@ -110,6 +110,15 @@ AND    {$this->_componentClause}";
     ]);
   }
 
+  /**
+   * Get an array of email IDS from which the back-office user may select the from field.
+   *
+   * @return array
+   */
+  public function getFromEmails(): array {
+    return CRM_Core_BAO_Email::getFromEmail();
+  }
+
   /**
    * Set default values.
    */
diff --git a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
index 1718cca1a7..9a9f2b063f 100644
--- a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
+++ b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
@@ -80,7 +80,7 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task {
     $this->assign('suppressForm', FALSE);
 
     // Contribute PDF tasks allow you to email as well, so we need to add email address to those forms
-    $this->add('select', 'from_email_address', ts('From Email Address'), $this->_fromEmails, TRUE);
+    $this->add('select', 'from_email_address', ts('From Email Address'), $this->getFromEmails(), TRUE);
     $this->addPDFElementsToForm();
 
     // specific need for contributions
diff --git a/civicrm/CRM/Contribute/Form/UpdateBilling.php b/civicrm/CRM/Contribute/Form/UpdateBilling.php
index b7e60559b0..97401469e0 100644
--- a/civicrm/CRM/Contribute/Form/UpdateBilling.php
+++ b/civicrm/CRM/Contribute/Form/UpdateBilling.php
@@ -21,8 +21,6 @@
 class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_ContributionRecur {
   protected $_mode = NULL;
 
-  protected $_subscriptionDetails = NULL;
-
   public $_bltID = NULL;
 
   /**
diff --git a/civicrm/CRM/Contribute/Form/UpdateSubscription.php b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
index 5ef8c01903..e68c618189 100644
--- a/civicrm/CRM/Contribute/Form/UpdateSubscription.php
+++ b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
@@ -25,8 +25,6 @@ use Civi\Payment\Exception\PaymentProcessorException;
  */
 class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_ContributionRecur {
 
-  protected $_subscriptionDetails = NULL;
-
   public $_paymentProcessor = NULL;
 
   public $_paymentProcessorObj = NULL;
@@ -45,6 +43,13 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
    */
   public $_contactID;
 
+  /**
+   * The contributor email
+   *
+   * @var string
+   */
+  protected $_donorEmail = '';
+
   /**
    * Pre-processing for the form.
    *
@@ -114,7 +119,8 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
     $this->assign('editableScheduleFields', array_diff($this->editableScheduleFields, $alreadyHardCodedFields));
 
     if ($this->_subscriptionDetails->contact_id) {
-      [$this->_donorDisplayName, $this->_donorEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_subscriptionDetails->contact_id);
+      $contactDetails = CRM_Contact_BAO_Contact::getContactDetails($this->_subscriptionDetails->contact_id);
+      $this->_donorEmail = $contactDetails[1];
     }
 
     $this->setTitle(ts('Update Recurring Contribution'));
diff --git a/civicrm/CRM/Contribute/Page/DashBoard.php b/civicrm/CRM/Contribute/Page/DashBoard.php
index aa8cdbbc41..fbb5c253b0 100644
--- a/civicrm/CRM/Contribute/Page/DashBoard.php
+++ b/civicrm/CRM/Contribute/Page/DashBoard.php
@@ -35,11 +35,7 @@ class CRM_Contribute_Page_DashBoard extends CRM_Core_Page {
 
     //get contribution dates.
     $dates = CRM_Contribute_BAO_Contribution::getContributionDates();
-    foreach ([
-      'now',
-      'yearDate',
-      'monthDate',
-    ] as $date) {
+    foreach (['now', 'yearDate', 'monthDate'] as $date) {
       $$date = $dates[$date];
     }
     // fiscal years end date
diff --git a/civicrm/CRM/Contribute/Page/ManagePremiums.php b/civicrm/CRM/Contribute/Page/ManagePremiums.php
index 0c08a37687..0fa88c979e 100644
--- a/civicrm/CRM/Contribute/Page/ManagePremiums.php
+++ b/civicrm/CRM/Contribute/Page/ManagePremiums.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Product;
+
 /**
  * Page for displaying list of Premiums.
  */
@@ -27,7 +29,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    *
    * @var array
    */
-  public static $_links = NULL;
+  public static $_links;
 
   /**
    * Get BAO Name.
@@ -35,7 +37,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   Classname of BAO.
    */
-  public function getBAOName() {
+  public function getBAOName(): string {
     return 'CRM_Contribute_BAO_Product';
   }
 
@@ -45,19 +47,19 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return array
    *   (reference) of action links
    */
-  public function &links() {
+  public function &links(): array {
     if (!(self::$_links)) {
       self::$_links = [
         CRM_Core_Action::UPDATE => [
           'name' => ts('Edit'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=update&id=%%id%%&reset=1',
           'title' => ts('Edit Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE),
         ],
         CRM_Core_Action::PREVIEW => [
           'name' => ts('Preview'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=preview&id=%%id%%',
           'title' => ts('Preview Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW),
@@ -76,7 +78,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
         ],
         CRM_Core_Action::DELETE => [
           'name' => ts('Delete'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=delete&id=%%id%%',
           'title' => ts('Delete Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE),
@@ -92,8 +94,10 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * This method is called after the page is created. It checks for the
    * type of action and executes that action.
    * Finally it calls the parent's run method.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function run() {
+  public function run(): void {
     $id = $this->getIdAndAction();
 
     // what action to take ?
@@ -104,45 +108,42 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
     $this->browse();
 
     // parent run
-    return CRM_Core_Page::run();
+    CRM_Core_Page::run();
   }
 
   /**
    * Browse all custom data groups.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function browse() {
-    // get all custom groups sorted by weight
-    $premiums = [];
-    $dao = new CRM_Contribute_DAO_Product();
-    $dao->orderBy('name');
-    $dao->find();
-
-    while ($dao->fetch()) {
-      $premiums[$dao->id] = [];
-      CRM_Core_DAO::storeValues($dao, $premiums[$dao->id]);
-      // form all action links
+  public function browse(): void {
+    // We could probably use checkPermissions here but historically didn't
+    // so have set it to FALSE to be safe while converting to api use.
+    $premiums = Product::get(FALSE)->addOrderBy('name')
+      ->addSelect('*', 'financial_type_id:name')
+      ->execute();
+
+    foreach ($premiums as $index => $premium) {
       $action = array_sum(array_keys($this->links()));
 
-      if ($dao->is_active) {
+      if ($premium['is_active']) {
         $action -= CRM_Core_Action::ENABLE;
       }
       else {
         $action -= CRM_Core_Action::DISABLE;
       }
 
-      $premiums[$dao->id]['action'] = CRM_Core_Action::formLink($this->links(),
+      $premiums[$index]['action'] = CRM_Core_Action::formLink($this->links(),
         $action,
-        ['id' => $dao->id],
+        ['id' => $premium['id']],
         ts('more'),
         FALSE,
         'premium.manage.row',
         'Premium',
-        $dao->id
+        $premium['id']
       );
-      // Financial Type
-      if (!empty($dao->financial_type_id)) {
-        $premiums[$dao->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Product', 'financial_type_id', $dao->financial_type_id);
-      }
+      $premiums[$index]['financial_type'] = $premium['financial_type_id:name'];
+      $premiums[$index]['class'] = '';
     }
     $this->assign('rows', $premiums);
   }
@@ -153,7 +154,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   Classname of edit form.
    */
-  public function editForm() {
+  public function editForm(): string {
     return 'CRM_Contribute_Form_ManagePremiums';
   }
 
@@ -163,7 +164,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   name of this page.
    */
-  public function editName() {
+  public function editName(): string {
     return 'Manage Premiums';
   }
 
@@ -175,7 +176,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   user context.
    */
-  public function userContext($mode = NULL) {
+  public function userContext($mode = NULL): string {
     return 'civicrm/admin/contribute/managePremiums';
   }
 
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
index 4c5bdc364f..d2610b6a4f 100644
--- a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
+++ b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
@@ -4,6 +4,7 @@ use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
 use Civi\Api4\WorkflowMessage;
+use Civi\Test;
 use Civi\WorkflowMessage\GenericWorkflowMessage;
 use Civi\WorkflowMessage\WorkflowMessageExample;
 
@@ -19,20 +20,25 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
    * Get the examples this class is able to deliver.
    */
   public function getExamples(): iterable {
-    $workflows = ['contribution_online_receipt', 'contribution_offline_receipt', 'contribution_invoice_receipt'];
+    $workflows = ['contribution_online_receipt', 'contribution_offline_receipt', 'contribution_invoice_receipt', 'payment_or_refund_notification'];
+    $defaultCurrency = \Civi::settings()->get('defaultCurrency');
+    $currencies = [$defaultCurrency => $defaultCurrency, 'EUR' => 'EUR', 'CAD' => 'CAD'];
     foreach ($workflows as $workflow) {
+      foreach ($currencies as $currency) {
+        yield [
+          'name' => 'workflow/' . $workflow . '/basic_' . $currency,
+          'title' => ts('Completed Contribution') . ' : ' . $currency,
+          'tags' => $workflow === 'contribution_offline_receipt' ? ['phpunit', 'preview'] : ['preview'],
+          'workflow' => $workflow,
+        ];
+      }
       yield [
-        'name' => 'workflow/' . $workflow . '/basic_eur',
-        'title' => ts('Completed Contribution') . ' : ' . 'EUR',
-        'tags' => $workflow === 'contribution_offline_receipt' ? ['phpunit', 'preview'] : ['preview'],
-        'workflow' => $workflow,
-      ];
-      yield [
-        'name' => 'workflow/' . $workflow . '/' . 'basic_cad',
-        'title' => ts('Completed Contribution') . ' : ' . 'CAD',
+        'name' => 'workflow/' . $workflow . '/' . 'partially paid' . $currency,
+        'title' => ts('Partially Paid Contribution') . ' : ' . $currency,
         'tags' => ['preview'],
         'workflow' => $workflow,
-        'contribution_params' => ['currency' => 'CAD'],
+        'is_show_line_items' => TRUE,
+        'contribution_params' => ['contribution_status_id' => \CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Partially paid')],
       ];
       $priceSet = $this->getNonQuickConfigPriceSet();
       if ($priceSet) {
@@ -111,14 +117,28 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
    * @throws \Civi\API\Exception\UnauthorizedException
    */
   private function addExampleData(GenericWorkflowMessage $messageTemplate, $example): void {
-    $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb'));
-    $contribution = \Civi\Test::example('entity/Contribution/Euro5990/completed');
+    $messageTemplate->setContact(Test::example('entity/Contact/Barb'));
+    $contribution = Test::example('entity/Contribution/Euro5990/completed');
+    $example['currency'] = $example['currency'] ?? \Civi::settings()->get('defaultCurrency');
     if (isset($example['contribution_params'])) {
       $contribution = array_merge($contribution, $example['contribution_params']);
     }
     $contribution['contribution_status_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
     $contribution['contribution_status_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
-
+    if ($contribution['contribution_status_id:name'] === 'Partially paid') {
+      $contribution['paid_amount'] = round($contribution['total_amount'] / 2, 2);
+    }
+    elseif ($contribution['contribution_status_id:name'] === 'Pending' || $contribution['contribution_status_id:name'] === 'Refunded') {
+      $contribution['paid_amount'] = 0;
+    }
+    else {
+      $contribution['paid_amount'] = $contribution['total_amount'];
+    }
+    $contribution['balance_amount'] = $contribution['total_amount'] - $contribution['paid_amount'];
+    if ($contribution['contribution_status_id:name'] === 'Refunded') {
+      $contribution['balance_amount'] = 0;
+    }
+    $contribution['net_amount'] = $contribution['total_amount'] - $contribution['fee_amount'];
     $mockOrder = new CRM_Financial_BAO_Order();
     $mockOrder->setTemplateContributionID(50);
 
@@ -152,6 +172,19 @@ United States';
     $messageTemplate->setContribution($contribution);
     $messageTemplate->setOrder($mockOrder);
     $messageTemplate->setContribution($contribution);
+    $financialTrxn = [
+      'trxn_date' => date('Y-m-d H:i:s'),
+      'total_amount' => $contribution['contribution_status_id:name'] === 'Refunded' ? -$contribution['total_amount'] : $contribution['paid_amount'],
+      'payment_instrument_id' => CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', 'Credit Card'),
+      'card_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', 'Visa'),
+      'pan_truncation' => 5679,
+    ];
+    $financialTrxn['payment_instrument_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', $financialTrxn['payment_instrument_id']);
+    $financialTrxn['payment_instrument_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', $financialTrxn['payment_instrument_id']);
+    $financialTrxn['card_type_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', $financialTrxn['card_type_id']);
+    $financialTrxn['card_type_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', $financialTrxn['card_type_id']);
+
+    $messageTemplate->setFinancialTrxn($financialTrxn);
   }
 
   /**
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
index b7baed4edb..26c28f73a7 100644
--- a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
+++ b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
@@ -3,9 +3,10 @@
 use Civi\Api4\Membership;
 
 /**
- * @method array getContribution()
  * @method int|null getContributionID()
- * @method $this setContributionID(?int $contributionId)
+ * @method $this setContributionID(?int $contributionID)
+ * @method int|null getFinancialTrxnID()
+ * @method $this setFinancialTrxnID(?int $financialTrxnID)
  */
 trait CRM_Contribute_WorkflowMessage_ContributionTrait {
   /**
@@ -17,12 +18,34 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait {
    */
   public $contribution;
 
+  /**
+   * @return array|null
+   */
+  public function getContribution(): ?array {
+    return $this->contribution;
+  }
+
+  /**
+   * Optional financial transaction (payment).
+   *
+   * @var array|null
+   *
+   * @scope tokenContext as financial_trxn
+   */
+  public $financialTrxn;
+
   /**
    * @var int
    * @scope tokenContext as contributionId, tplParams as contributionID
    */
   public $contributionID;
 
+  /**
+   * @var int
+   * @scope tokenContext as financial_trxnId
+   */
+  public $financialTrxnID;
+
   /**
    * Is the site configured such that tax should be displayed.
    *
@@ -220,6 +243,21 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait {
     return $this;
   }
 
+  /**
+   * Set contribution object.
+   *
+   * @param array $financialTrxn
+   *
+   * @return $this
+   */
+  public function setFinancialTrxn(array $financialTrxn): self {
+    $this->financialTrxn = $financialTrxn;
+    if (!empty($financialTrxn['id'])) {
+      $this->financialTrxnID = $financialTrxn['id'];
+    }
+    return $this;
+  }
+
   /**
    * Set order object.
    *
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php b/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php
new file mode 100644
index 0000000000..6b1a250c5e
--- /dev/null
+++ b/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Civi\WorkflowMessage\GenericWorkflowMessage;
+
+/**
+ * Receipt sent when confirming contribution add payment.
+ *
+ * @method int getEventID()
+ *
+ * @support template-only
+ * @see CRM_Financial_BAO_Payment::sendConfirmation()
+ */
+class CRM_Contribute_WorkflowMessage_PaymentOrRefundNotification extends GenericWorkflowMessage {
+  use CRM_Contribute_WorkflowMessage_ContributionTrait;
+  public const WORKFLOW = 'payment_or_refund_notification';
+
+  /**
+   * @var int
+   *
+   * @scope tokenContext as eventId, tplParams as eventID
+   */
+  public $eventID;
+
+}
diff --git a/civicrm/CRM/Contribute/xml/Menu/Contribute.xml b/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
index 1757c746a6..242bd1eedf 100644
--- a/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
+++ b/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
@@ -111,6 +111,11 @@
     <adminGroup>CiviContribute</adminGroup>
     <weight>365</weight>
   </item>
+  <item>
+    <path>civicrm/admin/contribute/managePremiums/edit</path>
+    <title>Manage Premiums</title>
+    <page_callback>CRM_Contribute_Form_ManagePremiums</page_callback>
+  </item>
   <item>
     <path>civicrm/admin/financial/financialType</path>
     <title>Financial Types</title>
diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php
index df6f784ded..d6e876fc1d 100644
--- a/civicrm/CRM/Core/BAO/ActionSchedule.php
+++ b/civicrm/CRM/Core/BAO/ActionSchedule.php
@@ -691,6 +691,7 @@ FROM civicrm_action_schedule cas
       'subject' => $tokenRow->render('subject'),
       'entity' => 'action_schedule',
       'entity_id' => $schedule->id,
+      'contactId' => $toContactID,
     ];
     $body_text = $tokenRow->render('body_text');
     $mailParams['html'] = $tokenRow->render('body_html');
diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php
index a0aa6a5019..1489b5ca67 100644
--- a/civicrm/CRM/Core/BAO/Address.php
+++ b/civicrm/CRM/Core/BAO/Address.php
@@ -301,7 +301,6 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address implements Civi\Core\Hoo
         'contact_id',
         'is_billing',
         'display',
-        'master_id',
       ])) {
         continue;
       }
@@ -720,10 +719,7 @@ ORDER BY civicrm_address.is_primary DESC, civicrm_address.location_type_id DESC,
     ];
 
     // overwriting $streetUnitFormats for 'en_CA' and 'fr_CA' locale
-    if (in_array($locale, [
-      'en_CA',
-      'fr_CA',
-    ])) {
+    if (in_array($locale, ['en_CA', 'fr_CA'])) {
       $streetUnitFormats = ['APT', 'APP', 'SUITE', 'BUREAU', 'UNIT'];
     }
     //@todo per CRM-14459 this regex picks up words with the string in them - e.g APT picks up
@@ -780,11 +776,7 @@ ORDER BY civicrm_address.is_primary DESC, civicrm_address.location_type_id DESC,
 
     $parsingSupportedLocales = ['en_US', 'en_CA', 'fr_CA'];
 
-    if (in_array($locale, $parsingSupportedLocales)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return in_array($locale, $parsingSupportedLocales);
   }
 
   /**
@@ -906,6 +898,8 @@ SELECT is_primary,
    * Fix the shared address if address is already shared
    * or if address will be shared with itself.
    *
+   * Add in the details from the master address.
+   *
    * @param array $params
    *   Associated array of address params.
    */
@@ -921,6 +915,12 @@ SELECT is_primary,
       $params['master_id'] = NULL;
       CRM_Core_Session::setStatus(ts("You can't connect an address to itself"), '', 'warning');
     }
+    if ($params['master_id']) {
+      $masterAddressParams = Address::get(FALSE)
+        ->addWhere('id', '=', $params['master_id'])->execute()->first();
+      unset($masterAddressParams['id'], $masterAddressParams['is_primary'], $masterAddressParams['is_billing'], $masterAddressParams['contact_id']);
+      $params += $masterAddressParams;
+    }
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/ConfigSetting.php b/civicrm/CRM/Core/BAO/ConfigSetting.php
index 7d7b01fbab..f26cc34c4a 100644
--- a/civicrm/CRM/Core/BAO/ConfigSetting.php
+++ b/civicrm/CRM/Core/BAO/ConfigSetting.php
@@ -207,14 +207,14 @@ class CRM_Core_BAO_ConfigSetting {
 
     }
     else {
-
       // CRM-11993 - Use default when it's a single-language install.
       $chosenLocale = $defaultLocale;
-
     }
 
-    if (!$session->isEmpty()) {
-      // Always assign the chosen locale to the session.
+    if ($chosenLocale && ($requestLocale ?? NULL) === $chosenLocale) {
+      // If the locale is passed in via lcMessages key on GET or POST data,
+      // and it's valid against our configured locales, we require the session
+      // to store this, even if that means starting an anonymous session.
       $session->set('lcMessages', $chosenLocale);
     }
 
diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php
index e6f4b68d31..6e81545bfa 100644
--- a/civicrm/CRM/Core/BAO/CustomField.php
+++ b/civicrm/CRM/Core/BAO/CustomField.php
@@ -1116,18 +1116,23 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
           );
 
         }
-        elseif ($field->data_type == 'EntityReference') {
-          $fieldAttributes['entity'] = $field->fk_entity;
-          $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name;
-          $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search);
-        }
-        // Autocomplete for field with option values
         else {
-          $fieldAttributes['entity'] = 'OptionValue';
-          $fieldAttributes['placeholder'] = $placeholder;
-          $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name;
-          $fieldAttributes['select']['multiple'] = $search ? TRUE : !empty($field->serialize);
-          $fieldAttributes['select']['minimumInputLength'] = 0;
+          $entityName = $field->getEntityName();
+          // Format fieldName attribute: convention is `EntityName.field_name`
+          // For normal entities, `field_name` is a combination of `customGroupName.customFieldName`
+          // But form multi-record custom groups, the EntityName already includes the customGroupName so field_name stands alone
+          $fieldAttributes['api']['fieldName'] = $entityName . (str_starts_with($entityName, 'Custom_') ? '' : ".$groupName") . ".$field->name";
+          // Autocomplete for FK fields
+          if ($field->data_type == 'EntityReference') {
+            $fieldAttributes['entity'] = $field->fk_entity;
+          }
+          // Autocomplete for field with option values
+          else {
+            $fieldAttributes['entity'] = 'OptionValue';
+            $fieldAttributes['placeholder'] = $placeholder;
+            $fieldAttributes['select']['multiple'] = $search ? TRUE : !empty($field->serialize);
+            $fieldAttributes['select']['minimumInputLength'] = 0;
+          }
           $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search);
         }
 
@@ -2582,7 +2587,7 @@ AND      default_value IS NOT NULL";
    * @return array
    */
   public static function postProcess(
-    &$params,
+    $params,
     $entityID,
     $customFieldExtends,
     $inline = FALSE,
@@ -2863,8 +2868,8 @@ WHERE cf.id = %1 AND cg.is_multiple = 1";
   }
 
   /**
-   * Get api entity for this field
-   *
+   * Get api3 entity name for this field
+   * @deprecated
    * @return string
    */
   public function getEntity() {
@@ -2872,6 +2877,19 @@ WHERE cf.id = %1 AND cg.is_multiple = 1";
     return in_array($entity, CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE) ? 'Contact' : $entity;
   }
 
+  /**
+   * Get api4 entity name for this field
+   * @return string
+   */
+  public function getEntityName(): string {
+    $isMultiple = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'is_multiple');
+    if ($isMultiple) {
+      $groupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'name');
+      return "Custom_$groupName";
+    }
+    return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'extends');
+  }
+
   /**
    * Set pseudoconstant properties for field metadata.
    *
diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php
index 69acff7378..c9ea430fc5 100644
--- a/civicrm/CRM/Core/BAO/CustomGroup.php
+++ b/civicrm/CRM/Core/BAO/CustomGroup.php
@@ -60,13 +60,13 @@ class CRM_Core_BAO_CustomGroup extends CRM_Core_DAO_CustomGroup implements \Civi
       if (is_array($extendsChildType)) {
         foreach ($extendsChildType as $childType) {
           if (!array_key_exists($childType, $registeredSubTypes) && !in_array($childType, $registeredSubTypes, TRUE)) {
-            throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entitiy');
+            throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entity');
           }
         }
       }
       else {
         if (!array_key_exists($extendsChildType, $registeredSubTypes) && !in_array($extendsChildType, $registeredSubTypes, TRUE)) {
-          throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entitiy');
+          throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entity');
         }
         $extendsChildType = [$extendsChildType];
       }
@@ -2008,11 +2008,7 @@ SELECT  civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT
     $query = "SELECT count(id) FROM {$tableName} WHERE id IS NOT NULL LIMIT 1";
     $value = CRM_Core_DAO::singleValueQuery($query);
 
-    if (empty($value)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return empty($value);
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/CustomQuery.php b/civicrm/CRM/Core/BAO/CustomQuery.php
index 7948b7eaf0..c448d3ce2b 100644
--- a/civicrm/CRM/Core/BAO/CustomQuery.php
+++ b/civicrm/CRM/Core/BAO/CustomQuery.php
@@ -256,7 +256,7 @@ class CRM_Core_BAO_CustomQuery {
                 $value = str_replace(",", "$sp|$sp", $value);
                 $value = str_replace(['[:comma:]', '(', ')'], [',', '[(]', '[)]'], $value);
 
-                $op = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
+                $op = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
                 $value = $sp . $value . $sp;
                 if (!$wildcard) {
                   foreach (explode("|", $value) as $val) {
diff --git a/civicrm/CRM/Core/BAO/CustomValue.php b/civicrm/CRM/Core/BAO/CustomValue.php
index 485b231cc4..8b965803db 100644
--- a/civicrm/CRM/Core/BAO/CustomValue.php
+++ b/civicrm/CRM/Core/BAO/CustomValue.php
@@ -172,7 +172,7 @@ class CRM_Core_BAO_CustomValue extends CRM_Core_DAO {
       }
       elseif (($htmlType == 'TextArea' ||
           ($htmlType == 'Text' && $dataType == 'String')
-        ) && strstr($formValues[$key], '%')
+        ) && str_contains($formValues[$key], '%')
       ) {
         $formValues[$key] = ['LIKE' => $formValues[$key]];
       }
diff --git a/civicrm/CRM/Core/BAO/File.php b/civicrm/CRM/Core/BAO/File.php
index d0ad6492a3..0745e4a4a2 100644
--- a/civicrm/CRM/Core/BAO/File.php
+++ b/civicrm/CRM/Core/BAO/File.php
@@ -442,9 +442,8 @@ AND       CEF.entity_id    = %2";
     // Assign maxAttachments count to template for help message
     $form->assign('maxAttachments', $numAttachments);
 
-    $config = CRM_Core_Config::singleton();
     // set default max file size as 2MB
-    $maxFileSize = $config->maxFileSize ? $config->maxFileSize : 2;
+    $maxFileSize = \Civi::settings()->get('maxFileSize') ?: 2;
 
     $currentAttachmentInfo = self::getEntityFile($entityTable, $entityID, TRUE);
     $totalAttachments = $currentAttachmentInfo ? count($currentAttachmentInfo) : 0;
diff --git a/civicrm/CRM/Core/BAO/Mapping.php b/civicrm/CRM/Core/BAO/Mapping.php
index 583fa8de59..804e3b4369 100644
--- a/civicrm/CRM/Core/BAO/Mapping.php
+++ b/civicrm/CRM/Core/BAO/Mapping.php
@@ -606,7 +606,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
           }
 
           // CRM-14983: verify if values are comma separated convert to array
-          if (!is_array($value) && strstr($params['operator'][$key][$k], 'IN')) {
+          if (!is_array($value) && str_contains($params['operator'][$key][$k], 'IN')) {
             $value = explode(',', $value);
             $value = [$params['operator'][$key][$k] => $value];
           }
diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php
index 1d53ed7a80..e9342273af 100644
--- a/civicrm/CRM/Core/BAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/BAO/MessageTemplate.php
@@ -448,7 +448,14 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
           $params['attachments'] = [];
         }
         $params['attachments'][] = CRM_Utils_Mail::appendPDF($params['PDFFilename'], $params['html'], $mailContent['format']);
+        // This specifically allows the invoice code to attach an invoice & have
+        // a different message body. It will be removed & replaced with something
+        // saner so avoid trying to leverage this. There are no universe usages outside
+        // the core invoice task as of Dec 2023
         if (isset($params['tplParams']['email_comment'])) {
+          if ($params['workflow'] !== 'contribution_invoice_receipt') {
+            CRM_Core_Error::deprecatedWarning('unsupported parameter email_comment used');
+          }
           $params['html'] = $params['tplParams']['email_comment'];
           $params['text'] = strip_tags($params['tplParams']['email_comment']);
         }
diff --git a/civicrm/CRM/Core/BAO/Note.php b/civicrm/CRM/Core/BAO/Note.php
index f1e54f06f7..8a30490905 100644
--- a/civicrm/CRM/Core/BAO/Note.php
+++ b/civicrm/CRM/Core/BAO/Note.php
@@ -538,12 +538,14 @@ WHERE participant.contact_id = %1 AND  note.entity_table = 'civicrm_participant'
       $clauses['entity_table'] = [$relatedClauses];
     }
     // Enforce note privacy setting
-    if (!CRM_Core_Permission::check('view all notes')) {
+    if (!CRM_Core_Permission::check('view all notes', $userId)) {
+      // It was ok to have $userId = NULL for the permission check but must be an int for the query
+      $cid = $userId ?? (int) CRM_Core_Session::getLoggedInContactID();
       $clauses['privacy'] = [
         [
           '= 0',
           // OR
-          '= 1 AND {contact_id} = ' . (int) CRM_Core_Session::getLoggedInContactID(),
+          "= 1 AND {contact_id} = $cid",
         ],
       ];
     }
diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php
index fae355c2e7..6451188dcc 100644
--- a/civicrm/CRM/Core/BAO/UFGroup.php
+++ b/civicrm/CRM/Core/BAO/UFGroup.php
@@ -1458,28 +1458,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup implements \Civi\Core\Ho
       $params['group_type'] = implode(',', $params['group_type']);
     }
 
-    $hook = empty($params['id']) ? 'create' : 'edit';
-    CRM_Utils_Hook::pre($hook, 'UFGroup', ($params['id'] ?? NULL), $params);
-
-    $ufGroup = new CRM_Core_DAO_UFGroup();
-    $ufGroup->copyValues($params);
-
-    $ufGroupID = CRM_Utils_Array::value('ufgroup', $ids, CRM_Utils_Array::value('id', $params));
-    if (!$ufGroupID && empty($params['name'])) {
-      $ufGroup->name = CRM_Utils_String::munge($ufGroup->title, '_', 56);
-    }
-    $ufGroup->id = $ufGroupID;
-
-    $ufGroup->save();
-
-    if (!$ufGroupID && empty($params['name'])) {
-      $ufGroup->name = $ufGroup->name . "_{$ufGroup->id}";
-      $ufGroup->save();
-    }
-
-    CRM_Utils_Hook::post($hook, 'UFGroup', $ufGroup->id, $ufGroup);
-
-    return $ufGroup;
+    return self::writeRecord($params);
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php
index 6290430fd0..3d874a6d65 100644
--- a/civicrm/CRM/Core/BAO/UFMatch.php
+++ b/civicrm/CRM/Core/BAO/UFMatch.php
@@ -627,4 +627,32 @@ AND    domain_id    = %4
     return $clauses;
   }
 
+  /**
+   * This checks and adds a unique index on (uf_id,domain_id)
+   *
+   * @return bool
+   * @throws \Civi\Core\Exception\DBQueryException
+   */
+  public static function tryToAddUniqueIndexOnUfId(): bool {
+    if (!CRM_Core_BAO_SchemaHandler::checkIfIndexExists('civicrm_uf_match', 'UI_uf_match_uf_id_domain_id')) {
+      // Run a query to check if we have duplicates
+      $query = 'SELECT COUNT(*) FROM civicrm_uf_match
+GROUP BY uf_id,domain_id
+HAVING COUNT(*) > 1';
+      $dao = CRM_Core_DAO::executeQuery($query);
+      if ($dao->fetch()) {
+        // Tell the user they need to fix it manually
+        \Civi::log()->error('You have multiple records with the same uf_id in civicrm_uf_match. You need to manually fix this in the database so that uf_id is unique.');
+        return FALSE;
+      }
+      else {
+        // Add the unique index
+        CRM_Core_DAO::executeQuery("
+        ALTER TABLE civicrm_uf_match ADD UNIQUE INDEX UI_uf_match_uf_id_domain_id (uf_id,domain_id);
+      ");
+      }
+    }
+    return TRUE;
+  }
+
 }
diff --git a/civicrm/CRM/Core/BAO/UserJob.php b/civicrm/CRM/Core/BAO/UserJob.php
index 0e3ea8faf2..3f7d3f6e0a 100644
--- a/civicrm/CRM/Core/BAO/UserJob.php
+++ b/civicrm/CRM/Core/BAO/UserJob.php
@@ -159,8 +159,10 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements HookInterface
   public function addSelectWhereClause(string $entityName = NULL, int $userId = NULL, array $conditions = []): array {
     $clauses = [];
     if (!\CRM_Core_Permission::check('administer queues', $userId)) {
+      // It was ok to have $userId = NULL for the permission check but must be an int for the query
+      $cid = $userId ?? (int) CRM_Core_Session::getLoggedInContactID();
       // Only allow access to users' own jobs (or templates)
-      $clauses['created_id'][] = '= ' . (int) CRM_Core_Session::getLoggedInContactID() . ' OR {is_template} = 1';
+      $clauses['created_id'][] = "= $cid OR {is_template} = 1";
     }
     CRM_Utils_Hook::selectWhereClause($this, $clauses, $userId, $conditions);
     return $clauses;
diff --git a/civicrm/CRM/Core/Block.php b/civicrm/CRM/Core/Block.php
index 4e034084f8..e33e928933 100644
--- a/civicrm/CRM/Core/Block.php
+++ b/civicrm/CRM/Core/Block.php
@@ -218,10 +218,7 @@ class CRM_Core_Block {
     $block = [];
     foreach (self::properties() as $id => $value) {
       if ($value['active']) {
-        if (in_array($id, [
-          self::ADD,
-          self::CREATE_NEW,
-        ])) {
+        if (in_array($id, [self::ADD, self::CREATE_NEW])) {
           $hasAccess = TRUE;
           if (!CRM_Core_Permission::check('add contacts') &&
             !CRM_Core_Permission::check('edit groups')
diff --git a/civicrm/CRM/Core/CodeGen/I18n.php b/civicrm/CRM/Core/CodeGen/I18n.php
index 2f71133ba4..91cb6e1176 100644
--- a/civicrm/CRM/Core/CodeGen/I18n.php
+++ b/civicrm/CRM/Core/CodeGen/I18n.php
@@ -19,7 +19,13 @@ class CRM_Core_CodeGen_I18n extends CRM_Core_CodeGen_BaseTask {
     for ($i = 0; $i < count($matches[0]); $i++) {
       $langs[$matches[1][$i]] = $matches[2][$i];
     }
+    // @todo Somewhere in 2024 or beyond, deprecate the old installer
     file_put_contents('../install/langs.php', "<?php \$langs = " . var_export($langs, TRUE) . ";");
+
+    // The `Template` helper provides PHP code cleanup.
+    $tpl = new CRM_Core_CodeGen_Util_Template('php');
+    $tpl->assign('langs', var_export($langs, TRUE));
+    $tpl->run('languages_setup.tpl', '../setup/res/languages.php');
   }
 
   public function generateSchemaStructure(): void {
diff --git a/civicrm/CRM/Core/CodeGen/Reflection.php b/civicrm/CRM/Core/CodeGen/Reflection.php
index 0dd7f23545..f6ba371f40 100644
--- a/civicrm/CRM/Core/CodeGen/Reflection.php
+++ b/civicrm/CRM/Core/CodeGen/Reflection.php
@@ -14,11 +14,7 @@ class CRM_Core_CodeGen_Reflection extends CRM_Core_CodeGen_BaseTask {
     // for the checksum.
 
     // skip this task on test environment as the schema generation should only be triggered during installation/upgrade
-    if (CIVICRM_UF == 'UnitTests') {
-      return FALSE;
-    }
-
-    return TRUE;
+    return CIVICRM_UF !== 'UnitTests';
   }
 
   /**
diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php
index e64367f97b..24013d7257 100644
--- a/civicrm/CRM/Core/CodeGen/Specification.php
+++ b/civicrm/CRM/Core/CodeGen/Specification.php
@@ -552,11 +552,7 @@ class CRM_Core_CodeGen_Specification {
    */
   private function getPhpNullable($fieldXML) {
     $required = $this->value('required', $fieldXML);
-    if ($required) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !$required;
   }
 
   /**
diff --git a/civicrm/CRM/Core/Component.php b/civicrm/CRM/Core/Component.php
index a837ca92ab..f9f91e8a08 100644
--- a/civicrm/CRM/Core/Component.php
+++ b/civicrm/CRM/Core/Component.php
@@ -416,7 +416,44 @@ class CRM_Core_Component {
   }
 
   /**
-   * Callback for the "enable_components" setting
+   * Callback for the "enable_components" setting (pre change)
+   *
+   * Before a component is disabled, disable reverse-dependencies (all extensions dependent on it).
+   *
+   * This is imperfect because it only goes one-level deep:
+   * it doesn't deal with any extensions that depend on the ones being disabled.
+   * The proper fix for that would probably be something like a CASCADE mode for
+   * disabling an extension with all its reverse dependencies (which would render this function moot).
+   *
+   * @param array $oldValue
+   *   List of component names.
+   * @param array $newValue
+   *   List of component names.
+   *
+   * @throws \CRM_Core_Exception.
+   */
+  public static function preToggleComponents($oldValue, $newValue): void {
+    if (is_array($oldValue) && is_array($newValue)) {
+      $disabledComponents = array_diff($oldValue, $newValue);
+    }
+    if (empty($disabledComponents)) {
+      return;
+    }
+    $disabledExtensions = array_map(['CRM_Utils_String', 'convertStringToSnakeCase'], $disabledComponents);
+    $manager = CRM_Extension_System::singleton()->getManager();
+    $extensions = $manager->getStatuses();
+    foreach ($extensions as $extension => $status) {
+      if ($status === CRM_Extension_Manager::STATUS_INSTALLED) {
+        $info = $manager->mapper->keyToInfo($extension);
+        if (array_intersect($info->requires, $disabledExtensions)) {
+          $manager->disable($extension);
+        }
+      }
+    }
+  }
+
+  /**
+   * Callback for the "enable_components" setting (post change)
    *
    * When a component is enabled or disabled, ensure the corresponding module-extension is also enabled/disabled.
    *
@@ -427,7 +464,7 @@ class CRM_Core_Component {
    *
    * @throws \CRM_Core_Exception.
    */
-  public static function onToggleComponents($oldValue, $newValue): void {
+  public static function postToggleComponents($oldValue, $newValue): void {
     if (CRM_Core_Config::isUpgradeMode()) {
       return;
     }
diff --git a/civicrm/CRM/Core/Component/Info.php b/civicrm/CRM/Core/Component/Info.php
index 037b3cea0e..328f62d28a 100644
--- a/civicrm/CRM/Core/Component/Info.php
+++ b/civicrm/CRM/Core/Component/Info.php
@@ -110,17 +110,6 @@ abstract class CRM_Core_Component_Info {
     $this->info['url'] = $this->getKeyword();
   }
 
-  /**
-   * EXPERIMENTAL: Get a list of AngularJS modules
-   *
-   * @return array
-   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
-   * @see CRM_Utils_Hook::angularModules
-   */
-  public function getAngularModules() {
-    return [];
-  }
-
   /**
    * Name of the module-extension coupled with this component
    * @return string
diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php
index 2018a486fb..86353a8a49 100644
--- a/civicrm/CRM/Core/Config.php
+++ b/civicrm/CRM/Core/Config.php
@@ -431,11 +431,7 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
       $path = $_GET[$urlVar] ?? NULL;
     }
 
-    if ($path && preg_match('/^civicrm\/upgrade(\/.*)?$/', $path)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return ($path && preg_match('/^civicrm\/upgrade(\/.*)?$/', $path));
   }
 
   /**
diff --git a/civicrm/CRM/Core/DAO/MessageTemplate.php b/civicrm/CRM/Core/DAO/MessageTemplate.php
index fd7f5cafd2..85db7bf294 100644
--- a/civicrm/CRM/Core/DAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/DAO/MessageTemplate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/MessageTemplate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:6dc7072586d725f18dd3c984091820f0)
+ * (GenCodeChecksum:c5ea23571e85e6abb0e42fe204e97dc4)
  */
 
 /**
@@ -23,6 +23,13 @@ class CRM_Core_DAO_MessageTemplate extends CRM_Core_DAO {
    */
   public static $_tableName = 'civicrm_msg_template';
 
+  /**
+   * Icon associated with this entity.
+   *
+   * @var string
+   */
+  public static $_icon = 'fa-newspaper-o';
+
   /**
    * Field to show when displaying a record.
    *
diff --git a/civicrm/CRM/Core/DAO/PreferencesDate.php b/civicrm/CRM/Core/DAO/PreferencesDate.php
index f6c1f48e00..f2273b32e7 100644
--- a/civicrm/CRM/Core/DAO/PreferencesDate.php
+++ b/civicrm/CRM/Core/DAO/PreferencesDate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/PreferencesDate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c83fafaf0b7ee8513ce6de9844d7a729)
+ * (GenCodeChecksum:7e0344ca89b265be75ff2995b711dc61)
  */
 
 /**
@@ -36,7 +36,9 @@ class CRM_Core_DAO_PreferencesDate extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'update' => 'civicrm/admin/setting/preferences/date?reset=1&action=update&id=[id]',
+    'add' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=add',
+    'browse' => 'civicrm/admin/setting/preferences/date?reset=1',
+    'update' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=update&id=[id]',
   ];
 
   /**
diff --git a/civicrm/CRM/Core/DAO/UFMatch.php b/civicrm/CRM/Core/DAO/UFMatch.php
index aaa71a8278..58948427a7 100644
--- a/civicrm/CRM/Core/DAO/UFMatch.php
+++ b/civicrm/CRM/Core/DAO/UFMatch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFMatch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ddf0ceeb22715a1ee0b7b93c90df31f2)
+ * (GenCodeChecksum:19280813191bcf496c8e43eb9778157a)
  */
 
 /**
@@ -336,6 +336,15 @@ class CRM_Core_DAO_UFMatch extends CRM_Core_DAO {
         'localizable' => FALSE,
         'sig' => 'civicrm_uf_match::0::uf_id',
       ],
+      'UI_uf_match_uf_id_domain_id' => [
+        'name' => 'UI_uf_match_uf_id_domain_id',
+        'field' => [
+          0 => 'uf_id',
+          1 => 'domain_id',
+        ],
+        'localizable' => FALSE,
+        'sig' => 'civicrm_uf_match::0::uf_id::domain_id',
+      ],
       'UI_uf_name_domain_id' => [
         'name' => 'UI_uf_name_domain_id',
         'field' => [
diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php
index da2a22ae6d..6dae88f22e 100644
--- a/civicrm/CRM/Core/Form.php
+++ b/civicrm/CRM/Core/Form.php
@@ -319,6 +319,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     // Required for footer.tpl,
     // See CRM_Activity_Form_ActivityTest:testInboundEmailDisplaysWithLineBreaks.
     'footer_status_severity',
+    // Required for some profiles (e.g on the Main page of the contribution form flow).
+    // A bit tricky to add closer to the usage due to conditionality of inclusion
+    'showCMS',
   ];
 
   /**
@@ -623,10 +626,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     $this->postProcessHook();
 
     // Respond with JSON if in AJAX context (also support legacy value '6')
-    if ($allowAjax && !empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], [
-      CRM_Core_Smarty::PRINT_JSON,
-      6,
-    ])) {
+    if ($allowAjax && !empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], [CRM_Core_Smarty::PRINT_JSON, 6])) {
       $this->ajaxResponse['buttonName'] = str_replace('_qf_' . $this->getAttribute('id') . '_', '', $this->controller->getButtonName());
       $this->ajaxResponse['action'] = $this->_action;
       if (isset($this->_id) || isset($this->id)) {
@@ -712,6 +712,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    * buildQuickForm.
    */
   public function buildForm() {
+    // @todo - move this to the end of the function - then it can be checked
+    // ie $this->isBuilt() to determine whether variables are not yet in getSubmittedValues()
     $this->_formBuilt = TRUE;
 
     $this->preProcess();
@@ -918,9 +920,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   }
 
   /**
-   * @return int
+   * @return int|null
    */
-  public function getPaymentProcessorID(): int {
+  public function getPaymentProcessorID(): ?int {
     return (int) $this->_paymentProcessorID;
   }
 
@@ -945,8 +947,6 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
         ) {
           $this->_paymentProcessor = $paymentProcessorDetail;
           $this->assign('paymentProcessor', $this->_paymentProcessor);
-          // Setting this is a bit of a legacy overhang.
-          $this->_paymentObject = $paymentProcessorDetail['object'];
         }
       }
       // It's not clear why we set this on the form.
@@ -2084,7 +2084,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    * @return mixed
    */
   public function getVar($name) {
-    return $this->$name ?? NULL;
+    return $this->$name;
   }
 
   /**
@@ -2324,9 +2324,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     $props['data-select-params'] = json_encode($props['select']);
     $props['data-api-params'] = json_encode($props['api']);
     $props['data-api-entity'] = $props['entity'];
-    if (!empty($props['select']['quickAdd'])) {
-      Civi::service('angularjs.loader')->addModules(['af']);
-    }
+
     CRM_Utils_Array::remove($props, 'select', 'api', 'entity');
     return $this->add('text', $name, $label, $props, $required);
   }
@@ -2880,10 +2878,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   private function validateChainSelectFields() {
     foreach ($this->_chainSelectFields as $control => $target) {
       if ($this->elementExists($control) && $this->elementExists($target)) {
-        $controlValue = (array) $this->getElementValue($control);
+        $controlValue = (array) $this->getSubmitValue($control);
         $targetField = $this->getElement($target);
         $controlType = $targetField->getAttribute('data-callback') == 'civicrm/ajax/jqCounty' ? 'stateProvince' : 'country';
-        $targetValue = array_filter((array) $targetField->getValue());
+        $targetValue = array_filter((array) $this->getSubmitValue($target));
         if ($targetValue || $this->getElementError($target)) {
           $options = CRM_Core_BAO_Location::getChainSelectValues($controlValue, $controlType, TRUE);
           if ($targetValue) {
@@ -2932,29 +2930,17 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   /**
    * Get the currency for the form.
    *
-   * @todo this should be overriden on the forms rather than having this
-   * historic, possible handling in here. As we clean that up we should
-   * add deprecation notices into here.
-   *
-   * @param array $submittedValues
-   *   Array allowed so forms inheriting this class do not break.
-   *   Ideally we would make a clear standard around how submitted values
-   *   are stored (is $this->_values consistently doing that?).
-   *
    * @return string
    */
-  public function getCurrency($submittedValues = []) {
-    $currency = $this->_values['currency'] ?? NULL;
-    // For event forms, currency is in a different spot
-    if (empty($currency)) {
-      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+  public function getCurrency() {
+    if ($this->getSubmittedValue('currency')) {
+      return $this->getSubmittedValue('currency');
     }
-    if (empty($currency)) {
-      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    if ($currency) {
+      return $currency;
     }
-    // @todo If empty there is a problem - we should probably put in a deprecation notice
-    // to warn if that seems to be happening.
-    return $currency;
+    return \Civi::settings()->get('defaultCurrency');
   }
 
   /**
@@ -3005,7 +2991,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    *
    * @param string $default
    *
-   * @throws \CRM_Core_Exception
+   *
+   * @noinspection PhpUnhandledExceptionInspection
    */
   public function setSelectedChild($default = NULL) {
     $selectedChild = CRM_Utils_Request::retrieve('selectedChild', 'Alphanumeric', $this, FALSE, $default);
diff --git a/civicrm/CRM/Core/Form/Renderer.php b/civicrm/CRM/Core/Form/Renderer.php
index 11f40d86ed..a6c4e68768 100644
--- a/civicrm/CRM/Core/Form/Renderer.php
+++ b/civicrm/CRM/Core/Form/Renderer.php
@@ -115,7 +115,7 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
         $el['html'] = $date . '<input type="hidden" value="' . $element->getValue() . '" name="' . $element->getAttribute('name') . '">';
       }
       // Render html for wysiwyg textareas
-      if ($el['type'] == 'textarea' && isset($element->_attributes['class']) && strstr($element->_attributes['class'], 'wysiwyg')) {
+      if ($el['type'] == 'textarea' && isset($element->_attributes['class']) && str_contains($element->_attributes['class'], 'wysiwyg')) {
         $el['html'] = '<span class="crm-frozen-field">' . $el['value'] . '</span>';
       }
       else {
diff --git a/civicrm/CRM/Core/Form/Search.php b/civicrm/CRM/Core/Form/Search.php
index b071a4c45f..09d9d68280 100644
--- a/civicrm/CRM/Core/Form/Search.php
+++ b/civicrm/CRM/Core/Form/Search.php
@@ -438,9 +438,9 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
       return;
     }
 
-    $this->_group = CRM_Core_PseudoConstant::nestedGroup();
-    if ($this->_group) {
-      $this->add('select', 'group', $this->getGroupLabel(), $this->_group, FALSE,
+    $nestedGroup = CRM_Core_PseudoConstant::nestedGroup();
+    if ($nestedGroup) {
+      $this->add('select', 'group', $this->getGroupLabel(), $nestedGroup, FALSE,
         [
           'id' => 'group',
           'multiple' => 'multiple',
diff --git a/civicrm/CRM/Core/Invoke.php b/civicrm/CRM/Core/Invoke.php
index 64c1f77460..b2a3e75550 100644
--- a/civicrm/CRM/Core/Invoke.php
+++ b/civicrm/CRM/Core/Invoke.php
@@ -303,11 +303,11 @@ class CRM_Core_Invoke {
           unset($pageArgs['mode']);
         }
         $title = $item['title'] ?? NULL;
-        if (strstr($item['page_callback'], '_Page') || strstr($item['page_callback'], '\\Page\\')) {
+        if (str_contains($item['page_callback'], '_Page') || str_contains($item['page_callback'], '\\Page\\')) {
           $object = new $item['page_callback']($title, $mode);
           $object->urlPath = explode('/', $_GET[$config->userFrameworkURLVar]);
         }
-        elseif (strstr($item['page_callback'], '_Controller') || strstr($item['page_callback'], '\\Controller\\')) {
+        elseif (str_contains($item['page_callback'], '_Controller') || str_contains($item['page_callback'], '\\Controller\\')) {
           $addSequence = 'false';
           if (isset($pageArgs['addSequence'])) {
             $addSequence = $pageArgs['addSequence'];
diff --git a/civicrm/CRM/Core/Menu.php b/civicrm/CRM/Core/Menu.php
index 2a23ee2053..c9a9ff3159 100644
--- a/civicrm/CRM/Core/Menu.php
+++ b/civicrm/CRM/Core/Menu.php
@@ -635,7 +635,7 @@ UNION (
       }
     }
 
-    if (strstr($path, 'report/instance')) {
+    if (str_contains($path, 'report/instance')) {
       $args = explode('/', $path);
       if (is_numeric(end($args))) {
         $menuPath['path'] .= '/' . end($args);
diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php
index 89f45a28da..2ce77fe815 100644
--- a/civicrm/CRM/Core/OptionValue.php
+++ b/civicrm/CRM/Core/OptionValue.php
@@ -306,12 +306,7 @@ class CRM_Core_OptionValue {
       elseif ($mode == '') {
         //the fields email greeting and postal greeting are meant only for Individual and Household
         //the field addressee is meant for all contact types, CRM-4575
-        if (in_array($contactType, [
-          'Individual',
-          'Household',
-          'Organization',
-          'All',
-        ])) {
+        if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
           $nameTitle = [
             'addressee' => [
               'name' => 'addressee',
diff --git a/civicrm/CRM/Core/Page.php b/civicrm/CRM/Core/Page.php
index bfe554070f..993166e8fb 100644
--- a/civicrm/CRM/Core/Page.php
+++ b/civicrm/CRM/Core/Page.php
@@ -143,6 +143,16 @@ class CRM_Core_Page {
    */
   public $_permission;
 
+  /**
+   * @var int
+   */
+  protected $_action;
+
+  /**
+   * @var int
+   */
+  protected $_id;
+
   /**
    * Class constructor.
    *
diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php
index 0e47c0a466..100968942f 100644
--- a/civicrm/CRM/Core/Page/AJAX/Location.php
+++ b/civicrm/CRM/Core/Page/AJAX/Location.php
@@ -155,7 +155,7 @@ class CRM_Core_Page_AJAX_Location {
               $elements["onbehalf_{$key}"]['value'][$k] = $v;
             }
           }
-          elseif (strstr($htmlType, 'Multi-Select')) {
+          elseif (str_contains($htmlType, 'Multi-Select')) {
             $elements["onbehalf_{$key}"]['type'] = 'Multi-Select';
             $elements["onbehalf_{$key}"]['value'] = array_values($defaults[$key]);
           }
@@ -210,15 +210,8 @@ class CRM_Core_Page_AJAX_Location {
     );
     // lets output only required fields.
     foreach ($addressOptions as $element => $isSet) {
-      if ($isSet && (!in_array($element, [
-        'im',
-        'openid',
-      ]))) {
-        if (in_array($element, [
-          'country',
-          'state_province',
-          'county',
-        ])) {
+      if ($isSet && (!in_array($element, ['im', 'openid']))) {
+        if (in_array($element, ['country', 'state_province', 'county'])) {
           $element .= '_id';
         }
         elseif ($element == 'address_name') {
@@ -227,29 +220,17 @@ class CRM_Core_Page_AJAX_Location {
         $fld = "address[1][{$element}]";
         $value = $location['address'][1][$element] ?? NULL;
         $value = $value ?: "";
-        $result[str_replace([
-          '][',
-          '[',
-          "]",
-        ], ['_', '_', ''], $fld)] = $value;
+        $result[str_replace(['][', '[', ']'], ['_', '_', ''], $fld)] = $value;
       }
     }
 
-    foreach ([
-      'email',
-      'phone_type_id',
-      'phone',
-    ] as $element) {
+    foreach (['email', 'phone_type_id', 'phone'] as $element) {
       $block = ($element == 'phone_type_id') ? 'phone' : $element;
       for ($i = 1; $i < 3; $i++) {
         $fld = "{$block}[{$i}][{$element}]";
         $value = $location[$block][$i][$element] ?? NULL;
         $value = $value ?: "";
-        $result[str_replace([
-          '][',
-          '[',
-          "]",
-        ], ['_', '_', ''], $fld)] = $value;
+        $result[str_replace(['][', '[', ']'], ['_', '_', ''], $fld)] = $value;
       }
     }
 
diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php
index 9e0f2a33a8..bc9a08b140 100644
--- a/civicrm/CRM/Core/Payment.php
+++ b/civicrm/CRM/Core/Payment.php
@@ -609,6 +609,22 @@ abstract class CRM_Core_Payment {
         }
         return ts('Make Contribution');
 
+      case 'eventContinueText':
+        // This use of the ts function uses the legacy interpolation of the button name to avoid translations having to be re-done.
+        if ((int) $this->_paymentProcessor['billing_mode'] === self::BILLING_MODE_NOTIFY) {
+          return ts('Click <strong>%1</strong> to checkout with %2.', [1 => ts('Register'), 2 => $this->_paymentProcessor['frontend_title']]);
+        }
+        return ts('Click <strong>%1</strong> to complete your registration.', [1 => ts('Register')]);
+
+      case 'eventConfirmText':
+        if ((int) $this->_paymentProcessor['billing_mode'] === self::BILLING_MODE_NOTIFY) {
+          return ts('Your registration payment has been submitted to %1 for processing', [1 => $this->_paymentProcessor['frontend_title']]);
+        }
+        return '';
+
+      case 'eventConfirmEmailText':
+        return ts('A registration confirmation email will be sent to %1 once the transaction is processed successfully.', [1 => $params['email']]);
+
       case 'cancelRecurDetailText':
         if ($params['mode'] === 'auto_renew') {
           return ts('Click the button below if you want to cancel the auto-renewal option for your %1 membership. This will not cancel your membership. However you will need to arrange payment for renewal when your membership expires.',
@@ -1496,13 +1512,14 @@ abstract class CRM_Core_Payment {
   /**
    * Refunds payment
    *
-   * Payment processors should set payment_status_id if it set the status to Refunded in case the transaction is successful
-   *
    * @param array $params
    *
-   * @throws \Civi\Payment\Exception\PaymentProcessorException
+   * @return array
+   *   Result array (containing at least the key refund_status)
    */
-  public function doRefund(&$params) {}
+  public function doRefund(&$params) {
+    return ['refund_status' => 'Completed'];
+  }
 
   /**
    * Query payment processor for details about a transaction.
@@ -1544,15 +1561,11 @@ abstract class CRM_Core_Payment {
       return FALSE;
     }
 
-    if (isset($_GET['payment_date']) &&
+    return (isset($_GET['payment_date']) &&
       isset($_GET['merchant_return_link']) &&
       ($_GET['payment_status'] ?? NULL) == 'Completed' &&
       $paymentProcessor['payment_processor_type'] == "PayPal_Standard"
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    );
   }
 
   /**
@@ -1871,6 +1884,20 @@ abstract class CRM_Core_Payment {
     return method_exists(CRM_Utils_System::getClassName($this), 'changeSubscriptionAmount');
   }
 
+  /**
+   * Checks if payment processor supports not returning to the form processing.
+   *
+   * The exists to support historical event form logic where emails are sent
+   * & the form postProcess hook is called before redirecting the browser where
+   * the user is redirected.
+   *
+   * @return bool
+   */
+  public function supportsNoReturn(): bool {
+    $billingMode = (int) $this->_paymentProcessor['billing_mode'];
+    return $billingMode === self::BILLING_MODE_NOTIFY || $billingMode === self::BILLING_MODE_BUTTON;
+  }
+
   /**
    * Checks if payment processor supports recurring contributions
    *
diff --git a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
index 6cd7b694a5..50dd20ff51 100644
--- a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
+++ b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
@@ -310,7 +310,36 @@ INNER JOIN civicrm_contribution co ON co.contribution_recur_id = cr.id
    * @throws \CRM_Core_Exception
    */
   protected function getContributionID(): int {
-    return (int) $this->retrieve('x_invoice_num', 'Integer');
+    $id = $this->retrieve('x_invoice_num', 'String');
+
+    /* Fix for https://lab.civicrm.org/dev/core/-/issues/4833 :
+     * There's a potential conflict in the way x_invoice_num is used currently,
+     * vs the way it was used in the past. This problem will affect long-running
+     * ARB (recurring) subscriptions, if they're old enough (e.g. created before Nov 2021,
+     * though admittedly I'm not sure of that cutoff date).
+     *
+     * Summary:
+     * - Currently: x_invoice_num is an integer equal to civicrm_contribution.id;
+     * - Previously, x_invoice_num was a 20-character alphanumeric string,
+     * stored in the comma-delimited value of civicrm_contribution.trxn_id.
+     *
+     * Therefore: If x_invoice_num is not an integer, AND it's 20 characters long,
+     * we'll assume we might be processing a payment on a long-running "old-style"
+     * ARB subscription and attempt to match on (civicrm_contribution.trxn_id contains
+     * x_invoice_num).
+     */
+    if (
+      ($id !== (int) $id)
+      && (strlen($id) == 20)
+    ) {
+      $contribution = Contribution::get(FALSE)
+        ->addSelect('id')
+        ->addWhere('trxn_id', 'LIKE', "$id,%")
+        ->execute()
+        ->first();
+      $id = $contribution['id'];
+    }
+    return (int) $id;
   }
 
   /**
diff --git a/civicrm/CRM/Core/Payment/Dummy.php b/civicrm/CRM/Core/Payment/Dummy.php
index d2d3195c68..3bd2318dc7 100644
--- a/civicrm/CRM/Core/Payment/Dummy.php
+++ b/civicrm/CRM/Core/Payment/Dummy.php
@@ -205,7 +205,9 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment {
     $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate');
 
     $propertyBag = PropertyBag::cast($params);
-
+    if ((float) $propertyBag->getAmount() !== (float) $params['amount']) {
+      CRM_Core_Error::deprecatedWarning('amount should be passed through in machine-ready format');
+    }
     // If we have a $0 amount, skip call to processor and set payment_status to Completed.
     // Conceivably a processor might override this - perhaps for setting up a token - but we don't
     // have an example of that at the mome.
diff --git a/civicrm/CRM/Core/Payment/Form.php b/civicrm/CRM/Core/Payment/Form.php
index 6002459f34..954cb96169 100644
--- a/civicrm/CRM/Core/Payment/Form.php
+++ b/civicrm/CRM/Core/Payment/Form.php
@@ -315,12 +315,13 @@ class CRM_Core_Payment_Form {
   /**
    * Map address fields.
    *
-   * @param int $id
+   * @param int $id unused
    * @param array $src
    * @param array $dst
    * @param bool $reverse
    */
   public static function mapParams($id, $src, &$dst, $reverse = FALSE) {
+    $id = CRM_Core_BAO_LocationType::getBilling();
     $map = [
       'first_name' => 'billing_first_name',
       'middle_name' => 'billing_middle_name',
diff --git a/civicrm/CRM/Core/Payment/ProcessorForm.php b/civicrm/CRM/Core/Payment/ProcessorForm.php
index 381090f7aa..257125e1d2 100644
--- a/civicrm/CRM/Core/Payment/ProcessorForm.php
+++ b/civicrm/CRM/Core/Payment/ProcessorForm.php
@@ -25,13 +25,11 @@ class CRM_Core_Payment_ProcessorForm {
 
   /**
    * @param CRM_Contribute_Form_Contribution_Main|CRM_Event_Form_Registration_Register|CRM_Financial_Form_Payment $form
-   * @param null $type
-   * @param null $mode
    *
    * @throws Exception
    */
-  public static function preProcess(&$form, $type = NULL, $mode = NULL) {
-    $type = $type ?: CRM_Utils_Request::retrieve('type', 'String', $form);
+  public static function preProcess($form) {
+    $type = CRM_Utils_Request::retrieve('type', 'String', $form);
     if ($type) {
       // @todo not sure when this would be true. Never passed in.
       $form->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($type, $form->_mode);
@@ -42,14 +40,14 @@ class CRM_Core_Payment_ProcessorForm {
       return;
     }
     $form->set('paymentProcessor', $form->_paymentProcessor);
-    $form->_paymentObject = System::singleton()->getByProcessor($form->_paymentProcessor);
+    $paymentObject = System::singleton()->getByProcessor($form->_paymentProcessor);
     if ($form->paymentInstrumentID) {
-      $form->_paymentObject->setPaymentInstrumentID($form->paymentInstrumentID);
+      $paymentObject->setPaymentInstrumentID($form->paymentInstrumentID);
     }
-    $form->_paymentObject->setBackOffice($form->isBackOffice);
+    $paymentObject->setBackOffice($form->isBackOffice);
     $form->assign('isBackOffice', $form->isBackOffice);
 
-    $form->assign('suppressSubmitButton', $form->_paymentObject->isSuppressSubmitButtons());
+    $form->assign('suppressSubmitButton', $paymentObject->isSuppressSubmitButtons());
 
     CRM_Financial_Form_Payment::addCreditCardJs($form->getPaymentProcessorID());
     $form->assign('paymentProcessorID', $form->getPaymentProcessorID());
@@ -61,7 +59,7 @@ class CRM_Core_Payment_ProcessorForm {
 
     // also set cancel subscription url
     if (!empty($form->_paymentProcessor['is_recur']) && !empty($form->_values['is_recur'])) {
-      $form->_values['cancelSubscriptionUrl'] = $form->_paymentObject->subscriptionURL(NULL, NULL, 'cancel');
+      $form->_values['cancelSubscriptionUrl'] = $paymentObject->subscriptionURL(NULL, NULL, 'cancel');
     }
 
     $paymentProcessorBillingFields = array_keys($form->_paymentProcessor['object']->getBillingAddressFields());
@@ -110,7 +108,7 @@ class CRM_Core_Payment_ProcessorForm {
 
     if (!empty($form->_membershipBlock) && !empty($form->_membershipBlock['is_separate_payment']) &&
       (!empty($form->_paymentProcessor['class_name']) &&
-        !$form->_paymentObject->supports('MultipleConcurrentPayments')
+        !$paymentObject->supports('MultipleConcurrentPayments')
       )
     ) {
 
diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php
index f8f2fb7ace..b37cf4c3e1 100644
--- a/civicrm/CRM/Core/Permission.php
+++ b/civicrm/CRM/Core/Permission.php
@@ -234,11 +234,7 @@ class CRM_Core_Permission {
       return TRUE;
     }
 
-    if (self::check('administer CiviCRM data', $userId)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return self::check('administer CiviCRM data', $userId);
   }
 
   /**
@@ -1152,7 +1148,11 @@ class CRM_Core_Permission {
       ],
     ];
     $permissions['line_item'] = $permissions['contribution'];
-    $permissions['product'] = $permissions['contribution'];
+    $permissions['product'] = $permissions['premiums'] = $permissions['premiums_product'] = $permissions['contribution'];
+    // Add 'make online contributions' permissions to allow anon users to access these entities
+    // (permissions are controlled by financial ACLs)
+    $permissions['product']['get'] = $permissions['premium']['get'] = $permissions['premiums_product']['get'] = [['access CiviCRM', 'access CiviContribute', 'make online contributions']];
+    $permissions['product']['meta'] = $permissions['premium']['meta'] = $permissions['premiums_product']['meta'] = [['access CiviCRM', 'access CiviContribute', 'make online contributions']];
 
     $permissions['financial_item'] = $permissions['contribution'];
     $permissions['financial_type']['get'] = $permissions['contribution']['get'];
diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php
index 748aaa1c26..3d3db50d7a 100644
--- a/civicrm/CRM/Core/Resources.php
+++ b/civicrm/CRM/Core/Resources.php
@@ -381,6 +381,9 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface
     if (!self::isAjaxMode()) {
       $this->addBundle('coreResources');
       $this->addCoreStyles($region);
+      // This ensures that if a popup link requires AngularJS, it will always be available.
+      // Additional Ang modules required by popups will be loaded on-the-fly by Civi\Angular\AngularLoader
+      Civi::service('angularjs.loader')->addModules(['crmResource']);
     }
     return $this;
   }
@@ -419,8 +422,31 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface
     return $this->strings;
   }
 
+  /**
+   * Get the params used to render crm-l10n.js
+   * Gets called above the caching layer and then used
+   * in the render function below
+   */
+  public static function getL10nJsParams(): array {
+    $settings = Civi::settings();
+    return [
+      'cid' => CRM_Core_Session::getLoggedInContactID() ?: 0,
+      'includeEmailInName' => (bool) $settings->get('includeEmailInName'),
+      'ajaxPopupsEnabled' => (bool) $settings->get('ajaxPopupsEnabled'),
+      'allowAlertAutodismissal' => (bool) $settings->get('allow_alert_autodismissal'),
+      'resourceCacheCode' => Civi::resources()->getCacheCode(),
+      'locale' => CRM_Core_I18n::getLocale(),
+      'lcMessages' => $settings->get('lcMessages'),
+      'dateInputFormat' => $settings->get('dateInputFormat'),
+      'timeInputFormat' => $settings->get('timeInputFormat'),
+      'moneyFormat' => CRM_Utils_Money::format(1234.56),
+    ];
+  }
+
   /**
    * Create dynamic script for localizing js widgets.
+   * Params come from the function above
+   * @see getL10nJsParams
    */
   public static function renderL10nJs(GenericHookEvent $e) {
     if ($e->asset !== 'crm-l10n.js') {
diff --git a/civicrm/CRM/Core/Resources/Common.php b/civicrm/CRM/Core/Resources/Common.php
index e470406ace..73a8bd2b99 100644
--- a/civicrm/CRM/Core/Resources/Common.php
+++ b/civicrm/CRM/Core/Resources/Common.php
@@ -206,18 +206,7 @@ class CRM_Core_Resources_Common {
 
     // Dynamic localization script
     if (!CRM_Core_Config::isUpgradeMode()) {
-      $items[] = Civi::service('asset_builder')->getUrl('crm-l10n.js', [
-        'cid' => $contactID,
-        'includeEmailInName' => (bool) $settings->get('includeEmailInName'),
-        'ajaxPopupsEnabled' => (bool) $settings->get('ajaxPopupsEnabled'),
-        'allowAlertAutodismissal' => (bool) $settings->get('allow_alert_autodismissal'),
-        'resourceCacheCode' => Civi::resources()->getCacheCode(),
-        'locale' => CRM_Core_I18n::getLocale(),
-        'lcMessages' => $settings->get('lcMessages'),
-        'dateInputFormat' => $settings->get('dateInputFormat'),
-        'timeInputFormat' => $settings->get('timeInputFormat'),
-        'moneyFormat' => CRM_Utils_Money::format(1234.56),
-      ]);
+      $items[] = Civi::service('asset_builder')->getUrl('crm-l10n.js', CRM_Core_Resources::getL10nJsParams());
     }
 
     // These scripts are only needed by back-office users
diff --git a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
index 37e3068652..5cc7fb5c3e 100644
--- a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
+++ b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
@@ -28,13 +28,14 @@
  *
  * @param array $params
  *   Template call's parameters.
- * @param CRM_Core_Smarty $smarty
- *   The Smarty object.
  *
  * @return string
  *   the string, translated by gettext
+ *
+ * @deprecated This is called from table.tpl but we aim to remove
+ * from there.
  */
-function smarty_function_sectionTotal($params, &$smarty) {
+function smarty_function_sectionTotal(array $params) {
   /* section totals are stored in template variable 'sectionTotals',
    * which is a two-dimensional array keyed to a string which is a delimited
    * concatenation (using CRM_Core_DAO::VALUE_SEPARATOR) of ordered permutations
@@ -59,5 +60,5 @@ function smarty_function_sectionTotal($params, &$smarty) {
   $totalsKey = implode(CRM_Core_DAO::VALUE_SEPARATOR, $sectionValues);
 
   // return the corresponding total
-  return $smarty->_tpl_vars['sectionTotals'][$totalsKey];
+  return $params['totals'][$totalsKey];
 }
diff --git a/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php b/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
index cb3ecf363a..3f092924ec 100644
--- a/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
+++ b/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
@@ -50,10 +50,7 @@ function smarty_function_simpleActivityContacts($params, &$smarty) {
     $baseContactParams['return.' . $field] = 1;
   }
 
-  foreach ([
-    'target',
-    'assignee',
-  ] as $role) {
+  foreach (['target', 'assignee'] as $role) {
     $contact = [];
     if (!empty($activity[$role . '_contact_id'])) {
       $contact_id = array_shift($activity[$role . '_contact_id']);
diff --git a/civicrm/CRM/Core/SmartyCompatibility.php b/civicrm/CRM/Core/SmartyCompatibility.php
index 25364d9055..bc7146020b 100644
--- a/civicrm/CRM/Core/SmartyCompatibility.php
+++ b/civicrm/CRM/Core/SmartyCompatibility.php
@@ -166,7 +166,7 @@ class CRM_Core_SmartyCompatibility extends Smarty {
    */
   public function getTemplateVars($varName = NULL, Smarty_Internal_Data $_ptr = NULL, $searchParents = TRUE) {
     if (method_exists(get_parent_class(), 'getTemplateVars')) {
-      return parent::getTemplateVars($varName . $_ptr, $searchParents);
+      return parent::getTemplateVars($varName, $_ptr, $searchParents);
     }
     return parent::get_template_vars($varName);
   }
diff --git a/civicrm/CRM/Core/xml/Menu/Admin.xml b/civicrm/CRM/Core/xml/Menu/Admin.xml
index 93ecf39477..1c6dd7cddb 100644
--- a/civicrm/CRM/Core/xml/Menu/Admin.xml
+++ b/civicrm/CRM/Core/xml/Menu/Admin.xml
@@ -231,7 +231,7 @@
      <weight>95</weight>
   </item>
   <item>
-     <path>civicrm/admin/setting/preferences/date</path>
+     <path>civicrm/admin/setting/preferences/date/edit</path>
      <title>Date Preferences</title>
      <page_callback>CRM_Admin_Form_PreferencesDate</page_callback>
      <adminGroup>Customize Data and Screens</adminGroup>
@@ -332,6 +332,11 @@
      <adminGroup>Communications</adminGroup>
      <weight>60</weight>
   </item>
+  <item>
+     <path>civicrm/admin/labelFormats/edit</path>
+     <title>Label Page Formats</title>
+     <page_callback>CRM_Admin_Page_LabelFormats</page_callback>
+  </item>
   <item>
      <path>civicrm/admin/pdfFormats</path>
      <title>Print Page (PDF) Formats</title>
diff --git a/civicrm/CRM/Custom/Form/CustomData.php b/civicrm/CRM/Custom/Form/CustomData.php
index b063936c81..d440ccad1c 100644
--- a/civicrm/CRM/Custom/Form/CustomData.php
+++ b/civicrm/CRM/Custom/Form/CustomData.php
@@ -132,7 +132,7 @@ class CRM_Custom_Form_CustomData {
 
     $gid = (isset($form->_groupID)) ? $form->_groupID : NULL;
     $getCachedTree = $form->_getCachedTree ?? TRUE;
-    if (!is_array($subType) && strstr(($subType ?? ''), CRM_Core_DAO::VALUE_SEPARATOR)) {
+    if (!is_array($subType) && str_contains(($subType ?? ''), CRM_Core_DAO::VALUE_SEPARATOR)) {
       CRM_Core_Error::deprecatedWarning('Using a CRM_Core_DAO::VALUE_SEPARATOR separated subType deprecated, use a comma-separated string instead.');
       $subType = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, ',', trim($subType, CRM_Core_DAO::VALUE_SEPARATOR));
     }
diff --git a/civicrm/CRM/Dedupe/Finder.php b/civicrm/CRM/Dedupe/Finder.php
index 77fe3d185c..e6082c455e 100644
--- a/civicrm/CRM/Dedupe/Finder.php
+++ b/civicrm/CRM/Dedupe/Finder.php
@@ -191,10 +191,7 @@ class CRM_Dedupe_Finder {
     }
 
     // handle {birth,deceased}_date
-    foreach ([
-      'birth_date',
-      'deceased_date',
-    ] as $date) {
+    foreach (['birth_date', 'deceased_date'] as $date) {
       if (!empty($fields[$date])) {
         $flat[$date] = $fields[$date];
         if (is_array($flat[$date])) {
diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php
index d4cb2f7c61..e567439dfc 100644
--- a/civicrm/CRM/Dedupe/Merger.php
+++ b/civicrm/CRM/Dedupe/Merger.php
@@ -1561,8 +1561,8 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
         $value[1] = NULL;
       }
 
-      // Display a checkbox to migrate, only if the values are different
-      if ($value != $main[$field]) {
+      // Display a checkbox to migrate, only if the values are different, should check type also for true value
+      if ($value !== $main[$field]) {
         // Don't check source if main is empty, because the source of the other contact is not the source of the merged contact
         $isChecked = ($field === 'source') ? FALSE : (!isset($main[$field]) || $main[$field] === '');
         $elements[] = [
@@ -2945,6 +2945,7 @@ ORDER BY civicrm_custom_group.weight,
         // Add this value to the table rows
         $rows["move_location_{$blockName}_{$count}"]['other'] = $displayValue;
         $rows["move_location_{$blockName}_{$count}"]['location_entity'] = $blockName;
+        $rows["move_location_{$blockName}_{$count}"]['location_block_index'] = $count;
 
         // CRM-17556 Only display 'main' contact value if it's the same location + type
         // Look it up from main values...
diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php
index e0946b03da..f9f0c1c956 100644
--- a/civicrm/CRM/Event/BAO/Participant.php
+++ b/civicrm/CRM/Event/BAO/Participant.php
@@ -211,10 +211,7 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant implements \Ci
     }
     $noteValue = NULL;
     $hasNoteField = FALSE;
-    foreach ([
-      'note',
-      'participant_note',
-    ] as $noteFld) {
+    foreach (['note', 'participant_note'] as $noteFld) {
       if (array_key_exists($noteFld, $params)) {
         $noteValue = $params[$noteFld];
         $hasNoteField = TRUE;
diff --git a/civicrm/CRM/Event/BAO/Query.php b/civicrm/CRM/Event/BAO/Query.php
index f89d58614d..b1bf8f8b68 100644
--- a/civicrm/CRM/Event/BAO/Query.php
+++ b/civicrm/CRM/Event/BAO/Query.php
@@ -270,13 +270,13 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
         $exEventId = '';
         if ($query->_where[$grouping]) {
           foreach ($query->_where[$grouping] as $key => $val) {
-            if (strstr($val, 'civicrm_event.id =')) {
+            if (str_contains($val, 'civicrm_event.id =')) {
               $exEventId = $val;
               $extractEventId = explode(" ", $val);
               $value = $extractEventId[2];
               $where = $query->_where[$grouping][$key];
             }
-            elseif (strstr($val, 'civicrm_event.id IN')) {
+            elseif (str_contains($val, 'civicrm_event.id IN')) {
               //extract the first event id if multiple events are selected
               preg_match('/civicrm_event.id IN \(\"(\d+)/', $val, $matches);
               $value = $matches[1];
@@ -405,8 +405,8 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
           $op = key($value);
           $value = $value[$op];
         }
-        if (!strstr($op, 'NULL') && !strstr($op, 'EMPTY') && !strstr($op, 'LIKE')) {
-          $regexOp = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT REGEXP' : 'REGEXP';
+        if (!str_contains($op, 'NULL') && !str_contains($op, 'EMPTY') && !str_contains($op, 'LIKE')) {
+          $regexOp = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT REGEXP' : 'REGEXP';
           $regexp = "([[:cntrl:]]|^)" . implode('([[:cntrl:]]|$)|([[:cntrl:]]|^)', (array) $value) . "([[:cntrl:]]|$)";
           $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_participant.$name", $regexOp, $regexp, 'String');
         }
@@ -434,11 +434,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
       case 'event_type_id':
       case 'event_title':
         $qillName = $name;
-        if (in_array($name, [
-          'event_id',
-          'event_title',
-          'event_is_public',
-        ])) {
+        if (in_array($name, ['event_id', 'event_title', 'event_is_public'])) {
           $name = str_replace('event_', '', $name);
         }
         $dataType = !empty($fields[$qillName]['type']) ? CRM_Utils_Type::typeToString($fields[$qillName]['type']) : 'String';
diff --git a/civicrm/CRM/Event/DAO/Event.php b/civicrm/CRM/Event/DAO/Event.php
index e1bc30cb40..4d09de0d57 100644
--- a/civicrm/CRM/Event/DAO/Event.php
+++ b/civicrm/CRM/Event/DAO/Event.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Event.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a1c6fa263d5a0c98d03e270a5759dd35)
+ * (GenCodeChecksum:fd75d47cd23c3893174a0b55ba831894)
  */
 
 /**
@@ -675,6 +675,15 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO {
    */
   public $is_billing_required;
 
+  /**
+   * If true then calendar links are shown for this event.
+   *
+   * @var bool|string
+   *   (SQL type: tinyint)
+   *   Note that values will be retrieved from the database as a string.
+   */
+  public $is_show_calendar_links;
+
   /**
    * Class constructor.
    */
@@ -2365,6 +2374,29 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO {
           ],
           'add' => '4.6',
         ],
+        'is_show_calendar_links' => [
+          'name' => 'is_show_calendar_links',
+          'type' => CRM_Utils_Type::T_BOOLEAN,
+          'title' => ts('Are calendar links shown?'),
+          'description' => ts('If true then calendar links are shown for this event.'),
+          'required' => TRUE,
+          'usage' => [
+            'import' => FALSE,
+            'export' => FALSE,
+            'duplicate_matching' => FALSE,
+            'token' => FALSE,
+          ],
+          'where' => 'civicrm_event.is_show_calendar_links',
+          'default' => '1',
+          'table_name' => 'civicrm_event',
+          'entity' => 'Event',
+          'bao' => 'CRM_Event_BAO_Event',
+          'localizable' => 0,
+          'html' => [
+            'type' => 'CheckBox',
+          ],
+          'add' => '5.68',
+        ],
       ];
       CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
     }
diff --git a/civicrm/CRM/Event/Form/EventFees.php b/civicrm/CRM/Event/Form/EventFees.php
index 32a3f10ead..8da6bdeaa8 100644
--- a/civicrm/CRM/Event/Form/EventFees.php
+++ b/civicrm/CRM/Event/Form/EventFees.php
@@ -24,11 +24,14 @@ class CRM_Event_Form_EventFees {
   /**
    * Set variables up before form is built.
    *
+   * @deprecated since 5.69 will be removed around 5.74
+   *
    * @param CRM_Core_Form $form
    *
    * @throws \CRM_Core_Exception
    */
   public static function preProcess(&$form) {
+    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
     //as when call come from register.php
     if (!$form->_eventId) {
       $form->_eventId = CRM_Utils_Request::retrieve('eventId', 'Positive', $form);
diff --git a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
index 0fd442b025..82a28c5e66 100644
--- a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
+++ b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
@@ -41,8 +41,8 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     // when custom data is included in this page
     if (!empty($_POST['hidden_custom'])) {
       $this->set('type', 'Event');
-      $this->set('subType', CRM_Utils_Array::value('event_type_id', $_POST));
-      $this->assign('customDataSubType', CRM_Utils_Array::value('event_type_id', $_POST));
+      $this->set('subType', $_POST['event_type_id'] ?? '');
+      $this->assign('customDataSubType', $_POST['event_type_id'] ?? '');
       $this->set('entityId', $entityID);
 
       CRM_Custom_Form_CustomData::preProcess($this, NULL, $this->_eventType, 1, 'Event', $entityID);
@@ -88,12 +88,12 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $showHideBlocks->addToTemplate();
     $this->assign('elemType', 'table-row');
 
-    $this->assign('description', CRM_Utils_Array::value('description', $defaults));
+    $this->assign('description', $defaults['description'] ?? '');
 
     // Provide suggested text for event full and waitlist messages if they're empty
-    $defaults['event_full_text'] = CRM_Utils_Array::value('event_full_text', $defaults, ts('This event is currently full.'));
+    $defaults['event_full_text'] = $defaults['event_full_text'] ?? ts('This event is currently full.');
 
-    $defaults['waitlist_text'] = CRM_Utils_Array::value('waitlist_text', $defaults, ts('This event is currently full. However you can register now and get added to a waiting list. You will be notified if spaces become available.'));
+    $defaults['waitlist_text'] = $defaults['waitlist_text'] ?? ts('This event is currently full. However you can register now and get added to a waiting list. You will be notified if spaces become available.');
     $defaults['template_id'] = $this->_templateId;
 
     return $defaults;
@@ -161,6 +161,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $this->addElement('checkbox', 'is_public', ts('Public Event'));
     $this->addElement('checkbox', 'is_share', ts('Add footer region with Twitter, Facebook and LinkedIn share buttons and scripts?'));
     $this->addElement('checkbox', 'is_map', ts('Include Map to Event Location'));
+    $this->addElement('checkbox', 'is_show_calendar_links', ts('Show Calendar Links'));
 
     $this->add('datepicker', 'start_date', ts('Start'), [], !$this->_isTemplate, ['time' => TRUE]);
     $this->add('datepicker', 'end_date', ts('End'), [], FALSE, ['time' => TRUE]);
@@ -222,9 +223,9 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $params['is_active'] = $params['is_active'] ?? FALSE;
     $params['is_public'] = $params['is_public'] ?? FALSE;
     $params['is_share'] = $params['is_share'] ?? FALSE;
+    $params['is_show_calendar_links'] = $params['is_show_calendar_links'] ?? FALSE;
     $params['default_role_id'] = $params['default_role_id'] ?? FALSE;
     $params['id'] = $this->_id;
-
     //merge params with defaults from templates
     if (!empty($params['template_id'])) {
       $params = array_merge(CRM_Event_BAO_Event::getTemplateDefaultValues($params['template_id']), $params);
diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php
index b33f7acb45..934bf20fed 100644
--- a/civicrm/CRM/Event/Form/Participant.php
+++ b/civicrm/CRM/Event/Form/Participant.php
@@ -17,6 +17,7 @@
  */
 
 use Civi\API\EntityLookupTrait;
+use Civi\Api4\Contribution;
 
 /**
  * Back office participant form.
@@ -153,15 +154,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    *
    * @var array
    */
-  public $_lineItem = NULL;
-
-  /**
-   * Contribution mode for event registration for offline mode.
-   *
-   * @var string
-   * @deprecated
-   */
-  public $_contributeMode = 'direct';
+  public $_lineItem;
 
   public $_online;
 
@@ -302,7 +295,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       if (CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $_GET['eventId'], 'is_monetary')) {
         $this->assign('feeBlockPaid', TRUE);
       }
-      CRM_Event_Form_EventFees::preProcess($this);
       return;
     }
 
@@ -325,7 +317,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       if ($this->_submitValues['event_id']) {
         $this->_eventId = (int) $this->_submitValues['event_id'];
       }
-      CRM_Event_Form_EventFees::preProcess($this);
       $this->buildEventFeeForm($this);
       CRM_Event_Form_EventFees::setDefaultValues($this);
     }
@@ -872,7 +863,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']);
     }
     if ($this->_isPaidEvent) {
-      [$contributionParams, $lineItem, $params] = $this->preparePaidEventProcessing($params);
+      [$lineItem, $params] = $this->preparePaidEventProcessing($params);
     }
 
     $this->_params = $params;
@@ -884,35 +875,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     }
     $params['contact_id'] = $this->_contactId;
 
-    // overwrite actual payment amount if entered
-    if (!empty($params['total_amount'])) {
-      $contributionParams['total_amount'] = $params['total_amount'] ?? NULL;
-    }
-
-    // Retrieve the name and email of the current user - this will be the FROM for the receipt email
-    $userName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName();
-
-    //modify params according to parameter used in create
-    //participant method (addParticipant)
-    $this->_params['participant_status_id'] = $params['status_id'];
-    $this->_params['participant_role_id'] = $this->getSubmittedValue('role_id');
-
     $now = date('YmdHis');
 
     if ($this->_mode) {
-      // set source if not set
-      if (empty($params['source'])) {
-        $this->_params['participant_source'] = ts('Offline Registration for Event: %2 by: %1', [
-          1 => $userName,
-          2 => $this->getEventValue('title'),
-        ]);
-      }
-      else {
-        $this->_params['participant_source'] = $params['source'];
-      }
-      $this->_params['description'] = $this->_params['participant_source'];
-
-      $this->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($this->_params['payment_processor_id'],
+      $this->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($this->getSubmittedValue('payment_processor_id'),
         $this->_mode
       );
       $fields = [];
@@ -960,14 +926,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $this->_params = $this->prepareParamsForPaymentProcessor($this->_params);
       $this->_params['amount'] = $params['fee_amount'];
       $this->_params['amount_level'] = $params['amount_level'];
-      $this->_params['currencyID'] = $config->defaultCurrency;
-      $this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
 
       // at this point we've created a contact and stored its address etc
       // all the payment processors expect the name and address to be in the
       // so we copy stuff over to first_name etc.
       $paymentParams = $this->_params;
-      if (!empty($this->_params['send_receipt'])) {
+      if ($this->getSubmittedValue('send_receipt')) {
         $paymentParams['email'] = $this->getContactValue('email_primary.email');
       }
 
@@ -976,14 +940,16 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       // so more conservative approach is called for.
       // In fact the use of $params and $this->_params & $this->_contactId vs $contactID
       // needs rationalising.
-      $mapParams = array_merge(['contact_id' => $contactID], $this->_params);
-      CRM_Core_Payment_Form::mapParams($this->_bltID, $mapParams, $paymentParams, TRUE);
+      $mapParams = array_merge(['contact_id' => $contactID], $this->getSubmittedValues());
+      CRM_Core_Payment_Form::mapParams(NULL, $mapParams, $paymentParams, TRUE);
 
       $payment = $this->_paymentProcessor['object'];
 
       // CRM-15622: fix for incorrect contribution.fee_amount
       $paymentParams['fee_amount'] = NULL;
+      $paymentParams['description'] = $this->getSourceText();
       try {
+        $paymentParams['invoiceID'] = $this->getInvoiceID();
         $result = $payment->doPayment($paymentParams);
       }
       catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
@@ -1000,24 +966,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
         $this->_params = array_merge($this->_params, $result);
       }
 
-      $this->_params['receive_date'] = $now;
-
-      if (!empty($this->_params['send_receipt'])) {
-        $this->_params['receipt_date'] = $now;
-      }
-      else {
-        $this->_params['receipt_date'] = NULL;
-      }
-
-      $this->set('params', $this->_params);
-      //add contribution record
-      $this->_params['financial_type_id']
-        = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['event_id'], 'financial_type_id');
-      $this->_params['mode'] = $this->_mode;
-
       //add contribution record
       $contributions[] = $contribution = $this->processContribution(
-        $this, $this->_params,
+        $this->_params,
         $result, $contactID,
         FALSE,
         $this->_paymentProcessor
@@ -1025,23 +976,11 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
 
       // add participant record
       $participants = [];
-      if (!empty($this->_params['role_id']) && is_array($this->_params['role_id'])) {
-        $this->_params['role_id'] = implode(CRM_Core_DAO::VALUE_SEPARATOR,
-          $this->_params['role_id']
-        );
-      }
 
       //CRM-15372 patch to fix fee amount replacing amount
       $this->_params['fee_amount'] = $this->_params['amount'];
 
-      $participants[] = $this->addParticipant($this, $this->_params, $contactID);
-
-      //add custom data for participant
-      CRM_Core_BAO_CustomValueTable::postProcess($this->_params,
-        'civicrm_participant',
-        $participants[0]->id,
-        'Participant'
-      );
+      $participants[] = $this->addParticipant($this->_params, $contactID);
 
       // Add participant payment
       $participantPaymentParams = [
@@ -1059,12 +998,30 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $participants = [];
       foreach ($this->_contactIds as $contactID) {
         $commonParams = $params;
+        $commonParams['source'] = $this->getSourceText();
         $commonParams['contact_id'] = $contactID;
         $participants[] = CRM_Event_BAO_Participant::create($commonParams);
       }
 
       $contributions = [];
       if (!empty($params['record_contribution'])) {
+        $contributionParams = [
+          'skipLineItem' => 1,
+          'skipCleanMoney' => TRUE,
+          'total_amount' => $this->getSubmittedValue('total_amount'),
+          'revenue_recognition_date' => $this->getRevenueRecognitionDate(),
+          'source' => $this->getSourceText(),
+          'non_deductible_amount' => 'null',
+          'financial_type_id' => $this->getSubmittedValue('financial_type_id'),
+          'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+          'trxn_id' => $this->getSubmittedValue('trxn_id'),
+          'contribution_status_id' => $this->getSubmittedValue('contribution_status_id'),
+          'check_number' => $this->getSubmittedValue('check_number'),
+          'campaign_id' => $this->getSubmittedValue('campaign_id'),
+          'pan_truncation' => $this->getSubmittedValue('pan_truncation'),
+          'card_type_id' => $this->getSubmittedValue('card_type_id'),
+          'receive_date' => $this->getSubmittedValue('receive_date') ?: $now,
+        ];
         if (!empty($params['id'])) {
           if ($this->_onlinePendingContributionId) {
             $contributionParams['id'] = $this->_onlinePendingContributionId;
@@ -1078,41 +1035,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
           }
         }
         unset($params['note']);
-
-        //build contribution params
-        if (!$this->_onlinePendingContributionId) {
-          if (empty($params['source'])) {
-            $contributionParams['source'] = ts('%1 : Offline registration (by %2)', [
-              1 => $this->getEventValue('title'),
-              2 => $userName,
-            ]);
-          }
-          else {
-            $contributionParams['source'] = $params['source'];
-          }
-        }
-
-        $contributionParams['currency'] = $config->defaultCurrency;
-        $contributionParams['non_deductible_amount'] = 'null';
-        $contributionParams['receipt_date'] = !empty($params['send_receipt']) ? CRM_Utils_Array::value('receive_date', $params) : 'null';
+        $contributionParams['currency'] = $this->getCurrency();
         $contributionParams['contact_id'] = $this->_contactID;
-        $contributionParams['receive_date'] = !(empty($params['receive_date'])) ? $params['receive_date'] : $now;
-
-        $recordContribution = [
-          'financial_type_id',
-          'payment_instrument_id',
-          'trxn_id',
-          'contribution_status_id',
-          'check_number',
-          'campaign_id',
-          'pan_truncation',
-          'card_type_id',
-        ];
 
-        foreach ($recordContribution as $f) {
-          $contributionParams[$f] = $this->_params[$f] ?? NULL;
-        }
-        $contributionParams['skipLineItem'] = 1;
         if ($this->_id) {
           $contributionParams['contribution_mode'] = 'participant';
           $contributionParams['participant_id'] = $this->_id;
@@ -1173,12 +1098,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
         }
 
         // CRM-11124
-        if ($this->_params['discount_id']) {
+        if ($this->getSubmittedValue('discount_id')) {
           CRM_Event_BAO_Participant::createDiscountTrxn(
             $this->_eventId,
             $contributionParams,
             NULL,
-            CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($this->_params)
+            CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($this->getSubmittedValues())
           );
         }
       }
@@ -1311,6 +1236,14 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    * @throws \Exception
    */
   public function buildEventFeeForm($form) {
+    //as when call come from register.php
+    if (!$form->_eventId) {
+      $form->_eventId = CRM_Utils_Request::retrieve('eventId', 'Positive', $form);
+    }
+
+    $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form);
+    $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form);
+
     if ($form->_eventId) {
       $form->_isPaidEvent = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'is_monetary');
       if ($form->_isPaidEvent) {
@@ -1326,7 +1259,8 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       CRM_Event_BAO_Event::retrieve($params, $event);
 
       //retrieve custom information
-      $form->_values = [];
+      $this->_values = [];
+      $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'participant');
       CRM_Event_Form_Registration::initEventFee($form, FALSE, $this->getPriceSetID());
       if ($form->_context === 'standalone' || $form->_context === 'participant') {
         $discountedEvent = CRM_Core_BAO_Discount::getOptionGroup($event['id'], 'civicrm_event');
@@ -1367,7 +1301,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
           $discounts[$key] = $value['name'];
         }
 
-        $element = $form->add('select', 'discount_id',
+        $form->add('select', 'discount_id',
           ts('Discount Set'),
           [
             0 => ts('- select -'),
@@ -1487,37 +1421,16 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    */
   protected function preparePaidEventProcessing($params): array {
     $participantStatus = CRM_Event_PseudoConstant::participantStatus();
-    $contributionParams = [
-      'skipCleanMoney' => TRUE,
-      'revenue_recognition_date' => $this->getRevenueRecognitionDate(),
-    ];
     $lineItem = [];
-    $additionalParticipantDetails = [];
 
     if ($this->isPaymentOnExistingContribution()) {
-      $contributionParams['total_amount'] = $this->getParticipantValue('fee_amount');
-
-      $params['discount_id'] = NULL;
       //re-enter the values for UPDATE mode
       $params['fee_level'] = $params['amount_level'] = $this->getParticipantValue('fee_level');
       $params['fee_amount'] = $this->getParticipantValue('fee_amount');
-
-      //also add additional participant's fee level/priceset
-      if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) {
-        $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id);
-        $hasLineItems = $params['priceSetId'] ?? FALSE;
-        $additionalParticipantDetails = $this->getFeeDetails($additionalIds, $hasLineItems);
-      }
     }
     else {
-
-      // check that discount_id is set
-      if (empty($params['discount_id'])) {
-        $params['discount_id'] = 'null';
-      }
-
       //lets carry currency, CRM-4453
-      $params['fee_currency'] = CRM_Core_Config::singleton()->defaultCurrency;
+      $params['fee_currency'] = $this->getCurrency();
       if (!isset($lineItem[0])) {
         $lineItem[0] = [];
       }
@@ -1528,7 +1441,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       //when financial_type_id is passed in form, update the
       //lineitems with the financial type selected in form
       $submittedFinancialType = $params['financial_type_id'] ?? NULL;
-      $isPaymentRecorded = $params['record_contribution'] ?? NULL;
+      $isPaymentRecorded = $this->getSubmittedValue('record_contribution');
       if ($isPaymentRecorded && $this->isQuickConfig() && $submittedFinancialType) {
         foreach ($lineItem[0] as &$values) {
           $values['financial_type_id'] = $submittedFinancialType;
@@ -1536,7 +1449,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       }
 
       $params['fee_level'] = $params['amount_level'];
-      $contributionParams['total_amount'] = $params['amount'];
       if ($this->isQuickConfig() && !empty($params['total_amount']) &&
         $params['status_id'] != array_search('Partially paid', $participantStatus)
       ) {
@@ -1551,13 +1463,11 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     if (isset($params['priceSetId'])) {
       if (!empty($lineItem[0])) {
         $this->set('lineItem', $lineItem);
-
         $this->_lineItem = $lineItem;
-        $lineItem = array_merge($lineItem, $additionalParticipantDetails);
       }
     }
 
-    return [$contributionParams, $lineItem, $params];
+    return [$lineItem, $params];
   }
 
   /**
@@ -1571,10 +1481,18 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     $this->assign('event', ['confirm_email_text' => $receiptText]);
   }
 
+  /**
+   * Get the currency for the event.
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    return $this->getEventValue('currency') ?: \Civi::settings()->get('defaultCurrency');
+  }
+
   /**
    * Process the contribution.
    *
-   * @param CRM_Core_Form $form
    * @param array $params
    * @param array $result
    * @param int $contactID
@@ -1585,35 +1503,29 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    *
    * @throws \CRM_Core_Exception
    */
-  protected function processContribution(
-    &$form, $params, $result, $contactID,
+  protected function processContribution($params, $result, $contactID,
     $pending = FALSE,
     $paymentProcessor = NULL
   ) {
     $transaction = new CRM_Core_Transaction();
 
     $now = date('YmdHis');
-    $receiptDate = NULL;
-
-    if (!empty($form->_values['event']['is_email_confirm'])) {
-      $receiptDate = $now;
-    }
 
     // CRM-20264: fetch CC type ID and number (last 4 digit) and assign it back to $params
     CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params);
 
     $contribParams = [
       'contact_id' => $contactID,
-      'financial_type_id' => !empty($form->_values['event']['financial_type_id']) ? $form->_values['event']['financial_type_id'] : $params['financial_type_id'],
-      'receive_date' => $now,
+      'financial_type_id' => $this->getEventValue('financial_type_id'),
+      'receive_date' => $this->getSubmittedValue('receive_date') ?: $now,
       'total_amount' => $params['amount'],
       'tax_amount' => $params['tax_amount'],
       'amount_level' => $params['amount_level'],
-      'invoice_id' => $params['invoiceID'],
-      'currency' => $params['currencyID'],
-      'source' => !empty($params['participant_source']) ? $params['participant_source'] : $params['description'],
-      'is_pay_later' => $params['is_pay_later'] ?? 0,
-      'campaign_id' => $params['campaign_id'] ?? NULL,
+      'invoice_id' => $this->getInvoiceID(),
+      'currency' => $this->getCurrency(),
+      'source' => $this->getSourceText(),
+      'is_pay_later' => FALSE,
+      'campaign_id' => $this->getSubmittedValue('campaign_id'),
       'card_type_id' => $params['card_type_id'] ?? NULL,
       'pan_truncation' => $params['pan_truncation'] ?? NULL,
     ];
@@ -1627,7 +1539,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $contribParams += [
         'fee_amount' => $result['fee_amount'] ?? NULL,
         'trxn_id' => $result['trxn_id'],
-        'receipt_date' => $receiptDate,
       ];
     }
 
@@ -1638,7 +1549,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     }
 
     $contribParams['is_test'] = 0;
-    if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) === 'test') {
+    if ($this->getAction() & CRM_Core_Action::PREVIEW || ($this->_mode ?? NULL) === 'test') {
       $contribParams['is_test'] = 1;
     }
 
@@ -1658,7 +1569,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     // create contribution record
     $contribution = CRM_Contribute_BAO_Contribution::add($contribParams);
     // CRM-11124
-    CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
+    CRM_Event_BAO_Participant::createDiscountTrxn($this->getEventID(), $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
 
     $transaction->commit();
 
@@ -1668,71 +1579,40 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
   /**
    * Process the participant.
    *
-   * @param CRM_Core_Form $form
    * @param array $params
    * @param int $contactID
    *
    * @return \CRM_Event_BAO_Participant
    * @throws \CRM_Core_Exception
    */
-  protected function addParticipant(&$form, $params, $contactID) {
+  protected function addParticipant($params, $contactID) {
     $transaction = new CRM_Core_Transaction();
-
-    $participantFields = CRM_Event_DAO_Participant::fields();
     $participantParams = [
       'id' => $params['participant_id'] ?? NULL,
       'contact_id' => $contactID,
-      'event_id' => $form->_eventId ? $form->_eventId : $params['event_id'],
-      'status_id' => CRM_Utils_Array::value('participant_status',
-        $params, 1
-      ),
-      'role_id' => CRM_Utils_Array::value('participant_role_id', $params) ?: CRM_Event_BAO_Participant::getDefaultRoleID(),
-      'register_date' => $params['register_date'],
-      'source' => CRM_Utils_String::ellipsify(
-        isset($params['participant_source']) ? CRM_Utils_Array::value('participant_source', $params) : CRM_Utils_Array::value('description', $params),
-        $participantFields['participant_source']['maxlength']
-      ),
+      'event_id' => $this->getEventID(),
+      'status_id' => $this->getSubmittedValue('status_id'),
+      'role_id' => $this->getSubmittedValue('role_id'),
+      'register_date' => $this->getSubmittedValue('register_date'),
+      'source' => $this->getSourceText(),
       'fee_level' => $params['amount_level'] ?? NULL,
-      'is_pay_later' => $params['is_pay_later'] ?? 0,
+      'is_pay_later' => FALSE,
       'fee_amount' => $params['fee_amount'] ?? NULL,
-      'registered_by_id' => $params['registered_by_id'] ?? NULL,
-      'discount_id' => $params['discount_id'] ?? NULL,
-      'fee_currency' => $params['currencyID'] ?? NULL,
-      'campaign_id' => $params['campaign_id'] ?? NULL,
+      'fee_currency' => $this->getCurrency(),
+      'campaign_id' => $this->getSubmittedValue('campaign_id'),
+      'note' => $this->getSubmittedValue('note'),
+      'is_test' => ($this->_mode === 'test)'),
     ];
-
-    if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) == 'test') {
-      $participantParams['is_test'] = 1;
-    }
-    else {
-      $participantParams['is_test'] = 0;
-    }
-
-    if (!empty($form->_params['note'])) {
-      $participantParams['note'] = $form->_params['note'];
-    }
-    elseif (!empty($form->_params['participant_note'])) {
-      $participantParams['note'] = $form->_params['participant_note'];
-    }
-
-    // reuse id if one already exists for this one (can happen
-    // with back button being hit etc)
-    if (!$participantParams['id'] && !empty($params['contributionID'])) {
-      $pID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment',
-        $params['contributionID'],
-        'participant_id',
-        'contribution_id'
-      );
-      $participantParams['id'] = $pID;
-    }
-    $participantParams['discount_id'] = CRM_Core_BAO_Discount::findSet($form->_eventId, 'civicrm_event');
-
-    if (!$participantParams['discount_id']) {
-      $participantParams['discount_id'] = "null";
-    }
-
+    $participantParams['discount_id'] = $this->getSubmittedValue('discount_id');
     $participant = CRM_Event_BAO_Participant::create($participantParams);
 
+    // Add custom data for participant
+    $submittedValues = $this->getSubmittedValues();
+    CRM_Core_BAO_CustomValueTable::postProcess($submittedValues,
+      'civicrm_participant',
+      $participant->id,
+      'Participant'
+    );
     $transaction->commit();
 
     return $participant;
@@ -1958,6 +1838,7 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
         'PDFFilename' => ts('confirmation') . '.pdf',
         'modelProps' => [
           'participantID' => $participantID,
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'eventID' => $params['event_id'],
           'contributionID' => $contributionID,
         ],
@@ -1976,6 +1857,12 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
       }
       [$mailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
       if ($mailSent) {
+        if ($contributionID) {
+          Contribution::update(FALSE)
+            ->addWhere('id', '=', $contributionID)
+            ->setValues(['receipt_date' => 'now'])
+            ->execute();
+        }
         $sent[] = $contactID;
         $participant->details = $this->getSubmittedValue('receipt_text');
         CRM_Activity_BAO_Activity::addActivity($participant, 'Email');
@@ -2000,6 +1887,9 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
    * @noinspection PhpUnhandledExceptionInspection
    */
   public function getDiscountID(): ?int {
+    if ($this->getSubmittedValue('discount_id')) {
+      return $this->getSubmittedValue('discount_id');
+    }
     if ($this->_discountId === NULL) {
       if ($this->getParticipantID()) {
         $this->_discountId = (int) CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->getParticipantID(), 'discount_id');
@@ -2088,4 +1978,30 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
     return $this->_contactID;
   }
 
+  /**
+   * Get the text for the participant & contribution source fields.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  private function getSourceText(): string {
+    $maxLength = CRM_Event_DAO_Participant::fields()['participant_source']['maxlength'];
+    if ($this->getSubmittedValue('source')) {
+      return CRM_Utils_String::ellipsify($this->getSubmittedValue('source'), $maxLength);
+    }
+    return CRM_Utils_String::ellipsify(ts('Offline Registration for Event: %2 by: %1', [
+      1 => CRM_Core_Session::singleton()->getLoggedInContactDisplayName(),
+      2 => $this->getEventValue('title'),
+    ]), $maxLength);
+  }
+
+  /**
+   * @return string
+   */
+  public function getInvoiceID(): string {
+    if (!$this->invoiceID) {
+      $this->invoiceID = md5(uniqid(rand(), TRUE));
+    }
+    return $this->invoiceID;
+  }
+
 }
diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
index cbb5c49bc8..9a9ca95276 100644
--- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
+++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
@@ -176,6 +176,7 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form {
     //retrieve custom information
     $this->_values = [];
 
+    $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_participantId, 'participant');
     CRM_Event_Form_Registration::initEventFee($this, $this->_action !== CRM_Core_Action::UPDATE, $this->getPriceSetID());
     CRM_Event_Form_Registration_Register::buildAmount($this, TRUE, NULL, $this->getPriceSetID());
 
diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php
index f73508bbb4..f94dd144d5 100644
--- a/civicrm/CRM/Event/Form/Registration.php
+++ b/civicrm/CRM/Event/Form/Registration.php
@@ -21,6 +21,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
 
   use CRM_Financial_Form_FrontEndPaymentFormTrait;
   use CRM_Event_Form_EventFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the event we are processing.
@@ -314,7 +315,19 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
 
       $priceSetID = $this->getPriceSetID();
       if ($priceSetID) {
+        $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_participantId, 'participant');
         self::initEventFee($this, TRUE, $priceSetID);
+
+        //fix for non-upgraded price sets.CRM-4256.
+        if (isset($this->_isPaidEvent)) {
+          $isPaidEvent = $this->_isPaidEvent;
+        }
+        else {
+          $isPaidEvent = $this->_values['event']['is_monetary'] ?? NULL;
+        }
+        if ($isPaidEvent && empty($this->_values['fee'])) {
+          CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $this->_eventId)]));
+        }
         $this->assign('quickConfig', $this->isQuickConfig());
       }
 
@@ -379,12 +392,8 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       );
       CRM_Utils_System::redirect($url);
     }
-    // The concept of contributeMode is deprecated.
-    $this->_contributeMode = $this->get('contributeMode');
-    $this->assign('contributeMode', $this->_contributeMode);
-
-    $this->assign('paidEvent', $this->_values['event']['is_monetary']);
 
+    $this->assign('paidEvent', $this->getEventValue('is_monetary'));
     // we do not want to display recently viewed items on Registration pages
     $this->assign('displayRecent', FALSE);
 
@@ -471,7 +480,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       }
     }
 
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, $this->_bltID));
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params));
 
     if ($this->getSubmittedValue('credit_card_number')) {
       if (isset($params['credit_card_exp_date'])) {
@@ -609,15 +618,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       return;
     }
 
-    // get price info
-    if ($form->_action & CRM_Core_Action::UPDATE) {
-      if (in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) {
-        $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'participant');
-      }
-      else {
-        $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_participantId, 'participant');
-      }
-    }
     $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, NULL, $doNotIncludeExpiredFields);
     $form->_priceSet = $priceSet[$priceSetId] ?? NULL;
     $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL;
@@ -662,14 +662,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     if (!is_array($eventFee) || empty($eventFee)) {
       $form->_values['fee'] = [];
     }
-
-    //fix for non-upgraded price sets.CRM-4256.
-    if (isset($form->_isPaidEvent)) {
-      $isPaidEvent = $form->_isPaidEvent;
-    }
-    else {
-      $isPaidEvent = $form->_values['event']['is_monetary'] ?? NULL;
-    }
     if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()
       && !empty($form->_values['fee'])
     ) {
@@ -681,11 +673,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
         }
       }
     }
-    if ($isPaidEvent && empty($form->_values['fee'])) {
-      if (!in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) {
-        CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $form->_eventId)]));
-      }
-    }
   }
 
   /**
@@ -965,6 +952,17 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     return $totalCount;
   }
 
+  /**
+   * Get id of participant being acted on.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   */
+  public function getParticipantID(): ?int {
+    return $this->_participantId;
+  }
+
   /**
    * Format user submitted price set params.
    *
@@ -1593,10 +1591,9 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       $this->set('participantInfo', $this->_participantInfo);
     }
 
-    //send mail Confirmation/Receipt
-    if ($this->_contributeMode != 'checkout' ||
-      $this->_contributeMode != 'notify'
+    if ($this->getPaymentProcessorObject()->supports('noReturn')
     ) {
+      // Send mail Confirmation/Receipt.
       $this->sendMails($params, $registerByID, $participantCount);
     }
   }
@@ -1731,4 +1728,25 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID());
   }
 
+  /**
+   * Get the currency for the form.
+   *
+   * Rather historic - might have unneeded stuff
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    $currency = $this->_values['currency'] ?? NULL;
+    // For event forms, currency is in a different spot
+    if (empty($currency)) {
+      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+    }
+    if (empty($currency)) {
+      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    }
+    // @todo If empty there is a problem - we should probably put in a deprecation notice
+    // to warn if that seems to be happening.
+    return $currency;
+  }
+
 }
diff --git a/civicrm/CRM/Event/Form/Registration/Confirm.php b/civicrm/CRM/Event/Form/Registration/Confirm.php
index 5d84a66b68..daec9350a1 100644
--- a/civicrm/CRM/Event/Form/Registration/Confirm.php
+++ b/civicrm/CRM/Event/Form/Registration/Confirm.php
@@ -124,7 +124,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    * @throws \CRM_Core_Exception
    */
   private function preProcessExpress() {
-    if ($this->_contributeMode !== 'express') {
+    if ($this->getPaymentProcessorValue('payment_processor_type_id:name') !== 'PayPal_Express') {
       return FALSE;
     }
     $params = [];
@@ -216,10 +216,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         $taxAmount += $v['tax_amount'];
         if (is_array($v)) {
           $this->cleanMoneyFields($v);
-          foreach ([
-            'first_name',
-            'last_name',
-          ] as $name) {
+          foreach (['first_name', 'last_name'] as $name) {
             if (isset($v['billing_' . $name]) &&
               !isset($v[$name])
             ) {
@@ -245,9 +242,9 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           }
 
           $this->_amount[$k]['label'] = preg_replace('//', '', $v['amount_level']) . '  -  ' . $append;
-          $this->_part[$k]['info'] = ($v['first_name'] ?? '') . ' ' . ($v['last_name'] ?? '');
+          $participantDetails[$k]['info'] = ($v['first_name'] ?? '') . ' ' . ($v['last_name'] ?? '');
           if (empty($v['first_name'])) {
-            $this->_part[$k]['info'] = $append;
+            $participantDetails[$k]['info'] = $append;
           }
 
           /*CRM-16320 */
@@ -260,18 +257,20 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         }
       }
 
-      if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+      if (\Civi::settings()->get('invoicing')) {
         $this->assign('totalTaxAmount', $taxAmount);
-        $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm());
+        $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
         $this->assign('individual', $individual);
         $this->set('individual', $individual);
       }
 
-      $this->assign('part', $this->_part);
-      $this->set('part', $this->_part);
+      $this->assign('part', $participantDetails);
+      $this->set('part', $participantDetails);
       $this->assign('amounts', $this->_amount);
       $this->assign('totalAmount', $this->_totalAmount);
       $this->set('totalAmount', $this->_totalAmount);
+      // This use of the ts function uses the legacy interpolation of the button name to avoid translations having to be re-done.
+      $this->assign('verifyText', !$this->_totalAmount ? ts('Click <strong>%1</strong> to complete your registration.', [1 => ts('Register')]) : $this->getPaymentProcessorObject()->getText('eventContinueText', []));
 
       $showPaymentOnConfirm = (in_array($this->_eventId, \Civi::settings()->get('event_show_payment_on_confirm')) || in_array('all', \Civi::settings()->get('event_show_payment_on_confirm')));
       $this->assign('showPaymentOnConfirm', $showPaymentOnConfirm);
@@ -305,7 +304,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //consider total amount.
     $this->assign('isAmountzero', $this->_totalAmount <= 0);
 
-    $contribButton = ts('Register');
     $this->addButtons([
       [
         'type' => 'back',
@@ -313,7 +311,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
       ],
       [
         'type' => 'next',
-        'name' => $contribButton,
+        'name' => ts('Register'),
         'isDefault' => TRUE,
       ],
     ]);
@@ -372,10 +370,10 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    */
   public static function formRule($fields, $files, $form) {
     $errors = [];
-    $eventFull = CRM_Event_BAO_Participant::eventFull($form->_eventId, FALSE, $form->_values['event']['has_waitlist'] ?? FALSE);
+    $eventFull = CRM_Event_BAO_Participant::eventFull($form->getEventID(), FALSE, $form->_values['event']['has_waitlist'] ?? FALSE);
     if ($eventFull && empty($form->_allowConfirmation)) {
       if (empty($form->_allowWaitlist)) {
-        CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$form->_eventId}", FALSE, NULL, FALSE, TRUE));
+        CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$form->getEventID()}", FALSE, NULL, FALSE, TRUE));
       }
     }
     $form->_feeBlock = $form->_values['fee'];
@@ -458,21 +456,21 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //unset the skip participant from params.
     //build the $participantCount array.
     //maintain record for all participants.
-    foreach ($params as $participantNum => $record) {
-      if ($record === 'skip') {
+    foreach ($params as $participantNum => $participantRecord) {
+      if ($participantRecord === 'skip') {
         unset($params[$participantNum]);
         $participantCount[$participantNum] = 'skip';
       }
       elseif ($participantNum) {
         $participantCount[$participantNum] = 'participant';
       }
-      $totalTaxAmount += $record['tax_amount'] ?? 0;
-      if (!empty($record['is_primary'])) {
+      $totalTaxAmount += $participantRecord['tax_amount'] ?? 0;
+      if (!empty($participantRecord['is_primary'])) {
         $taxAmount = &$params[$participantNum]['tax_amount'];
       }
       //lets get additional participant id to cancel.
       if ($this->_allowConfirmation && is_array($cancelledIds)) {
-        $additionalId = $record['participant_id'] ?? NULL;
+        $additionalId = $participantRecord['participant_id'] ?? NULL;
         if ($additionalId && $key = array_search($additionalId, $cancelledIds)) {
           unset($cancelledIds[$key]);
         }
@@ -483,59 +481,48 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     $paymentObjError = ts('The system did not record payment details for this payment and so could not process the transaction. Please report this error to the site administrator.');
 
     $fields = [];
-    foreach ($params as $key => $value) {
-      CRM_Event_Form_Registration_Confirm::fixLocationFields($value, $fields, $this);
-      if ($this->_allowWaitlist
-        || $this->_requireApproval
-        || (!empty($value['is_pay_later']) && !$this->_isBillingAddressRequiredForPayLater)
-        || empty($value['is_primary'])
-      ) {
-        // This is confusing because unnecessary code around it has been removed. It is not
-        // clear why we do this / whether we should.
-        if (!empty($value['is_pay_later'])) {
-          $this->_values['params']['is_pay_later'] = TRUE;
-        }
-      }
+    foreach ($params as $participantRecord) {
+      CRM_Event_Form_Registration_Confirm::fixLocationFields($participantRecord, $fields, $this);
 
       //Unset ContactID for additional participants and set RegisterBy Id.
-      if (empty($value['is_primary'])) {
-        $contactID = $value['contact_id'] ?? NULL;
+      if (empty($participantRecord['is_primary'])) {
+        $contactID = $participantRecord['contact_id'] ?? NULL;
         $registerByID = $this->get('registerByID');
         if ($registerByID) {
-          $value['registered_by_id'] = $registerByID;
+          $participantRecord['registered_by_id'] = $registerByID;
         }
       }
       else {
-        $value['amount'] = $this->_totalAmount;
+        $participantRecord['amount'] = $this->_totalAmount;
       }
 
-      $contactID = CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $value, $fields, $this);
+      $contactID = CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $participantRecord, $fields, $this);
 
       // lets store the contactID in the session
       // we dont store in userID in case the user is doing multiple
       // transactions etc
       // for things like tell a friend
-      if (!$this->getContactID() && !empty($value['is_primary'])) {
+      if (!$this->getContactID() && !empty($participantRecord['is_primary'])) {
         CRM_Core_Session::singleton()->set('transaction.userID', $contactID);
       }
 
-      $value['description'] = ts('Online Event Registration') . ': ' . $this->_values['event']['title'];
-      $value['accountingCode'] = $this->_values['event']['accountingCode'] ?? NULL;
+      $participantRecord['description'] = ts('Online Event Registration') . ': ' . $this->_values['event']['title'];
+      $participantRecord['accountingCode'] = $this->_values['event']['accountingCode'] ?? NULL;
 
       $pending = FALSE;
       if ($this->_allowWaitlist || $this->_requireApproval) {
         //get the participant statuses.
         $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
         if ($this->_allowWaitlist) {
-          $value['participant_status_id'] = $value['participant_status'] = array_search('On waitlist', $waitingStatuses);
+          $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search('On waitlist', $waitingStatuses);
         }
         else {
-          $value['participant_status_id'] = $value['participant_status'] = array_search('Awaiting approval', $waitingStatuses);
+          $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search('Awaiting approval', $waitingStatuses);
         }
 
         //there might be case user selected pay later and
         //now becomes part of run time waiting list.
-        $value['is_pay_later'] = FALSE;
+        $participantRecord['is_pay_later'] = FALSE;
       }
       elseif ($this->_values['event']['is_monetary']) {
         // required only if paid event
@@ -544,116 +531,112 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         }
         if (!empty($this->_paymentProcessor) &&  $this->_paymentProcessor['object']->supports('preApproval')) {
           $preApprovalParams = $this->_paymentProcessor['object']->getPreApprovalDetails($this->get('pre_approval_parameters'));
-          $value = array_merge($value, $preApprovalParams);
+          $participantRecord = array_merge($participantRecord, $preApprovalParams);
         }
-        $result = NULL;
+        $doPaymentResult = NULL;
 
-        if (!empty($value['is_pay_later']) ||
-          $value['amount'] == 0 ||
+        if (!empty($participantRecord['is_pay_later']) ||
+          $participantRecord['amount'] == 0 ||
           // The concept of contributeMode is deprecated.
-          $this->_contributeMode == 'checkout' ||
-          $this->_contributeMode == 'notify'
+          $this->getPaymentProcessorObject()->supports('noReturn')
         ) {
-          if ($value['amount'] != 0) {
+          if ($participantRecord['amount'] != 0) {
             $pending = TRUE;
             //get the participant statuses.
             $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Pending'");
-            $status = !empty($value['is_pay_later']) ? 'Pending from pay later' : 'Pending from incomplete transaction';
-            $value['participant_status_id'] = $value['participant_status'] = array_search($status, $pendingStatuses);
+            $status = !empty($participantRecord['is_pay_later']) ? 'Pending from pay later' : 'Pending from incomplete transaction';
+            $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search($status, $pendingStatuses);
           }
         }
-        elseif (!empty($value['is_primary'])) {
-          CRM_Core_Payment_Form::mapParams($this->_bltID, $value, $value, TRUE);
+        elseif (!empty($participantRecord['is_primary'])) {
+          CRM_Core_Payment_Form::mapParams($this->_bltID, $participantRecord, $participantRecord, TRUE);
           // payment email param can be empty for _bltID mapping
           // thus provide mapping for it with a different email value
-          if (empty($value['email'])) {
-            $value['email'] = CRM_Utils_Array::valueByRegexKey('/^email-/', $value);
+          if (empty($participantRecord['email'])) {
+            $participantRecord['email'] = CRM_Utils_Array::valueByRegexKey('/^email-/', $participantRecord);
           }
 
           if (is_object($payment)) {
-            // Not quite sure why we don't just user $value since it contains the data
-            // from result
-            // @todo ditch $result & retest.
             // If registering from waitlist participant_id is set but contact_id is not.
             // We need a contact ID to process the payment so set the "primary" contact ID.
-            $value['contactID'] = empty($value['contact_id']) ? (int) $contactID : (int) $value['contact_id'];
+            $participantRecord['contactID'] = empty($participantRecord['contact_id']) ? (int) $contactID : (int) $participantRecord['contact_id'];
             // contactID is the correct parameter to pass to the processor.
             // However, we still pass contact_id as the same value as was previously being assigned,
             // in case some processors are expecting that.
             // (especially since this was recently not passing the correct value).
             // https://docs.civicrm.org/dev/en/latest/extensions/payment-processors/create/#getpaymentformfields
-            if (empty($value['contact_id'])) {
-              $value['contact_id'] = $value['contactID'];
+            if (empty($participantRecord['contact_id'])) {
+              $participantRecord['contact_id'] = $participantRecord['contactID'];
             }
-            [$result, $value] = $this->processPayment($payment, $value);
+            [$doPaymentResult, $participantRecord] = $this->processPayment($payment, $participantRecord);
           }
           else {
             throw new CRM_Core_Exception($paymentObjError);
           }
         }
 
-        $value['receive_date'] = $now;
+        $participantRecord['receive_date'] = $now;
         if ($this->_allowConfirmation) {
-          $value['participant_register_date'] = $this->_values['participant']['register_date'];
+          $participantRecord['participant_register_date'] = $this->_values['participant']['register_date'];
         }
 
-        $createContrib = $value['amount'] != 0;
+        $createContrib = $participantRecord['amount'] != 0;
         // force to create zero amount contribution, CRM-5095
-        if (!$createContrib && ($value['amount'] == 0)
+        if (!$createContrib && ($participantRecord['amount'] == 0)
           && $this->_priceSetId && $this->_lineItem
         ) {
           $createContrib = TRUE;
         }
 
-        if ($createContrib && !empty($value['is_primary']) &&
+        if ($createContrib && !empty($participantRecord['is_primary']) &&
           !$this->_allowWaitlist && !$this->_requireApproval
         ) {
           // if paid event add a contribution record
           //if primary participant contributing additional amount
           //append (multiple participants) to its fee level. CRM-4196.
           if (count($params) > 1) {
-            $value['amount_level'] .= ts(' (multiple participants)') . CRM_Core_DAO::VALUE_SEPARATOR;
+            $participantRecord['amount_level'] .= ts(' (multiple participants)') . CRM_Core_DAO::VALUE_SEPARATOR;
           }
 
           //passing contribution id is already registered.
-          $contribution = $this->processContribution($value, $result, $contactID, $pending);
-          $value['contributionID'] = $contribution->id;
-          $value['receive_date'] = $contribution->receive_date;
-          $value['trxn_id'] = $contribution->trxn_id;
-          $value['contributionID'] = $contribution->id;
+          $contribution = $this->processContribution($participantRecord, $doPaymentResult, $contactID, $pending);
+          $participantRecord['contributionID'] = $contribution->id;
+          $participantRecord['receive_date'] = $contribution->receive_date;
+          $participantRecord['trxn_id'] = $contribution->trxn_id;
+          $participantRecord['contributionID'] = $contribution->id;
         }
-        $value['contactID'] = $contactID;
-        $value['eventID'] = $this->_eventId;
-        $value['item_name'] = $value['description'];
+        $participantRecord['contactID'] = $contactID;
+        $participantRecord['eventID'] = $this->getEventID();
+        $participantRecord['item_name'] = $participantRecord['description'];
       }
 
-      if (!empty($value['contributionID'])) {
-        $this->_values['contributionId'] = $value['contributionID'];
+      if (!empty($participantRecord['contributionID'])) {
+        $this->_values['contributionId'] = $participantRecord['contributionID'];
       }
 
       //CRM-4453.
-      if (!empty($value['is_primary'])) {
-        $primaryCurrencyID = $value['currencyID'] ?? NULL;
+      if (!empty($participantRecord['is_primary'])) {
+        $primaryCurrencyID = $participantRecord['currencyID'] ?? NULL;
       }
-      if (empty($value['currencyID'])) {
-        $value['currencyID'] = $primaryCurrencyID;
+      if (empty($participantRecord['currencyID'])) {
+        $participantRecord['currencyID'] = $primaryCurrencyID;
       }
 
       // CRM-11182 - Confirmation page might not be monetary
       if ($this->_values['event']['is_monetary']) {
-        if (!$pending && !empty($value['is_primary']) &&
+        if (!$pending && !empty($participantRecord['is_primary']) &&
           !$this->_allowWaitlist && !$this->_requireApproval
         ) {
           // transactionID & receive date required while building email template
-          $this->assign('trxn_id', $value['trxn_id'] ?? NULL);
-          $this->assign('receive_date', CRM_Utils_Date::mysqlToIso($value['receive_date'] ?? NULL));
-          $this->set('receiveDate', CRM_Utils_Date::mysqlToIso($value['receive_date'] ?? NULL));
-          $this->set('trxnId', $value['trxn_id'] ?? NULL);
+          $this->assign('trxn_id', $participantRecord['trxn_id'] ?? NULL);
+          $this->assign('receive_date', CRM_Utils_Date::mysqlToIso($participantRecord['receive_date'] ?? NULL));
+          $this->set('receiveDate', CRM_Utils_Date::mysqlToIso($participantRecord['receive_date'] ?? NULL));
+          $this->set('trxnId', $participantRecord['trxn_id'] ?? NULL);
         }
       }
 
-      $value['fee_amount'] = $value['amount'] ?? NULL;
-      $this->set('value', $value);
+      $participantRecord['fee_amount'] = $participantRecord['amount'] ?? NULL;
+      $this->set('value', $participantRecord);
 
       // handle register date CRM-4320
       if ($this->_allowConfirmation) {
@@ -695,7 +678,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
 
       $entityTable = 'civicrm_participant';
       $totalTaxAmount = 0;
-      $dataArray = [];
       foreach ($this->_lineItem as $key => $value) {
         if ($value == 'skip') {
           continue;
@@ -708,21 +690,14 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           $lineItem[$this->_priceSetId] = $value;
           CRM_Price_BAO_LineItem::processPriceSet($entityId, $lineItem, $contribution, $entityTable);
         }
-        if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+        if (\Civi::settings()->get('invoicing')) {
           foreach ($value as $line) {
             if (isset($line['tax_amount']) && isset($line['tax_rate'])) {
               $totalTaxAmount = $line['tax_amount'] + $totalTaxAmount;
-              if (isset($dataArray[$line['tax_rate']])) {
-                $dataArray[$line['tax_rate']] = $dataArray[$line['tax_rate']] + ($line['tax_amount'] ?? 0);
-              }
-              else {
-                $dataArray[$line['tax_rate']] = $line['tax_amount'] ?? NULL;
-              }
             }
           }
         }
       }
-      $this->assign('dataArray', $dataArray);
       $this->assign('totalTaxAmount', $totalTaxAmount);
     }
 
@@ -750,8 +725,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
 
     // for Transfer checkout.
     // The concept of contributeMode is deprecated.
-    if (($this->_contributeMode == 'checkout' ||
-        $this->_contributeMode == 'notify'
+    if (($this->getPaymentProcessorObject()->supports('noReturn')
       ) && empty($params[0]['is_pay_later']) &&
       !$this->_allowWaitlist && !$this->_requireApproval &&
       $this->_totalAmount > 0
@@ -817,7 +791,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           }
 
           //get event custom field information
-          $groupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->_eventId, 0, $this->_values['event']['event_type_id']);
+          $groupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->getEventID(), 0, $this->_values['event']['event_type_id']);
           $primaryParticipant['eventCustomFields'] = $groupTree;
 
           // call postprocess hook before leaving
@@ -901,10 +875,8 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
             if ($lineItemValue = ($lineItems[$participantNum] ?? NULL)) {
               $lineItem[] = $lineItemValue;
             }
-            if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+            if (\Civi::settings()->get('invoicing')) {
               $individual = $this->get('individual');
-              $dataArray[key($dataArray)] = $individual[$participantNum]['totalTaxAmt'];
-              $this->assign('dataArray', $dataArray);
               $this->assign('totalAmount', $individual[$participantNum]['totalAmtWithTax']);
               $this->assign('totalTaxAmount', $individual[$participantNum]['totalTaxAmt']);
               $this->assign('individual', [$individual[$participantNum]]);
@@ -983,7 +955,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
       ];
     }
 
-    $allStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
+    $allStatuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate');
     $contribParams['contribution_status_id'] = array_search('Completed', $allStatuses);
     if ($pending) {
       $contribParams['contribution_status_id'] = array_search('Pending', $allStatuses);
@@ -1008,19 +980,14 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         $contribParams['revenue_recognition_date'] = date('Ymd', strtotime($eventStartDate));
       }
     }
-    //create an contribution address
-    // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although
-    // currently that is only inherited by back-office forms.
-    if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) {
-      $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params);
-    }
+    $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params);
 
     $contribParams['skipLineItem'] = 1;
     $contribParams['skipCleanMoney'] = 1;
     // create contribution record
     $contribution = CRM_Contribute_BAO_Contribution::add($contribParams);
     // CRM-11124
-    CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
+    CRM_Event_BAO_Participant::createDiscountTrxn($form->getEventID(), $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
 
     $transaction->commit();
 
@@ -1062,12 +1029,13 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     }
 
     // Add the billing names to the billing address, if a billing name is set
+    $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling();
     if (!empty($params['billing_first_name'])) {
-      $params["address_name-{$form->_bltID}"] = $params['billing_first_name'] . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . ($params['billing_last_name'] ?? '');
-      $fields["address_name-{$form->_bltID}"] = 1;
+      $params["address_name-{$billingLocationTypeID}"] = $params['billing_first_name'] . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . ($params['billing_last_name'] ?? '');
+      $fields["address_name-{$billingLocationTypeID}"] = 1;
     }
 
-    $fields["email-{$form->_bltID}"] = 1;
+    $fields["email-{$billingLocationTypeID}"] = 1;
     $fields['email-Primary'] = 1;
 
     //if its pay later or additional participant set email address as primary.
@@ -1075,9 +1043,9 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         !$form->_values['event']['is_monetary'] ||
         $form->_allowWaitlist ||
         $form->_requireApproval
-      ) && !empty($params["email-{$form->_bltID}"])
+      ) && !empty($params["email-{$billingLocationTypeID}"])
     ) {
-      $params['email-Primary'] = $params["email-{$form->_bltID}"];
+      $params['email-Primary'] = $params["email-{$billingLocationTypeID}"];
     }
   }
 
@@ -1185,7 +1153,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //get email primary first if exist
     $subscriptionEmail = ['email' => $params['email-Primary'] ?? NULL];
     if (!$subscriptionEmail['email']) {
-      $subscriptionEmail['email'] = $params["email-{$form->_bltID}"] ?? NULL;
+      $subscriptionEmail['email'] = $params['email-' . CRM_Core_BAO_LocationType::getBilling()] ?? NULL;
     }
     // subscribing contact to groups
     if (!empty($subscribeGroupIds) && $subscriptionEmail['email']) {
@@ -1312,20 +1280,20 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    * Process the payment, redirecting back to the page on error.
    *
    * @param \CRM_Core_Payment $payment
-   * @param $value
+   * @param array $value
    *
    * @return array
    */
-  private function processPayment($payment, $value) {
+  private function processPayment(\CRM_Core_Payment $payment, array $value): array {
     try {
       $params = $this->prepareParamsForPaymentProcessor($value);
-      $result = $payment->doPayment($params, 'event');
-      return [$result, $value];
+      $doPaymentResult = $payment->doPayment($params, 'event');
+      return [$doPaymentResult, $value];
     }
     catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
       Civi::log()->error('Payment processor exception: ' . $e->getMessage());
       CRM_Core_Session::singleton()->setStatus($e->getMessage());
-      CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "id={$this->_eventId}"));
+      CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "id={$this->getEventID()}"));
     }
     return [];
   }
diff --git a/civicrm/CRM/Event/Form/Registration/ThankYou.php b/civicrm/CRM/Event/Form/Registration/ThankYou.php
index 948294772a..474e3d5f8d 100644
--- a/civicrm/CRM/Event/Form/Registration/ThankYou.php
+++ b/civicrm/CRM/Event/Form/Registration/ThankYou.php
@@ -72,13 +72,17 @@ class CRM_Event_Form_Registration_ThankYou extends CRM_Event_Form_Registration {
   public function buildQuickForm() {
     // Assign the email address from a contact id lookup as in CRM_Event_BAO_Event->sendMail()
     $primaryContactId = $this->get('primaryContactId');
+    $email = NULL;
     if ($primaryContactId) {
       $email = CRM_Utils_Array::valueByRegexKey('/^email-/', current($this->_params));
       if (!$email) {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($primaryContactId);
       }
-      $this->assign('email', $email);
     }
+    $this->assign('email', $email ?? NULL);
+    $this->assign('eventConfirmText', $this->getEventValue('is_monetary') ? $this->getPaymentProcessorObject()->getText('eventConfirmText', []) : '');
+    $this->assign('eventConfirmEmailText', ($email && $this->getEventValue('is_monetary')) ? $this->getPaymentProcessorObject()->getText('eventConfirmEmailText', ['email' => $email]) : '');
+
     $this->assignToTemplate();
 
     $invoicing = CRM_Invoicing_Utils::isInvoicingEnabled();
diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php
index ae98507147..249da1cec5 100644
--- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php
+++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php
@@ -27,6 +27,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_participant_id;
+
   /**
    * contact id
    *
@@ -34,6 +35,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_contact_id;
+
   /**
    * name of the participant
    *
@@ -41,65 +43,80 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_contact_name;
+
   /**
    * email of participant
    *
    * @var string
    */
   protected $_contact_email;
+
   /**
    * event to be cancelled/transferred
    *
    * @var string
    */
   protected $_event_id;
+
   /**
    * event title
    *
    * @var string
    */
   protected $_event_title;
+
   /**
    * event title
    *
    * @var string
    */
   protected $_event_start_date;
+
   /**
    * action
    *
    * @var string
    */
   public $_action;
+
   /**
    * participant object
    *
    * @var string
    */
   protected $_participant = [];
+
   /**
    * participant values
    *
    * @var string
    */
   protected $_part_values;
+
   /**
    * details of event registration values
    *
    * @var array
    */
   protected $_details = [];
+
   /**
    * Is backoffice form?
    *
    * @var bool
    */
   protected $isBackoffice = FALSE;
+
   /**
    * @var string
    */
   protected $_userContext;
 
+  /**
+   * @var string
+   */
+  protected $_userChecksum;
+
   /**
    * Set variables up before form is built based on participant ID from URL
    *
@@ -149,19 +166,13 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
     }
     $details = array_merge($details, $selfServiceDetails);
     $this->assign('details', $details);
-    $this->selfsvcupdateUrl = CRM_Utils_System::url('civicrm/event/selfsvcupdate', "reset=1&id={$this->_participant_id}&id=0");
-    $this->selfsvcupdateText = ts('Update');
-    $this->selfsvcupdateButtonText = ts('Update');
-    // Based on those ids retrieve event and verify it is eligible
-    // for self update (event.start_date > today, event can be 'self_updated'
-    // retrieve contact name and email, and let user verify his/her identity
   }
 
   /**
    * buildQuickForm -populate input variables for source Event
    * to cancel or transfer to another person
    *
-   * return @void
+   * @return void
    */
   public function buildQuickForm() {
     $this->add('select', 'action', ts('Transfer or Cancel Registration'), [ts('-select-'), ts('Transfer'), ts('Cancel Registration')], TRUE);
@@ -182,7 +193,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
   /**
    * Set default values for contact
    *
-   * return @void
+   * @return void
    */
   public function setDefaultValues() {
     $this->_defaults = [];
@@ -212,15 +223,15 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Process submit form - based on user selection of action
    * transfer or cancel the event
    *
-   * return @void
+   * @return void
    */
   public function postProcess() {
     //if selection is cancel, cancel this participant' registration, process refund
-    //if transfer, process form to allow selection of transferree
+    //if transfer, process form to allow selection of transferee
     $params = $this->controller->exportValues($this->_name);
     $action = $params['action'];
     if ($action == "1") {
-      $this->transferParticipant($params);
+      $this->transferParticipant();
     }
     elseif ($action == "2") {
       $this->cancelParticipant($params);
@@ -231,9 +242,9 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Transfer to a new form, allowing selection of a new contact
    * based on email and name. The Event will be transferred to this new participant
    *
-   * return @void
+   * @return void
    */
-  public function transferParticipant($params) {
+  public function transferParticipant() {
     CRM_Utils_System::redirect(CRM_Utils_System::url(
       'civicrm/event/selfsvctransfer',
       [
@@ -250,12 +261,10 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Cancel this participant and finish, send cancellation email. At this point no
    * auto-cancellation of payment is handled, so payment needs to be manually cancelled
    *
-   * return @void
-   *
    * @throws \CRM_Core_Exception
    */
   public function cancelParticipant($params) {
-    //set participant record status to Cancelled, refund payment if possible
+    // Set participant record status to Cancelled, refund payment if possible
     // send email to participant and admin, and log Activity
     $value = [];
     $value['id'] = $this->_participant_id;
diff --git a/civicrm/CRM/Event/Form/Task/Badge.php b/civicrm/CRM/Event/Form/Task/Badge.php
index 69496c9598..0e1d02fb96 100644
--- a/civicrm/CRM/Event/Form/Task/Badge.php
+++ b/civicrm/CRM/Event/Form/Task/Badge.php
@@ -34,6 +34,13 @@ class CRM_Event_Form_Task_Badge extends CRM_Event_Form_Task {
    */
   public $_componentClause;
 
+  /**
+   * The context this page is being rendered in
+   *
+   * @var string
+   */
+  protected $_context;
+
   /**
    * Build all the data structures needed to build the form.
    *
diff --git a/civicrm/CRM/Event/Form/Task/Batch.php b/civicrm/CRM/Event/Form/Task/Batch.php
index 614696c11b..92e1becbf9 100644
--- a/civicrm/CRM/Event/Form/Task/Batch.php
+++ b/civicrm/CRM/Event/Form/Task/Batch.php
@@ -155,7 +155,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
       CRM_Core_BAO_CustomField::getFields('Participant', FALSE, FALSE, NULL, NULL, TRUE)
     );
     $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEventType, $customFields);
-    $this->_customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields);
+    $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields);
 
     foreach ($this->_participantIds as $participantId) {
       $roleId = CRM_Core_DAO::getFieldValue("CRM_Event_DAO_Participant", $participantId, 'role_id');
@@ -163,7 +163,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
       $eventTypeId = CRM_Core_DAO::getFieldValue("CRM_Event_DAO_Event", $eventId, 'event_type_id');
       foreach ($this->_fields as $name => $field) {
         if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) {
-          $customValue = $this->_customFields[$customFieldID] ?? NULL;
+          $customValue = $customFields[$customFieldID] ?? NULL;
           $entityColumnValue = [];
           if (!empty($customValue['extends_entity_column_value'])) {
             $entityColumnValue = explode(CRM_Core_DAO::VALUE_SEPARATOR,
@@ -331,11 +331,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
     }
 
     //set values for ipn code.
-    foreach ([
-      'fee_amount',
-      'check_number',
-      'payment_instrument_id',
-    ] as $field) {
+    foreach (['fee_amount', 'check_number', 'payment_instrument_id'] as $field) {
       if (!$input[$field] = CRM_Utils_Array::value($field, $params)) {
         $input[$field] = $contribution->$field;
       }
diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php
index ed4f806656..3cedb677e1 100644
--- a/civicrm/CRM/Event/Tokens.php
+++ b/civicrm/CRM/Event/Tokens.php
@@ -170,6 +170,9 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
    * @internal
    */
   protected function getEventTokenValues(int $eventID = NULL): array {
+    if (!$eventID) {
+      return [];
+    }
     $cacheKey = __CLASS__ . 'event_tokens' . $eventID . '_' . CRM_Core_I18n::getLocale();
     if ($this->checkPermissions) {
       $cacheKey .= '__' . CRM_Core_Session::getLoggedInContactID();
@@ -204,6 +207,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
           'pay_later_text',
           'pay_later_receipt',
           'fee_label',
+          'is_show_calendar_links:label',
           'custom.*',
         ], $this->getExposedFields()))
         ->execute()->first();
@@ -271,6 +275,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
       'confirm_email_text',
       'is_monetary',
       'fee_label',
+      'is_show_calendar_links',
     ];
   }
 
@@ -287,10 +292,11 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
    */
   protected function getTokenMetadataOverrides(): array {
     return [
+      'allow_selfcancelxfer' => ['audience' => 'sysadmin'],
+      'is_monetary' => ['audience' => 'sysadmin'],
       'is_public' => ['audience' => 'sysadmin'],
+      'is_show_calendar_links' => ['audience' => 'sysadmin'],
       'is_show_location' => ['audience' => 'sysadmin'],
-      'is_monetary' => ['audience' => 'sysadmin'],
-      'allow_selfcancelxfer' => ['audience' => 'sysadmin'],
       'selfcancelxfer_time' => ['audience' => 'sysadmin'],
     ];
   }
diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
index 22c02d1926..be46e2c807 100644
--- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
+++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
@@ -50,6 +50,17 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    */
   public $isShowParticipantCount;
 
+  /**
+   * What is the participant count, if 'specifically configured'.
+   *
+   * See getter notes.
+   *
+   * @var bool
+   *
+   * @scope tplParams as participantCount
+   */
+  public $participantCount;
+
   /**
    * @var int
    *
@@ -175,12 +186,28 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    * @throws \CRM_Core_Exception
    */
   public function getIsShowParticipantCount(): bool {
+    return (bool) $this->getParticipantCount();
+  }
+
+  /**
+   * Get the count of participants, where count is used in the line items.
+   *
+   * This might be the case where a line item represents a table of 6 people.
+   *
+   * Where the price field value does not record the participant count we ignore.
+   *
+   * This lack of specifying it is a bit unclear but seems to be 'presumed 1'.
+   * From the templates point of view it is not information to present if not
+   * configured.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getParticipantCount() {
+    $count = 0;
     foreach ($this->getLineItems() as $lineItem) {
-      if ((int) $lineItem['participant_count'] > 1) {
-        return TRUE;
-      }
+      $count += $lineItem['participant_count'];
     }
-    return FALSE;
+    return $count;
   }
 
   /**
diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php
index 9a2002d72e..2b26fd1028 100644
--- a/civicrm/CRM/Export/BAO/ExportProcessor.php
+++ b/civicrm/CRM/Export/BAO/ExportProcessor.php
@@ -1010,7 +1010,7 @@ class CRM_Export_BAO_ExportProcessor {
         if ($field == 'provider_id' || $field == 'im_provider') {
           $fieldValue = $imProviders[$fieldValue] ?? NULL;
         }
-        elseif (strstr($field, 'master_id')) {
+        elseif (str_contains($field, 'master_id')) {
           // @todo - why not just $field === 'master_id'  - what else would it be?
           $masterAddressId = $iterationDAO->$field ?? NULL;
           // get display name of contact that address is shared.
@@ -1126,11 +1126,7 @@ class CRM_Export_BAO_ExportProcessor {
 
         return CRM_Core_BAO_CustomField::displayValue($fieldValue, $cfID);
       }
-      elseif (in_array($field, [
-        'email_greeting',
-        'postal_greeting',
-        'addressee',
-      ])) {
+      elseif (in_array($field, ['email_greeting', 'postal_greeting', 'addressee'])) {
         //special case for greeting replacement
         $fldValue = "{$field}_display";
         return $iterationDAO->$fldValue;
@@ -2138,11 +2134,9 @@ WHERE  id IN ( $deleteIDString )
           $fieldValue = $imProviders[$relationValue] ?? NULL;
         }
         // CRM-13995
-        elseif (is_object($relDAO) && in_array($relationField, [
-          'email_greeting',
-          'postal_greeting',
-          'addressee',
-        ])) {
+        elseif (is_object($relDAO) &&
+          in_array($relationField, ['email_greeting', 'postal_greeting', 'addressee'])
+        ) {
           //special case for greeting replacement
           $fldValue = "{$relationField}_display";
           $fieldValue = $relDAO->$fldValue;
diff --git a/civicrm/CRM/Export/Form/Select.php b/civicrm/CRM/Export/Form/Select.php
index 2c83bc0e82..42601a11e5 100644
--- a/civicrm/CRM/Export/Form/Select.php
+++ b/civicrm/CRM/Export/Form/Select.php
@@ -91,7 +91,7 @@ class CRM_Export_Form_Select extends CRM_Core_Form_Task {
     $this->_matchingContacts = FALSE;
     if (($values['radio_ts'] ?? NULL) == 'ts_sel') {
       foreach ($values as $key => $value) {
-        if (strstr($key, 'mark_x')) {
+        if (str_contains($key, 'mark_x')) {
           $count++;
         }
         if ($count > 2) {
diff --git a/civicrm/CRM/Extension/Browser.php b/civicrm/CRM/Extension/Browser.php
index 5b7b683fd7..cf6dcae9d3 100644
--- a/civicrm/CRM/Extension/Browser.php
+++ b/civicrm/CRM/Extension/Browser.php
@@ -34,11 +34,6 @@ class CRM_Extension_Browser {
    */
   const SINGLE_FILE_PATH = '/single';
 
-  /**
-   * Timeout for when the connection or the server is slow
-   */
-  const CHECK_TIMEOUT = 5;
-
   /**
    * @var GuzzleHttp\Client
    */
@@ -219,9 +214,11 @@ class CRM_Extension_Browser {
 
     $url = $this->getRepositoryUrl() . $this->indexPath;
     $client = $this->getGuzzleClient();
+    // Timeout should be a minimum of 10 seconds. See https://lab.civicrm.org/infra/ops/-/issues/1009.
+    $timeout = max(10, \Civi::settings()->get('http_timeout'));
     try {
       $response = $client->request('GET', $url, [
-        'timeout' => \Civi::settings()->get('http_timeout'),
+        'timeout' => $timeout,
       ]);
     }
     catch (GuzzleException $e) {
diff --git a/civicrm/CRM/Extension/Downloader.php b/civicrm/CRM/Extension/Downloader.php
index ccd6d20884..a0cad95ffb 100644
--- a/civicrm/CRM/Extension/Downloader.php
+++ b/civicrm/CRM/Extension/Downloader.php
@@ -191,24 +191,31 @@ class CRM_Extension_Downloader {
     if ($res === TRUE) {
       $zipSubDir = CRM_Utils_Zip::guessBasedir($zip, $key);
       if ($zipSubDir === FALSE) {
+        \Civi::log()->error('Unable to extract the extension: bad directory structure');
         CRM_Core_Session::setStatus(ts('Unable to extract the extension: bad directory structure'), '', 'error');
         return FALSE;
       }
       $extractedZipPath = $this->tmpDir . DIRECTORY_SEPARATOR . $zipSubDir;
       if (is_dir($extractedZipPath)) {
         if (!CRM_Utils_File::cleanDir($extractedZipPath, TRUE, FALSE)) {
+          \Civi::log()->error('Unable to extract the extension {extension}: {path} cannot be cleared', [
+            'extension' => $key,
+            'path' => $extractedZipPath,
+          ]);
           CRM_Core_Session::setStatus(ts('Unable to extract the extension: %1 cannot be cleared', [1 => $extractedZipPath]), ts('Installation Error'), 'error');
           return FALSE;
         }
       }
       if (!$zip->extractTo($this->tmpDir)) {
+        \Civi::log()->error('Unable to extract the extension to {path}.', ['path' => $this->tmpDir]);
         CRM_Core_Session::setStatus(ts('Unable to extract the extension to %1.', [1 => $this->tmpDir]), ts('Installation Error'), 'error');
         return FALSE;
       }
       $zip->close();
     }
     else {
-      CRM_Core_Session::setStatus(ts('Unable to extract the extension.'), '', 'error');
+      \Civi::log()->error('Unable to extract the extension');
+      CRM_Core_Session::setStatus(ts('Unable to extract the extension'), '', 'error');
       return FALSE;
     }
 
@@ -227,6 +234,7 @@ class CRM_Extension_Downloader {
   public function validateFiles($key, $extractedZipPath) {
     $filename = $extractedZipPath . DIRECTORY_SEPARATOR . CRM_Extension_Info::FILENAME;
     if (!is_readable($filename)) {
+      \Civi::log()->error('Failed reading data from {filename} during installation', ['filename' => $filename]);
       CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error');
       return FALSE;
     }
@@ -235,6 +243,7 @@ class CRM_Extension_Downloader {
       $newInfo = CRM_Extension_Info::loadFromFile($filename);
     }
     catch (Exception $e) {
+      \Civi::log()->error('Failed reading data from {filename} during installation', ['filename' => $filename]);
       CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error');
       return FALSE;
     }
diff --git a/civicrm/CRM/Extension/Upgrader/Component.php b/civicrm/CRM/Extension/Upgrader/Component.php
index d4e3b07e3e..b445c964a3 100644
--- a/civicrm/CRM/Extension/Upgrader/Component.php
+++ b/civicrm/CRM/Extension/Upgrader/Component.php
@@ -1,5 +1,4 @@
 <?php
-use CRM_AfformAdmin_ExtensionUtil as E;
 
 /**
  * Upgrader base class ONLY for core component extensions (e.g. `civi_mail`, `civi_event`).
@@ -22,7 +21,7 @@ class CRM_Extension_Upgrader_Component extends CRM_Extension_Upgrader_Base {
   }
 
   /**
-   * Get of component (e.g. CiviMail)
+   * Get name of component corresponding to this extension (e.g. CiviMail)
    *
    * @return string
    */
diff --git a/civicrm/CRM/Financial/BAO/ExportFormat.php b/civicrm/CRM/Financial/BAO/ExportFormat.php
index 8e27691e57..9112655b55 100644
--- a/civicrm/CRM/Financial/BAO/ExportFormat.php
+++ b/civicrm/CRM/Financial/BAO/ExportFormat.php
@@ -40,6 +40,19 @@ abstract class CRM_Financial_BAO_ExportFormat {
    */
   public $_isDownloadFile;
 
+  /**
+   * BatchIds to be exported
+   * @var string
+   */
+  public $_batchIds;
+
+
+  /**
+   * Files to be downloaded
+   * @var array
+   */
+  public $_downloadFile;
+
   /**
    * Class constructor.
    */
diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php
index ca74b7d44c..a7098b0a97 100644
--- a/civicrm/CRM/Financial/BAO/Order.php
+++ b/civicrm/CRM/Financial/BAO/Order.php
@@ -672,6 +672,10 @@ class CRM_Financial_BAO_Order {
    */
   protected function setPriceFieldMetadata(array $metadata): void {
     foreach ($metadata as $index => $priceField) {
+      $metadata[$index]['supports_auto_renew'] = FALSE;
+      if ($this->isExcludeExpiredFields && !$priceField['is_active']) {
+        unset($metadata[$index]);
+      }
       if ($this->isExcludeExpiredFields && !empty($priceField['active_on']) && time() < strtotime($priceField['active_on'])) {
         unset($metadata[$index]);
       }
@@ -680,14 +684,16 @@ class CRM_Financial_BAO_Order {
       }
       elseif (!empty($priceField['options'])) {
         foreach ($priceField['options'] as $optionID => $option) {
-          if (!empty($option['membership_type_id'])) {
+          if (!$option['is_active']) {
+            unset($metadata[$index]['options'][$optionID]);
+          }
+          elseif (!empty($option['membership_type_id'])) {
             $membershipType = CRM_Member_BAO_MembershipType::getMembershipType((int) $option['membership_type_id']);
-            $metadata[$index]['options'][$optionID]['auto_renew'] = (int) $membershipType['auto_renew'];
-            if ($membershipType['auto_renew'] && empty($this->priceSetMetadata['auto_renew_membership_field'])) {
-              // Quick form layer supports one auto-renew membership type per price set. If we
-              // want more for any reason we can add another array property.
-              $this->priceSetMetadata['auto_renew_membership_field'] = (int) $option['price_field_id'];
-            }
+            $metadata[$index]['options'][$optionID]['membership_type_id.auto_renew'] = (int) $membershipType['auto_renew'];
+            $metadata[$index]['supports_auto_renew'] = $metadata[$index]['supports_auto_renew'] ?? $membershipType['auto_renew'] ?: (bool) $membershipType['auto_renew'];
+          }
+          else {
+            $metadata[$index]['options'][$optionID]['membership_type_id.auto_renew'] = NULL;
           }
         }
       }
@@ -711,7 +717,6 @@ class CRM_Financial_BAO_Order {
     if (empty($this->priceSetMetadata)) {
       $this->priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID());
       $this->priceSetMetadata['id'] = $this->getPriceSetID();
-      $this->priceSetMetadata['auto_renew_membership_field'] = NULL;
       $this->setPriceFieldMetadata($this->priceSetMetadata['fields']);
       unset($this->priceSetMetadata['fields']);
     }
@@ -816,6 +821,17 @@ class CRM_Financial_BAO_Order {
     return $this->lineItems;
   }
 
+  /**
+   * Recalculate the line items.
+   *
+   * @return void
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function recalculateLineItems(): void {
+    $this->lineItems = $this->calculateLineItems();
+  }
+
   /**
    * Get line items in a 'traditional' indexing format.
    *
@@ -917,8 +933,9 @@ class CRM_Financial_BAO_Order {
         if ($valueID !== '') {
           $this->setPriceSetIDFromSelectedField($fieldID);
           $throwAwayArray = [];
+          $temporaryParams = $params;
           // @todo - still using getLine for now but better to bring it to this class & do a better job.
-          $newLines = CRM_Price_BAO_PriceSet::getLine($params, $throwAwayArray, $this->getPriceSetID(), $this->getPriceFieldSpec($fieldID), $fieldID)[1];
+          $newLines = CRM_Price_BAO_PriceSet::getLine($temporaryParams, $throwAwayArray, $this->getPriceSetID(), $this->getPriceFieldSpec($fieldID), $fieldID)[1];
           foreach ($newLines as $newLine) {
             $lineItems[$newLine['price_field_value_id']] = $newLine;
           }
@@ -947,8 +964,30 @@ class CRM_Financial_BAO_Order {
       elseif ($taxRate) {
         $lineItem['tax_amount'] = ($taxRate / 100) * $lineItem['line_total'];
       }
+      $lineItem['membership_type_id'] = $lineItem['membership_type_id'] ?? NULL;
+      if ($lineItem['membership_type_id']) {
+        $lineItem['entity_table'] = 'civicrm_membership';
+        $lineItem['membership_num_terms'] = $lineItem['membership_num_terms'] ?:1;
+      }
       $lineItem['title'] = $this->getLineItemTitle($lineItem);
-      $lineItem['line_total_inclusive'] = $lineItem['line_total'] + $lineItem['tax_amount'];
+      $lineItem['tax_rate'] = $taxRate = $this->getTaxRate((int) $lineItem['financial_type_id']);
+      if ($this->getOverrideTotalAmount() !== FALSE) {
+        $this->addTotalsToLineBasedOnOverrideTotal((int) $lineItem['financial_type_id'], $lineItem);
+      }
+      elseif ($this->getPriceFieldMetadata($lineItem['price_field_id'])['name'] === 'other_amount') {
+        // Other amount is a front end user entered form. It is reasonable to think it would be tax inclusive.
+        $lineItem['line_total_inclusive'] = $lineItem['line_total'];
+        $lineItem['line_total'] = $lineItem['line_total_inclusive'] / (1 + ($lineItem['tax_rate'] / 100));
+        $lineItem['tax_amount'] = round($lineItem['line_total_inclusive'] - $lineItem['line_total'], 2);
+        // Make sure they still add up to each other afer the rounding.
+        $lineItem['line_total'] = $lineItem['line_total_inclusive'] - $lineItem['tax_amount'];
+        $lineItem['unit_price'] = $lineItem['line_total'] / $lineItem['qty'];
+
+      }
+      elseif ($taxRate) {
+        $lineItem['tax_amount'] = ($taxRate / 100) * $lineItem['line_total'];
+      }
+      $lineItem['line_total_inclusive'] = $lineItem['line_total_inclusive'] ?? ($lineItem['line_total'] + $lineItem['tax_amount']);
     }
     return $lineItems;
   }
@@ -983,6 +1022,34 @@ class CRM_Financial_BAO_Order {
     return $amount;
   }
 
+  /**
+   * Get Amount Level text.
+   *
+   * @return string
+   * @throws \CRM_Core_Exception
+   */
+  public function getAmountLevel() : string {
+    $amount_level = [];
+    $totalParticipant = 0;
+    foreach ($this->getLineItems() as $lineItem) {
+      if ($lineItem['label'] !== ts('Contribution Amount')) {
+        $amount_level[] = $lineItem['label'] . ' - ' . (float) $lineItem['qty'];
+      }
+      $totalParticipant += (float) ($lineItem['participant_count'] ?? 0);
+    }
+    $displayParticipantCount = '';
+    if ($totalParticipant > 0) {
+      $displayParticipantCount = ' Participant Count -' . $totalParticipant;
+    }
+    if (!empty($amount_level)) {
+      $amountString = CRM_Utils_Array::implodePadded($amount_level);
+      if (!empty($displayParticipantCount)) {
+        $amountString = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $amount_level) . $displayParticipantCount . CRM_Core_DAO::VALUE_SEPARATOR;
+      }
+    }
+    return $amountString ?? '';
+  }
+
   /**
    * Get the total amount relating to memberships for the order.
    *
@@ -1121,6 +1188,18 @@ class CRM_Financial_BAO_Order {
     $this->lineItems[$index][$name] = $value;
   }
 
+  /**
+   * Set the line item array.
+   *
+   * This is mostly useful when they have been calculated & stored
+   * on the form & we want to rebuild the line item object.
+   *
+   * @param array $lineItems
+   */
+  public function setLineItems(array $lineItems): void {
+    $this->lineItems = $lineItems;
+  }
+
   /**
    * @param int|string $index
    *
@@ -1192,6 +1271,8 @@ class CRM_Financial_BAO_Order {
     }
     else {
       $lineItem['line_total'] = $this->getOverrideTotalAmount();
+      $lineItem['tax_amount'] = 0.0;
+      $lineItem['line_total_inclusive'] = $lineItem['line_total'];
     }
     if (!empty($lineItem['qty'])) {
       $lineItem['unit_price'] = $lineItem['line_total'] / $lineItem['qty'];
diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php
index 82da1f2580..281e78183e 100644
--- a/civicrm/CRM/Financial/BAO/Payment.php
+++ b/civicrm/CRM/Financial/BAO/Payment.php
@@ -288,13 +288,18 @@ class CRM_Financial_BAO_Payment {
     $entities = self::loadRelatedEntities($params['id']);
 
     $sendTemplateParams = [
-      'groupName' => 'msg_tpl_workflow_contribution',
       'workflow' => 'payment_or_refund_notification',
       'PDFFilename' => ts('notification') . '.pdf',
-      'contactId' => $entities['contact']['id'],
       'toName' => $entities['contact']['display_name'],
       'toEmail' => $entities['contact']['email'],
       'tplParams' => self::getConfirmationTemplateParameters($entities),
+      'modelProps' => array_filter([
+        'contributionID' => $entities['contribution']['id'],
+        'contactID' => $entities['contact']['id'],
+        'financialTrxnID' => $params['id'],
+        'eventID' => $entities['event']['id'] ?? NULL,
+        'participantID' => $entities['participant']['id'] ?? NULL,
+      ]),
     ];
     if (!empty($params['from']) && !empty($params['check_permissions'])) {
       // Filter from against permitted emails.
@@ -365,7 +370,8 @@ class CRM_Financial_BAO_Payment {
       'sequential' => 1,
     ])['values'];
     if (!empty($participantRecords)) {
-      $entities['event'] = civicrm_api3('Event', 'getsingle', ['id' => $participantRecords[0]['api.Participant.get']['values'][0]['event_id']]);
+      $entities['participant'] = $participantRecords[0]['api.Participant.get']['values'][0];
+      $entities['event'] = civicrm_api3('Event', 'getsingle', ['id' => $entities['participant']['event_id']]);
       if (!empty($entities['event']['is_show_location'])) {
         $locationParams = [
           'entity_id' => $entities['event']['id'],
@@ -396,6 +402,9 @@ class CRM_Financial_BAO_Payment {
    * @param array $entities
    *   Related entities as an array keyed by the various entities.
    *
+   * @deprecated these template variables no longer used in the core template
+   * from 5.69 - stop assigning them.
+   *
    * @return array
    *   Values required for the notification
    *   - contact_id
diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php
index b46df53a76..e0c9fa40e4 100644
--- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php
+++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php
@@ -482,12 +482,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces
    */
   public static function getProcessorForEntity($entityID, $component = 'contribute', $type = 'id') {
     $result = NULL;
-    if (!in_array($component, [
-      'membership',
-      'contribute',
-      'recur',
-    ])
-    ) {
+    if (!in_array($component, ['membership', 'contribute', 'recur'])) {
       return $result;
     }
 
diff --git a/civicrm/CRM/Financial/FinancialTrxnTokens.php b/civicrm/CRM/Financial/FinancialTrxnTokens.php
new file mode 100644
index 0000000000..6aab625b8f
--- /dev/null
+++ b/civicrm/CRM/Financial/FinancialTrxnTokens.php
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Class CRM_Event_Tokens
+ *
+ * Generate "event.*" tokens.
+ */
+class CRM_Financial_FinancialTrxnTokens extends CRM_Core_EntityTokens {
+
+  /**
+   * Get the entity name for api v4 calls.
+   *
+   * @return string
+   */
+  protected function getApiEntityName(): string {
+    return 'FinancialTrxn';
+  }
+
+  /**
+   * @return array
+   */
+  public function getCurrencyFieldName(): array {
+    return ['currency'];
+  }
+
+}
diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php
index 727c2335e3..2ea06f7705 100644
--- a/civicrm/CRM/Financial/Form/FinancialAccount.php
+++ b/civicrm/CRM/Financial/Form/FinancialAccount.php
@@ -200,12 +200,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form {
       if ($this->_action & CRM_Core_Action::UPDATE) {
         $params['id'] = $this->_id;
       }
-      foreach ([
-        'is_active',
-        'is_deductible',
-        'is_tax',
-        'is_default',
-      ] as $field) {
+      foreach (['is_active', 'is_deductible', 'is_tax', 'is_default'] as $field) {
         $params[$field] = $params[$field] ?? FALSE;
       }
       $financialAccount = CRM_Financial_BAO_FinancialAccount::writeRecord($params);
diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php
index 4521ca3afc..0a953bf5ba 100644
--- a/civicrm/CRM/Financial/Form/FinancialType.php
+++ b/civicrm/CRM/Financial/Form/FinancialType.php
@@ -117,11 +117,7 @@ class CRM_Financial_Form_FinancialType extends CRM_Core_Form {
       if ($this->_id) {
         $params['id'] = $this->_id;
       }
-      foreach ([
-        'is_active',
-        'is_reserved',
-        'is_deductible',
-      ] as $field) {
+      foreach (['is_active', 'is_reserved', 'is_deductible'] as $field) {
         $params[$field] = $params[$field] ?? FALSE;
       }
       $financialType = civicrm_api3('FinancialType', 'create', $params);
diff --git a/civicrm/CRM/Financial/Form/Payment.php b/civicrm/CRM/Financial/Form/Payment.php
index e1937e149b..f52d2cad70 100644
--- a/civicrm/CRM/Financial/Form/Payment.php
+++ b/civicrm/CRM/Financial/Form/Payment.php
@@ -69,13 +69,10 @@ class CRM_Financial_Form_Payment extends CRM_Core_Form {
   /**
    * Get currency
    *
-   * @param array $submittedValues
-   *   Required for consistency with other form methods.
-   *
    * @return string
    */
-  public function getCurrency($submittedValues = []) {
-    return $this->currency;
+  public function getCurrency(): string {
+    return (string) $this->currency;
   }
 
   /**
diff --git a/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php b/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php
new file mode 100644
index 0000000000..15c8e3f8ec
--- /dev/null
+++ b/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * Trait implements functions to retrieve payment processor related values.
+ *
+ * Note that any functions on this class that are supported to be used from
+ * outside of core are specifically tagged.
+ */
+trait CRM_Financial_Form_PaymentProcessorFormTrait {
+
+  /**
+   * Get the payment processors that are available on the form.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getAvailablePaymentProcessors(): array {
+    return CRM_Financial_BAO_PaymentProcessor::getPaymentProcessors([ucfirst($this->getPaymentProcessorMode()) . 'Mode'], $this->getAvailablePaymentProcessorIDS());
+  }
+
+  /**
+   * Get the payment processor IDs available on the form.
+   *
+   * @return false|array
+   */
+  protected function getAvailablePaymentProcessorIDS() {
+    return FALSE;
+  }
+
+  /**
+   * Get the mode (test or live) of the payment processor.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @return string|null
+   *   test or live
+   * @throws \CRM_Core_Exception
+   */
+  public function getPaymentProcessorMode(): ?string {
+    return CRM_Utils_Request::retrieve('mode', 'Alphanumeric', $this);
+  }
+
+  /**
+   * Get the payment processor object for the submission, returning the manual one for offline payments.
+   *
+   * @return CRM_Core_Payment
+   */
+  protected function getPaymentProcessorObject() {
+    if (!empty($this->_paymentProcessor)) {
+      return $this->_paymentProcessor['object'];
+    }
+    return new CRM_Core_Payment_Manual();
+  }
+
+  /**
+   * Get the value for a field relating to the in-use payment processor.
+   *
+   * All values returned in apiv4 format. Escaping may be required.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @param string $fieldName
+   *
+   * @return mixed
+   * @throws \CRM_Core_Exception
+   */
+  public function getPaymentProcessorValue(string $fieldName) {
+    if ($this->isDefined('PaymentProcessor')) {
+      return $this->lookup('PaymentProcessor', $fieldName);
+    }
+    $id = $this->getPaymentProcessorID();
+    if ($id === 0) {
+      $manualProcessor = [
+        'payment_processor_type_id' => 0,
+        'payment_processor_type_id.name' => 'Manual',
+        'payment_processor_type_id.class_name' => 'Payment_Manual',
+      ];
+      return $manualProcessor[$fieldName] ?? NULL;
+    }
+    if ($id) {
+      $this->define('PaymentProcessor', 'PaymentProcessor', ['id' => $id]);
+      return $this->lookup('PaymentProcessor', $fieldName);
+    }
+    return NULL;
+  }
+
+  /**
+   * Get the ID for the in-use payment processor.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @return int|null
+   */
+  public function getPaymentProcessorID(): ?int {
+    return isset($this->_paymentProcessor['id']) ? (int) $this->_paymentProcessor['id'] : NULL;
+  }
+
+}
diff --git a/civicrm/CRM/Financial/Form/SalesTaxTrait.php b/civicrm/CRM/Financial/Form/SalesTaxTrait.php
index 3ea4d0183c..01f0949e10 100644
--- a/civicrm/CRM/Financial/Form/SalesTaxTrait.php
+++ b/civicrm/CRM/Financial/Form/SalesTaxTrait.php
@@ -18,8 +18,11 @@ trait CRM_Financial_Form_SalesTaxTrait {
 
   /**
    * Assign the sales tax term to the template.
+   *
+   * @deprecated since 5.69 will be removed around 5.80
    */
   public function assignSalesTaxTermToTemplate() {
+    CRM_Core_Error::deprecatedFunctionWarning('assign the setting');
     $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
@@ -47,7 +50,7 @@ trait CRM_Financial_Form_SalesTaxTrait {
    */
   public function assignSalesTaxMetadataToTemplate() {
     $this->assignSalesTaxRates();
-    $this->assignSalesTaxTermToTemplate();
+    $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
   /**
diff --git a/civicrm/CRM/Friend/Form.php b/civicrm/CRM/Friend/Form.php
index 0441951d1e..c36056d048 100644
--- a/civicrm/CRM/Friend/Form.php
+++ b/civicrm/CRM/Friend/Form.php
@@ -56,10 +56,7 @@ class CRM_Friend_Form extends CRM_Core_Form {
 
     $pcomponent = CRM_Utils_Request::retrieve('pcomponent', 'String', $this, TRUE);
 
-    if (in_array($pcomponent, [
-      'contribute',
-      'event',
-    ])) {
+    if (in_array($pcomponent, ['contribute', 'event'])) {
       $values = [];
       $params = ['id' => $this->_entityId];
       CRM_Core_DAO::commonRetrieve('CRM_Contribute_DAO_ContributionPage',
@@ -285,8 +282,6 @@ class CRM_Friend_Form extends CRM_Core_Form {
           FALSE, NULL, TRUE,
           TRUE
         );
-        $this->assign('linkTextUrl', $linkTextUrl);
-        $this->assign('linkText', $linkText);
       }
     }
     elseif ($this->_entityTable === 'civicrm_event') {
@@ -297,11 +292,10 @@ class CRM_Friend_Form extends CRM_Core_Form {
           "action=add&reset=1&pageId={$defaults['entity_id']}&component=event",
           FALSE, NULL, TRUE,
           TRUE);
-        $this->assign('linkTextUrl', $linkTextUrl);
-        $this->assign('linkText', $linkText);
       }
     }
-
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $linkText ?? NULL);
     $this->setTitle($defaults['thankyou_title']);
     $this->assign('thankYouText', $defaults['thankyou_text']);
   }
diff --git a/civicrm/CRM/Import/DataSource.php b/civicrm/CRM/Import/DataSource.php
index b44933274a..f6ddab89f7 100644
--- a/civicrm/CRM/Import/DataSource.php
+++ b/civicrm/CRM/Import/DataSource.php
@@ -15,14 +15,15 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
-use Civi\Api4\UserJob;
+use Civi\Import\DataSource\DataSourceInterface;
+use Civi\Import\DataSource\DataSourceTrait;
 
 /**
  * This class defines the DataSource interface but must be subclassed to be
  * useful.
  */
-abstract class CRM_Import_DataSource {
-
+abstract class CRM_Import_DataSource implements DataSourceInterface {
+  use DataSourceTrait;
   /**
    * @var \CRM_Core_DAO
    */
@@ -38,7 +39,7 @@ abstract class CRM_Import_DataSource {
    *
    * @return CRM_Import_DataSource
    */
-  public function setLimit(int $limit): CRM_Import_DataSource {
+  public function setLimit(int $limit): DataSourceInterface {
     $this->limit = $limit;
     $this->queryResultObject = NULL;
     return $this;
@@ -134,23 +135,12 @@ abstract class CRM_Import_DataSource {
    *
    * @return self
    */
-  public function setStatuses(array $statuses): self {
+  public function setStatuses(array $statuses): DataSourceInterface {
     $this->statuses = $statuses;
     $this->queryResultObject = NULL;
     return $this;
   }
 
-  /**
-   * Class constructor.
-   *
-   * @param int|null $userJobID
-   */
-  public function __construct(int $userJobID = NULL) {
-    if ($userJobID) {
-      $this->setUserJobID($userJobID);
-    }
-  }
-
   /**
    * Form fields declared for this datasource.
    *
@@ -158,73 +148,6 @@ abstract class CRM_Import_DataSource {
    */
   protected $submittableFields = [];
 
-  /**
-   * User job id.
-   *
-   * This is the primary key of the civicrm_user_job table which is used to
-   * track the import.
-   *
-   * @var int
-   */
-  protected $userJobID;
-
-  /**
-   * @return int|null
-   */
-  public function getUserJobID(): ?int {
-    return $this->userJobID;
-  }
-
-  /**
-   * Set user job ID.
-   *
-   * @param int $userJobID
-   */
-  public function setUserJobID(int $userJobID): void {
-    $this->userJobID = $userJobID;
-  }
-
-  /**
-   * User job details.
-   *
-   * This is the relevant row from civicrm_user_job.
-   *
-   * @var array
-   */
-  protected $userJob;
-
-  /**
-   * Get User Job.
-   *
-   * API call to retrieve the userJob row.
-   *
-   * @return array
-   *
-   * @throws \CRM_Core_Exception
-   */
-  protected function getUserJob(): array {
-    if (!$this->userJob) {
-      $this->userJob = UserJob::get()
-        ->addWhere('id', '=', $this->getUserJobID())
-        ->execute()
-        ->first();
-    }
-    return $this->userJob;
-  }
-
-  /**
-   * Get submitted value.
-   *
-   * Get a value submitted on the form.
-   *
-   * @return mixed
-   *
-   * @throws \CRM_Core_Exception
-   */
-  protected function getSubmittedValue(string $valueName) {
-    return $this->getUserJob()['metadata']['submitted_values'][$valueName];
-  }
-
   /**
    * Get rows as an array.
    *
@@ -286,22 +209,6 @@ abstract class CRM_Import_DataSource {
     return CRM_Core_DAO::singleValueQuery($query);
   }
 
-  /**
-   * Get an array of column headers, if any.
-   *
-   * Null is returned when there are none - ie because a csv file does not
-   * have an initial header row.
-   *
-   * This is presented to the user in the MapField screen so
-   * that can see what fields they are mapping.
-   *
-   * @return array
-   * @throws \CRM_Core_Exception
-   */
-  public function getColumnHeaders(): array {
-    return $this->getUserJob()['metadata']['DataSource']['column_headers'];
-  }
-
   /**
    * Get the field names of the fields holding data in the import tracking table.
    *
@@ -394,96 +301,6 @@ abstract class CRM_Import_DataSource {
     return $this->submittableFields;
   }
 
-  /**
-   * Provides information about the data source.
-   *
-   * @return array
-   *   Description of this data source, including:
-   *   - title: string, translated, required
-   *   - permissions: array, optional
-   *
-   */
-  abstract public function getInfo();
-
-  /**
-   * This is function is called by the form object to get the DataSource's form snippet.
-   *
-   * It should add all fields necessary to get the data uploaded to the temporary table in the DB.
-   *
-   * @param CRM_Core_Form $form
-   */
-  abstract public function buildQuickForm(&$form);
-
-  /**
-   * Initialize the datasource, based on the submitted values stored in the user job.
-   */
-  public function initialize(): void {
-
-  }
-
-  /**
-   * Determine if the current user has access to this data source.
-   *
-   * @return bool
-   */
-  public function checkPermission() {
-    $info = $this->getInfo();
-    return empty($info['permissions']) || CRM_Core_Permission::check($info['permissions']);
-  }
-
-  /**
-   * @param string $key
-   * @param array $data
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \Civi\API\Exception\UnauthorizedException
-   */
-  protected function updateUserJobMetadata(string $key, array $data): void {
-    $metaData = array_merge(
-      $this->getUserJob()['metadata'],
-      [$key => $data]
-    );
-    UserJob::update(FALSE)
-      ->addWhere('id', '=', $this->getUserJobID())
-      ->setValues(['metadata' => $metaData])
-      ->execute();
-    $this->userJob['metadata'] = $metaData;
-  }
-
-  /**
-   * Purge any datasource related assets when the datasource is dropped.
-   *
-   * This is the datasource's chance to delete any tables etc that it created
-   * which will now not be used.
-   *
-   * @param array $newParams
-   *   If the dataSource is being updated to another variant of the same
-   *   class (eg. the csv upload was set to no column headers and they
-   *   have resubmitted WITH skipColumnHeader (first row is a header) then
-   *   the dataSource is still CSV and the params for the new instance
-   *   are passed in. When changing from csv to SQL (for example) newParams is
-   *   empty.
-   *
-   * @return array
-   *   The details to update the DataSource key in the userJob metadata to.
-   *   Generally and empty array but it the datasource decided (for example)
-   *   that the table it created earlier is still consistent with the new params
-   *   then it might decided not to drop the table and would want to retain
-   *   some metadata.
-   *
-   * @throws \CRM_Core_Exception
-   *
-   * @noinspection PhpUnusedParameterInspection
-   */
-  public function purge(array $newParams = []) :array {
-    // The old name is still stored...
-    $oldTableName = $this->getTableName();
-    if ($oldTableName) {
-      CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS ' . $oldTableName);
-    }
-    return [];
-  }
-
   /**
    * Add a status columns to the import table.
    *
diff --git a/civicrm/CRM/Import/DataSource/CSV.php b/civicrm/CRM/Import/DataSource/CSV.php
index 9885ceab93..28b9d79d51 100644
--- a/civicrm/CRM/Import/DataSource/CSV.php
+++ b/civicrm/CRM/Import/DataSource/CSV.php
@@ -15,8 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
-  const
-    NUM_ROWS_TO_INSERT = 100;
+  private const NUM_ROWS_TO_INSERT = 100;
 
   /**
    * Form fields declared for this datasource.
@@ -32,7 +31,10 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
    *   collection of info about this data source
    */
   public function getInfo(): array {
-    return ['title' => ts('Comma-Separated Values (CSV)')];
+    return [
+      'title' => ts('Comma-Separated Values (CSV)'),
+      'template' => 'CRM/Contact/Import/Form/CSV.tpl',
+    ];
   }
 
   /**
@@ -42,26 +44,20 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
    * uploaded to the temporary table in the DB.
    *
    * @param CRM_Contact_Import_Form_DataSource|\CRM_Import_Form_DataSourceConfig $form
-   *
-   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm(&$form) {
+  public function buildQuickForm(\CRM_Import_Forms $form): void {
     $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_CSV');
 
-    $uploadFileSize = CRM_Utils_Number::formatUnitSize(Civi::settings()->get('maxFileSize') . 'm', TRUE);
-    //Fetch uploadFileSize from php_ini when $config->maxFileSize is set to "no limit".
-    if (empty($uploadFileSize)) {
-      $uploadFileSize = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), TRUE);
-    }
-    $uploadSize = round(($uploadFileSize / (1024 * 1024)), 2);
-    $form->assign('uploadSize', $uploadSize);
+    $maxFileSizeMegaBytes = CRM_Utils_File::getMaxFileSize();
+    $maxFileSizeBytes = $maxFileSizeMegaBytes * 1024 * 1024;
+    $form->assign('uploadSize', $maxFileSizeMegaBytes);
     $form->add('File', 'uploadFile', ts('Import Data File'), NULL, TRUE);
     $form->add('text', 'fieldSeparator', ts('Import Field Separator'), ['size' => 2], TRUE);
-    $form->setMaxFileSize($uploadFileSize);
+    $form->setMaxFileSize($maxFileSizeBytes);
     $form->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', [
-      1 => $uploadSize,
-      2 => $uploadFileSize,
-    ]), 'maxfilesize', $uploadFileSize);
+      1 => $maxFileSizeMegaBytes,
+      2 => $maxFileSizeBytes,
+    ]), 'maxfilesize', $maxFileSizeBytes);
     $form->addRule('uploadFile', ts('Input file must be in CSV format'), 'utf8File');
     $form->addRule('uploadFile', ts('A valid file must be uploaded.'), 'uploadedfile');
     $form->setDataSourceDefaults($this->getDefaultValues());
@@ -81,7 +77,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     );
     $this->addTrackingFieldsToTable($result['import_table_name']);
 
-    $this->updateUserJobMetadata('DataSource', [
+    $this->updateUserJobDataSource([
       'table_name' => $result['import_table_name'],
       'column_headers' => $result['column_headers'],
       'number_of_columns' => $result['number_of_columns'],
@@ -128,56 +124,14 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     if ($headers) {
       //need to get original headers.
       $result['column_headers'] = $firstrow;
-
-      $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
-      $columns = array_map($strtolower, $firstrow);
-      $columns = array_map('trim', $columns);
-      $columns = str_replace(' ', '_', $columns);
-      $columns = preg_replace('/[^a-z_]/', '', $columns);
-
-      // need to take care of null as well as duplicate col names.
-      $duplicateColName = FALSE;
-      if (count($columns) != count(array_unique($columns))) {
-        $duplicateColName = TRUE;
-      }
-
-      // need to truncate values per mysql field name length limits
-      // mysql allows 64, but we need to account for appending colKey
-      // CRM-9079
-      foreach ($columns as $colKey => & $colName) {
-        if (strlen($colName) > 58) {
-          $colName = substr($colName, 0, 58);
-        }
-      }
-
-      if (in_array('', $columns) || $duplicateColName) {
-        foreach ($columns as $colKey => & $colName) {
-          if (!$colName) {
-            $colName = "col_$colKey";
-          }
-          elseif ($duplicateColName) {
-            $colName .= "_$colKey";
-          }
-        }
-      }
-
-      // CRM-4881: we need to quote column names, as they may be MySQL reserved words
-      foreach ($columns as & $column) {
-        $column = "`$column`";
-      }
+      $columns = $this->getColumnNamesFromHeaders($firstrow);
     }
     else {
-      $columns = [];
-      foreach ($firstrow as $i => $_) {
-        $columns[] = "column_$i";
-      }
+      $columns = $this->getColumnNamesForUnnamedColumns($firstrow);
       $result['column_headers'] = $columns;
     }
 
-    $table = CRM_Utils_SQL_TempTable::build()->setDurable();
-    $tableName = $table->getName();
-    CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName");
-    $table->createWithColumns(implode(' text, ', $columns) . ' text');
+    $tableName = $this->createTempTableFromColumns($columns);
 
     $numColumns = count($columns);
 
@@ -211,7 +165,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
       $first = FALSE;
 
       // CRM-17859 Trim non-breaking spaces from columns.
-      $row = array_map(['CRM_Import_DataSource_CSV', 'trimNonBreakingSpaces'], $row);
+      $row = array_map([__CLASS__, 'trimNonBreakingSpaces'], $row);
       $row = array_map(['CRM_Core_DAO', 'escapeString'], $row);
       $sql .= "('" . implode("', '", $row) . "')";
       $count++;
@@ -237,30 +191,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     return $result;
   }
 
-  /**
-   * Trim non-breaking spaces in a multibyte-safe way.
-   * See also dev/core#2127 - avoid breaking strings ending in à or any other
-   * unicode character sharing the same 0xA0 byte as a non-breaking space.
-   *
-   * @param string $string
-   * @return string The trimmed string
-   */
-  public static function trimNonBreakingSpaces(string $string): string {
-    $encoding = mb_detect_encoding($string, NULL, TRUE);
-    if ($encoding === FALSE) {
-      // This could mean a couple things. One is that the string is
-      // ASCII-encoded but contains a non-breaking space, which causes
-      // php to fail to detect the encoding. So let's just do what we
-      // did before which works in that situation and is at least no
-      // worse in other situations.
-      return trim($string, chr(0xC2) . chr(0xA0));
-    }
-    elseif ($encoding !== 'UTF-8') {
-      $string = mb_convert_encoding($string, 'UTF-8', [$encoding]);
-    }
-    return preg_replace("/^(\u{a0})+|(\u{a0})+$/", '', $string);
-  }
-
   /**
    * Get default values for csv dataSource fields.
    *
@@ -270,6 +200,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     return [
       'fieldSeparator' => CRM_Core_Config::singleton()->fieldSeparator,
       'skipColumnHeader' => 1,
+      'template' => 'CRM/Contact/Import/Form/CSV.tpl',
     ];
 
   }
diff --git a/civicrm/CRM/Import/DataSource/SQL.php b/civicrm/CRM/Import/DataSource/SQL.php
index ad6ac14ea0..6ee1c7ce3b 100644
--- a/civicrm/CRM/Import/DataSource/SQL.php
+++ b/civicrm/CRM/Import/DataSource/SQL.php
@@ -33,6 +33,7 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
     return [
       'title' => ts('SQL Query'),
       'permissions' => ['import SQL datasource'],
+      'template' => 'CRM/Contact/Import/Form/SQL.tpl',
     ];
   }
 
@@ -41,12 +42,9 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
    * form snippet. It should add all fields necesarry to get the data
    * uploaded to the temporary table in the DB.
    *
-   * @param CRM_Core_Form $form
-   *
-   * @return void
-   *   (operates directly on form argument)
+   * @param CRM_Import_Forms $form
    */
-  public function buildQuickForm(&$form) {
+  public function buildQuickForm(CRM_Import_Forms $form): void {
     $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_SQL');
     $form->add('textarea', 'sqlQuery', ts('Specify SQL Query'), ['rows' => 10, 'cols' => 45], TRUE);
     $form->addFormRule(['CRM_Import_DataSource_SQL', 'formRule'], $form);
@@ -103,7 +101,7 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
     }
 
     $this->addTrackingFieldsToTable($tableName);
-    $this->updateUserJobMetadata('DataSource', [
+    $this->updateUserJobDataSource([
       'table_name' => $tableName,
       'column_headers' => $columnNames,
       'number_of_columns' => count($columnNames),
diff --git a/civicrm/CRM/Import/Form/DataSource.php b/civicrm/CRM/Import/Form/DataSource.php
index 75149c026e..c9ab949279 100644
--- a/civicrm/CRM/Import/Form/DataSource.php
+++ b/civicrm/CRM/Import/Form/DataSource.php
@@ -37,8 +37,6 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
    */
   public function preProcess(): void {
     $this->pushUrlToUserContext();
-    // check for post max size
-    CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'), TRUE);
     $this->assign('importEntity', $this->getTranslatedEntity());
     $this->assign('importEntities', $this->getTranslatedEntities());
   }
diff --git a/civicrm/CRM/Import/Form/DataSourceConfig.php b/civicrm/CRM/Import/Form/DataSourceConfig.php
index b8bd425ba4..36109b7fb3 100644
--- a/civicrm/CRM/Import/Form/DataSourceConfig.php
+++ b/civicrm/CRM/Import/Form/DataSourceConfig.php
@@ -45,9 +45,7 @@ class CRM_Import_Form_DataSourceConfig extends CRM_Import_Forms {
    * @throws \CRM_Core_Exception
    */
   public function preProcess(): void {
-    $dataSourcePath = explode('_', $this->getDataSourceClassName());
-    $templateFile = 'CRM/Contact/Import/Form/' . $dataSourcePath[3] . '.tpl';
-    $this->assign('dataSourceFormTemplateFile', $templateFile ?? NULL);
+    $this->assign('dataSourceFormTemplateFile', $this->getDataSourceObject()->getInfo()['template']);
     if (CRM_Utils_Request::retrieveValue('user_job_id', 'Integer')) {
       $this->setUserJobID(CRM_Utils_Request::retrieveValue('user_job_id', 'Integer'));
     }
diff --git a/civicrm/CRM/Import/Forms.php b/civicrm/CRM/Import/Forms.php
index 4535fd2121..f794fb662e 100644
--- a/civicrm/CRM/Import/Forms.php
+++ b/civicrm/CRM/Import/Forms.php
@@ -17,6 +17,8 @@
 
 use Civi\Api4\Mapping;
 use Civi\Api4\UserJob;
+use Civi\Core\ClassScanner;
+use Civi\Import\DataSource\DataSourceInterface;
 use League\Csv\Writer;
 
 /**
@@ -269,7 +271,8 @@ class CRM_Import_Forms extends CRM_Core_Form {
    */
   protected function getDataSources(): array {
     $dataSources = [];
-    foreach (['CRM_Import_DataSource_SQL', 'CRM_Import_DataSource_CSV'] as $dataSourceClass) {
+    $classes = ClassScanner::get(['interface' => DataSourceInterface::class]);
+    foreach ($classes as $dataSourceClass) {
       $object = new $dataSourceClass();
       if ($object->checkPermission()) {
         $dataSources[$dataSourceClass] = $object->getInfo()['title'];
@@ -388,11 +391,10 @@ class CRM_Import_Forms extends CRM_Core_Form {
   /**
    * Get the relevant datasource object.
    *
-   * @return \CRM_Import_DataSource|null
-   *
+   * @return \Civi\Import\DataSource\DataSourceInterface|null
    * @throws \CRM_Core_Exception
    */
-  protected function getDataSourceObject(): ?CRM_Import_DataSource {
+  protected function getDataSourceObject(): ?DataSourceInterface {
     $className = $this->getDataSourceClassName();
     if ($className) {
       return new $className($this->getUserJobID());
diff --git a/civicrm/CRM/Invoicing/Utils.php b/civicrm/CRM/Invoicing/Utils.php
index 70de2c7d4d..382bc4177d 100644
--- a/civicrm/CRM/Invoicing/Utils.php
+++ b/civicrm/CRM/Invoicing/Utils.php
@@ -48,11 +48,9 @@ class CRM_Invoicing_Utils {
   /**
    * Function to call to determine if invoicing is enabled.
    *
-   * Historically the invoicing was declared as a setting but actually
-   * set within contribution_invoice_settings (which stores multiple settings
-   * as an array in a non-standard way).
+   * Use Civi::settings()->get('invoicing') instead.
    *
-   * We check both here. But will deprecate the latter in time.
+   * @deprecated since 5.68 expected removal time to be added when we add noisy deprecation.
    */
   public static function isInvoicingEnabled() {
     return Civi::settings()->get('invoicing');
@@ -61,8 +59,9 @@ class CRM_Invoicing_Utils {
   /**
    * Function to get the tax term.
    *
-   * The value is nested in the contribution_invoice_settings setting - which
-   * is unsupported. Here we have a wrapper function to make later cleanup easier.
+   * Use Civi::settings()->get('tax_term') instead.
+   *
+   * @deprecated since 5.68 expected removal time to be added when we add noisy deprecation.
    */
   public static function getTaxTerm() {
     return Civi::settings()->get('tax_term');
diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php
index ae2037a0b6..c476818874 100644
--- a/civicrm/CRM/Mailing/BAO/Mailing.php
+++ b/civicrm/CRM/Mailing/BAO/Mailing.php
@@ -616,11 +616,7 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing implements \Civi\C
 
       $this->preparedTemplates = [];
 
-      foreach ([
-        'html',
-        'text',
-        'subject',
-      ] as $key) {
+      foreach (['html', 'text', 'subject'] as $key) {
         if (!isset($templates[$key])) {
           continue;
         }
@@ -1565,8 +1561,8 @@ ORDER BY   civicrm_email.is_bulkmail DESC
         'url_tracking' => Civi::settings()->get('url_tracking_default'),
         'visibility' => 'Public Pages',
         'replyto_email' => $domain_email,
-        'header_id' => CRM_Mailing_PseudoConstant::defaultComponent('header_id', ''),
-        'footer_id' => CRM_Mailing_PseudoConstant::defaultComponent('footer_id', ''),
+        'header_id' => CRM_Mailing_PseudoConstant::defaultComponent('Header', ''),
+        'footer_id' => CRM_Mailing_PseudoConstant::defaultComponent('Footer', ''),
         'from_email' => $domain_email,
         'from_name' => $domain_name,
         'msg_template_id' => NULL,
@@ -2441,6 +2437,22 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id   = m.id
    * @throws CRM_Core_Exception
    */
   public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if ($event->action === 'create') {
+      $params = &$event->params;
+      $params['created_id'] ??= CRM_Core_Session::singleton()->getLoggedInContactID();
+      $params['override_verp'] ??= !Civi::settings()->get('track_civimail_replies');
+      $params['visibility'] ??= 'Public Pages';
+      $params['dedupe_email'] ??= Civi::settings()->get('dedupe_email_default');
+      $params['open_tracking'] ??= Civi::settings()->get('open_tracking_default');
+      $params['url_tracking'] ??= Civi::settings()->get('url_tracking_default');
+      $params['header_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Header', '');
+      $params['footer_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Footer', '');
+      $params['optout_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('OptOut', '');
+      $params['reply_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Reply', '');
+      $params['resubscribe_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Resubscribe', '');
+      $params['unsubscribe_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Unsubscribe', '');
+      $params['mailing_type'] ??= 'standalone';
+    }
     if ($event->action === 'delete' && $event->id) {
       // Delete all file attachments
       CRM_Core_BAO_File::deleteEntityFile('civicrm_mailing', $event->id);
diff --git a/civicrm/CRM/Mailing/BAO/MailingComponent.php b/civicrm/CRM/Mailing/BAO/MailingComponent.php
index f015b5cb91..cc5212f44e 100644
--- a/civicrm/CRM/Mailing/BAO/MailingComponent.php
+++ b/civicrm/CRM/Mailing/BAO/MailingComponent.php
@@ -58,7 +58,7 @@ class CRM_Mailing_BAO_MailingComponent extends CRM_Mailing_DAO_MailingComponent
 
     $component->copyValues($params);
     if (empty($id) && empty($params['body_text'])) {
-      $component->body_text = CRM_Utils_String::htmlToText(CRM_Utils_Array::value('body_html', $params));
+      $component->body_text = CRM_Utils_String::htmlToText($params['body_html'] ?? '');
     }
 
     if ($component->is_default) {
diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php
index 3d75980079..326da1cb8d 100644
--- a/civicrm/CRM/Mailing/BAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/BAO/MailingJob.php
@@ -763,7 +763,7 @@ VALUES (%1, %2, %3, %4, %5, %6, %7)
     // SMTP response code is buried in the message.
     $code = preg_match('/ \(code: (.+), response: /', $message, $matches) ? $matches[1] : '';
 
-    if (strpos($message, 'Failed to write to socket') !== FALSE) {
+    if (str_contains($message, 'Failed to write to socket')) {
       return TRUE;
     }
 
@@ -772,15 +772,15 @@ VALUES (%1, %2, %3, %4, %5, %6, %7)
       return FALSE;
     }
 
-    if (strpos($message, 'Failed to set sender') !== FALSE) {
+    if (str_contains($message, 'Failed to set sender')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to add recipient') !== FALSE) {
+    if (str_contains($message, 'Failed to add recipient')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to send data') !== FALSE) {
+    if (str_contains($message, 'Failed to send data')) {
       return TRUE;
     }
 
diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php
index 2bb67e0253..fefa921ddf 100644
--- a/civicrm/CRM/Mailing/DAO/Mailing.php
+++ b/civicrm/CRM/Mailing/DAO/Mailing.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Mailing.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:62a218e043b9abab2e816bf69272cca1)
+ * (GenCodeChecksum:55608e7270f5f764477813403689775a)
  */
 
 /**
@@ -56,6 +56,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
     'copy' => 'civicrm/mailing/send?mid=[id]',
     'view' => 'civicrm/mailing/report?mid=[id]&reset=1',
     'preview' => 'civicrm/mailing/view?id=[id]&reset=1',
+    'delete' => 'civicrm/mailing/browse?action=delete&mid=[id]&reset=1',
   ];
 
   /**
@@ -709,6 +710,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("Name"),
           ],
           'add' => NULL,
         ],
@@ -758,6 +760,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("From Name"),
           ],
           'add' => NULL,
         ],
@@ -781,6 +784,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("From Email"),
           ],
           'add' => NULL,
         ],
@@ -1122,6 +1126,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'html' => [
             'type' => 'Select Date',
             'formatType' => 'activityDateTime',
+            'label' => ts("Created Date"),
           ],
           'add' => '3.0',
         ],
@@ -1145,6 +1150,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'bao' => 'CRM_Mailing_BAO_Mailing',
           'localizable' => 0,
           'html' => [
+            'type' => 'Select Date',
             'label' => ts("Modified Date"),
           ],
           'readonly' => TRUE,
@@ -1193,6 +1199,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'html' => [
             'type' => 'Select Date',
             'formatType' => 'activityDateTime',
+            'label' => ts("Scheduled Date"),
           ],
           'add' => '3.3',
         ],
@@ -1332,6 +1339,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Select',
+            'label' => ts("Visibility"),
           ],
           'pseudoconstant' => [
             'callback' => 'CRM_Core_SelectValues::groupVisibility',
diff --git a/civicrm/CRM/Mailing/DAO/MailingComponent.php b/civicrm/CRM/Mailing/DAO/MailingComponent.php
index 1a0b2001d1..61e792f2dd 100644
--- a/civicrm/CRM/Mailing/DAO/MailingComponent.php
+++ b/civicrm/CRM/Mailing/DAO/MailingComponent.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingComponent.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7ad429cf84e9bae091c8ea38beada696)
+ * (GenCodeChecksum:7e8514edf9fb7b55783cc813df572660)
  */
 
 /**
@@ -37,8 +37,9 @@ class CRM_Mailing_DAO_MailingComponent extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'add' => 'civicrm/admin/component?action=add&reset=1',
-    'update' => 'civicrm/admin/component?action=update&id=[id]&reset=1',
+    'add' => 'civicrm/admin/component/edit?action=add&reset=1',
+    'update' => 'civicrm/admin/component/edit?action=update&id=[id]&reset=1',
+    'browse' => 'civicrm/admin/component?action=browse&id=[id]&reset=1',
   ];
 
   /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingJob.php b/civicrm/CRM/Mailing/DAO/MailingJob.php
index e2dc1a5883..b4b21d1c12 100644
--- a/civicrm/CRM/Mailing/DAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/DAO/MailingJob.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingJob.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:234cdededd082922f889dc386c46ed60)
+ * (GenCodeChecksum:92bce75ffec87400a53a47591c09201f)
  */
 
 /**
@@ -221,6 +221,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_Mailing',
           'html' => [
+            'type' => 'EntityRef',
             'label' => ts("Mailing"),
           ],
           'add' => NULL,
@@ -318,6 +319,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Select',
+            'label' => ts("Status"),
           ],
           'pseudoconstant' => [
             'callback' => 'CRM_Core_SelectValues::getMailingJobStatus',
@@ -342,6 +344,10 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'entity' => 'MailingJob',
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
+          'html' => [
+            'type' => 'CheckBox',
+            'label' => ts("Test Mailing"),
+          ],
           'add' => '1.9',
         ],
         'job_type' => [
@@ -383,6 +389,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_MailingJob',
           'html' => [
+            'type' => 'EntityRef',
             'label' => ts("Parent"),
           ],
           'add' => '3.3',
@@ -423,6 +430,10 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'entity' => 'MailingJob',
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
+          'html' => [
+            'type' => 'Number',
+            'label' => ts("Batch Limit"),
+          ],
           'add' => '3.3',
         ],
       ];
diff --git a/civicrm/CRM/Mailing/Form/Component.php b/civicrm/CRM/Mailing/Form/Component.php
index 6044fd5658..603317c7b5 100644
--- a/civicrm/CRM/Mailing/Form/Component.php
+++ b/civicrm/CRM/Mailing/Form/Component.php
@@ -35,8 +35,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
   protected $_BAOName;
 
   public function preProcess() {
-    $this->_id = $this->get('id');
-    $this->_BAOName = $this->get('BAOName');
+    $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
   }
 
   /**
@@ -94,8 +93,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
 
     if (isset($this->_id)) {
       $params = ['id' => $this->_id];
-      $baoName = $this->_BAOName;
-      $baoName::retrieve($params, $defaults);
+      CRM_Mailing_BAO_MailingComponent::retrieve($params, $defaults);
     }
     else {
       $defaults['is_active'] = 1;
@@ -146,10 +144,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
       $InvalidTokens = ['action.forward' => ts("This token can only be used in send mailing context (body, header, footer)..")];
     }
     $errors = [];
-    foreach ([
-      'text',
-      'html',
-    ] as $type) {
+    foreach (['text', 'html'] as $type) {
       $dataErrors = [];
       foreach ($InvalidTokens as $token => $desc) {
         if ($params['body_' . $type]) {
diff --git a/civicrm/CRM/Mailing/Info.php b/civicrm/CRM/Mailing/Info.php
index 2eec29a438..b3f0c3371c 100644
--- a/civicrm/CRM/Mailing/Info.php
+++ b/civicrm/CRM/Mailing/Info.php
@@ -129,23 +129,6 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
     ];
   }
 
-  /**
-   * Get AngularJS modules and their dependencies.
-   *
-   * @return array
-   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
-   * @see CRM_Utils_Hook::angularModules
-   */
-  public function getAngularModules() {
-    global $civicrm_root;
-
-    $result = [];
-    $result['crmMailing'] = include "$civicrm_root/ang/crmMailing.ang.php";
-    $result['crmMailingAB'] = include "$civicrm_root/ang/crmMailingAB.ang.php";
-
-    return $result;
-  }
-
   /**
    * @return bool
    */
diff --git a/civicrm/CRM/Mailing/MailStore.php b/civicrm/CRM/Mailing/MailStore.php
index 13626fcf1c..1aa3e62b34 100644
--- a/civicrm/CRM/Mailing/MailStore.php
+++ b/civicrm/CRM/Mailing/MailStore.php
@@ -191,11 +191,7 @@ class CRM_Mailing_MailStore {
   public function maildir($name) {
     $config = CRM_Core_Config::singleton();
     $dir = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $name;
-    foreach ([
-      'cur',
-      'new',
-      'tmp',
-    ] as $sub) {
+    foreach (['cur', 'new', 'tmp'] as $sub) {
       if (!file_exists($dir . DIRECTORY_SEPARATOR . $sub)) {
         if ($this->_debug) {
           print "creating $dir/$sub\n";
diff --git a/civicrm/CRM/Mailing/MailStore/Maildir.php b/civicrm/CRM/Mailing/MailStore/Maildir.php
index 8668ce12e6..33490dd0d5 100644
--- a/civicrm/CRM/Mailing/MailStore/Maildir.php
+++ b/civicrm/CRM/Mailing/MailStore/Maildir.php
@@ -82,10 +82,7 @@ class CRM_Mailing_MailStore_Maildir extends CRM_Mailing_MailStore {
     // set property text attachment as file CRM-5408
     $parser->options->parseTextAttachmentsAsFiles = TRUE;
 
-    foreach ([
-      'cur',
-      'new',
-    ] as $subdir) {
+    foreach (['cur', 'new'] as $subdir) {
       $dir = $this->_dir . DIRECTORY_SEPARATOR . $subdir;
       foreach (scandir($dir) as $file) {
         if ($file == '.' or $file == '..') {
diff --git a/civicrm/CRM/Mailing/Page/Common.php b/civicrm/CRM/Mailing/Page/Common.php
index 680777753a..42b6a0e383 100644
--- a/civicrm/CRM/Mailing/Page/Common.php
+++ b/civicrm/CRM/Mailing/Page/Common.php
@@ -44,7 +44,7 @@ class CRM_Mailing_Page_Common extends CRM_Core_Page {
     }
 
     $cancel = CRM_Utils_Request::retrieve("_qf_{$this->_type}_cancel", 'String');
-    if ($cancel) {
+    if (isset($cancel)) {
       $config = CRM_Core_Config::singleton();
       CRM_Utils_System::redirect($config->userFrameworkBaseURL);
     }
diff --git a/civicrm/CRM/Mailing/Page/View.php b/civicrm/CRM/Mailing/Page/View.php
index 2f77598177..ef39231236 100644
--- a/civicrm/CRM/Mailing/Page/View.php
+++ b/civicrm/CRM/Mailing/Page/View.php
@@ -44,14 +44,9 @@ class CRM_Mailing_Page_View extends CRM_Core_Page {
     }
 
     // if user is an admin, return true
-    if (CRM_Core_Permission::check('administer CiviCRM') ||
-      CRM_Core_Permission::check('approve mailings') ||
-      CRM_Core_Permission::check('access CiviMail')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['administer CiviCRM', /* OR */ 'approve mailings', /* OR */ 'access CiviMail'],
+    ]);
   }
 
   /**
diff --git a/civicrm/CRM/Mailing/PseudoConstant.php b/civicrm/CRM/Mailing/PseudoConstant.php
index ea347de44e..faf90cb6ac 100644
--- a/civicrm/CRM/Mailing/PseudoConstant.php
+++ b/civicrm/CRM/Mailing/PseudoConstant.php
@@ -190,7 +190,7 @@ class CRM_Mailing_PseudoConstant extends CRM_Core_PseudoConstant {
         self::$defaultComponent[$dao->component_type] = $dao->id;
       }
     }
-    $value = CRM_Utils_Array::value($type, self::$defaultComponent, $undefined);
+    $value = self::$defaultComponent[$type] ?? $undefined;
     return $value;
   }
 
diff --git a/civicrm/CRM/Mailing/Selector/Browse.php b/civicrm/CRM/Mailing/Selector/Browse.php
index d5cf043fb6..cf6fd1e6cb 100644
--- a/civicrm/CRM/Mailing/Selector/Browse.php
+++ b/civicrm/CRM/Mailing/Selector/Browse.php
@@ -378,14 +378,8 @@ LEFT JOIN  civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul
             $actionMask = CRM_Core_Action::PREVIEW;
           }
         }
-        if (in_array($row['status'], [
-          'Scheduled',
-          'Running',
-          'Paused',
-        ])) {
-          if ($allAccess ||
-            ($showApprovalLinks && $showCreateLinks && $showScheduleLinks)
-          ) {
+        if (in_array($row['status'], ['Scheduled', 'Running', 'Paused'])) {
+          if ($allAccess || ($showApprovalLinks && $showCreateLinks && $showScheduleLinks)) {
 
             $actionMask |= CRM_Core_Action::DISABLE;
             if ($row['status'] === "Paused") {
diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
index 3067227861..f3267235d3 100644
--- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
+++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
@@ -28,6 +28,15 @@
     <adminGroup>CiviMail</adminGroup>
     <weight>410</weight>
   </item>
+  <item>
+    <path>civicrm/admin/component/edit</path>
+    <title>Headers, Footers, and Automated Messages</title>
+    <page_callback>CRM_Mailing_Form_Component</page_callback>
+    <desc>Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.</desc>
+    <access_arguments>access CiviCRM,access CiviMail</access_arguments>
+    <adminGroup>CiviMail</adminGroup>
+    <weight>411</weight>
+  </item>
   <item>
     <path>civicrm/admin/options/from_email_address/civimail</path>
     <title>From Email Addresses</title>
diff --git a/civicrm/CRM/Member/BAO/MembershipBlock.php b/civicrm/CRM/Member/BAO/MembershipBlock.php
index d89eae0d2a..68c05e49a8 100644
--- a/civicrm/CRM/Member/BAO/MembershipBlock.php
+++ b/civicrm/CRM/Member/BAO/MembershipBlock.php
@@ -9,12 +9,16 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\MembershipBlock;
+use Civi\Core\Event\PostEvent;
+use Civi\Core\HookInterface;
+
 /**
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock {
+class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock implements HookInterface {
 
   /**
    * Create or update a MembershipBlock.
@@ -40,4 +44,40 @@ class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock {
     return (bool) self::deleteRecord(['id' => $id]);
   }
 
+  /**
+   * Update MembershipBlocks if autorenew option is changed.
+   *
+   * Available auto-renew options are
+   * 0 - Autorenew unavailable
+   * 1 - Give option
+   * 2 - Force auto-renewal
+   *
+   * In the case of 0 or 2 we need to ensure that all membership blocks are
+   * set to the same value. If the option is 1 no action is required as
+   * all 3 options are then valid at the membership block level.
+   *
+   * https://issues.civicrm.org/jira/browse/CRM-15573
+   *
+   * @param \Civi\Core\Event\PostEvent $event
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public static function on_hook_civicrm_post(PostEvent $event): void {
+    if ($event->entity === 'MembershipType' && $event->action === 'edit') {
+      $autoRenewOption = $event->object->auto_renew;
+      if ($event->id && $autoRenewOption !== NULL && ((int) $autoRenewOption) !== 1) {
+        $autoRenewOption = (int) $autoRenewOption;
+        $membershipBlocks = MembershipBlock::get(FALSE)->execute();
+        foreach ($membershipBlocks as $membershipBlock) {
+          if (array_key_exists($event->id, $membershipBlock['membership_types'])
+            && ((int) $membershipBlock['membership_types'][$event->id]) !== $autoRenewOption
+          ) {
+            $membershipBlock['membership_types'][$event->id] = $autoRenewOption;
+            MembershipBlock::update(FALSE)->setValues($membershipBlock)->execute();
+          }
+        }
+      }
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Member/BAO/MembershipStatus.php b/civicrm/CRM/Member/BAO/MembershipStatus.php
index 48175688ff..f85fec9cec 100644
--- a/civicrm/CRM/Member/BAO/MembershipStatus.php
+++ b/civicrm/CRM/Member/BAO/MembershipStatus.php
@@ -339,4 +339,23 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus im
     return $statusIds;
   }
 
+  /**
+   * Get the id of the status to be used for new memberships.
+   *
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  public static function getNewMembershipTypeID(): int {
+    $cacheKey = __CLASS__ . __FUNCTION__;
+    if (!isset(\Civi::$statics[$cacheKey])) {
+      \Civi::$statics[$cacheKey] = (bool) CRM_Core_DAO::singleValueQuery(
+        'SELECT id FROM civicrm_membership_status
+        WHERE start_event = "join_date"
+        AND start_event_adjust_unit IS NULL
+        ORDER BY weight LIMIT 1'
+      );
+    }
+    return \Civi::$statics[$cacheKey];
+  }
+
 }
diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php
index 0d686deacb..169064acc9 100644
--- a/civicrm/CRM/Member/BAO/MembershipType.php
+++ b/civicrm/CRM/Member/BAO/MembershipType.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\MembershipType;
+
 /**
  *
  * @package CRM
@@ -54,11 +56,8 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
    * @return \CRM_Member_DAO_MembershipType
    * @throws \CRM_Core_Exception
    */
-  public static function add(&$params) {
-    $hook = empty($params['id']) ? 'create' : 'edit';
+  public static function add($params) {
     $membershipTypeID = $params['id'] ?? NULL;
-    CRM_Utils_Hook::pre($hook, 'MembershipType', $membershipTypeID, $params);
-
     if (!$membershipTypeID && !isset($params['domain_id'])) {
       $params['domain_id'] = CRM_Core_Config::domainID();
     }
@@ -68,10 +67,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     if ($membershipTypeID) {
       $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $membershipTypeID, 'member_of_contact_id');
     }
-
-    $membershipType = new CRM_Member_DAO_MembershipType();
-    $membershipType->copyValues($params);
-    $membershipType->save();
+    $membershipType = self::writeRecord($params);
 
     if ($membershipTypeID) {
       // on update we may need to retrieve some details for the price field function - otherwise we get e-notices on attempts to retrieve
@@ -83,9 +79,6 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     if ($membershipTypeID) {
       self::updateAllPriceFieldValue($membershipTypeID, $params);
     }
-
-    CRM_Utils_Hook::post($hook, 'MembershipType', $membershipType->id, $membershipType);
-
     self::flush();
     return $membershipType;
   }
@@ -298,11 +291,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     $membershipTypeDetails = self::getMembershipTypeDetails($membershipTypeId);
 
     // Convert all dates to 'Y-m-d' format.
-    foreach ([
-      'joinDate',
-      'startDate',
-      'endDate',
-    ] as $dateParam) {
+    foreach (['joinDate', 'startDate', 'endDate'] as $dateParam) {
       if (!empty($$dateParam)) {
         $$dateParam = CRM_Utils_Date::processDate($$dateParam, NULL, FALSE, 'Y-m-d');
       }
@@ -809,29 +798,14 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
   public static function getAllMembershipTypes(): array {
     $cacheString = __CLASS__ . __FUNCTION__ . CRM_Core_Config::domainID() . '_' . CRM_Core_I18n::getLocale();
     if (!Civi::cache('metadata')->has($cacheString)) {
-      $types = civicrm_api3('MembershipType', 'get', ['options' => ['limit' => 0, 'sort' => 'weight']])['values'];
+      $types = (array) MembershipType::get(FALSE)->addOrderBy('weight')->execute()->indexBy('id');
       $taxRates = CRM_Core_PseudoConstant::getTaxRates();
-      $keys = ['description', 'relationship_type_id', 'relationship_direction', 'max_related', 'auto_renew'];
-      // In order to avoid down-stream e-notices we undo api v3 filtering of NULL values. This is covered
-      // in Unit tests & ideally we might switch to apiv4 but I would argue we should build caching
-      // of metadata entities like this directly into apiv4.
       foreach ($types as $id => $type) {
-        foreach ($keys as $key) {
-          if (!isset($type[$key])) {
-            $types[$id][$key] = NULL;
-          }
-        }
-        if (isset($type['contribution_type_id'])) {
-          unset($types[$id]['contribution_type_id']);
-        }
         $types[$id]['tax_rate'] = (float) ($taxRates[$type['financial_type_id']] ?? 0.0);
         $multiplier = 1;
         if ($types[$id]['tax_rate'] !== 0.0) {
           $multiplier += ($types[$id]['tax_rate'] / 100);
         }
-        if (!array_key_exists('minimum_fee', $types[$id])) {
-          $types[$id]['minimum_fee'] = 0;
-        }
         $types[$id]['minimum_fee_with_tax'] = (float) $types[$id]['minimum_fee'] * $multiplier;
       }
       Civi::cache('metadata')->set($cacheString, $types);
diff --git a/civicrm/CRM/Member/Form.php b/civicrm/CRM/Member/Form.php
index f0a2ecba21..03c1d9e170 100644
--- a/civicrm/CRM/Member/Form.php
+++ b/civicrm/CRM/Member/Form.php
@@ -208,7 +208,8 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
       // all possible statuses are disabled - redirect back to contact form
       CRM_Core_Error::statusBounce(ts('There are no configured membership statuses. You cannot add this membership until your membership statuses are correctly configured'));
     }
-
+    // This should be overwritten from the contribution....
+    $this->assign('currency', \Civi::settings()->get('defaultCurrency'));
     parent::preProcess();
     $params = [];
     $params['context'] = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this, FALSE, 'membership');
@@ -583,13 +584,27 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     $this->order = new CRM_Financial_BAO_Order();
     $this->order->setForm($this);
     $this->order->setPriceSelectionFromUnfilteredInput($formValues);
+
     if (isset($formValues['total_amount'])) {
       $this->order->setOverrideTotalAmount((float) $formValues['total_amount']);
     }
-    $this->order->setOverrideFinancialTypeID((int) $formValues['financial_type_id']);
+
+    if ($this->isQuickConfig()) {
+      $this->order->setOverrideFinancialTypeID((int) $formValues['financial_type_id']);
+    }
+
     return $formValues;
   }
 
+  /**
+   * Is the price set quick config.
+   *
+   * @return bool
+   */
+  private function isQuickConfig(): bool {
+    return $this->_priceSetId && CRM_Price_BAO_PriceSet::isQuickConfig($this->_priceSetId);
+  }
+
   /**
    * Wrapper function for unit tests.
    *
@@ -628,21 +643,6 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     ];
   }
 
-  /**
-   * Get the currency in use.
-   *
-   * This just defaults to getting the default currency
-   * as other currencies are not supported on the membership
-   * forms at the moment.
-   *
-   * @param array $submittedValues
-   *
-   * @return string
-   */
-  public function getCurrency($submittedValues = []): string {
-    return CRM_Core_Config::singleton()->defaultCurrency;
-  }
-
   /**
    * Get the relevant payment instrument id.
    *
diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php
index e6e1debc70..4c7e4b658d 100644
--- a/civicrm/CRM/Member/Form/Membership.php
+++ b/civicrm/CRM/Member/Form/Membership.php
@@ -29,8 +29,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form {
    */
   public $_mode;
 
-  public $_contributeMode = 'direct';
-
   protected $_memTypeSelected;
 
   /**
@@ -911,7 +909,7 @@ DESC limit 1");
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'isTest' => (bool) ($this->_action & CRM_Core_Action::PREVIEW),
         'modelProps' => [
-          'receiptText' => $this->getSubmittedValue('receipt_text'),
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'contributionID' => $formValues['contribution_id'],
           'contactID' => $this->_receiptContactId,
           'membershipID' => $this->getMembershipID(),
@@ -1255,21 +1253,6 @@ DESC limit 1");
           $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A';
         }
       }
-      if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        foreach ($lineItem[$this->_priceSetId] as $value) {
-          if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-            if (isset($dataArray[$value['tax_rate']])) {
-              $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + CRM_Utils_Array::value('tax_amount', $value);
-            }
-            else {
-              $dataArray[$value['tax_rate']] = $value['tax_amount'] ?? NULL;
-            }
-          }
-        }
-
-        $this->assign('dataArray', $dataArray);
-      }
     }
     $this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE);
 
@@ -1510,10 +1493,7 @@ DESC limit 1");
 
     if ($this->_mode) {
       // @todo move this outside shared code as Batch entry just doesn't
-      $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-        $this->_params,
-        $this->_bltID
-      ));
+      $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
 
       $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($this->_params);
       $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']);
diff --git a/civicrm/CRM/Member/Form/MembershipBlock.php b/civicrm/CRM/Member/Form/MembershipBlock.php
index 72dd3f22c1..6b6461d94b 100644
--- a/civicrm/CRM/Member/Form/MembershipBlock.php
+++ b/civicrm/CRM/Member/Form/MembershipBlock.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\PriceSetEntity;
+
 /**
  * form to process actions on Membership
  */
@@ -18,12 +20,12 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    * Store membership price set id
    * @var int
    */
-  protected $_memPriceSetId = NULL;
+  protected $_memPriceSetId;
 
   /**
    * Set variables up before form is built.
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
     $this->setSelectedChild('membership');
   }
@@ -32,10 +34,10 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    * Set default values for the form. Note that in edit/view mode
    * the default values are retrieved from the database
    */
-  public function setDefaultValues() {
+  public function setDefaultValues(): ?array {
     $defaults = [];
-    if (isset($this->_id)) {
-      $defaults = CRM_Member_BAO_Membership::getMembershipBlock($this->_id);
+    if ($this->getContributionPageID()) {
+      $defaults = CRM_Member_BAO_Membership::getMembershipBlock($this->getContributionPageID());
     }
     $defaults['member_is_active'] = $defaults['is_active'] ?? FALSE;
 
@@ -65,8 +67,8 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
           'name',
           'label',
         ]);
-        foreach ($pFIDs as $pid => $pValue) {
-          if ($pValue['html_type'] == 'Radio' && $pValue['name'] == 'membership_amount') {
+        foreach ($pFIDs as $pValue) {
+          if ($pValue['html_type'] === 'Radio' && $pValue['name'] === 'membership_amount') {
             $defaults['mem_price_field_id'] = $pValue['id'];
             $defaults['membership_type_label'] = $pValue['label'];
           }
@@ -75,10 +77,10 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         if (!empty($defaults['mem_price_field_id'])) {
           $options = [];
           $priceFieldOptions = CRM_Price_BAO_PriceFieldValue::getValues($defaults['mem_price_field_id'], $options, 'id', 1);
-          foreach ($options as $k => $v) {
+          foreach ($options as $v) {
             $newMembershipType[$v['membership_type_id']] = 1;
             if (!empty($defaults['auto_renew'])) {
-              $defaults["auto_renew_" . $v['membership_type_id']] = $defaults['auto_renew'][$v['membership_type_id']];
+              $defaults['auto_renew_' . $v['membership_type_id']] = $defaults['auto_renew'][$v['membership_type_id']];
             }
           }
           $defaults['membership_type'] = $newMembershipType;
@@ -119,14 +121,14 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
       );
       $paymentProcessorId = explode(CRM_Core_DAO::VALUE_SEPARATOR, $paymentProcessorIds);
       $isRecur = TRUE;
-      foreach ($paymentProcessorId as $dontCare => $id) {
+      foreach ($paymentProcessorId as $id) {
         if (!array_key_exists($id, $paymentProcessor)) {
           $isRecur = FALSE;
           continue;
         }
       }
 
-      $membership = $membershipDefault = $params = [];
+      $membership = $membershipDefault = [];
       $renewOption = [];
       foreach ($membershipTypes as $k => $v) {
         $membership[] = $this->createElement('advcheckbox', $k, NULL, $v);
@@ -135,26 +137,19 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         if ($isRecur) {
           $autoRenew = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $k, 'auto_renew');
           $membershipRequired[$k] = $autoRenew;
-          $autoRenewOptions = [];
           if ($autoRenew) {
             $autoRenewOptions = [ts('Not offered'), ts('Give option'), ts('Required')];
             $this->addElement('select', "auto_renew_$k", ts('Auto-renew'), $autoRenewOptions);
             //CRM-15573
             if ($autoRenew == 2) {
               $this->freeze("auto_renew_$k");
-              $params['id'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipBlock', $this->_id, 'id', 'entity_id');
             }
             $renewOption[$k] = $autoRenew;
           }
         }
       }
 
-      //CRM-15573
-      if (!empty($params['id'])) {
-        $params['membership_types'] = serialize($membershipRequired);
-        CRM_Member_BAO_MembershipBlock::writeRecord($params);
-      }
-      $this->add('hidden', "mem_price_field_id", '', ['id' => "mem_price_field_id"]);
+      $this->add('hidden', 'mem_price_field_id', '', ['id' => 'mem_price_field_id']);
       $this->assign('is_recur', $isRecur);
       $this->assign('auto_renew', $renewOption);
       $this->addGroup($membership, 'membership_type', ts('Membership Types'));
@@ -211,7 +206,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    *   mixed true or array of errors
    * @throws \CRM_Core_Exception
    */
-  public static function formRule($params, $files, $contributionPageId = NULL) {
+  public static function formRule(array $params, $files, $contributionPageId = NULL) {
     $errors = [];
 
     if (!empty($params['member_price_set_id'])) {
@@ -241,7 +236,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
     }
     if (!empty($params['member_is_active'])) {
       // Don't allow Contribution price set w/ membership signup, CRM-5095.
-      $priceSetNotExtendingMembership = \Civi\Api4\PriceSetEntity::get(FALSE)
+      $priceSetNotExtendingMembership = PriceSetEntity::get(FALSE)
         ->addSelect('id')
         ->addJoin('PriceSet AS price_set', 'LEFT', ['price_set_id', '=', 'price_set.id'])
         ->addWhere('entity_table', '=', 'civicrm_contribution_page')
@@ -316,6 +311,8 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
 
   /**
    * Process the form.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function postProcess() {
     // get the submitted form values.
@@ -359,7 +356,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
             $setParams['name'] = $pageTitle . '_' . $this->_id;
           }
           else {
-            $timeSec = explode(".", microtime(TRUE));
+            $timeSec = explode('.', microtime(TRUE));
             $setParams['name'] = $pageTitle . '_' . date('is', $timeSec[0]) . $timeSec[1];
           }
           $setParams['is_quick_config'] = 1;
@@ -429,7 +426,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         foreach ($options as $priceFieldID => $memType) {
           CRM_Price_BAO_PriceFieldValue::setIsActive($priceFieldID, '0');
         }
-        $priceField = CRM_Price_BAO_PriceField::create($fieldParams);
+        CRM_Price_BAO_PriceField::create($fieldParams);
       }
       elseif (!$priceSetID) {
         $deletePriceSet = 1;
@@ -486,7 +483,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    *
    * @return string
    */
-  public function getTitle() {
+  public function getTitle(): string {
     return ts('Memberships');
   }
 
diff --git a/civicrm/CRM/Member/Form/MembershipRenewal.php b/civicrm/CRM/Member/Form/MembershipRenewal.php
index aa002c5f6a..ceb123cfea 100644
--- a/civicrm/CRM/Member/Form/MembershipRenewal.php
+++ b/civicrm/CRM/Member/Form/MembershipRenewal.php
@@ -92,6 +92,17 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
    */
   protected $membershipTypeName = '';
 
+  /**
+   * Used in the wrangling of custom field data onto the form.
+   *
+   * There are known instances of extensions altering this array
+   * in order to affect the custom data displayed & there is no
+   * alternative recommendation.
+   *
+   * @var array
+   */
+  public $_groupTree;
+
   /**
    * Set entity fields to be assigned to the form.
    */
@@ -378,9 +389,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
     $this->add('textarea', 'receipt_text', ts('Renewal Message'));
 
     // Retrieve the name and email of the contact - this will be the TO for receipt email
-    list($this->_contributorDisplayName,
-      $this->_contributorEmail
-      ) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
+    [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
     $this->assign('email', $this->_contributorEmail);
     // The member form uses emailExists. Assigning both while we transition / synchronise.
     $this->assign('emailExists', $this->_contributorEmail);
@@ -691,7 +700,9 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
       }
     }
 
-    list($this->isMailSent) = CRM_Core_BAO_MessageTemplate::sendTemplate(
+    // This is being replaced by userEnteredText.
+    $this->assign('receipt_text', $this->getSubmittedValue('receipt_text'));
+    [$this->isMailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'workflow' => 'membership_offline_receipt',
         'from' => $receiptFrom,
@@ -701,7 +712,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
         'PDFFilename' => ts('receipt') . '.pdf',
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'modelProps' => [
-          'receiptText' => $this->getSubmittedValue('receipt_text'),
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'contactID' => $this->_receiptContactId,
           'contributionID' => $this->getContributionID(),
           'membershipID' => $this->getMembershipID(),
diff --git a/civicrm/CRM/Member/Form/MembershipType.php b/civicrm/CRM/Member/Form/MembershipType.php
index 9781f19319..1907ed6aaa 100644
--- a/civicrm/CRM/Member/Form/MembershipType.php
+++ b/civicrm/CRM/Member/Form/MembershipType.php
@@ -23,6 +23,8 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
 
   use CRM_Core_Form_EntityFormTrait;
 
+  protected $submittableMoneyFields = ['minimum_fee'];
+
   /**
    * Set entity fields to be assigned to the form.
    */
@@ -287,7 +289,7 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       $errors['financial_type_id'] = ts('Please enter the financial Type.');
     }
 
-    if (empty($params['duration_interval']) and $params['duration_unit'] != 'lifetime') {
+    if (empty($params['duration_interval']) and $params['duration_unit'] !== 'lifetime') {
       $errors['duration_interval'] = ts('Please enter a duration interval.');
     }
 
@@ -295,15 +297,15 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       1,
       2,
     ])) {
-      if (($params['duration_interval'] > 1 && $params['duration_unit'] == 'year') ||
-        ($params['duration_interval'] > 12 && $params['duration_unit'] == 'month')
+      if (($params['duration_interval'] > 1 && $params['duration_unit'] === 'year') ||
+        ($params['duration_interval'] > 12 && $params['duration_unit'] === 'month')
       ) {
         $errors['duration_unit'] = ts('Automatic renewals are not supported by the currently available payment processors when the membership duration is greater than 1 year / 12 months.');
       }
     }
 
-    if ($params['period_type'] == 'fixed' &&
-      $params['duration_unit'] == 'day'
+    if ($params['period_type'] === 'fixed' &&
+      $params['duration_unit'] === 'day'
     ) {
       $errors['period_type'] = ts('Period type should be Rolling when duration unit is Day');
     }
@@ -362,11 +364,7 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       CRM_Core_Session::setStatus(ts('Selected membership type has been deleted.'), ts('Record Deleted'), 'success');
     }
     else {
-      $params = $this->exportValues();
-
-      if ($params['minimum_fee']) {
-        $params['minimum_fee'] = CRM_Utils_Rule::cleanMoney($params['minimum_fee']);
-      }
+      $params = $this->getSubmittedValues();
 
       $hasRelTypeVal = FALSE;
       if (!CRM_Utils_System::isNull($params['relationship_type_id'])) {
diff --git a/civicrm/CRM/Member/Form/Task/Label.php b/civicrm/CRM/Member/Form/Task/Label.php
index 2162dd0d07..a25d9e4382 100644
--- a/civicrm/CRM/Member/Form/Task/Label.php
+++ b/civicrm/CRM/Member/Form/Task/Label.php
@@ -26,7 +26,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
     $this->setContactIDs();
     CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'templates/CRM/Member/Form/Task/Label.js');
@@ -38,7 +38,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     CRM_Contact_Form_Task_Label::buildLabelForm($this);
     $this->addElement('checkbox', 'per_membership', ts('Print one label per Membership (rather than per contact)'));
   }
@@ -49,7 +49,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    * @return array
    *   array of default values
    */
-  public function setDefaultValues() {
+  public function setDefaultValues(): array {
     $defaults = [];
     $format = CRM_Core_BAO_LabelFormat::getDefaultValues();
     $defaults['label_name'] = $format['name'] ?? NULL;
@@ -65,7 +65,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function postProcess() {
+  public function postProcess(): void {
     $formValues = $this->controller->exportValues($this->_name);
     $locationTypeID = $formValues['location_type_id'];
     $respectDoNotMail = $formValues['do_not_mail'] ?? NULL;
@@ -81,16 +81,13 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
     // so no-one is tempted to refer to this again after relevant values are extracted
     unset($formValues);
 
-    list($rows, $tokenFields) = CRM_Contact_Form_Task_LabelCommon::getRows($this->_contactIds, $locationTypeID, $respectDoNotMail, $mergeSameAddress, $mergeSameHousehold);
+    [$rows, $tokenFields] = CRM_Contact_Form_Task_LabelCommon::getRows($this->_contactIds, $locationTypeID, $respectDoNotMail, $mergeSameAddress, $mergeSameHousehold);
 
-    $individualFormat = FALSE;
     if ($mergeSameAddress) {
       CRM_Core_BAO_Address::mergeSameAddress($rows);
-      $individualFormat = TRUE;
     }
     if ($mergeSameHousehold) {
       $rows = CRM_Contact_Form_Task_LabelCommon::mergeSameHousehold($rows);
-      $individualFormat = TRUE;
     }
     // format the addresses according to CIVICRM_ADDRESS_FORMAT (CRM-1327)
     foreach ((array) $rows as $id => $row) {
diff --git a/civicrm/CRM/Member/Form/Task/PDFLetter.php b/civicrm/CRM/Member/Form/Task/PDFLetter.php
index 2d1b680ef4..29f42b8c1c 100644
--- a/civicrm/CRM/Member/Form/Task/PDFLetter.php
+++ b/civicrm/CRM/Member/Form/Task/PDFLetter.php
@@ -87,13 +87,7 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
     $form = $this;
     $formValues = $form->controller->exportValues($form->getName());
     [$formValues, $html_message] = $this->processMessageTemplate($formValues);
-    $messageToken = CRM_Utils_Token::getTokens($html_message);
-    $html
-      = $this->generateHTML(
-      $membershipIDs,
-      $messageToken,
-      $html_message
-    );
+    $html = $this->generateHTML($membershipIDs, $html_message);
     $form->createActivities($html_message, $contactIDs, $formValues['subject'], CRM_Utils_Array::value('campaign_id', $formValues));
     CRM_Utils_PDF_Utils::html2pdf($html, $this->getFileName() . '.pdf', FALSE, $formValues);
 
@@ -106,7 +100,6 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
    * Generate html for pdf letters.
    *
    * @param array $membershipIDs
-   * @param array $messageToken
    * @param $html_message
    *
    * @return array
@@ -114,7 +107,7 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
    * @internal
    *
    */
-  public function generateHTML($membershipIDs, $messageToken, $html_message): array {
+  public function generateHTML($membershipIDs, $html_message): array {
     $memberships = Membership::get(FALSE)
       ->addWhere('id', 'IN', $membershipIDs)
       ->addSelect('contact_id')->execute();
diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php
index e6c543f1cd..7b1eb4de55 100644
--- a/civicrm/CRM/Member/Page/Tab.php
+++ b/civicrm/CRM/Member/Page/Tab.php
@@ -25,7 +25,15 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
   public static $_membershipTypesLinks = NULL;
 
   public $_permission = NULL;
-  public $_contactId = NULL;
+
+  /**
+   * Contact ID.
+   *
+   * @var int
+   *
+   * @deprecated
+   */
+  public $_contactId;
 
   /**
    * @var bool
@@ -332,8 +340,9 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
       $this->_action = CRM_Core_Action::ADD;
     }
     else {
-      $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
-      $this->assign('contactId', $this->_contactId);
+      $contactID = $this->getContactID();
+      $this->assign('contactId', $contactID);
+      CRM_Contact_Form_Inline::renderFooter($contactID, FALSE);
 
       // check logged in url permission
       CRM_Contact_Page_View::checkUserPermission($this);
@@ -372,13 +381,9 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
       $this->assign('accessContribution', TRUE);
 
       //show associated soft credit when contribution payment is paid by different person
-      if ($this->_id && $this->_contactId) {
-        $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id);
-        if (!empty($softCreditList)) {
-          $this->assign('softCredit', TRUE);
-          $this->assign('softCreditRows', $softCreditList);
-        }
-      }
+      $softCreditList = ($this->_id && $this->_contactId) ? CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id) : FALSE;
+      $this->assign('softCredit', (bool) $softCreditList);
+      $this->assign('softCreditRows', $softCreditList);
     }
     else {
       $this->_accessContribution = FALSE;
@@ -669,4 +674,17 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
     }
   }
 
+  /**
+   * Get the contact ID.
+   *
+   * @api Supported for external use.
+   *
+   * @return int|null
+   * @throws \CRM_Core_Exception
+   */
+  public function getContactID(): ?int {
+    $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
+    return $this->_contactId;
+  }
+
 }
diff --git a/civicrm/CRM/Member/Page/UserDashboard.php b/civicrm/CRM/Member/Page/UserDashboard.php
index bcc693f61a..5e427c40be 100644
--- a/civicrm/CRM/Member/Page/UserDashboard.php
+++ b/civicrm/CRM/Member/Page/UserDashboard.php
@@ -38,10 +38,7 @@ class CRM_Member_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBoard
 
       //get the membership status and type values.
       $statusANDType = CRM_Member_BAO_Membership::getStatusANDTypeValues($dao->id);
-      foreach ([
-        'status',
-        'membership_type',
-      ] as $fld) {
+      foreach (['status', 'membership_type'] as $fld) {
         $membership[$dao->id][$fld] = $statusANDType[$dao->id][$fld] ?? NULL;
       }
       if (!empty($statusANDType[$dao->id]['is_current_member'])) {
diff --git a/civicrm/CRM/Member/StatusOverrideTypes.php b/civicrm/CRM/Member/StatusOverrideTypes.php
index 57451fafa1..c75439703a 100644
--- a/civicrm/CRM/Member/StatusOverrideTypes.php
+++ b/civicrm/CRM/Member/StatusOverrideTypes.php
@@ -65,35 +65,19 @@ class CRM_Member_StatusOverrideTypes {
    * @return bool
    */
   public static function isOverridden($overrideType) {
-    if ($overrideType == self::NO) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType != self::NO;
   }
 
   public static function isNo($overrideType) {
-    if ($overrideType != self::NO) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::NO;
   }
 
   public static function isPermanent($overrideType) {
-    if ($overrideType != self::PERMANENT) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::PERMANENT;
   }
 
   public static function isUntilDate($overrideType) {
-    if ($overrideType != self::UNTIL_DATE) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::UNTIL_DATE;
   }
 
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php b/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
index 03d134e289..1169ea498f 100644
--- a/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
+++ b/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
@@ -1,9 +1,11 @@
 <?php
 
+use Civi\Api4\ContributionPage;
 use Civi\Api4\MembershipType;
 use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
+use Civi\Api4\PriceSetEntity;
 use Civi\Api4\WorkflowMessage;
 use Civi\Test;
 use Civi\WorkflowMessage\GenericWorkflowMessage;
@@ -16,6 +18,10 @@ use Civi\WorkflowMessage\WorkflowMessageExample;
  */
 class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageExample {
 
+  private $priceSets;
+
+  private $contributionPages;
+
   /**
    * Get the examples this class is able to deliver.
    *
@@ -35,15 +41,23 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
 
     foreach ($workflows as $workflow) {
       foreach ($priceSets as $priceSet) {
+        if (!$priceSet['contribution_page_id'] && $workflow === 'membership_online_receipt' & count($priceSets) > 1) {
+          // Generally the online receipt is used with a contribution page so lets' focus
+          // on those examples for it - unless none exist. It could also be used
+          // on other contributions via the send receipt method so we do want to show it if
+          // there are not better examples.
+          continue;
+        }
         yield [
           'name' => 'workflow/' . $workflow . '/' . strtolower($membershipType['name']) . '_' . strtolower($priceSet['name']) . '_' . strtolower($defaultCurrency),
-          'title' => $priceSet['title'] . ' - ' . $membershipType['name'] . ' : ' . $defaultCurrency,
+          'title' => ($priceSet['contribution_page_id'] ? $this->getContributionPage($priceSet['contribution_page_id'])['title'] : $priceSet['title']) . ' - ' . $membershipType['name'] . ' : ' . $defaultCurrency,
           'tags' => ['preview'],
           'workflow' => $workflow,
           'membership_type' => $membershipType,
           'currency' => $defaultCurrency,
           'price_set_id' => $priceSet['id'],
-          'is_show_line_items' => !$priceSets['is_quick_config'],
+          'contribution_page_id' => $priceSet['contribution_page_id'],
+          'is_show_line_items' => !$priceSet['is_quick_config'],
         ];
       }
     }
@@ -92,15 +106,20 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
       'contact_id' => 100,
       'financial_type_id' => $example['membership_type']['financial_type_id'],
       'receive_date' => '2021-07-23 15:39:20',
-      'total_amount' => $example['membership_type']['minimum_amount'],
       'fee_amount' => .99,
       'net_amount' => $example['membership_type']['minimum_amount'] - .99,
       'currency' => $example['currency'],
+      'contribution_page_id' => $example['contribution_page_id'],
       'trxn_id' => 123,
       'invoice_id' => 'I-123',
       'contribution_status_id:name' => 'Completed',
       'contribution_status_id' => \CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'),
     ];
+    if ($example['contribution_page_id']) {
+      foreach ($this->getContributionPage($example['contribution_page_id']) as $pageKey => $pageValue) {
+        $contribution['contribution_page_id.' . $pageKey] = $pageValue;
+      }
+    }
     $contribution['contribution_status_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
 
     if (isset($example['contribution_params'])) {
@@ -111,8 +130,14 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     $mockOrder->setTemplateContributionID(50);
 
     if (empty($example['is_show_line_items'])) {
-      $mockOrder->setPriceSetToDefault('membership');
-      $mockOrder->setOverrideTotalAmount($example['membership_type']['minimum_fee']);
+      if (empty($example['contribution_page_id'])) {
+        $mockOrder->setOverrideTotalAmount($example['membership_type']['minimum_fee']);
+        $mockOrder->setPriceSetToDefault('membership');
+      }
+      else {
+        $priceSet = $this->getPriceSet()[$example['price_set_id']];
+        $mockOrder->setPriceSetID($priceSet['id']);
+      }
       $mockOrder->setDefaultFinancialTypeID($example['membership_type']['financial_type_id']);
     }
     else {
@@ -124,15 +149,14 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     }
     foreach (PriceField::get()->addWhere('price_set_id', '=', $mockOrder->getPriceSetID())->execute() as $index => $priceField) {
       $priceFieldValue = PriceFieldValue::get()->addWhere('price_field_id', '=', $priceField['id'])->execute()->first();
-      if (empty($example['is_show_line_items'])) {
-        $priceFieldValue['amount'] = $contribution['total_amount'];
-        $priceFieldValue['financial_type_id'] = $contribution['financial_type_id'];
-      }
       $this->setLineItem($mockOrder, $priceField, $priceFieldValue, $index, $membership);
     }
 
     $contribution['total_amount'] = $mockOrder->getTotalAmount();
     $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0;
+    $contribution['amount_level'] = $mockOrder->getAmountLevel();
+    $contribution['address_id.name'] = 'Barbara Mary Jones';
+    $contribution['address_id.display'] = "123 Main Street\nMega City";
     $messageTemplate->setContribution($contribution);
     $messageTemplate->setOrder($mockOrder);
     $messageTemplate->setContribution($contribution);
@@ -145,10 +169,23 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
    * @throws \CRM_Core_Exception
    */
   private function getPriceSet(): ?array {
-    return (array) PriceSet::get(FALSE)
-      ->addWhere('extends', '=', CRM_Core_Component::getComponentID('CiviMember'))
-      ->addOrderBy('is_quick_config', 'DESC')
-      ->execute()->indexBy('id');
+    if (!$this->priceSets) {
+      $priceSets = (array) PriceSet::get(FALSE)
+        ->addWhere('extends:name', 'CONTAINS', 'CiviMember')
+        ->addOrderBy('is_quick_config', 'DESC')
+        ->execute()->indexBy('id');
+      $priceSetEntities = PriceSetEntity::get(FALSE)
+        ->addWhere('price_set_id', 'IN', array_keys($priceSets))
+        ->addWhere('entity_table', '=', 'civicrm_contribution_page')
+        ->addOrderBy('entity_id')
+        ->addSelect('price_set_id', 'entity_id')
+        ->execute();
+      foreach ($priceSetEntities as $priceSetEntity) {
+        $priceSets[$priceSetEntity['price_set_id']]['contribution_page_id'] = $priceSetEntity['entity_id'];
+      }
+      $this->priceSets = $priceSets;
+    }
+    return $this->priceSets;
   }
 
   /**
@@ -171,6 +208,7 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
       'label' => $priceFieldValue['label'],
       'financial_type_id' => $priceFieldValue['financial_type_id'],
       'non_deductible_amount' => $priceFieldValue['non_deductible_amount'],
+      'membership_type_id' => $priceFieldValue['membership_type_id'],
     ];
     if (!empty($priceFieldValue['membership_type_id'])) {
       $lineItem['membership'] = ['start_date' => $membership['start_date'], 'end_date' => $membership['end_date']];
@@ -178,4 +216,21 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     $mockOrder->setLineItem($lineItem, $index);
   }
 
+  /**
+   * @param int $id
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function getContributionPage(int $id): array {
+    if (!isset($this->contributionPages[$id])) {
+      $this->contributionPages[$id] = ContributionPage::get(FALSE)
+        ->addWhere('id', '=', $id)
+        ->execute()->first();
+    }
+    return $this->contributionPages[$id];
+  }
+
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php b/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
index 9522240d5c..93648fa326 100644
--- a/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
+++ b/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
@@ -25,13 +25,4 @@ class CRM_Member_WorkflowMessage_MembershipOfflineReceipt extends GenericWorkflo
   use CRM_Contribute_WorkflowMessage_ContributionTrait;
   public const WORKFLOW = 'membership_offline_receipt';
 
-  /**
-   * Additional text to include in the receipt.
-   *
-   * @var string
-   *
-   * @scope tplParams as receipt_text
-   */
-  protected $receiptText;
-
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php b/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
index 665fd4cb7e..30bcd251f6 100644
--- a/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
+++ b/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
@@ -31,7 +31,7 @@ trait CRM_Member_WorkflowMessage_MembershipTrait {
   public function setMembership(array $membership): self {
     $this->membership = $membership;
     if (!empty($membership['id'])) {
-      $this->membershipId = $membership['id'];
+      $this->membershipID = $membership['id'];
     }
     return $this;
   }
diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php
index 5448225acc..b51425d8c5 100644
--- a/civicrm/CRM/PCP/Form/Event.php
+++ b/civicrm/CRM/PCP/Form/Event.php
@@ -100,10 +100,7 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent {
     $pcpBlock->find(TRUE);
 
     if (!empty($pcpBlock->id) && CRM_PCP_BAO_PCP::getPcpBlockInUse($pcpBlock->id)) {
-      foreach ([
-        'target_entity_type',
-        'target_entity_id',
-      ] as $element_name) {
+      foreach (['target_entity_type', 'target_entity_id'] as $element_name) {
         $element = $this->getElement($element_name);
         $element->freeze();
       }
diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php
index 18496ef20e..12dc8f9163 100644
--- a/civicrm/CRM/PCP/Page/PCPInfo.php
+++ b/civicrm/CRM/PCP/Page/PCPInfo.php
@@ -206,9 +206,9 @@ class CRM_PCP_Page_PCPInfo extends CRM_Core_Page {
         TRUE, NULL, TRUE,
         TRUE
       );
-      $this->assign('linkTextUrl', $linkTextUrl);
-      $this->assign('linkText', $pcpBlock->link_text);
     }
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $pcpBlock->link_text ?? NULL);
 
     $this->assign('honor', $honor);
     $this->assign('total', $totalAmount ?: '0.0');
diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php
index 4a1a81c85a..f54b31133a 100644
--- a/civicrm/CRM/Price/BAO/LineItem.php
+++ b/civicrm/CRM/Price/BAO/LineItem.php
@@ -257,13 +257,6 @@ WHERE li.contribution_id = %1";
         $getTaxDetails = TRUE;
       }
     }
-    if (Civi::settings()->get('invoicing')) {
-      // @todo - this is an inappropriate place to be doing form level assignments.
-      $taxTerm = Civi::settings()->get('tax_term');
-      $smarty = CRM_Core_Smarty::singleton();
-      $smarty->assign('taxTerm', $taxTerm);
-      $smarty->assign('getTaxDetails', $getTaxDetails);
-    }
     return $lineItems;
   }
 
@@ -1256,7 +1249,7 @@ WHERE li.contribution_id = %1";
    * @return string
    */
   protected function getSalesTaxTerm() {
-    return CRM_Contribute_BAO_Contribution::checkContributeSettings('tax_term');
+    return \Civi::settings()->get('tax_term');
   }
 
   /**
diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php
index 39803c6d4f..a161fae726 100644
--- a/civicrm/CRM/Price/BAO/PriceField.php
+++ b/civicrm/CRM/Price/BAO/PriceField.php
@@ -372,16 +372,9 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
             'data-amount' => $opt[$valueFieldName],
             'data-currency' => $currencyName,
             'data-price-field-values' => json_encode($customOption),
+            'data-membership-type-id' => $opt['membership_type_id'] ?? NULL,
             'visibility' => $visibility_id,
           ] + $incomingExtra;
-          // @todo - move this back to the only calling function on Contribution_Form_Main.php
-          if ($field->name == 'membership_amount') {
-            $extra += [
-              'onclick' => "return showHideAutoRenew({$opt['membership_type_id']});",
-              'membership-type' => $opt['membership_type_id'],
-            ];
-            $qf->assign('membershipFieldID', $field->id);
-          }
 
           $choice[$opt['id']] = CRM_Utils_String::purifyHTML($priceOptionText['label']);
           $choiceAttrs[$opt['id']] = $extra;
@@ -412,7 +405,10 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
           }
 
           $choice['0'] = '<span class="crm-price-amount-label">' . $none . '</span>';
-          $choiceAttrs['0'] = ['price' => json_encode([$elementName, '0'])];
+          $choiceAttrs['0'] = [
+            'price' => json_encode([$elementName, '0']),
+            'data-membership-type-id' => NULL,
+          ] + $incomingExtra;
         }
 
         $element = &$qf->addRadio($elementName, $label, $choice, [], NULL, FALSE, $choiceAttrs);
diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php
index 566ef3287a..0e7fe7f85f 100644
--- a/civicrm/CRM/Price/BAO/PriceSet.php
+++ b/civicrm/CRM/Price/BAO/PriceSet.php
@@ -646,12 +646,27 @@ WHERE  id = %1";
    *   Line item array to be altered.
    * @param int $priceSetID
    *
+   * @deprecated since 5.69 will be removed around 5.85. This function is still in use but marking deprecated to make it clear that
+   * we are moving away from it. There is no function that has the guaranteed stable signature
+   * that would allow us to support if from outside of core so if using this or the core alternative
+   * from an extension you need to rely on unit tests to keep your code stable. Within core we
+   * already have good test cover on code that calls this.
+   *
+   * The recommended approach within core is something like
+   *
+   * private function initializeOrder(): void {
+   *  $this->order = new CRM_Financial_BAO_Order();
+   *  $this->order->setForm($this);
+   *  $this->order->setPriceSelectionFromUnfilteredInput($this->>getSubmittedValues());
+   * }
+   *
+   * $lineItems = $this->order->getLineItems();
+   *
    * @todo $priceSetID is a pseudoparam for permit override - we should stop passing it where we
    * don't specifically need it & find a better way where we do.
    */
   public static function processAmount($fields, &$params, &$lineItem, $priceSetID = NULL) {
     // using price set
-    $totalPrice = $totalTax = 0;
     foreach ($fields as $id => $field) {
       if (empty($params["price_{$id}"]) ||
         (empty($params["price_{$id}"]) && $params["price_{$id}"] == NULL)
@@ -662,49 +677,11 @@ WHERE  id = %1";
 
       [$params, $lineItem] = self::getLine($params, $lineItem, $priceSetID, $field, $id);
     }
-
-    $amount_level = [];
-    $totalParticipant = 0;
-    if (is_array($lineItem)) {
-      foreach ($lineItem as $values) {
-        $totalPrice += $values['line_total'] + $values['tax_amount'];
-        $totalTax += $values['tax_amount'];
-        $totalParticipant += $values['participant_count'];
-        // This is a bit nasty. The logic of 'quick config' was because price set configuration was
-        // (and still is) too difficult to replace the 'quick config' price set configuration on the contribution
-        // page.
-        //
-        // However, because the quick config concept existed all sorts of logic was hung off it
-        // and function behaviour sometimes depends on whether 'price set' is set - although actually it
-        // is always set at the functional level. In this case we are dealing with the default 'quick config'
-        // price set having a label of 'Contribution Amount' which could wind up creating a 'funny looking' label.
-        // The correct answer is probably for it to have an empty label in the DB - the label is never shown so it is a
-        // place holder.
-        //
-        // But, in the interests of being careful when capacity is low - avoiding the known default value
-        // will get us by.
-        // Crucially a test has been added so a better solution can be implemented later with some comfort.
-        // @todo - stop setting amount level in this function & call the getAmountLevel function to retrieve it.
-        if ($values['label'] !== ts('Contribution Amount')) {
-          $amount_level[] = $values['label'] . ' - ' . (float) $values['qty'];
-        }
-      }
-    }
-
-    $displayParticipantCount = '';
-    if ($totalParticipant > 0) {
-      $displayParticipantCount = ' Participant Count -' . $totalParticipant;
-    }
-    // @todo - stop setting amount level in this function & call the getAmountLevel function to retrieve it.
-    if (!empty($amount_level)) {
-      $params['amount_level'] = CRM_Utils_Array::implodePadded($amount_level);
-      if (!empty($displayParticipantCount)) {
-        $params['amount_level'] = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $amount_level) . $displayParticipantCount . CRM_Core_DAO::VALUE_SEPARATOR;
-      }
-    }
-
-    $params['amount'] = $totalPrice;
-    $params['tax_amount'] = $totalTax;
+    $order = new CRM_Financial_BAO_Order();
+    $order->setLineItems((array) $lineItem);
+    $params['amount_level'] = $order->getAmountLevel();
+    $params['amount'] = $order->getTotalAmount();
+    $params['tax_amount'] = $order->getTotalTaxAmount();
   }
 
   /**
@@ -787,6 +764,7 @@ WHERE  id = %1";
       $data['fields'] = (array) PriceField::get(FALSE)
         ->addWhere('price_set_id', '=', $priceSetID)
         ->addSelect('*', 'visibility_id:name')
+        ->addOrderBy('weight', 'ASC')
         ->execute()->indexBy('id');
       foreach ($data['fields'] as &$field) {
         $field['options'] = [];
@@ -800,6 +778,7 @@ WHERE  id = %1";
       $options = PriceFieldValue::get(FALSE)
         ->addWhere('price_field_id', 'IN', array_keys($data['fields']))
         ->setSelect($select)
+        ->addOrderBy('weight', 'ASC')
         ->execute();
       $taxRates = CRM_Core_PseudoConstant::getTaxRates();
       foreach ($options as $option) {
@@ -1699,4 +1678,18 @@ WHERE     ct.id = cp.financial_type_id AND
     return $result;
   }
 
+  public static function hook_civicrm_post($op, $objectName, $objectId, &$objectRef): void {
+    if (in_array($objectName, ['PriceField', 'PriceFieldValue', 'PriceSet'], TRUE)) {
+      self::flushPriceSets();
+    }
+  }
+
+  public static function flushPriceSets(): void {
+    $cache = CRM_Utils_Cache::singleton();
+    foreach (PriceSet::get(FALSE)->addSelect('id')->execute() as $priceSet) {
+      $cacheKey = 'CRM_Price_BAO_PriceSetgetCachedPriceSetDetail_' . $priceSet['id'];
+      $cache->delete($cacheKey);
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php
index b07bf8ccb8..19d399edb0 100644
--- a/civicrm/CRM/Price/Page/Option.php
+++ b/civicrm/CRM/Price/Page/Option.php
@@ -189,7 +189,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page {
     $this->assign('customOption', $customOption);
     $this->assign('sid', $this->_sid);
     $this->assign('isEvent', $isEvent);
-    $this->assignSalesTaxTermToTemplate();
+    $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
   /**
diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php
index e20bd8d40b..32cea9291c 100644
--- a/civicrm/CRM/Profile/Form.php
+++ b/civicrm/CRM/Profile/Form.php
@@ -473,11 +473,8 @@ class CRM_Profile_Form extends CRM_Core_Form {
           }
 
         }
-        elseif (!empty($this->_multiRecordFields)
-          && (!$this->_multiRecord || !in_array($this->_multiRecord, [
-            CRM_Core_Action::DELETE,
-            CRM_Core_Action::UPDATE,
-          ]))
+        elseif (!empty($this->_multiRecordFields) &&
+          (!$this->_multiRecord || !in_array($this->_multiRecord, [CRM_Core_Action::DELETE, CRM_Core_Action::UPDATE]))
         ) {
           CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'js/crm.livePage.js', 1, 'html-header');
           //multi-record listing page
diff --git a/civicrm/CRM/Profile/Form/Search.php b/civicrm/CRM/Profile/Form/Search.php
index 71d9a6cc51..dc5e7efa4d 100644
--- a/civicrm/CRM/Profile/Form/Search.php
+++ b/civicrm/CRM/Profile/Form/Search.php
@@ -63,10 +63,7 @@ class CRM_Profile_Form_Search extends CRM_Profile_Form {
           $value[$item] = 1;
         }
       }
-      elseif (in_array($key, [
-        'birth_date',
-        'deceased_date',
-      ])) {
+      elseif (in_array($key, ['birth_date', 'deceased_date'])) {
         list($value) = CRM_Utils_Date::setDateDefaults($value);
       }
 
diff --git a/civicrm/CRM/Profile/Selector/Listings.php b/civicrm/CRM/Profile/Selector/Listings.php
index dbec1ab1ac..c2ede95215 100644
--- a/civicrm/CRM/Profile/Selector/Listings.php
+++ b/civicrm/CRM/Profile/Selector/Listings.php
@@ -310,11 +310,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
                 $locationTypeName = $locationTypes[$lType];
               }
 
-              if (in_array($fieldName, [
-                'phone',
-                'im',
-                'email',
-              ])) {
+              if (in_array($fieldName, ['phone', 'im', 'email'])) {
                 if ($type) {
                   $name = "`$locationTypeName-$fieldName-$type`";
                 }
@@ -523,11 +519,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
               continue;
             }
             $locationTypeName = str_replace(' ', '_', $locationTypeName);
-            if (in_array($fieldName, [
-              'phone',
-              'im',
-              'email',
-            ])) {
+            if (in_array($fieldName, ['phone', 'im', 'email'])) {
               if ($type) {
                 $names[] = "{$locationTypeName}-{$fieldName}-{$type}";
               }
@@ -598,7 +590,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
           $typeId = substr($name, 0, -4) . "-website_type_id";
           $typeName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Website', 'website_type_id', $result->$typeId);
           if ($typeName) {
-            $row[] = "<a href=\"$url\">{$result->$name} (${typeName})</a>";
+            $row[] = "<a href=\"$url\">{$result->$name} ($typeName)</a>";
           }
           else {
             $row[] = "<a href=\"$url\">{$result->$name}</a>";
@@ -643,10 +635,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
           $dname = $name . '_display';
           $row[] = $result->$dname;
         }
-        elseif (in_array($name, [
-          'birth_date',
-          'deceased_date',
-        ])) {
+        elseif (in_array($name, ['birth_date', 'deceased_date'])) {
           $row[] = CRM_Utils_Date::customFormat($result->$name);
         }
         elseif (isset($result->$name)) {
diff --git a/civicrm/CRM/Queue/ErrorPolicy.php b/civicrm/CRM/Queue/ErrorPolicy.php
index 9246036f9b..d7ffeff762 100644
--- a/civicrm/CRM/Queue/ErrorPolicy.php
+++ b/civicrm/CRM/Queue/ErrorPolicy.php
@@ -60,11 +60,7 @@ class CRM_Queue_ErrorPolicy {
   protected function activate() {
     $this->active = TRUE;
     $this->backup = [];
-    foreach ([
-      'display_errors',
-      'html_errors',
-      'xmlrpc_errors',
-    ] as $key) {
+    foreach (['display_errors', 'html_errors', 'xmlrpc_errors'] as $key) {
       $this->backup[$key] = ini_get($key);
       ini_set($key, 0);
     }
@@ -76,11 +72,7 @@ class CRM_Queue_ErrorPolicy {
    */
   protected function deactivate() {
     restore_error_handler();
-    foreach ([
-      'display_errors',
-      'html_errors',
-      'xmlrpc_errors',
-    ] as $key) {
+    foreach (['display_errors', 'html_errors', 'xmlrpc_errors'] as $key) {
       ini_set($key, $this->backup[$key]);
     }
     $this->active = FALSE;
diff --git a/civicrm/CRM/Queue/TaskRunner.php b/civicrm/CRM/Queue/TaskRunner.php
index 8c42ab8425..7f1d03c879 100644
--- a/civicrm/CRM/Queue/TaskRunner.php
+++ b/civicrm/CRM/Queue/TaskRunner.php
@@ -40,12 +40,12 @@ class CRM_Queue_TaskRunner {
     /** @var string $outcome One of 'ok', 'retry', 'delete', 'abort' */
 
     if (is_numeric($queue->getSpec('retry_limit')) && $item->run_count > 1 + $queue->getSpec('retry_limit')) {
-      \Civi::log()->debug("Skipping exhausted task: " . $task->title);
+      \Civi::log()->debug('Skipping exhausted task: ' . $task->title);
       $outcome = $queue->getSpec('error');
       $exception = new \CRM_Core_Exception(sprintf('Skipping exhausted task after %d tries: %s', $item->run_count, print_r($task, 1)), 'queue_retry_exhausted');
     }
     else {
-      \Civi::log()->debug("Running task: " . $task->title);
+      \Civi::log()->debug('Running task: ' . $task->title);
       try {
         $runResult = $task->run($this->createContext($queue));
         $outcome = $runResult ? 'ok' : $queue->getSpec('error');
@@ -80,17 +80,17 @@ class CRM_Queue_TaskRunner {
 
     switch ($outcome) {
       case 'retry':
-        \Civi::log('queue')->error('Task "{id}" failed and should be retried. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed and should be retried. Task specific error: {message}', $logDetails);
         $queue->releaseItem($item);
         break;
 
       case 'delete':
-        \Civi::log('queue')->error('Task "{id}" failed and will be deleted. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed and will be deleted. Task specific error: {message}', $logDetails);
         $queue->deleteItem($item);
         break;
 
       case 'abort':
-        \Civi::log('queue')->error('Task "{id}" failed. Queue processing aborted. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed. Queue processing aborted. Task specific error: {message}', $logDetails);
         $queue->setStatus('aborted');
         $queue->releaseItem($item); /* Sysadmin might inspect, fix, and then resume. Item should be accessible. */
         break;
diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php
index 2c2605ce4f..91622e7c26 100644
--- a/civicrm/CRM/Report/Form.php
+++ b/civicrm/CRM/Report/Form.php
@@ -4272,14 +4272,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a
   protected function isFieldFiltered($prop) {
     if (!empty($prop['filters']) && $this->_customGroupFilters) {
       foreach ($prop['filters'] as $fieldAlias => $val) {
-        foreach ([
-          'value',
-          'min',
-          'max',
-          'relative',
-          'from',
-          'to',
-        ] as $attach) {
+        foreach (['value', 'min', 'max', 'relative', 'from', 'to'] as $attach) {
           if (isset($this->_params[$fieldAlias . '_' . $attach]) &&
             (!empty($this->_params[$fieldAlias . '_' . $attach])
               || ($attach != 'relative' &&
diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php
index 536d6695f9..38f7627825 100644
--- a/civicrm/CRM/Report/Form/Activity.php
+++ b/civicrm/CRM/Report/Form/Activity.php
@@ -432,12 +432,12 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     if ($recordType == 'target') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_assignee.') ||
-          strstr($clause, 'civicrm_contact_source.') ||
-          strstr($clause, 'civicrm_email_assignee.') ||
-          strstr($clause, 'civicrm_email_source.') ||
-          strstr($clause, 'civicrm_phone_assignee.') ||
-          strstr($clause, 'civicrm_phone_source.')
+        if (str_contains($clause, 'civicrm_contact_assignee.') ||
+          str_contains($clause, 'civicrm_contact_source.') ||
+          str_contains($clause, 'civicrm_email_assignee.') ||
+          str_contains($clause, 'civicrm_email_source.') ||
+          str_contains($clause, 'civicrm_phone_assignee.') ||
+          str_contains($clause, 'civicrm_phone_source.')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -447,13 +447,13 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     elseif ($recordType == 'assignee') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_target.') ||
-          strstr($clause, 'civicrm_contact_source.') ||
-          strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_source.') ||
-          strstr($clause, 'civicrm_phone_target.') ||
-          strstr($clause, 'civicrm_phone_source.') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_target.') ||
+          str_contains($clause, 'civicrm_contact_source.') ||
+          str_contains($clause, 'civicrm_email_target.') ||
+          str_contains($clause, 'civicrm_email_source.') ||
+          str_contains($clause, 'civicrm_phone_target.') ||
+          str_contains($clause, 'civicrm_phone_source.') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -463,13 +463,13 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     elseif ($recordType == 'source') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_target.') ||
-          strstr($clause, 'civicrm_contact_assignee.') ||
-          strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_assignee.') ||
-          strstr($clause, 'civicrm_phone_target.') ||
-          strstr($clause, 'civicrm_phone_assignee.') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_target.') ||
+          str_contains($clause, 'civicrm_contact_assignee.') ||
+          str_contains($clause, 'civicrm_email_target.') ||
+          str_contains($clause, 'civicrm_email_assignee.') ||
+          str_contains($clause, 'civicrm_phone_target.') ||
+          str_contains($clause, 'civicrm_phone_assignee.') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -480,16 +480,16 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       $this->_selectClauses = $this->_selectAliasesTotal;
       foreach ($this->_selectClauses as $key => $clause) {
         // @todo - fix up the way the tables are declared in construct & remove this.
-        if (strstr($clause, 'civicrm_contact_contact_target') ||
-          strstr($clause, 'civicrm_contact_contact_assignee') ||
-          strstr($clause, 'civicrm_contact_contact_source') ||
-          strstr($clause, 'civicrm_phone_contact_source_phone') ||
-          strstr($clause, 'civicrm_phone_contact_assignee_phone') ||
-          strstr($clause, 'civicrm_email_contact_source_email') ||
-          strstr($clause, 'civicrm_email_contact_assignee_email') ||
-          strstr($clause, 'civicrm_email_contact_target_email') ||
-          strstr($clause, 'civicrm_phone_contact_target_phone') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_contact_target') ||
+          str_contains($clause, 'civicrm_contact_contact_assignee') ||
+          str_contains($clause, 'civicrm_contact_contact_source') ||
+          str_contains($clause, 'civicrm_phone_contact_source_phone') ||
+          str_contains($clause, 'civicrm_phone_contact_assignee_phone') ||
+          str_contains($clause, 'civicrm_email_contact_source_email') ||
+          str_contains($clause, 'civicrm_email_contact_assignee_email') ||
+          str_contains($clause, 'civicrm_email_contact_target_email') ||
+          str_contains($clause, 'civicrm_phone_contact_target_phone') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $this->_selectClauses[$key] = "GROUP_CONCAT(DISTINCT $clause SEPARATOR ';') as $clause";
         }
diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
index fe56fbdc80..9191acc4ef 100644
--- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
+++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
@@ -628,10 +628,7 @@ INNER JOIN  civicrm_custom_group cg ON ( cg.id = cf.custom_group_id )
       if ($responseField->option_group_id) {
         //show value for print and pdf.
         $value = $responseField->label;
-        if (in_array($this->_outputMode, [
-          'print',
-          'pdf',
-        ])) {
+        if (in_array($this->_outputMode, ['print', 'pdf'])) {
           $value = $responseField->value;
         }
         $fieldValueMap[$responseField->option_group_id][$responseField->value] = $value;
diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php
index bc90feede7..fc1d7de6c0 100644
--- a/civicrm/CRM/Report/Form/Case/Detail.php
+++ b/civicrm/CRM/Report/Form/Case/Detail.php
@@ -35,14 +35,34 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
 
   protected $_caseTypeNameOrderBy = FALSE;
 
+  /**
+   * @var array
+   */
+  protected $caseStatuses;
+
+  /**
+   * @var array
+   */
+  protected $caseTypes;
+
+  /**
+   * @var array
+   */
+  protected $relTypes;
+
+  /**
+   * @var array
+   */
+  protected $caseActivityTypes;
+
   /**
    */
   public function __construct() {
-    $this->case_statuses = CRM_Core_OptionGroup::values('case_status');
-    $this->case_types = CRM_Case_PseudoConstant::caseType();
+    $this->caseStatuses = CRM_Core_OptionGroup::values('case_status');
+    $this->caseTypes = CRM_Case_PseudoConstant::caseType();
     $rels = CRM_Core_PseudoConstant::relationshipType();
     foreach ($rels as $relid => $v) {
-      $this->rel_types[$relid] = $v['label_b_a'];
+      $this->relTypes[$relid] = $v['label_b_a'];
     }
 
     $this->caseActivityTypes = [];
@@ -165,7 +185,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
             'title' => ts('Case Role(s)'),
             'type' => CRM_Utils_Type::T_INT,
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => $this->rel_types,
+            'options' => $this->relTypes,
           ],
           'is_active' => [
             'title' => ts('Active Role?'),
@@ -597,14 +617,14 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
     foreach ($rows as $rowNum => $row) {
       if (array_key_exists('civicrm_case_status_id', $row)) {
         if ($value = $row['civicrm_case_status_id']) {
-          $rows[$rowNum]['civicrm_case_status_id'] = $this->case_statuses[$value];
+          $rows[$rowNum]['civicrm_case_status_id'] = $this->caseStatuses[$value];
 
           $entryFound = TRUE;
         }
       }
       if (array_key_exists('civicrm_case_case_type_id', $row)) {
         if ($value = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $row['civicrm_case_case_type_id'])) {
-          $rows[$rowNum]['civicrm_case_case_type_id'] = $this->case_types[$value];
+          $rows[$rowNum]['civicrm_case_case_type_id'] = $this->caseTypes[$value];
 
           $entryFound = TRUE;
         }
@@ -625,7 +645,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
         if ($value = $row['civicrm_relationship_case_role']) {
           $caseRoles = explode(',', $value);
           foreach ($caseRoles as $num => $caseRole) {
-            $caseRoles[$num] = $this->rel_types[$caseRole];
+            $caseRoles[$num] = $this->relTypes[$caseRole];
           }
           $rows[$rowNum]['civicrm_relationship_case_role'] = implode('; ', $caseRoles);
         }
diff --git a/civicrm/CRM/Report/Form/Case/TimeSpent.php b/civicrm/CRM/Report/Form/Case/TimeSpent.php
index fb929b7a04..95e1de4aa1 100644
--- a/civicrm/CRM/Report/Form/Case/TimeSpent.php
+++ b/civicrm/CRM/Report/Form/Case/TimeSpent.php
@@ -16,6 +16,30 @@
  */
 class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form {
 
+  /**
+   * @var array
+   * @internal
+   */
+  public $activityTypes;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $activityStatuses;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $has_grouping;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $has_activity_type;
+
   /**
    * Class constructor.
    */
diff --git a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
index 4003b58cee..165d9bf973 100644
--- a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
+++ b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
@@ -20,6 +20,30 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
 
   protected $_summary = NULL;
 
+  /**
+   * @var array
+   * @internal
+   */
+  public $relationTypes;
+
+  /**
+   * @var int
+   * @internal
+   */
+  public $relationshipId;
+
+  /**
+   * @var string
+   * @internal
+   */
+  public $householdContact;
+
+  /**
+   * @var string
+   * @internal
+   */
+  public $otherContact;
+
   /**
    * Class constructor.
    */
@@ -407,6 +431,8 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
    */
   public function alterDisplay(&$rows) {
     $type = substr($this->_params['relationship_type_id_value'], -3);
+    $previousHousehold = NULL;
+    $previousContact = NULL;
 
     $entryFound = FALSE;
     $flagHousehold = $flagContact = 0;
@@ -426,16 +452,16 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
       ) {
         if ($value = $row['civicrm_contact_household_household_name']) {
           if ($rowNum == 0) {
-            $priviousHousehold = $value;
+            $previousHousehold = $value;
           }
           else {
-            if ($priviousHousehold == $value) {
+            if ($previousHousehold == $value) {
               $flagHousehold = 1;
-              $priviousHousehold = $value;
+              $previousHousehold = $value;
             }
             else {
               $flagHousehold = 0;
-              $priviousHousehold = $value;
+              $previousHousehold = $value;
             }
           }
 
@@ -460,16 +486,16 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
       ) {
         if ($value = $row['civicrm_contact_id']) {
           if ($rowNum == 0) {
-            $priviousContact = $value;
+            $previousContact = $value;
           }
           else {
-            if ($priviousContact == $value) {
+            if ($previousContact == $value) {
               $flagContact = 1;
-              $priviousContact = $value;
+              $previousContact = $value;
             }
             else {
               $flagContact = 0;
-              $priviousContact = $value;
+              $previousContact = $value;
             }
           }
 
diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php
index 32b5158656..dfedb6043b 100644
--- a/civicrm/CRM/Report/Form/Contribute/Summary.php
+++ b/civicrm/CRM/Report/Form/Contribute/Summary.php
@@ -481,11 +481,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
     $errors = $self->customDataFormRule($fields, $ignoreFields);
 
     if (empty($fields['fields']['total_amount'])) {
-      foreach ([
-        'total_count_value',
-        'total_sum_value',
-        'total_avg_value',
-      ] as $val) {
+      foreach (['total_count_value', 'total_sum_value', 'total_avg_value'] as $val) {
         if (!empty($fields[$val])) {
           $errors[$val] = ts("Please select the Amount Statistics");
         }
diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php
index 6d2f7beb75..3ad31bee78 100644
--- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php
+++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php
@@ -37,6 +37,16 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
 
   public $_drilldownReport = ['contribute/detail' => 'Link to Detail Report'];
 
+  /**
+   * @var string
+   */
+  protected $_outerCluase = '';
+
+  /**
+   * @var string
+   */
+  protected $_groupLimit = '';
+
   /**
    */
   public function __construct() {
@@ -216,11 +226,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
     $op = $fields['total_range_op'] ?? NULL;
     $val = $fields['total_range_value'] ?? NULL;
 
-    if (!in_array($op, [
-      'eq',
-      'lte',
-    ])
-    ) {
+    if (!in_array($op, ['eq', 'lte'])) {
       $errors['total_range_op'] = ts("Please select 'Is equal to' OR 'Is Less than or equal to' operator");
     }
 
@@ -247,7 +253,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
 
   public function where() {
     $clauses = [];
-    $this->_tempClause = $this->_outerCluase = $this->_groupLimit = '';
+    $this->_outerCluase = $this->_groupLimit = '';
     foreach ($this->_columns as $tableName => $table) {
       if (array_key_exists('filters', $table)) {
         foreach ($table['filters'] as $fieldName => $field) {
diff --git a/civicrm/CRM/Report/Form/Mailing/Detail.php b/civicrm/CRM/Report/Form/Mailing/Detail.php
index 52df57c7a7..045e18b79b 100644
--- a/civicrm/CRM/Report/Form/Mailing/Detail.php
+++ b/civicrm/CRM/Report/Form/Mailing/Detail.php
@@ -271,12 +271,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form {
           if (!empty($field['required']) ||
             !empty($this->_params['fields'][$fieldName])
           ) {
-            if (in_array($fieldName, [
-              'unsubscribe_id',
-              'optout_id',
-              'forward_id',
-              'reply_id',
-            ])) {
+            if (in_array($fieldName, ['unsubscribe_id', 'optout_id', 'forward_id', 'reply_id'])) {
               $select[] = "IF({$field['dbAlias']} IS NULL, 'No', 'Yes') as {$tableName}_{$fieldName}";
               $this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = $field['type'] ?? NULL;
               $this->_columnHeaders["{$tableName}_{$fieldName}"]['no_display'] = $field['no_display'] ?? NULL;
diff --git a/civicrm/CRM/Report/Form/Mailing/Summary.php b/civicrm/CRM/Report/Form/Mailing/Summary.php
index 7125920631..d1f4cc08f8 100644
--- a/civicrm/CRM/Report/Form/Mailing/Summary.php
+++ b/civicrm/CRM/Report/Form/Mailing/Summary.php
@@ -82,6 +82,11 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form {
           'type' => CRM_Utils_Type::T_STRING,
           'operator' => 'like',
         ],
+        'is_archived' => [
+          'name' => 'is_archived',
+          'title' => ts('Is archived?'),
+          'type' => CRM_Utils_Type::T_BOOLEAN,
+        ],
       ],
       'order_bys' => [
         'mailing_name' => [
diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php
index 748b644f96..39807bf23b 100644
--- a/civicrm/CRM/Report/Form/Member/Detail.php
+++ b/civicrm/CRM/Report/Form/Member/Detail.php
@@ -16,7 +16,7 @@
  */
 class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
 
-  protected $_summary = NULL;
+  protected $_summary;
 
   protected $_customGroupExtends = [
     'Membership',
@@ -27,7 +27,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
     'Organization',
   ];
 
-  protected $_customGroupGroupBy = FALSE;
+  protected $_customGroupGroupBy;
 
   /**
    * This report has not been optimised for group filtering.
@@ -90,7 +90,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
             'title' => ts('Primary/Inherited?'),
             'default' => TRUE,
           ],
-          'join_date' => [
+          'membership_join_date' => [
             'title' => ts('Member Since'),
             'default' => TRUE,
           ],
@@ -197,13 +197,13 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
           'financial_type_id' => [
             'title' => ts('Financial Type'),
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Contribute_PseudoConstant::financialType(),
+            'options' => CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'search'),
             'type' => CRM_Utils_Type::T_INT,
           ],
           'payment_instrument_id' => [
             'title' => ts('Payment Type'),
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Contribute_PseudoConstant::paymentInstrument(),
+            'options' => CRM_Contribute_BAO_Contribution::buildOptions('payment_instrument_id', 'search'),
             'type' => CRM_Utils_Type::T_INT,
           ],
           'currency' => [
@@ -270,7 +270,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
     parent::__construct();
   }
 
-  public function preProcess() {
+  public function preProcess(): void {
     $this->assign('reportTitle', ts('Membership Detail Report'));
     parent::preProcess();
   }
@@ -316,7 +316,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
                  ON ({$this->_aliases['civicrm_membership']}.id = cmp.membership_id";
       $this->_from .= $groupedBy ? "
                  AND cmp.id = (SELECT MAX(id) FROM civicrm_membership_payment WHERE civicrm_membership_payment.membership_id = {$this->_aliases['civicrm_membership']}.id))"
-                 : ")";
+                 : ')';
       $this->_from .= "
              LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']}
                  ON cmp.contribution_id={$this->_aliases['civicrm_contribution']}.id\n";
@@ -397,7 +397,7 @@ HERESQL;
     }
   }
 
-  public function getOperationPair($type = 'string', $fieldName = NULL) {
+  public function getOperationPair($type = 'string', $fieldName = NULL): array {
     //re-name IS NULL/IS NOT NULL for clarity
     if ($fieldName === 'owner_membership_id') {
       $result = [];
@@ -468,12 +468,12 @@ HERESQL;
         $rows[$rowNum]['civicrm_contact_sort_name'] &&
         array_key_exists('civicrm_contact_id', $row)
       ) {
-        $url = CRM_Utils_System::url("civicrm/contact/view",
+        $url = CRM_Utils_System::url('civicrm/contact/view',
           'reset=1&cid=' . $row['civicrm_contact_id'],
           $this->_absoluteUrl
         );
         $rows[$rowNum]['civicrm_contact_sort_name_link'] = $url;
-        $rows[$rowNum]['civicrm_contact_sort_name_hover'] = ts("View Contact Summary for this Contact.");
+        $rows[$rowNum]['civicrm_contact_sort_name_hover'] = ts('View Contact Summary for this Contact.');
         $entryFound = TRUE;
       }
 
diff --git a/civicrm/CRM/Report/Form/Membership/Summary.php b/civicrm/CRM/Report/Form/Membership/Summary.php
index 68fc16695c..9ce592b5d9 100644
--- a/civicrm/CRM/Report/Form/Membership/Summary.php
+++ b/civicrm/CRM/Report/Form/Membership/Summary.php
@@ -319,11 +319,7 @@ LEFT  JOIN civicrm_contribution  {$this->_aliases['civicrm_contribution']}
     $this->assign('statistics', $this->statistics($rows));
 
     if (!empty($this->_params['charts'])) {
-      foreach ([
-        'receive_date',
-        $this->_interval,
-        'value',
-      ] as $ignore) {
+      foreach (['receive_date', $this->_interval, 'value'] as $ignore) {
         unset($graphRows[$ignore][$count - 1]);
       }
 
diff --git a/civicrm/CRM/Report/Form/Pledge/Pbnp.php b/civicrm/CRM/Report/Form/Pledge/Pbnp.php
index e0e6f9f117..bcf3381045 100644
--- a/civicrm/CRM/Report/Form/Pledge/Pbnp.php
+++ b/civicrm/CRM/Report/Form/Pledge/Pbnp.php
@@ -198,11 +198,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form {
 
     $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
     $pendingStatus = array_search('Pending', $allStatus);
-    foreach ([
-      'Pending',
-      'In Progress',
-      'Overdue',
-    ] as $statusKey) {
+    foreach (['Pending', 'In Progress', 'Overdue'] as $statusKey) {
       if ($key = CRM_Utils_Array::key($statusKey, $allStatus)) {
         $unpaidStatus[] = $key;
       }
diff --git a/civicrm/CRM/Report/Page/Instance.php b/civicrm/CRM/Report/Page/Instance.php
index a2dfca995e..3bb97b4559 100644
--- a/civicrm/CRM/Report/Page/Instance.php
+++ b/civicrm/CRM/Report/Page/Instance.php
@@ -58,7 +58,7 @@ class CRM_Report_Page_Instance extends CRM_Core_Page {
       $templateInfo['name'] = $reportClass;
     }
 
-    if (strstr($templateInfo['name'], '_Form') || !is_null($reportClass)) {
+    if (str_contains($templateInfo['name'], '_Form') || !is_null($reportClass)) {
       $instanceInfo = [];
       CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo);
 
diff --git a/civicrm/CRM/Report/Page/Report.php b/civicrm/CRM/Report/Page/Report.php
index 25c75264e3..e0924d2283 100644
--- a/civicrm/CRM/Report/Page/Report.php
+++ b/civicrm/CRM/Report/Page/Report.php
@@ -44,7 +44,7 @@ class CRM_Report_Page_Report extends CRM_Core_Page {
       $templateInfo['name'] = $reportClass;
     }
 
-    if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form') || !is_null($reportClass)) {
+    if (str_contains($templateInfo['name'] ?? '', '_Form') || !is_null($reportClass)) {
       CRM_Utils_System::setTitle(ts('%1 - Template', [1 => $templateInfo['label']]));
       $this->assign('reportTitle', $templateInfo['label']);
 
diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php
index 58ce4ed313..34f29f2d38 100644
--- a/civicrm/CRM/Report/Utils/Get.php
+++ b/civicrm/CRM/Report/Utils/Get.php
@@ -190,10 +190,7 @@ class CRM_Report_Utils_Get {
    */
   public static function processChart(&$defaults) {
     $chartType = $_GET["charts"] ?? NULL;
-    if (in_array($chartType, [
-      'barChart',
-      'pieChart',
-    ])) {
+    if (in_array($chartType, ['barChart', 'pieChart'])) {
       $defaults["charts"] = $chartType;
     }
   }
diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php
index 2f91c687b8..33e5f73429 100644
--- a/civicrm/CRM/Report/Utils/Report.php
+++ b/civicrm/CRM/Report/Utils/Report.php
@@ -403,7 +403,7 @@ WHERE  inst.report_id = %1";
       $templateInfo = CRM_Core_OptionGroup::getRowValues('report_template', $optionVal, 'value');
       $obj = new CRM_Report_Page_Instance();
       $is_error = 0;
-      if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form')) {
+      if (str_contains($templateInfo['name'] ?? '', '_Form')) {
         $instanceInfo = [];
         CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo);
 
diff --git a/civicrm/CRM/SMS/Form/Group.php b/civicrm/CRM/SMS/Form/Group.php
index 782abef846..897ea179c4 100644
--- a/civicrm/CRM/SMS/Form/Group.php
+++ b/civicrm/CRM/SMS/Form/Group.php
@@ -170,12 +170,7 @@ class CRM_SMS_Form_Group extends CRM_Contact_Form_Task {
 
     $groups = [];
 
-    foreach ([
-      'name',
-      'group_id',
-      'is_sms',
-      'sms_provider_id',
-    ] as $n) {
+    foreach (['name', 'group_id', 'is_sms', 'sms_provider_id'] as $n) {
       if (!empty($values[$n])) {
         $params[$n] = $values[$n];
         if ($n == 'sms_provider_id') {
@@ -237,10 +232,7 @@ class CRM_SMS_Form_Group extends CRM_Contact_Form_Task {
       $mailingTableName = CRM_Mailing_BAO_Mailing::getTableName();
 
       // delete previous includes/excludes, if mailing already existed
-      foreach ([
-        'groups',
-        'mailings',
-      ] as $entity) {
+      foreach (['groups', 'mailings'] as $entity) {
         $mg = new CRM_Mailing_DAO_MailingGroup();
         $mg->mailing_id = $ids['mailing_id'];
         $mg->entity_table = ($entity == 'groups') ? $groupTableName : $mailingTableName;
diff --git a/civicrm/CRM/SMS/Page/Provider.php b/civicrm/CRM/SMS/Page/Provider.php
index cea624e2a1..0024d45e29 100644
--- a/civicrm/CRM/SMS/Page/Provider.php
+++ b/civicrm/CRM/SMS/Page/Provider.php
@@ -52,13 +52,6 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic {
     ];
     CRM_Utils_System::appendBreadCrumb($breadCrumb);
 
-    $this->_id = CRM_Utils_Request::retrieve('id', 'String',
-      $this, FALSE, 0
-    );
-    $this->_action = CRM_Utils_Request::retrieve('action', 'String',
-      $this, FALSE, 0
-    );
-
     return parent::run();
   }
 
diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php
index 053e61c13a..04a6a0ae3a 100644
--- a/civicrm/CRM/UF/Form/Field.php
+++ b/civicrm/CRM/UF/Form/Field.php
@@ -578,12 +578,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
    *   List of errors to be posted back to the form.
    */
   public static function formRuleSubType($fieldType, $groupType, &$errors) {
-    if (in_array($fieldType, [
-      'Participant',
-      'Contribution',
-      'Membership',
-      'Activity',
-    ])) {
+    if (in_array($fieldType, ['Participant', 'Contribution', 'Membership', 'Activity'])) {
       $individualSubTypes = CRM_Contact_BAO_ContactType::subTypes('Individual');
       foreach ($groupType as $value) {
         if (!in_array($value, $individualSubTypes) &&
@@ -744,12 +739,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
       $errors['field_name'] = ts('Please select a field name');
     }
 
-    if ($in_selector && in_array($entityName, [
-      'Contribution',
-      'Participant',
-      'Membership',
-      'Activity',
-    ])
+    if ($in_selector && in_array($entityName, ['Contribution', 'Participant', 'Membership', 'Activity'])
     ) {
       $errors['in_selector'] = ts("'Results Column' cannot be checked for %1 fields.", [1 => $entityName]);
     }
@@ -979,10 +969,8 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
   protected function setMessageIfCountryNotAboveState($fieldName, $locationTypeID, $weight, $ufGroupID) {
     $message = ts('For best results, the Country field should precede the State-Province field in your Profile form. You can use the up and down arrows on field listing page for this profile to change the order of these fields or manually edit weight for Country/State-Province Field.');
 
-    if (in_array($fieldName, [
-      'country',
-      'state_province',
-    ]) && count(CRM_Core_Config::singleton()->countryLimit) > 1
+    if (in_array($fieldName, ['country', 'state_province']) &&
+      count(CRM_Core_Config::singleton()->countryLimit) > 1
     ) {
       // get state or country field weight if exists
       $ufFieldDAO = new CRM_Core_DAO_UFField();
diff --git a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
index 22ae1f1098..25a286982e 100644
--- a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
+++ b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
@@ -368,6 +368,15 @@ class CRM_Upgrade_Incremental_MessageTemplates {
           ['name' => 'event_offline_receipt', 'type' => 'subject'],
         ],
       ],
+      [
+        'version' => '5.69.alpha1',
+        'upgrade_descriptor' => ts('Significant changes to the template and available variables. Text version is discontinued'),
+        'templates' => [
+          ['name' => 'membership_online_receipt', 'type' => 'text'],
+          ['name' => 'membership_online_receipt', 'type' => 'html'],
+          ['name' => 'membership_online_receipt', 'type' => 'subject'],
+        ],
+      ],
     ];
   }
 
@@ -519,10 +528,10 @@ class CRM_Upgrade_Incremental_MessageTemplates {
   /**
    * Update message templates.
    */
-  public function updateTemplates() {
+  public function updateTemplates(): void {
     $templates = $this->getTemplatesToUpdate();
     foreach ($templates as $template) {
-      $workFlowID = CRM_Core_DAO::singleValueQuery("SELECT MAX(id) as id FROM civicrm_option_value WHERE name = %1", [
+      $workFlowID = CRM_Core_DAO::singleValueQuery('SELECT MAX(id) as id FROM civicrm_option_value WHERE name = %1', [
         1 => [$template['name'], 'String'],
       ]);
       $content = file_get_contents(\Civi::paths()->getPath('[civicrm.root]/xml/templates/message_templates/' . $template['name'] . '_' . $template['type'] . '.tpl'));
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php
new file mode 100644
index 0000000000..9d6dee7f5d
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php
@@ -0,0 +1,42 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Upgrade logic for the 5.69.x series.
+ *
+ * Each minor version in the series is handled by either a `5.69.x.mysql.tpl` file,
+ * or a function in this class named `upgrade_5_69_x`.
+ * If only a .tpl file exists for a version, it will be run automatically.
+ * If the function exists, it must explicitly add the 'runSql' task if there is a corresponding .mysql.tpl.
+ *
+ * This class may also implement `setPreUpgradeMessage()` and `setPostUpgradeMessage()` functions.
+ */
+class CRM_Upgrade_Incremental_php_FiveSixtyNine extends CRM_Upgrade_Incremental_Base {
+
+  /**
+   * Upgrade step; adds tasks including 'runSql'.
+   *
+   * @param string $rev
+   *   The version number matching this function name
+   */
+  public function upgrade_5_69_alpha1($rev): void {
+    $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+    $this->addTask('Add is_show_calendar_links column to Event table', 'addColumn', 'civicrm_event', 'is_show_calendar_links',
+      'tinyint NOT NULL DEFAULT 1 COMMENT "If true, calendar links are shown for this event"');
+    $this->addTask('fix crmDate for installs that existed pre-5.43 - start date',
+      'updatePrintLabelToken', 'event.start_date|crmDate:"%B %E%f}"', 'event.start_date|crmDate:\\\"%B %E%f\\\"}"', $rev
+    );
+    $this->addTask('fix crmDate for installs that existed pre-5.43 - end date',
+      'updatePrintLabelToken', 'event.end_date|crmDate:"%B %E%f}"', 'event.end_date|crmDate:\\\"%B %E%f\\\"}"', $rev
+    );
+  }
+
+}
diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl
new file mode 100644
index 0000000000..ef02c7c641
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl
@@ -0,0 +1,12 @@
+{* file to handle db changes in 5.69.alpha1 during upgrade *}
+-- Fix default for any custom fields of data-type float to be NULL rather than empty string --
+UPDATE civicrm_custom_field SET default_value = NULL WHERE default_value = '' AND data_type = 'Float';
+
+-- Add missing provinces for Zambia
+SELECT @country_id := id FROM civicrm_country WHERE name = 'Zambia';
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'C', 'Central');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'E', 'Eastern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'M', 'Muchinga');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'N', 'Northern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'S', 'Southern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'W', 'Western');
diff --git a/civicrm/CRM/Utils/Address.php b/civicrm/CRM/Utils/Address.php
index aa0703e518..2b79d40a59 100644
--- a/civicrm/CRM/Utils/Address.php
+++ b/civicrm/CRM/Utils/Address.php
@@ -451,17 +451,17 @@ class CRM_Utils_Address {
    * Extract the billing fields from the form submission and format them for display.
    *
    * @param array $params
-   * @param int $billingLocationTypeID
    *
    * @return string
    */
-  public static function getFormattedBillingAddressFieldsFromParameters($params, $billingLocationTypeID) {
+  public static function getFormattedBillingAddressFieldsFromParameters(array $params): string {
+    $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling();
     $addressParts = [
-      "street_address" => "billing_street_address-{$billingLocationTypeID}",
-      "city" => "billing_city-{$billingLocationTypeID}",
-      "postal_code" => "billing_postal_code-{$billingLocationTypeID}",
-      "state_province" => "state_province-{$billingLocationTypeID}",
-      "country" => "country-{$billingLocationTypeID}",
+      'street_address' => "billing_street_address-{$billingLocationTypeID}",
+      'city' => "billing_city-{$billingLocationTypeID}",
+      'postal_code' => "billing_postal_code-{$billingLocationTypeID}",
+      'state_province' => "state_province-{$billingLocationTypeID}",
+      'country' => "country-{$billingLocationTypeID}",
     ];
 
     $addressFields = [];
@@ -478,12 +478,12 @@ class CRM_Utils_Address {
           $value = $params[$alternateName];
         }
       }
-      if (is_numeric($value) && ($name == 'state_province' || $name == 'country')) {
-        if ($name == 'state_province') {
+      if (is_numeric($value) && ($name === 'state_province' || $name === 'country')) {
+        if ($name === 'state_province') {
           $addressFields[$name] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($value);
           $addressFields[$name . '_name'] = CRM_Core_PseudoConstant::stateProvince($value);
         }
-        if ($name == 'country') {
+        if ($name === 'country') {
           $addressFields[$name] = CRM_Core_PseudoConstant::countryIsoCode($value);
         }
       }
@@ -491,7 +491,7 @@ class CRM_Utils_Address {
         $addressFields[$name] = $value;
       }
     }
-    return CRM_Utils_Address::format($addressFields);
+    return (string) CRM_Utils_Address::format($addressFields);
   }
 
   /**
diff --git a/civicrm/CRM/Utils/Cache.php b/civicrm/CRM/Utils/Cache.php
index c35c23fe7d..bb4bf4560b 100644
--- a/civicrm/CRM/Utils/Cache.php
+++ b/civicrm/CRM/Utils/Cache.php
@@ -168,6 +168,7 @@ class CRM_Utils_Cache {
   public static function create($params = []) {
     $types = (array) $params['type'];
 
+    // FIXME: When would name ever be empty?
     if (!empty($params['name'])) {
       $params['name'] = self::cleanKey($params['name']);
     }
@@ -183,26 +184,30 @@ class CRM_Utils_Cache {
             if (!empty($params['withArray'])) {
               $cache = $params['withArray'] === 'fast' ? new CRM_Utils_Cache_FastArrayDecorator($cache) : new CRM_Utils_Cache_ArrayDecorator($cache);
             }
-            return $cache;
+            break 2;
           }
           break;
 
         case 'SqlGroup':
           if (defined('CIVICRM_DSN') && CIVICRM_DSN) {
-            return new CRM_Utils_Cache_SqlGroup([
+            $cache = new CRM_Utils_Cache_SqlGroup([
               'group' => $params['name'],
               'prefetch' => $params['prefetch'] ?? FALSE,
             ]);
+            break 2;
           }
           break;
 
         case 'Arraycache':
         case 'ArrayCache':
-          return new CRM_Utils_Cache_ArrayCache([]);
+          $cache = new CRM_Utils_Cache_ArrayCache([]);
+          break 2;
 
       }
     }
-
+    if (isset($cache)) {
+      return new CRM_Utils_Cache_CacheWrapper($cache, $params['name'] ?? NULL);
+    }
     throw new CRM_Core_Exception("Failed to instantiate cache. No supported cache type found. " . print_r($params, 1));
   }
 
diff --git a/civicrm/CRM/Utils/Cache/CacheWrapper.php b/civicrm/CRM/Utils/Cache/CacheWrapper.php
new file mode 100644
index 0000000000..82e7e47c82
--- /dev/null
+++ b/civicrm/CRM/Utils/Cache/CacheWrapper.php
@@ -0,0 +1,106 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+/**
+ */
+class CRM_Utils_Cache_CacheWrapper implements CRM_Utils_Cache_Interface {
+
+  /**
+   * @var string
+   */
+  private $cacheName;
+
+  /**
+   * @var CRM_Utils_Cache_Interface
+   */
+  private $delegate;
+
+  /**
+   * @param \CRM_Utils_Cache_Interface $delegate
+   * @param string $cacheName
+   */
+  public function __construct(\CRM_Utils_Cache_Interface $delegate, $cacheName) {
+    $this->delegate = $delegate;
+    $this->cacheName = $cacheName;
+  }
+
+  public function getMultiple($keys, $default = NULL) {
+    return $this->delegate->getMultiple($keys, $default);
+  }
+
+  public function setMultiple($values, $ttl = NULL) {
+    return $this->delegate->setMultiple($values, $ttl);
+  }
+
+  public function deleteMultiple($keys) {
+    $this->dispatchClearEvent($keys);
+    return $this->delegate->deleteMultiple($keys);
+  }
+
+  public function set($key, $value, $ttl = NULL) {
+    return $this->delegate->set($key, $value, $ttl);
+  }
+
+  public function get($key, $default = NULL) {
+    return $this->delegate->get($key, $default);
+  }
+
+  public function delete($key) {
+    $this->dispatchClearEvent([$key]);
+    return $this->delegate->delete($key);
+  }
+
+  /**
+   * @deprecated
+   */
+  public function flush() {
+    return $this->clear();
+  }
+
+  public function clear() {
+    $this->dispatchClearEvent();
+    return $this->delegate->clear();
+  }
+
+  public function has($key) {
+    return $this->delegate->has($key);
+  }
+
+  /**
+   * @param string $key
+   * @return int|null
+   */
+  public function getExpires($key) {
+    if (method_exists($this->delegate, 'getExpires')) {
+      return $this->delegate->getExpires($key);
+    }
+    return NULL;
+  }
+
+  private function dispatchClearEvent($keys = NULL) {
+    // FIXME: When would name ever be empty?
+    if ($this->cacheName) {
+      $hookParams = [
+        'cacheName' => $this->cacheName,
+        'items' => $keys,
+      ];
+      $event = \Civi\Core\Event\GenericHookEvent::create($hookParams);
+      Civi::dispatcher()->dispatch('civi.cache.clear', $event);
+    }
+  }
+
+}
diff --git a/civicrm/CRM/Utils/Cache/SqlGroup.php b/civicrm/CRM/Utils/Cache/SqlGroup.php
index 97df20cb12..dbc24d8772 100644
--- a/civicrm/CRM/Utils/Cache/SqlGroup.php
+++ b/civicrm/CRM/Utils/Cache/SqlGroup.php
@@ -30,7 +30,7 @@ class CRM_Utils_Cache_SqlGroup implements CRM_Utils_Cache_Interface {
   use CRM_Utils_Cache_NaiveMultipleTrait;
 
   /**
-   * The host name of the memcached server.
+   * Name of the cache group.
    *
    * @var string
    */
diff --git a/civicrm/CRM/Utils/Chart.php b/civicrm/CRM/Utils/Chart.php
index ff74cf8fbf..516f1d9211 100644
--- a/civicrm/CRM/Utils/Chart.php
+++ b/civicrm/CRM/Utils/Chart.php
@@ -196,11 +196,7 @@ class CRM_Utils_Chart {
     $chartData['yname'] = $rows['yname'] ?? NULL;
 
     // carry some chart params if pass.
-    foreach ([
-      'xSize',
-      'ySize',
-      'divName',
-    ] as $f) {
+    foreach (['xSize', 'ySize', 'divName'] as $f) {
       if (!empty($rows[$f])) {
         $chartData[$f] = $rows[$f];
       }
@@ -236,11 +232,7 @@ class CRM_Utils_Chart {
     }
 
     // carry some chart params if pass.
-    foreach ([
-      'xSize',
-      'ySize',
-      'divName',
-    ] as $f) {
+    foreach (['xSize', 'ySize', 'divName'] as $f) {
       if (!empty($rows[$f])) {
         $chartData[$f] = $rows[$f];
       }
diff --git a/civicrm/CRM/Utils/Check/Component/Cms.php b/civicrm/CRM/Utils/Check/Component/Cms.php
index 1c4c7a41dd..68e737c463 100644
--- a/civicrm/CRM/Utils/Check/Component/Cms.php
+++ b/civicrm/CRM/Utils/Check/Component/Cms.php
@@ -16,6 +16,45 @@
  */
 class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component {
 
+  /**
+   * For sites running from Composer, ensure public assets have been correctly installed.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public static function checkPublicAssets(): array {
+    $checks = [];
+    $assetDir = $GLOBALS['civicrm_asset_map']['civicrm/civicrm-core']['dest'] ?? NULL;
+    // No asset directory so this is not a composer-based install
+    if (!$assetDir) {
+      return [];
+    }
+    $errorMsg = NULL;
+    $versionFile = $assetDir . '/js/version.json';
+    if (!file_exists($versionFile)) {
+      $errorMsg = ts('Assets missing from public web directory.');
+    }
+    else {
+      $currentVersion = CRM_Utils_System::version();
+      $assetVersion = json_decode(file_get_contents($versionFile), TRUE);
+      if ($assetVersion !== $currentVersion) {
+        $errorMsg = ts('Wrong version of assets in public web directory: expected %1 but found %2.', [1 => $currentVersion, 2 => $assetVersion]);
+      }
+    }
+    if ($errorMsg) {
+      $checks[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        "$errorMsg " .
+          ts('Use the command %1 to resolve.', [1 => '<code>composer civicrm:publish</code>']) .
+          ' ' .
+          CRM_Utils_System::docURL2('sysadmin/upgrade/drupal8/#additional-cleanup'),
+        ts('Public Assets Not Published'),
+        \Psr\Log\LogLevel::ERROR,
+        'fa-code'
+      );
+    }
+    return $checks;
+  }
+
   /**
    * For sites running in WordPress, make sure the configured base page exists.
    *
@@ -161,4 +200,31 @@ class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component {
     return (int) ($basePage->post_status == 'publish');
   }
 
+  /**
+   * Check if we created unique index on civicrm_uf_match (uf_id,domain_id)
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public static function checkUfMatchUnique(): array {
+    $checks = [];
+
+    if (CRM_Core_BAO_UFMatch::tryToAddUniqueIndexOnUfId()) {
+      // Already done. Success!
+      return $checks;
+    }
+
+    // Your DB has multiple uf_match records! Bad
+    $checks[] = new CRM_Utils_Check_Message(
+      __FUNCTION__,
+      ts('You have multiple records with the same uf_id in civicrm_uf_match. You need to manually fix this in the database so that uf_id is unique') .
+      ' ' .
+      CRM_Utils_System::docURL2('sysadmin/upgrade/todo/#todo'),
+      ts('Duplicate records in UFMatch'),
+      \Psr\Log\LogLevel::ERROR,
+      'fa-database'
+    );
+
+    return $checks;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php
index f0a88a7162..d37a0ce6cb 100644
--- a/civicrm/CRM/Utils/Check/Component/Env.php
+++ b/civicrm/CRM/Utils/Check/Component/Env.php
@@ -1127,4 +1127,54 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component {
     return $messages;
   }
 
+  public function checkForMultipleL10NDirs() {
+    $messages = [];
+    $dirs = [];
+
+    // This is what civi thinks is the current l10n path.
+    // Even if the site is currently en_US, we still want to do this check
+    // since they could change the language later.
+    $current_l10n = self::normalizePath(\Civi::Paths()->getPath('[civicrm.l10n]/'));
+    if (is_dir($current_l10n)) {
+      // use array keys instead of values to automatically dedupe paths
+      $dirs[$current_l10n] = 1;
+    }
+
+    // check the traditional path under civicrm_root
+    $traditional = self::normalizePath(\Civi::Paths()->getPath('[civicrm.root]/l10n'));
+    if (is_dir($traditional)) {
+      $dirs[$traditional] = 1;
+    }
+
+    $private = self::normalizePath(\Civi::Paths()->getPath('[civicrm.private]/l10n'));
+    if (is_dir($private)) {
+      $dirs[$private] = 1;
+    }
+
+    // @todo where else to check? CIVICRM_L10N_BASEDIR is covered by [civicrm.l10n] above.
+
+    if (count($dirs) > 1) {
+      $dirlist = '';
+      foreach (array_keys($dirs) as $dir) {
+        $dirlist .= '<li>' . htmlspecialchars($dir) . '</li>';
+      }
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        ts('There are multiple l10n directories, listed below. The one that appears to be in use is %1. You may wish to remove the others to avoid confusion when updating translation files.', [1 => $current_l10n])
+          . '<p><ul>' . $dirlist . '</ul></p>',
+        ts('Multiple l10n Directories'),
+        \Psr\Log\LogLevel::WARNING,
+        'fa-files-o'
+      );
+    }
+    return $messages;
+  }
+
+  /**
+   * Avoid issues with trailing slashes and mixed separators on windows.
+   */
+  private static function normalizePath($path) {
+    return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/');
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/LocationTypes.php b/civicrm/CRM/Utils/Check/Component/LocationTypes.php
new file mode 100644
index 0000000000..1a6cf3460b
--- /dev/null
+++ b/civicrm/CRM/Utils/Check/Component/LocationTypes.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Psr\Log\LogLevel;
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+class CRM_Utils_Check_Component_LocationTypes extends CRM_Utils_Check_Component {
+
+  /**
+   * Display warning about invalid priceFields
+   *
+   * @return CRM_Utils_Check_Message[]
+   * @throws \CRM_Core_Exception
+   */
+  public function checkPriceFields(): array {
+    $messages = [];
+    if (!CRM_Core_DAO::singleValueQuery('SELECT id FROM civicrm_location_type WHERE is_active = 1 AND is_default = 1')) {
+      $url = CRM_Utils_System::url('civicrm/admin/locationType', [
+        'reset' => 1,
+      ]);
+      $msg = ts('Your site default location type does not exist or is disabled.')
+        . " <a href='$url'>" . ts('Configure location types') . '</a>';
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $msg,
+        ts('Location Type Misconfiguration'),
+        LogLevel::ERROR,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
+}
diff --git a/civicrm/CRM/Utils/Check/Component/PriceFields.php b/civicrm/CRM/Utils/Check/Component/PriceFields.php
index b73cc48393..3a3e8da93f 100644
--- a/civicrm/CRM/Utils/Check/Component/PriceFields.php
+++ b/civicrm/CRM/Utils/Check/Component/PriceFields.php
@@ -10,6 +10,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Psr\Log\LogLevel;
+
 /**
  *
  * @package CRM
@@ -18,15 +20,27 @@
 class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component {
 
   /**
-   * Display warning about invalid priceFields
+   * Display warning about invalid priceFields.
+   *
    * @return CRM_Utils_Check_Message[]
    */
-  public function checkPriceFields() {
+  public function checkPriceFields(): array {
     $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
       FROM civicrm_price_set ps
       INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
       INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
       LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_contribution_page' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_contribution_page cp ON cp.id = pse.entity_id AND cp.is_active = 1
+      WHERE cft.id IS NULL OR cft.is_active = 0
+      UNION
+      SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_event' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_event ce ON ce.id = pse.entity_id AND ce.is_active = 1
       WHERE cft.id IS NULL OR cft.is_active = 0";
     $dao = CRM_Core_DAO::executeQuery($sql);
     $count = 0;
@@ -51,11 +65,64 @@ class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component {
         __FUNCTION__,
        $msg,
        ts('Invalid Price Fields'),
-       \Psr\Log\LogLevel::WARNING,
+       LogLevel::WARNING,
        'fa-lock'
       );
     }
     return $messages;
   }
 
+  /**
+   * Display warning about invalid priceFields.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public function checkPriceFieldDeductibility(): array {
+    $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_contribution_page' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_contribution_page cp ON cp.id = pse.entity_id AND cp.is_active = 1
+      WHERE pfv.non_deductible_amount > 0 AND cft.is_deductible = 0
+      UNION
+      SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_event' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_event ce ON ce.id = pse.entity_id AND ce.is_active = 1
+      WHERE pfv.non_deductible_amount > 0 AND cft.is_deductible = 0";
+    $dao = CRM_Core_DAO::executeQuery($sql);
+    $count = 0;
+    $html = '';
+    $messages = [];
+    while ($dao->fetch()) {
+      $count++;
+      $url = CRM_Utils_System::url('civicrm/admin/price/field', [
+        'reset' => 1,
+        'action' => 'browse',
+        'sid' => $dao->ps_id,
+      ]);
+      $html .= "<tr><td>$dao->ps_title</td><td>$dao->psf_label</td><td><a href='$url'>" . ts('View Price Set Fields') . '</a></td></tr>';
+    }
+    if ($count > 0) {
+      $msg = '<p>' . ts('The following Price Set Fields have options with non_deductible amounts but financial types that are not configured to be deductible.') . '<p>'
+        . '<p><table><thead><tr><th>' . ts('Price Set') . '</th><th>' . ts('Price Set Field') . '</th><th>' . ts('Action') . '</th>'
+        . '</tr></thead><tbody>'
+        . $html
+        . '</tbody></table></p>';
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $msg,
+        ts('Invalid Price Fields'),
+        LogLevel::WARNING,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/Smarty.php b/civicrm/CRM/Utils/Check/Component/Smarty.php
new file mode 100644
index 0000000000..8e742c97d2
--- /dev/null
+++ b/civicrm/CRM/Utils/Check/Component/Smarty.php
@@ -0,0 +1,52 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Psr\Log\LogLevel;
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+class CRM_Utils_Check_Component_Smarty extends CRM_Utils_Check_Component {
+
+  /**
+   * Check if Smarty3 has been enabled.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public function checkSmarty3(): array {
+    $p = function($text) {
+      return '<p>' . $text . '</p>';
+    };
+
+    $messages = [];
+    if (!defined('CIVICRM_SMARTY3_AUTOLOAD_PATH')) {
+      $smartyPath = \Civi::paths()->getPath('[civicrm.packages]/smarty3/vendor/autoload.php');
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $p(ts('CiviCRM is updating a major library (<em>Smarty</em>) to improve performance and security. In CiviCRM v5.69, the update is optional, but you should try it now.'))
+        . $p(ts('To apply the update, add this statement to <code>civicrm.settings.php</code>:'))
+        . sprintf("<pre>  define('CIVICRM_SMARTY3_AUTOLOAD_PATH',\n    %s);</pre>", htmlentities(var_export($smartyPath, 1)))
+        . $p('Some extensions may not work yet with Smarty v3. If you encounter problems, then simply remove the statement.')
+        . $p(ts('Upcoming versions will standardize on Smarty v3. CiviCRM <a %1>v5.69-ESR</a> will provide extended support for Smarty v2. To learn more and discuss, see the <a %2>Smarty transition page</a>.', [
+          1 => 'target="_blank" href="' . htmlentities('https://civicrm.org/esr') . '"',
+          2 => 'target="_blank" href="' . htmlentities('https://civicrm.org/redirect/smarty-v3') . '"',
+        ])),
+        ts('Smarty Update (v2 => v3)'),
+        LogLevel::WARNING,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
+}
diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php
index e9d9750530..1c3ecdd54e 100644
--- a/civicrm/CRM/Utils/File.php
+++ b/civicrm/CRM/Utils/File.php
@@ -217,11 +217,7 @@ class CRM_Utils_File {
 
     $written = fwrite($file, $contents);
     $closed = fclose($file);
-    if ($written === FALSE or !$closed) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !($written === FALSE or !$closed);
   }
 
   /**
@@ -1160,4 +1156,23 @@ HTACCESS;
     return $is_dir;
   }
 
+  /**
+   * Get the maximum file size permitted for upload.
+   *
+   * This function contains logic to check the server setting if none
+   * is configured. It is unclear if this is still relevant but perhaps it is no
+   * harm-no-foul.
+   *
+   * @return int
+   *   Size in mega-bytes.
+   */
+  public static function getMaxFileSize(): int {
+    $maxFileSizeMegaBytes = \Civi::settings()->get('maxFileSize');
+    //Fetch maxFileSizeMegaBytes from php_ini when $config->maxFileSize is set to "no limit".
+    if (empty($maxFileSizeMegaBytes)) {
+      $maxFileSizeMegaBytes = round((CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize')) / (1024 * 1024)), 2);
+    }
+    return $maxFileSizeMegaBytes;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Number.php b/civicrm/CRM/Utils/Number.php
index da5db035c5..2edf8c3a60 100644
--- a/civicrm/CRM/Utils/Number.php
+++ b/civicrm/CRM/Utils/Number.php
@@ -30,7 +30,7 @@ class CRM_Utils_Number {
    * @link https://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
    */
   public static function createRandomDecimal($precision) {
-    list ($sigFigs, $decFigs) = $precision;
+    [$sigFigs, $decFigs] = $precision;
     $rand = rand(0, pow(10, $sigFigs) - 1);
     return $rand / pow(10, $decFigs);
   }
@@ -47,7 +47,7 @@ class CRM_Utils_Number {
    * @link https://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
    */
   public static function createTruncatedDecimal($keyValue, $precision) {
-    list ($sigFigs, $decFigs) = $precision;
+    [$sigFigs, $decFigs] = $precision;
     $sign = ($keyValue < 0) ? '-1' : 1;
     // ex: -123.456 ==> 123456
     $val = str_replace('.', '', abs($keyValue));
@@ -66,14 +66,13 @@ class CRM_Utils_Number {
   }
 
   /**
-   * Some kind of numbery-looky-printy thing.
+   * Convert a file size value from the formats allowed in php_ini to the number of bytes.
    *
    * @param string $size
-   * @param bool $checkForPostMax
    *
    * @return int
    */
-  public static function formatUnitSize($size, $checkForPostMax = FALSE) {
+  public static function formatUnitSize($size): int {
     if ($size) {
       $last = strtolower($size[strlen($size) - 1]);
       $size = (int) $size;
@@ -87,23 +86,24 @@ class CRM_Utils_Number {
         case 'k':
           $size *= 1024;
       }
-
-      if ($checkForPostMax) {
-        $maxImportFileSize = self::formatUnitSize(ini_get('upload_max_filesize'));
-        $postMaxSize = self::formatUnitSize(ini_get('post_max_size'));
-        if ($maxImportFileSize > $postMaxSize && $postMaxSize == $size) {
-          CRM_Core_Session::setStatus(ts("Note: Upload max filesize ('upload_max_filesize') should not exceed Post max size ('post_max_size') as defined in PHP.ini, please check with your system administrator."), ts("Warning"), "alert");
-        }
-        // respect php.ini upload_max_filesize
-        if ($size > $maxImportFileSize && $size !== $postMaxSize) {
-          $size = $maxImportFileSize;
-          CRM_Core_Session::setStatus(ts("Note: Please verify your configuration for Maximum File Size (in MB) <a href='%1'>Administrator >> System Settings >> Misc</a>. It should support 'upload_max_size' as defined in PHP.ini.Please check with your system administrator.", [1 => CRM_Utils_System::url('civicrm/admin/setting/misc', 'reset=1')]), ts("Warning"), "alert");
-        }
-      }
       return $size;
     }
   }
 
+  /**
+   * Get the maximum size permitted for a file upload.
+   *
+   * @return float
+   */
+  public static function getMaximumFileUploadSize(): float {
+    $uploadFileSize = \CRM_Utils_Number::formatUnitSize(\Civi::settings()->get('maxFileSize') . 'm', TRUE);
+    //Fetch uploadFileSize from php_ini when $config->maxFileSize is set to "no limit".
+    if (empty($uploadFileSize)) {
+      $uploadFileSize = \CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), TRUE);
+    }
+    return round(($uploadFileSize / (1024 * 1024)), 2);
+  }
+
   /**
    * Format number for display according to the current or supplied locale.
    *
diff --git a/civicrm/CRM/Utils/PDF/Label.php b/civicrm/CRM/Utils/PDF/Label.php
index c0b5d02b97..9e52dcf1db 100644
--- a/civicrm/CRM/Utils/PDF/Label.php
+++ b/civicrm/CRM/Utils/PDF/Label.php
@@ -140,6 +140,20 @@ class CRM_Utils_PDF_Label extends TCPDF {
    */
   public $countY = 0;
 
+  /**
+   * Custom method for generating label, called against $this->generatorObject
+   *
+   * @var string|null
+   */
+  protected $generatorMethod = NULL;
+
+  /**
+   * Custom object used for generating label, used alongside $this->generatorMethod
+   *
+   * @var object
+   */
+  protected $generatorObject;
+
   /**
    * Constructor.
    *
diff --git a/civicrm/CRM/Utils/PDF/Utils.php b/civicrm/CRM/Utils/PDF/Utils.php
index 400988f31e..847af31e82 100644
--- a/civicrm/CRM/Utils/PDF/Utils.php
+++ b/civicrm/CRM/Utils/PDF/Utils.php
@@ -121,8 +121,8 @@ class CRM_Utils_PDF_Utils {
   public static function _html2pdf_dompdf($paper_size, $orientation, $html, $output, $fileName) {
     $options = self::getDompdfOptions();
     $dompdf = new DOMPDF($options);
-    $dompdf->set_paper($paper_size, $orientation);
-    $dompdf->load_html($html);
+    $dompdf->setPaper($paper_size, $orientation);
+    $dompdf->loadHtml($html);
     $dompdf->render();
 
     if ($output) {
@@ -258,8 +258,35 @@ class CRM_Utils_PDF_Utils {
         $settings[$setting] = $value;
       }
     }
+
+    // core#4791 - Set cache dir to prevent files being generated in font dir
+    $cacheDir = self::getCacheDir($settings);
+    if ($cacheDir !== "") {
+      $settings['font_cache'] = $cacheDir;
+    }
     $options->set($settings);
     return $options;
   }
 
+  /**
+   * Get location of cache folder.
+   *
+   * @param array $settings
+   * @return string
+   */
+  private static function getCacheDir(array $settings): string {
+    // Use subfolder of custom font dir if it is writable
+    if (isset($settings['font_dir']) && is_writable($settings['font_dir'])) {
+      $cacheDir = $settings['font_dir'] . DIRECTORY_SEPARATOR . 'font_cache';
+    }
+    else {
+      $cacheDir = Civi::paths()->getPath('[civicrm.files]/upload/font_cache');
+    }
+    // Try to create dir if it doesn't exist or return empty string
+    if ((!is_dir($cacheDir)) && (!mkdir($cacheDir))) {
+      $cacheDir = "";
+    }
+    return $cacheDir;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/REST.php b/civicrm/CRM/Utils/REST.php
index f6a119c59d..6d245cc746 100644
--- a/civicrm/CRM/Utils/REST.php
+++ b/civicrm/CRM/Utils/REST.php
@@ -656,11 +656,7 @@ class CRM_Utils_REST {
       // <header> Browsers often retain list of credentials and re-send automatically.
     ];
 
-    if (!empty($authx) && in_array($authx['flow'], $allowFlows)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return (!empty($authx) && in_array($authx['flow'], $allowFlows));
   }
 
 }
diff --git a/civicrm/CRM/Utils/Rule.php b/civicrm/CRM/Utils/Rule.php
index df620d1637..07ed44798c 100644
--- a/civicrm/CRM/Utils/Rule.php
+++ b/civicrm/CRM/Utils/Rule.php
@@ -36,11 +36,7 @@ class CRM_Utils_Rule {
     }
 
     // Make sure it include valid characters, alpha numeric and underscores
-    if (!preg_match('/^\w[\w\s\'\&\,\$\#\-\.\"\?\!]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^\w[\w\s\'\&\,\$\#\-\.\"\?\!]+$/i', $str);
   }
 
   /**
@@ -64,11 +60,7 @@ class CRM_Utils_Rule {
     }
 
     // make sure it includes valid characters, alpha numeric and underscores
-    if (!preg_match('/^[\w]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w]+$/i', $str);
   }
 
   /**
@@ -92,11 +84,8 @@ class CRM_Utils_Rule {
     //   * Composed of alphanumeric chars, underscore and hyphens.
     //   * Maximum length of 64 chars.
     //   * Optionally surrounded by backticks, in which case spaces also OK.
-    if (!preg_match('/^((`[-\w ]{1,64}`|[-\w]{1,64})\.)?(`[-\w ]{1,64}`|[-\w]{1,64})$/i', $str)) {
-      return FALSE;
-    }
+    return (bool) preg_match('/^((`[-\w ]{1,64}`|[-\w]{1,64})\.)?(`[-\w ]{1,64}`|[-\w]{1,64})$/i', $str);
 
-    return TRUE;
   }
 
   /**
@@ -108,11 +97,7 @@ class CRM_Utils_Rule {
    * @return bool
    */
   public static function mysqlOrderByDirection($str) {
-    if (!preg_match('/^(asc|desc)$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^(asc|desc)$/i', $str);
   }
 
   /**
@@ -163,11 +148,7 @@ class CRM_Utils_Rule {
 
     // make sure it includes valid characters, alpha numeric and underscores
     // added (. and ,) option (CRM-1336)
-    if (!preg_match('/^[\w\s\.\,]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w\s\.\,]+$/i', $str);
   }
 
   /**
@@ -200,11 +181,7 @@ class CRM_Utils_Rule {
     }
 
     // make sure it includes valid characters, alpha numeric and underscores
-    if (!preg_match('/^[\w\s\%\'\&\,\$\#]+$/i', $query)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w\s\%\'\&\,\$\#]+$/i', $query);
   }
 
   /**
diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php
index f3359d58a0..35643cb0f6 100644
--- a/civicrm/CRM/Utils/System.php
+++ b/civicrm/CRM/Utils/System.php
@@ -126,7 +126,7 @@ class CRM_Utils_System {
       $qs = explode('&', str_replace('&amp;', '&', $_SERVER['QUERY_STRING']));
       for ($i = 0, $cnt = count($qs); $i < $cnt; $i++) {
         // check first if exist a pair
-        if (strstr($qs[$i], '=') !== FALSE) {
+        if (str_contains($qs[$i], '=')) {
           [$name, $value] = explode('=', $qs[$i]);
           if ($name != $urlVar) {
             $name = rawurldecode($name);
@@ -260,20 +260,20 @@ class CRM_Utils_System {
     $query = self::makeQueryString($query);
 
     // Legacy handling for when the system passes around html escaped strings
-    if (strstr($query, '&amp;')) {
+    if (str_contains($query, '&amp;')) {
       $query = html_entity_decode($query);
     }
 
     // Extract fragment from path or query if munged together
-    if ($query && strstr($query, '#')) {
+    if ($query && str_contains($query, '#')) {
       [$path, $fragment] = explode('#', $query);
     }
-    if ($path && strstr($path, '#')) {
+    if ($path && str_contains($path, '#')) {
       [$path, $fragment] = explode('#', $path);
     }
 
     // Extract query from path if munged together
-    if ($path && strstr($path, '?')) {
+    if ($path && str_contains($path, '?')) {
       [$path, $extraQuery] = explode('?', $path);
       $query = $extraQuery . ($query ? "&$query" : '');
     }
@@ -493,7 +493,7 @@ class CRM_Utils_System {
 
     if ($referer && !empty($names)) {
       foreach ($names as $name) {
-        if (strstr($referer, $name)) {
+        if (str_contains($referer, $name)) {
           $url = $referer;
           break;
         }
@@ -1290,7 +1290,7 @@ class CRM_Utils_System {
     // convert ipV6 to ipV4
     if ($strictIPV4) {
       // this converts 'IPV4 mapped IPV6 address' to IPV4
-      if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && strstr($address, '::ffff:')) {
+      if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && str_contains($address, '::ffff:')) {
         $address = ltrim($address, '::ffff:');
       }
     }
diff --git a/civicrm/CRM/Utils/System/Base.php b/civicrm/CRM/Utils/System/Base.php
index 4f21308146..8559f220b2 100644
--- a/civicrm/CRM/Utils/System/Base.php
+++ b/civicrm/CRM/Utils/System/Base.php
@@ -108,12 +108,12 @@ abstract class CRM_Utils_System_Base {
    *   The url to post the form.
    */
   public function postURL($action) {
-    $config = CRM_Core_Config::singleton();
     if (!empty($action)) {
       return $action;
     }
 
-    return $this->url(CRM_Utils_Array::value($config->userFrameworkURLVar, $_GET),
+    $current_path = CRM_Utils_System::currentPath();
+    return $this->url($current_path,
       NULL, TRUE, NULL, FALSE
     );
   }
@@ -261,11 +261,11 @@ abstract class CRM_Utils_System_Base {
   /**
    * Load user into session.
    *
-   * @param obj $user
+   * @param string $username
    *
    * @return bool
    */
-  public function loadUser($user) {
+  public function loadUser($username) {
     return TRUE;
   }
 
diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php
index 2ddb21bb50..73cd9a270a 100644
--- a/civicrm/CRM/Utils/System/Drupal8.php
+++ b/civicrm/CRM/Utils/System/Drupal8.php
@@ -944,7 +944,11 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase {
    * @inheritdoc
    */
   public function ipAddress():?string {
-    return class_exists('Drupal') ? \Drupal::request()->getClientIp() : ($_SERVER['REMOTE_ADDR'] ?? NULL);
+    // dev/core#4756 fallback if checking before CMS bootstrap
+    if (!class_exists('Drupal') || !\Drupal::hasContainer()) {
+      return ($_SERVER['REMOTE_ADDR'] ?? NULL);
+    }
+    return \Drupal::request()->getClientIp();
   }
 
   /**
diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php
index d61d3f4a32..d118206b93 100644
--- a/civicrm/CRM/Utils/System/Joomla.php
+++ b/civicrm/CRM/Utils/System/Joomla.php
@@ -88,6 +88,8 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $register = $model->register($values);
 
     $ufID = JUserHelper::getUserId($values['username']);
+    JUserHelper::addUserToGroup($ufID, $userType);
+
     return $ufID;
   }
 
diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php
index 1a5c7902e7..18f5b7bfc7 100644
--- a/civicrm/CRM/Utils/System/Standalone.php
+++ b/civicrm/CRM/Utils/System/Standalone.php
@@ -35,16 +35,15 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     return !class_exists(\Civi\Standalone\Security::class);
   }
 
-  /**
-   * Start a new session.
-   */
-  public function sessionStart() {
-    parent::sessionStart();
-    if ($this->missingStandaloneExtension()) {
-      // Provide a fake contact and user ID, otherwise we don't get a menu.
-      $session = CRM_Core_Session::singleton();
-      $session->set('userID', 1);
-      $session->set('ufID', 1);
+  public function initialize() {
+    parent::initialize();
+    // Initialize the session if it looks like there might be one.
+    // Case 1: user sends no session cookie: do NOT start the session. May be anon access that does not require session data. Good for caching.
+    // Case 2: user sends a session cookie: start the session, so we can access data like lcMessages for localization (which occurs early in the boot process).
+    // Case 3: user sends a session cookie but it's invalid: start the session, it will be empty and a new cookie will be sent.
+    if (isset($_COOKIE['PHPSESSID'])) {
+      // Note: passing $isRead = FALSE in the arguments will cause the session to be started.
+      CRM_Core_Session::singleton()->initialize(FALSE);
     }
   }
 
@@ -206,10 +205,10 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
   ) {
     $fragment = $fragment ? ('#' . $fragment) : '';
     if ($absolute) {
-      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment");
+      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment", 'absolute');
     }
     else {
-      return "/{$path}?{$query}$fragment";
+      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment");
     }
   }
 
@@ -314,15 +313,13 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
 
     if (!isset($runOnce)) {
       $runOnce = TRUE;
-      return TRUE;
     }
-
-    $root = rtrim($this->cmsRootPath(), '/' . DIRECTORY_SEPARATOR);
-    if (empty($root) || !is_dir($root) || !chdir($root)) {
-      return FALSE;
+    else {
+      return TRUE;
     }
 
-    require_once $root . '/../vendor/autoload.php'; /* assumes $root to be the _web_ root path, not the project root path. */
+    global $civicrm_paths;
+    require_once $civicrm_paths['civicrm.vendor']['path'] . '/autoload.php';
 
     // seems like we've bootstrapped drupal
     $config = CRM_Core_Config::singleton();
@@ -353,7 +350,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
       // if given username we expect a correct password.
       $user = $security->loadUserByName($params['name']);
       if ($user) {
-        if (!$security->checkPassword($params['pass'], $user['password'] ?? '')) {
+        if (!$security->checkPassword($params['pass'], $user['hashed_password'] ?? '')) {
           return FALSE;
         }
       }
@@ -390,7 +387,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     }
 
     return [
-      'url' => CRM_Utils_File::addTrailingSlash('', '/'),
+      'url' => CRM_Utils_File::addTrailingSlash(CIVICRM_UF_BASEURL, '/') . '/core/',
       'path' => CRM_Utils_File::addTrailingSlash($civicrm_root),
     ];
   }
@@ -484,18 +481,6 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     CRM_Core_Session::setStatus('', $message, 'info');
   }
 
-  /**
-   * Function to return current language.
-   *
-   * @return string
-   */
-  public function getCurrentLanguage() {
-    if ($this->missingStandaloneExtension()) {
-      return NULL;
-    }
-    return Security::singleton()->getCurrentLanguage();
-  }
-
   /**
    * I don't know why this needs to be here? Does it even?
    *
@@ -555,6 +540,13 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
    */
   public function getTimeZoneString() {
     $timezone = date_default_timezone_get();
+    $userId = Security::singleton()->getLoggedInUfID();
+    if ($userId) {
+      $user = Security::singleton()->loadUserByID($userId);
+      if ($user && !empty($user['timezone'])) {
+        $timezone = $user['timezone'];
+      }
+    }
     return $timezone;
   }
 
diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php
index b7373b897a..0508822160 100644
--- a/civicrm/CRM/Utils/Token.php
+++ b/civicrm/CRM/Utils/Token.php
@@ -1135,11 +1135,7 @@ class CRM_Utils_Token {
         }
 
         // special case for greeting replacement
-        foreach ([
-          'email_greeting',
-          'postal_greeting',
-          'addressee',
-        ] as $val) {
+        foreach (['email_greeting', 'postal_greeting', 'addressee'] as $val) {
           if (!empty($contactDetails[$contactID][$val])) {
             $contactDetails[$contactID][$val] = $contactDetails[$contactID]["{$val}_display"];
           }
@@ -1258,11 +1254,7 @@ class CRM_Utils_Token {
   public static function flattenTokens(&$tokens) {
     $flattenTokens = [];
 
-    foreach ([
-      'html',
-      'text',
-      'subject',
-    ] as $prop) {
+    foreach (['html', 'text', 'subject'] as $prop) {
       if (!isset($tokens[$prop])) {
         continue;
       }
@@ -1762,17 +1754,26 @@ class CRM_Utils_Token {
       'WorkFlowMessageTemplates' => [
         'contribution_invoice_receipt' => [
           '$display_name' => 'contact.display_name',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'contribution_online_receipt' => [
           '$contributeMode' => ts('no longer available / relevant'),
           '$first_name' => 'contact.first_name',
           '$last_name' => 'contact.last_name',
           '$displayName' => 'contact.display_name',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'membership_offline_receipt' => [
           // receipt_text_renewal appears to be long gone.
           'receipt_text_renewal' => 'receipt_text',
           '$isAmountZero' => ts('no longer available / relevant'),
+          '$dataArray' => ts('found within $taxBreakDown'),
+        ],
+        'membership_online_receipt' => [
+          '$dataArray' => ts('found within $taxBreakDown'),
+          '$mem_start_date' => 'membership.start_date',
+          '$mem_end_date' => 'membership.end_date',
+          '$mem_join_date' => 'membership.join_date',
         ],
         'event_offline_receipt' => [
           '$contributeMode' => ts('no longer available / relevant'),
@@ -1800,6 +1801,7 @@ class CRM_Utils_Token {
         ],
         'event_online_receipt' => [
           '`$participant.id`' => 'participant.id',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'pledge_acknowledgement' => [
           '$domain' => ts('no longer available / relevant'),
diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php
index 0478345fd9..ce88ed4707 100644
--- a/civicrm/Civi/Angular/Manager.php
+++ b/civicrm/Civi/Angular/Manager.php
@@ -14,29 +14,13 @@ class Manager {
   protected $res = NULL;
 
   /**
-   * Modules.
+   * Static cache of html partials.
    *
-   * @var array|null
-   *   Each item has some combination of these keys:
-   *   - ext: string
-   *     The Civi extension which defines the Angular module.
-   *   - js: array(string $relativeFilePath)
-   *     List of JS files (relative to the extension).
-   *   - css: array(string $relativeFilePath)
-   *     List of CSS files (relative to the extension).
-   *   - partials: array(string $relativeFilePath)
-   *     A list of partial-HTML folders (relative to the extension).
-   *     This will be mapped to "~/moduleName" by crmResource.
-   *   - settings: array(string $key => mixed $value)
-   *     List of settings to preload.
-   *   - settingsFactory: callable
-   *     Callback function to fetch settings.
-   *   - permissions: array
-   *     List of permissions to make available client-side
-   *   - requires: array
-   *     List of other modules required
+   * Stashing it here because it's too big to store in SqlCache
+   * FIXME: So that probably means we shouldn't be storing in memory either!
+   * @var array
    */
-  protected $modules = NULL;
+  private $partials = [];
 
   /**
    * @var \CRM_Utils_Cache_Interface
@@ -68,7 +52,7 @@ class Manager {
    */
   public function clear() {
     $this->cache->clear();
-    $this->modules = NULL;
+    $this->partials = [];
     $this->changeSets = NULL;
     // Force-refresh assetBuilder files
     \Civi::container()->get('asset_builder')->clear(FALSE);
@@ -93,45 +77,22 @@ class Manager {
    *     List of settings to preload.
    */
   public function getModules() {
-    if ($this->modules === NULL) {
-      $config = \CRM_Core_Config::singleton();
-      global $civicrm_root;
-
-      // Note: It would be nice to just glob("$civicrm_root/ang/*.ang.php"), but at time
-      // of writing CiviMail and CiviCase have special conditionals.
-
-      $angularModules = [];
-      $angularModules['angularFileUpload'] = include "$civicrm_root/ang/angularFileUpload.ang.php";
-      $angularModules['checklist-model'] = include "$civicrm_root/ang/checklist-model.ang.php";
-      $angularModules['crmApp'] = include "$civicrm_root/ang/crmApp.ang.php";
-      $angularModules['crmAttachment'] = include "$civicrm_root/ang/crmAttachment.ang.php";
-      $angularModules['crmAutosave'] = include "$civicrm_root/ang/crmAutosave.ang.php";
-      $angularModules['crmCxn'] = include "$civicrm_root/ang/crmCxn.ang.php";
-      $angularModules['crmDialog'] = include "$civicrm_root/ang/crmDialog.ang.php";
-      $angularModules['crmMonaco'] = include "$civicrm_root/ang/crmMonaco.ang.php";
-      $angularModules['crmResource'] = include "$civicrm_root/ang/crmResource.ang.php";
-      $angularModules['crmRouteBinder'] = include "$civicrm_root/ang/crmRouteBinder.ang.php";
-      $angularModules['crmUi'] = include "$civicrm_root/ang/crmUi.ang.php";
-      $angularModules['crmUtil'] = include "$civicrm_root/ang/crmUtil.ang.php";
-      $angularModules['dialogService'] = include "$civicrm_root/ang/dialogService.ang.php";
-      $angularModules['jsonFormatter'] = include "$civicrm_root/ang/jsonFormatter.ang.php";
-      $angularModules['ngRoute'] = include "$civicrm_root/ang/ngRoute.ang.php";
-      $angularModules['ngSanitize'] = include "$civicrm_root/ang/ngSanitize.ang.php";
-      $angularModules['ui.bootstrap'] = include "$civicrm_root/ang/ui.bootstrap.ang.php";
-      $angularModules['ui.sortable'] = include "$civicrm_root/ang/ui.sortable.ang.php";
-      $angularModules['unsavedChanges'] = include "$civicrm_root/ang/unsavedChanges.ang.php";
-      $angularModules['crmQueueMonitor'] = include "$civicrm_root/ang/crmQueueMonitor.ang.php";
-      $angularModules['crmStatusPage'] = include "$civicrm_root/ang/crmStatusPage.ang.php";
-      $angularModules['exportui'] = include "$civicrm_root/ang/exportui.ang.php";
-      $angularModules['api4Explorer'] = include "$civicrm_root/ang/api4Explorer.ang.php";
-      $angularModules['api4'] = include "$civicrm_root/ang/api4.ang.php";
-      $angularModules['crmDashboard'] = include "$civicrm_root/ang/crmDashboard.ang.php";
-      $angularModules['crmD3'] = include "$civicrm_root/ang/crmD3.ang.php";
-
-      foreach (\CRM_Core_Component::getEnabledComponents() as $component) {
-        $angularModules = array_merge($angularModules, $component->getAngularModules());
+    $moduleNames = $this->cache->get('moduleNames');
+    $angularModules = [];
+    // Cache not set, fetch fresh list of modules and store in cache
+    if (!$moduleNames) {
+      // Load all modules from CiviCRM core
+      $files = (array) glob(\Civi::paths()->getPath('[civicrm.root]/ang/*.ang.php'));
+      foreach ($files as $file) {
+        $name = basename($file, '.ang.php');
+        $module = include $file;
+        $module['ext'] = 'civicrm';
+        $angularModules[$name] = $module;
       }
+
+      // Load all modules from extensions
       \CRM_Utils_Hook::angularModules($angularModules);
+
       foreach ($angularModules as $module => $info) {
         // Merge in defaults
         $angularModules[$module] += ['basePages' => ['civicrm/a']];
@@ -150,17 +111,26 @@ class Manager {
           }
         }
       }
-      $this->modules = $this->resolvePatterns($angularModules);
+      $angularModules = $this->resolvePatterns($angularModules);
+      $this->cache->set('moduleNames', array_keys($angularModules));
+      foreach ($angularModules as $moduleName => $moduleInfo) {
+        $this->cache->set("module $moduleName", $moduleInfo);
+      }
+    }
+    // Rehydrate modules from cache
+    else {
+      foreach ($moduleNames as $moduleName) {
+        $angularModules[$moduleName] = $this->cache->get("module $moduleName");
+      }
     }
 
-    return $this->modules;
+    return $angularModules;
   }
 
   /**
    * Get the descriptor for an Angular module.
    *
-   * @param string $name
-   *   Module name.
+   * @param string $moduleName
    * @return array
    *   Details about the module:
    *   - ext: string, the name of the Civi extension which defines the module
@@ -169,12 +139,12 @@ class Manager {
    *   - partials: array(string $relativeFilePath).
    * @throws \Exception
    */
-  public function getModule($name) {
-    $modules = $this->getModules();
-    if (!isset($modules[$name])) {
+  public function getModule($moduleName) {
+    $module = $this->cache->get("module $moduleName") ?? $this->getModules()[$moduleName] ?? NULL;
+    if (!isset($module)) {
       throw new \Exception("Unrecognized Angular module");
     }
-    return $modules[$name];
+    return $module;
   }
 
   /**
@@ -292,13 +262,10 @@ class Manager {
    *   Invalid partials configuration.
    */
   public function getPartials($name) {
-    $cacheKey = "angular-partials_$name";
-    $cacheValue = $this->cache->get($cacheKey);
-    if ($cacheValue === NULL) {
-      $cacheValue = ChangeSet::applyResourceFilters($this->getChangeSets(), 'partials', $this->getRawPartials($name));
-      $this->cache->set($cacheKey, $cacheValue);
+    if (!isset($this->partials[$name])) {
+      $this->partials[$name] = ChangeSet::applyResourceFilters($this->getChangeSets(), 'partials', $this->getRawPartials($name));
     }
-    return $cacheValue;
+    return $this->partials[$name];
   }
 
   /**
diff --git a/civicrm/Civi/Api4/Action/Entity/GetLinks.php b/civicrm/Civi/Api4/Action/Entity/GetLinks.php
index 3408fea35b..e05d66de1e 100644
--- a/civicrm/Civi/Api4/Action/Entity/GetLinks.php
+++ b/civicrm/Civi/Api4/Action/Entity/GetLinks.php
@@ -36,7 +36,7 @@ class GetLinks extends \Civi\Api4\Generic\BasicGetAction {
           'links' => [],
         ];
         foreach ($table->getTableLinks() as $link) {
-          if (!$link->isDeprecated()) {
+          if (!$link->isDeprecatedBy()) {
             $item['links'][] = $link->toArray();
           }
         }
diff --git a/civicrm/Civi/Api4/CustomValue.php b/civicrm/Civi/Api4/CustomValue.php
index 4201d3397a..1b99edc821 100644
--- a/civicrm/Civi/Api4/CustomValue.php
+++ b/civicrm/Civi/Api4/CustomValue.php
@@ -26,6 +26,17 @@ namespace Civi\Api4;
  */
 class CustomValue {
 
+  /**
+   * @param string $customGroup
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Generic\AutocompleteAction
+   * @throws \API_Exception
+   */
+  public static function autocomplete(string $customGroup, $checkPermissions = TRUE) {
+    return (new \Civi\Api4\Generic\AutocompleteAction("Custom_$customGroup", __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @param string $customGroup
    * @param bool $checkPermissions
diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
index 183043e3a8..3f2642ed7f 100644
--- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php
+++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
@@ -36,6 +36,7 @@ use Civi\Core\Event\GenericHookEvent;
  */
 class AutocompleteAction extends AbstractAction {
   use Traits\SavedSearchInspectorTrait;
+  use Traits\GetSetValueTrait;
 
   /**
    * Autocomplete search input for search mode
@@ -88,6 +89,17 @@ class AutocompleteAction extends AbstractAction {
    */
   protected $key;
 
+  /**
+   * Known entity values.
+   *
+   * Value will be populated by the form based on data entered at the time.
+   * They can be used by hooks for contextual filtering.
+   *
+   * Format: [fieldName => value][]
+   * @var array
+   */
+  protected $values = [];
+
   /**
    * Search conditions that will be automatically added to the WHERE or HAVING clauses
    *
@@ -169,6 +181,8 @@ class AutocompleteAction extends AbstractAction {
       // For subsequent pages when searching by id, subtract the "extra" first page
       elseif ($searchById && $this->page > 1) {
         $this->page -= 1;
+        // Record with that id was already returned on page one so exclude it from subsequent pages
+        $this->savedSearch['api_params']['where'][] = [$primaryKeys[0], '!=', $this->input];
       }
       // If first line uses a rewrite, search on those fields too
       if (!$initialSearchById && !empty($this->display['settings']['columns'][0]['rewrite'])) {
diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
index 07ba072000..7b606a85da 100644
--- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
+++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
@@ -333,6 +333,7 @@ class BasicGetFieldsAction extends BasicGetAction {
           'Select' => ts('Select'),
           'Text' => ts('Single-Line Text'),
           'TextArea' => ts('Multi-Line Text'),
+          'Url' => ts('URL'),
         ],
       ],
       [
diff --git a/civicrm/Civi/Api4/Mapping.php b/civicrm/Civi/Api4/Mapping.php
index 697c22a96e..0dfc151390 100644
--- a/civicrm/Civi/Api4/Mapping.php
+++ b/civicrm/Civi/Api4/Mapping.php
@@ -15,7 +15,7 @@ namespace Civi\Api4;
  *
  * This is a collection of MappingFields, for reuse in import, export, etc.
  *
- * @searchable none
+ * @searchable secondary
  * @since 5.19
  * @package Civi\Api4
  */
diff --git a/civicrm/templates/CRM/common/localNav.tpl b/civicrm/Civi/Api4/PreferencesDate.php
similarity index 58%
rename from civicrm/templates/CRM/common/localNav.tpl
rename to civicrm/Civi/Api4/PreferencesDate.php
index 48ea55ecce..4a260488ce 100644
--- a/civicrm/templates/CRM/common/localNav.tpl
+++ b/civicrm/Civi/Api4/PreferencesDate.php
@@ -1,4 +1,6 @@
-{*
+<?php
+
+/*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
  |                                                                    |
@@ -6,13 +8,24 @@
  | permitted exceptions and without any warranty. For full license    |
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
-*}
-{* Displays local tasks (secondary menu) for any pages that have them *}
-<div class="tabs">
-    <ul class="tabs primary">
-    {foreach from=$localTasks item=task}
-        <li {if $task.class}class="{$task.class}"{/if}><a href="{$task.url}" {if $task.class}class="{$task.class}"{/if}>{$task.title}</a></li>
-    {/foreach}
-   </ul>
-</div>
-<br class="clear" />
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * PreferencesDate entity.
+ *
+ * @since 5.69
+ * @searchable secondary
+ * @package Civi\Api4
+ */
+class PreferencesDate extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/Civi/Api4/Provider.php b/civicrm/Civi/Api4/Provider.php
new file mode 100644
index 0000000000..37db8db647
--- /dev/null
+++ b/civicrm/Civi/Api4/Provider.php
@@ -0,0 +1,24 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+/**
+ * Provider entity.
+ *
+ * SMS Provider.
+ *
+ * @searchable secondary
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class Provider extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
index 8887bc1834..d6681de88d 100644
--- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php
+++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
@@ -833,9 +833,9 @@ class Api4SelectQuery extends Api4Query {
             return;
           }
         }
-        if ($link->isDeprecated()) {
+        if ($link->isDeprecatedBy()) {
           $deprecatedAlias = $link->getAlias();
-          \CRM_Core_Error::deprecatedWarning("Deprecated join alias '$deprecatedAlias' used in APIv4 get. Should be changed to '{$deprecatedAlias}_id'");
+          \CRM_Core_Error::deprecatedWarning("Deprecated join alias '$deprecatedAlias' used in APIv4 {$this->getEntity()} join to $joinEntity. Should be changed to '{$link->isDeprecatedBy()}'.");
         }
         $virtualField = $link->getSerialize();
         $baseTableAlias = $joinTreeNode['#table_alias'];
diff --git a/civicrm/Civi/Api4/Query/SqlFunction.php b/civicrm/Civi/Api4/Query/SqlFunction.php
index 44a0b097d5..6a901ad22a 100644
--- a/civicrm/Civi/Api4/Query/SqlFunction.php
+++ b/civicrm/Civi/Api4/Query/SqlFunction.php
@@ -118,6 +118,13 @@ abstract class SqlFunction extends SqlExpression {
     if (static::$dataType) {
       $dataType = static::$dataType;
     }
+    elseif (static::$category === self::CATEGORY_AGGREGATE) {
+      $exprArgs = $this->getArgs();
+      // If the first expression is a SqlFunction/SqlEquation, allow it to control the aggregate dataType
+      if (method_exists($exprArgs[0]['expr'][0], 'formatOutputValue')) {
+        $exprArgs[0]['expr'][0]->formatOutputValue($dataType, $values, $key);
+      }
+    }
     if (isset($values[$key]) && $this->suffix && $this->suffix !== 'id') {
       $dataType = 'String';
       $value =& $values[$key];
@@ -162,7 +169,7 @@ abstract class SqlFunction extends SqlExpression {
    * @return string
    */
   protected function renderExpression(string $output): string {
-    return $this->getName() . '(' . $output . ')';
+    return $this->getName() . "($output)";
   }
 
   /**
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php
new file mode 100644
index 0000000000..4fa363ad7e
--- /dev/null
+++ b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php
@@ -0,0 +1,66 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Query;
+
+/**
+ * Sql function returns the first item in a GROUP_CONCAT set (per the ORDER_BY param)
+ * @since 5.69
+ */
+class SqlFunctionGROUP_FIRST extends SqlFunction {
+
+  public $supportsExpansion = TRUE;
+
+  protected static $category = self::CATEGORY_AGGREGATE;
+
+  protected static function params(): array {
+    return [
+      [
+        'max_expr' => 1,
+        'must_be' => ['SqlField', 'SqlFunction', 'SqlEquation'],
+        'optional' => FALSE,
+      ],
+      [
+        'name' => 'ORDER BY',
+        'label' => ts('Order by'),
+        'max_expr' => 1,
+        'flag_after' => ['ASC' => ts('Ascending'), 'DESC' => ts('Descending')],
+        'must_be' => ['SqlField'],
+        'optional' => TRUE,
+      ],
+    ];
+  }
+
+  /**
+   * @return string
+   */
+  public static function getTitle(): string {
+    return ts('First');
+  }
+
+  /**
+   * @return string
+   */
+  public static function getDescription(): string {
+    return ts('First value in the grouping.');
+  }
+
+  /**
+   * Render the final expression
+   * @param string $output
+   * @return string
+   */
+  protected function renderExpression(string $output): string {
+    $sep = \CRM_Core_DAO::VALUE_SEPARATOR;
+    return "SUBSTRING_INDEX(GROUP_CONCAT($output SEPARATOR '$sep'), '$sep', 1)";
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Queue.php b/civicrm/Civi/Api4/Queue.php
index 3339d06629..bdfd2d0a3b 100644
--- a/civicrm/Civi/Api4/Queue.php
+++ b/civicrm/Civi/Api4/Queue.php
@@ -20,7 +20,7 @@ use Civi\Api4\Action\Queue\Run;
  * Registering a queue in this table (and setting `is_auto=1`) can
  * allow it to execute tasks automatically in the background.
  *
- * @searchable none
+ * @searchable secondary
  * @since 5.47
  * @package Civi\Api4
  */
diff --git a/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php
new file mode 100644
index 0000000000..a799696edd
--- /dev/null
+++ b/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Autocomplete;
+
+use Civi\Api4\Utils\CoreUtil;
+use Civi\Core\Event\GenericHookEvent;
+use Civi\Core\HookInterface;
+
+/**
+ * @service
+ * @internal
+ */
+class CustomValueAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface {
+
+  /**
+   * Provide default SearchDisplay for autocompletes of multi-record custom values
+   *
+   * @param \Civi\Core\Event\GenericHookEvent $e
+   */
+  public static function on_civi_search_defaultDisplay(GenericHookEvent $e) {
+    if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || !str_starts_with($e->savedSearch['api_entity'], 'Custom_')) {
+      return;
+    }
+    $customGroupName = explode('_', $e->savedSearch['api_entity'], 2)[1];
+
+    // Custom groups could contain any fields & we have no idea what's in them
+    // but this is just the default display and can be overridden.
+    // Our best guess for a "title" is the first text field in the group
+    $titleField = \Civi\Api4\CustomValue::getFields('Multi_Stuff', FALSE)
+      ->addWhere('data_type', '=', 'String')
+      ->addWhere('input_type', '=', 'Text')
+      ->execute()->first()['name'] ?? NULL;
+
+    // Include search label of parent entity (e.g. `entity_id.sort_name` for Contact custom groups)
+    $customGroupExtends = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupName, 'extends', 'name');
+    $extendsLabelField = CoreUtil::getInfoItem($customGroupExtends, 'search_fields')[0] ?? NULL;
+
+    if (!$extendsLabelField && !$titleField) {
+      // Got nothing, fall back to the default which displays id only.
+      return;
+    }
+
+    $mainColumn = [
+      'type' => 'field',
+      'key' => $titleField ?? "entity_id.$extendsLabelField",
+    ];
+    if ($titleField && $extendsLabelField) {
+      $mainColumn['rewrite'] = "[entity_id.$extendsLabelField] - [$titleField]";
+    }
+
+    $e->display['settings'] = [
+      'sort' => [
+        [$mainColumn['key'], 'ASC'],
+      ],
+      'columns' => [
+        $mainColumn,
+        [
+          'type' => 'field',
+          'key' => 'id',
+          'rewrite' => '#[id]',
+        ],
+      ],
+    ];
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
index 652cb4c2a0..943cdad2b1 100644
--- a/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
+++ b/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
@@ -22,7 +22,7 @@ use Civi\Core\HookInterface;
 class EntityAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface {
 
   /**
-   * Provide default SearchDisplay for ContactType autocompletes
+   * Provide default SearchDisplay for autocompletes of API Entity names
    *
    * @param \Civi\Core\Event\GenericHookEvent $e
    */
diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
index 80ed04b6e8..5005e43384 100644
--- a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
+++ b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
@@ -78,7 +78,7 @@ class Joinable {
   /**
    * @var bool
    */
-  protected $deprecated = FALSE;
+  protected $deprecatedBy = FALSE;
 
   /**
    * @param $targetTable
@@ -282,17 +282,16 @@ class Joinable {
   /**
    * @return bool
    */
-  public function isDeprecated() {
-    return $this->deprecated;
+  public function isDeprecatedBy() {
+    return $this->deprecatedBy;
   }
 
   /**
-   * @param bool $deprecated
-   *
+   * @param string|null $deprecatedBy
    * @return $this
    */
-  public function setDeprecated(bool $deprecated = TRUE) {
-    $this->deprecated = $deprecated;
+  public function setDeprecatedBy(string $deprecatedBy = NULL) {
+    $this->deprecatedBy = $deprecatedBy ?? $this->alias . '_id';
     return $this;
   }
 
diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
index beb5862c6b..49a1c2642a 100644
--- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
+++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
@@ -127,6 +127,15 @@ class SchemaMapBuilder extends AutoService {
       $customTable = $map->getTableByName($tableName);
       if (!$customTable) {
         $customTable = new Table($tableName);
+        // Add entity_id join from multi-record custom group to the
+        if (!empty($fieldData->is_multiple)) {
+          $newJoin = new Joinable($baseTable->getName(), $customInfo['column'], 'entity_id');
+          $customTable->addTableLink('entity_id', $newJoin);
+          // Deprecated "contact" join name
+          $oldJoin = new Joinable($baseTable->getName(), $customInfo['column'], AllCoreTables::convertEntityNameToLower($entityName));
+          $oldJoin->setDeprecatedBy('entity_id');
+          $customTable->addTableLink('entity_id', $oldJoin);
+        }
       }
 
       $map->addTable($customTable);
@@ -136,12 +145,6 @@ class SchemaMapBuilder extends AutoService {
       $links[$alias]['isMultiple'] = !empty($fieldData->is_multiple);
       $links[$alias]['columns'][$fieldData->name] = $fieldData->column_name;
 
-      // Add backreference
-      if (!empty($fieldData->is_multiple)) {
-        $joinable = new Joinable($baseTable->getName(), $customInfo['column'], AllCoreTables::convertEntityNameToLower($entityName));
-        $customTable->addTableLink('entity_id', $joinable);
-      }
-
       if ($fieldData->data_type === 'EntityReference' && isset($fieldData->fk_entity)) {
         $targetTable = self::getTableName($fieldData->fk_entity);
         $joinable = new Joinable($targetTable, 'id', $fieldData->name);
diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
index 29ce637ad8..afe41cbe41 100644
--- a/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
+++ b/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
@@ -81,9 +81,8 @@ class IsCurrentFieldSpecProvider extends \Civi\Core\Service\AutoService implemen
     $startDate = substr_replace($field['sql_name'], 'start_date', -11, -1);
     $endDate = substr_replace($field['sql_name'], 'end_date', -11, -1);
     $isActive = substr_replace($field['sql_name'], 'is_active', -11, -1);
-    $todayStart = date('Ymd', strtotime('now'));
-    $todayEnd = date('Ymd', strtotime('now'));
-    return "IF($isActive = 1 AND ($startDate <= '$todayStart' OR $startDate IS NULL) AND ($endDate >= '$todayEnd' OR $endDate IS NULL), '1', '0')";
+    $today = date('Ymd');
+    return "IF($isActive = 1 AND ($startDate <= '$today' OR $startDate IS NULL) AND ($endDate >= '$today' OR $endDate IS NULL), '1', '0')";
   }
 
   /**
@@ -95,8 +94,8 @@ class IsCurrentFieldSpecProvider extends \Civi\Core\Service\AutoService implemen
    */
   public static function renderNonExpiredSql(array $field): string {
     $endDate = substr_replace($field['sql_name'], 'expires_date', -11, -1);
-    $todayEnd = date('Ymd');
-    return "IF($endDate >= '$todayEnd' OR $endDate IS NULL, 1, 0)";
+    $today = date('Ymd');
+    return "IF($endDate >= '$today' OR $endDate IS NULL, 1, 0)";
   }
 
 }
diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
index 73bcd7a6cf..47506d54aa 100644
--- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
+++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
@@ -320,9 +320,12 @@ class SpecFormatter {
       $inputAttrs['maxlength'] = (int) $data['maxlength'];
     }
     if ($inputType == 'TextArea') {
-      foreach (['rows', 'cols', 'note_rows', 'note_cols'] as $prop) {
+      foreach (['rows', 'cols', 'note_rows', 'note_columns'] as $prop) {
         if (!empty($data[$prop])) {
-          $inputAttrs[str_replace('note_', '', $prop)] = (int) $data[$prop];
+          $key = str_replace('note_', '', $prop);
+          // per @colemanw https://github.com/civicrm/civicrm-core/pull/28388#issuecomment-1835717428
+          $key = str_replace('columns', 'cols', $key);
+          $inputAttrs[$key] = (int) $data[$prop];
         }
       }
     }
diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php
index ad7415ee2e..7a1e4493d9 100644
--- a/civicrm/Civi/Api4/Utils/CoreUtil.php
+++ b/civicrm/Civi/Api4/Utils/CoreUtil.php
@@ -240,6 +240,7 @@ class CoreUtil {
    */
   public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL): ?bool {
     $userID = $userID ?? \CRM_Core_Session::getLoggedInContactID() ?? 0;
+    $idField = self::getIdFieldName($apiRequest->getEntityName());
 
     // Super-admins always have access to everything
     if (\CRM_Core_Permission::check('all CiviCRM permissions and ACLs', $userID)) {
@@ -250,7 +251,7 @@ class CoreUtil {
     // It's a cheap trick and not as efficient as not running the query at all,
     // but BAO::checkAccess doesn't consistently check permissions for the "get" action.
     if (is_a($apiRequest, '\Civi\Api4\Generic\AbstractGetAction')) {
-      return (bool) $apiRequest->addSelect('id')->addWhere('id', '=', $record['id'])->execute()->count();
+      return (bool) $apiRequest->addSelect($idField)->addWhere($idField, '=', $record[$idField])->execute()->count();
     }
 
     $event = new \Civi\Api4\Event\AuthorizeRecordEvent($apiRequest, $record, $userID);
diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php
index ba93b4a278..2aba6212f2 100644
--- a/civicrm/Civi/Api4/Utils/FormattingUtil.php
+++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php
@@ -425,7 +425,10 @@ class FormattingUtil {
    *   Path at which these fields are found, e.g. "address.contact."
    * @return array
    */
-  public static function contactFieldsToRemove($contactType, $prefix) {
+  public static function contactFieldsToRemove($contactType, $prefix): array {
+    if (!$contactType || !is_string($contactType)) {
+      return [];
+    }
     if (!isset(\Civi::$statics[__CLASS__][__FUNCTION__][$contactType])) {
       \Civi::$statics[__CLASS__][__FUNCTION__][$contactType] = [];
       foreach (\CRM_Contact_DAO_Contact::fields() as $field) {
diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php
index bbe0527653..8ea153495c 100644
--- a/civicrm/Civi/Core/Container.php
+++ b/civicrm/Civi/Core/Container.php
@@ -364,6 +364,11 @@ class Container {
         []
       ))->addTag('kernel.event_subscriber')->setPublic(TRUE);
     }
+    $container->setDefinition("crm_financial_trxn_tokens", new Definition(
+      'CRM_Financial_FinancialTrxnTokens',
+      []
+    ))->addTag('kernel.event_subscriber')->setPublic(TRUE);
+
     $container->setDefinition('civi_token_impliedcontext', new Definition(
       'Civi\Token\ImpliedContextSubscriber',
       []
@@ -427,7 +432,14 @@ class Container {
    * @return \Civi\Angular\Manager
    */
   public function createAngularManager() {
-    return new \Civi\Angular\Manager(\CRM_Core_Resources::singleton());
+    $moduleEnvId = md5(\CRM_Core_Config_Runtime::getId());
+    $angCache = \CRM_Utils_Cache::create([
+      'name' => substr('angular_' . $moduleEnvId, 0, 32),
+      'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
+      'withArray' => 'fast',
+      'prefetch' => TRUE,
+    ]);
+    return new \Civi\Angular\Manager(\CRM_Core_Resources::singleton(), $angCache);
   }
 
   /**
diff --git a/civicrm/Civi/Crypto/CryptoJwt.php b/civicrm/Civi/Crypto/CryptoJwt.php
index 9559824118..bbc989ce20 100644
--- a/civicrm/Civi/Crypto/CryptoJwt.php
+++ b/civicrm/Civi/Crypto/CryptoJwt.php
@@ -13,6 +13,7 @@ namespace Civi\Crypto;
 
 use Civi\Crypto\Exception\CryptoException;
 use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
 
 /**
  * The "Crypto JWT" service supports a token format suitable for
@@ -59,6 +60,10 @@ class CryptoJwt {
    * @throws CryptoException
    */
   public function decode($token, $keyTag = 'SIGN') {
+    $useKeyObj = version_compare(\Composer\InstalledVersions::getVersion('firebase/php-jwt'), '6', '>=');
+    if (!$useKeyObj) {
+      \CRM_Core_Error::deprecatedWarning('Using deprecated version of firebase/php-jwt. Upgrade to 6.x+.');
+    }
     $keyRows = $this->getRegistry()->findKeysByTag($keyTag);
 
     // We want to call JWT::decode(), but there's a slight mismatch -- the
@@ -73,13 +78,13 @@ class CryptoJwt {
     foreach ($keyRows as $key) {
       if ($alg = $this->suiteToAlg($key['suite'])) {
         // Currently, registry only has symmetric keys in $key['key']. For public key-pairs, might need to change.
-        $keysByAlg[$alg][$key['id']] = $key['key'];
+        $keysByAlg[$alg][$key['id']] = ($useKeyObj ? new Key($key['key'], $alg) : $key['key']);
       }
     }
 
     foreach ($keysByAlg as $alg => $keys) {
       try {
-        return (array) JWT::decode($token, $keys, [$alg]);
+        return ($useKeyObj ? (array) JWT::decode($token, $keys) : (array) JWT::decode($token, $keys, [$alg]));
       }
       catch (\UnexpectedValueException $e) {
         // Depending on the error, we might able to try other algos
diff --git a/civicrm/Civi/Import/DataSource/DataSourceInterface.php b/civicrm/Civi/Import/DataSource/DataSourceInterface.php
new file mode 100644
index 0000000000..b79ddc04b0
--- /dev/null
+++ b/civicrm/Civi/Import/DataSource/DataSourceInterface.php
@@ -0,0 +1,131 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+/**
+ * Objects that implement the DataSource interface can be used in CiviCRM imports.
+ */
+interface DataSourceInterface {
+
+  /**
+   * Determine if the current user has access to this data source.
+   *
+   * @return bool
+   */
+  public function checkPermission(): bool;
+
+  /**
+   * Provides information about the data source.
+   *
+   * @return array
+   *   Description of this data source, including:
+   *   - title: string, translated, required
+   *   - permissions: array, optional
+   */
+  public function getInfo(): array;
+
+  /**
+   * This is function is called by the form object to get the DataSource's form snippet.
+   *
+   * It should add all fields necessary to get the data uploaded to the temporary table in the DB.
+   *
+   * @param \CRM_Import_Forms $form
+   */
+  public function buildQuickForm(\CRM_Import_Forms $form): void;
+
+  /**
+   * Get array array of field names that may be submitted for this data source.
+   *
+   * The quick form for the datasource is added by ajax - meaning that QuickForm
+   * does not see them as part of the form. However, any fields listed in this array
+   * will be taken from the `$_POST` and stored to the UserJob under metadata->submitted_values.
+   *
+   * @return array
+   */
+  public function getSubmittableFields(): array;
+
+  /**
+   * Initialize the datasource, based on the submitted values stored in the user job.
+   *
+   * Generally this will include transferring the data to a database table.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function initialize(): void;
+
+  /**
+   * Purge any datasource related assets when the datasource is dropped.
+   *
+   * This is the datasource's chance to delete any tables etc that it created
+   * which will now not be used.
+   *
+   * @param array $newParams
+   *   If the dataSource is being updated to another variant of the same
+   *   class (eg. the csv upload was set to no column headers and they
+   *   have resubmitted WITH skipColumnHeader (first row is a header) then
+   *   the dataSource is still CSV and the params for the new instance
+   *   are passed in. When changing from csv to SQL (for example) newParams is
+   *   empty.
+   *
+   * @return array
+   *   The details to update the DataSource key in the userJob metadata to.
+   *   Generally and empty array but it the datasource decided (for example)
+   *   that the table it created earlier is still consistent with the new params
+   *   then it might decided not to drop the table and would want to retain
+   *   some metadata.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function purge(array $newParams = []) :array;
+
+  /**
+   * Get an array of column headers, if any.
+   *
+   * This is presented to the user in the MapField screen so
+   * that can see what fields they are mapping.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public function getColumnHeaders(): array;
+
+  /**
+   * @param int $limit
+   *
+   * @return self
+   */
+  public function setLimit(int $limit): self;
+
+  /**
+   * Set the statuses to be retrieved.
+   *
+   * @param array $statuses
+   *
+   * @return self
+   */
+  public function setStatuses(array $statuses): self;
+
+  /**
+   * Get rows as an array.
+   *
+   * The array has all values.
+   *
+   * @param bool $nonAssociative
+   *   Return as a non-associative array?
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getRows(bool $nonAssociative = TRUE): array;
+
+}
diff --git a/civicrm/Civi/Import/DataSource/DataSourceTrait.php b/civicrm/Civi/Import/DataSource/DataSourceTrait.php
new file mode 100644
index 0000000000..2fa8b142fe
--- /dev/null
+++ b/civicrm/Civi/Import/DataSource/DataSourceTrait.php
@@ -0,0 +1,289 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+use Civi\Api4\UserJob;
+
+/**
+ * Provides all the helpers to add a datasource easily.
+ */
+trait DataSourceTrait {
+
+  /**
+   * User job id.
+   *
+   * This is the primary key of the civicrm_user_job table which is used to
+   * track the import.
+   *
+   * @var int
+   */
+  protected $userJobID;
+
+  /**
+   * User job details.
+   *
+   * This is the relevant row from civicrm_user_job.
+   *
+   * @var array
+   */
+  protected $userJob;
+
+  /**
+   * Class constructor.
+   *
+   * @param int|null $userJobID
+   */
+  public function __construct(int $userJobID = NULL) {
+    if ($userJobID) {
+      $this->setUserJobID($userJobID);
+    }
+  }
+
+  /**
+   * Get the ID of the user job being acted on.
+   *
+   * @return int|null
+   */
+  public function getUserJobID(): ?int {
+    return $this->userJobID;
+  }
+
+  /**
+   * Set user job ID.
+   *
+   * @param int $userJobID
+   */
+  public function setUserJobID(int $userJobID): void {
+    $this->userJobID = $userJobID;
+  }
+
+  /**
+   * Determine if the current user has access to this data source.
+   *
+   * @return bool
+   */
+  public function checkPermission(): bool {
+    $info = $this->getInfo();
+    return empty($info['permissions']) || \CRM_Core_Permission::check($info['permissions']);
+  }
+
+  /**
+   * Purge any datasource related assets when the datasource is dropped.
+   *
+   * This is the datasource's chance to delete any tables etc that it created
+   * which will now not be used.
+   *
+   * @param array $newParams
+   *   If the dataSource is being updated to another variant of the same
+   *   class (eg. the csv upload was set to no column headers and they
+   *   have resubmitted WITH skipColumnHeader (first row is a header) then
+   *   the dataSource is still CSV and the params for the new instance
+   *   are passed in. When changing from csv to SQL (for example) newParams is
+   *   empty.
+   *
+   * @return array
+   *   The details to update the DataSource key in the userJob metadata to.
+   *   Generally and empty array but it the datasource decided (for example)
+   *   that the table it created earlier is still consistent with the new params
+   *   then it might decided not to drop the table and would want to retain
+   *   some metadata.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function purge(array $newParams = []) :array {
+    // The old name is still stored...
+    $oldTableName = $this->getTableName();
+    if ($oldTableName) {
+      \CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS ' . $oldTableName);
+    }
+    return [];
+  }
+
+  /**
+   * Update the data stored in the User Job about the Data Source.
+   *
+   * @param array $data
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function updateUserJobDataSource(array $data): void {
+    $this->updateUserJobMetadata('DataSource', $data);
+  }
+
+  /**
+   * Update the UserJob Metadata.
+   *
+   * @param string $key
+   * @param array $data
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function updateUserJobMetadata(string $key, array $data): void {
+    $metaData = array_merge(
+      $this->getUserJob()['metadata'],
+      [$key => $data]
+    );
+    UserJob::update(FALSE)
+      ->addWhere('id', '=', $this->getUserJobID())
+      ->setValues(['metadata' => $metaData])
+      ->execute();
+    $this->userJob['metadata'] = $metaData;
+  }
+
+  /**
+   * Get an array of column headers, if any.
+   *
+   * This is presented to the user in the MapField screen so
+   * that can see what fields they are mapping.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public function getColumnHeaders(): array {
+    return $this->getUserJob()['metadata']['DataSource']['column_headers'];
+  }
+
+  /**
+   * Get User Job.
+   *
+   * API call to retrieve the userJob row.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getUserJob(): array {
+    if (!$this->userJob) {
+      $this->userJob = UserJob::get()
+        ->addWhere('id', '=', $this->getUserJobID())
+        ->execute()
+        ->first();
+    }
+    return $this->userJob;
+  }
+
+  /**
+   * Get submitted value.
+   *
+   * Get a value submitted on the form.
+   *
+   * @return mixed
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getSubmittedValue(string $valueName) {
+    return $this->getUserJob()['metadata']['submitted_values'][$valueName];
+  }
+
+  /**
+   * Get column names from the headers - munging to lower case etc.
+   *
+   * @param array $headers
+   *
+   * @return array
+   */
+  protected function getColumnNamesFromHeaders(array $headers): array {
+    $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
+    $columns = array_map($strtolower, $headers);
+    $columns = array_map('trim', $columns);
+    $columns = str_replace(' ', '_', $columns);
+    $columns = preg_replace('/[^a-z_]/', '', $columns);
+
+    // need to truncate values per mysql field name length limits
+    // mysql allows 64, but we need to account for appending colKey
+    // CRM-9079
+    foreach ($columns as &$colName) {
+      if (strlen($colName) > 58) {
+        $colName = substr($colName, 0, 58);
+      }
+    }
+    $hasDuplicateColumnName = count($columns) !== count(array_unique($columns));
+    if ($hasDuplicateColumnName || in_array('', $columns, TRUE)) {
+      foreach ($columns as $colKey => & $colName) {
+        if (!$colName) {
+          $colName = "col_$colKey";
+        }
+        elseif ($hasDuplicateColumnName) {
+          $colName .= "_$colKey";
+        }
+      }
+    }
+
+    // CRM-4881: we need to quote column names, as they may be MySQL reserved words
+    foreach ($columns as & $column) {
+      $column = "`$column`";
+    }
+    return $columns;
+  }
+
+  /**
+   * Get suitable column names for when no header row is in use.
+   *
+   * The result is an array like 'column_1', column_2'. SQL columns
+   * cannot start with a number.
+   *
+   * @param array $row
+   *
+   * @return array
+   */
+  protected function getColumnNamesForUnnamedColumns(array $row): array {
+    $columns = [];
+    foreach ($row as $i => $_) {
+      $columns[] = "column_$i";
+    }
+    return $columns;
+  }
+
+  /**
+   *
+   * @param array $columns
+   *
+   * @return string
+   *   Temp table name.
+   *
+   * @throws \Civi\Core\Exception\DBQueryException
+   */
+  protected function createTempTableFromColumns(array $columns): string {
+    $table = \CRM_Utils_SQL_TempTable::build()->setDurable();
+    $tableName = $table->getName();
+    \CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName");
+    $table->createWithColumns(implode(' text, ', $columns) . ' text');
+    return $tableName;
+  }
+
+  /**
+   * Trim non-breaking spaces in a multibyte-safe way.
+   * See also dev/core#2127 - avoid breaking strings ending in à or any other
+   * unicode character sharing the same 0xA0 byte as a non-breaking space.
+   *
+   * @param string $string
+   * @return string The trimmed string
+   */
+  public static function trimNonBreakingSpaces(string $string): string {
+    $encoding = mb_detect_encoding($string, NULL, TRUE);
+    if ($encoding === FALSE) {
+      // This could mean a couple things. One is that the string is
+      // ASCII-encoded but contains a non-breaking space, which causes
+      // php to fail to detect the encoding. So let's just do what we
+      // did before which works in that situation and is at least no
+      // worse in other situations.
+      return trim($string, chr(0xC2) . chr(0xA0));
+    }
+    if ($encoding !== 'UTF-8') {
+      $string = mb_convert_encoding($string, 'UTF-8', [$encoding]);
+    }
+    return preg_replace("/^(\u{a0})+|(\u{a0})+$/", '', $string);
+  }
+
+}
diff --git a/civicrm/Civi/Test/CiviTestListener.php b/civicrm/Civi/Test/CiviTestListener.php
index fbd6fd8878..2fa0627d9f 100644
--- a/civicrm/Civi/Test/CiviTestListener.php
+++ b/civicrm/Civi/Test/CiviTestListener.php
@@ -38,6 +38,11 @@ else {
      */
     private $tx;
 
+    /**
+     * @var \CRM_Core_TemporaryErrorScope|null
+     */
+    public $errorScope;
+
     public function startTestSuite(\PHPUnit\Framework\TestSuite $suite) {
       $byInterface = $this->indexTestsByInterface($suite->tests());
       $this->validateGroups($byInterface);
diff --git a/civicrm/Civi/Test/ContributionPageTestTrait.php b/civicrm/Civi/Test/ContributionPageTestTrait.php
index d20bc0863f..1c386681af 100644
--- a/civicrm/Civi/Test/ContributionPageTestTrait.php
+++ b/civicrm/Civi/Test/ContributionPageTestTrait.php
@@ -11,6 +11,11 @@
 
 namespace Civi\Test;
 
+use Civi\API\EntityLookupTrait;
+use Civi\Api4\UFField;
+use Civi\Api4\UFGroup;
+use Civi\Api4\UFJoin;
+
 /**
  * Helper for event tests.
  *
@@ -29,12 +34,13 @@ namespace Civi\Test;
  */
 trait ContributionPageTestTrait {
   use EntityTrait;
+  use EntityLookupTrait;
 
   /**
    * Create a contribution page for test purposes.
    *
-   * Only call this directly for unpaid contribution pages.
-   * Otherwise use contributionPageCreatePaid.
+   * Generally this function is not called directly -
+   * use contributionPageCreatePaid.
    *
    * @param array $contributionPageValues
    * @param string $identifier
@@ -52,10 +58,19 @@ trait ContributionPageTestTrait {
       'pay_later_text' => 'Send Money Now',
     ];
     $contributionPageValues += $contributionPageDefaults;
-    return $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier);
+    $return = $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier);
+    $this->define('ContributionPage', 'ContributionPage_' . $identifier, $return);
+    $this->addProfilesToContributionPage();
+    return $return;
   }
 
   /**
+   * Create a paid contribution page.
+   *
+   * This function ensures that the page has pay later configured, unless specified as false
+   * and that there is a payment_processor configured, unless the key payment_processor
+   * is already set.
+   *
    * @param array $contributionPageValues
    * @param array $priceSetParameters
    *   Currently if 'id' is passed in then no update is made, but this could change
@@ -65,6 +80,23 @@ trait ContributionPageTestTrait {
    */
   public function contributionPageCreatePaid(array $contributionPageValues, array $priceSetParameters = [], string $identifier = 'ContributionPage'): array {
     $contributionPageValues['is_monetary'] = TRUE;
+    $contributionPageValues += ['is_pay_later' => TRUE, 'pay_later_text' => 'Send check by mail'];
+    if (!array_key_exists('payment_processor', $contributionPageValues)) {
+      $this->createTestEntity('PaymentProcessor', [
+        'name' => 'dummy',
+        'label' => 'Dummy',
+        'payment_processor_type_id:name' => 'Dummy',
+        'frontend_title' => 'Dummy Front end',
+      ], 'dummy');
+      $this->createTestEntity('PaymentProcessor', [
+        'name' => 'dummy',
+        'label' => 'Dummy Test',
+        'payment_processor_type_id:name' => 'Dummy',
+        'frontend_title' => 'Dummy Front end (test)',
+        'is_test' => TRUE,
+      ], 'dummy_test');
+      $contributionPageValues['payment_processor'] = [$this->ids['PaymentProcessor']['dummy']];
+    }
     $contributionPageResult = $this->contributionPageCreate($contributionPageValues, $identifier);
     $priceSetParameters += [
       'title' => 'Price Set',
@@ -85,6 +117,40 @@ trait ContributionPageTestTrait {
       'entity_id' => $contributionPageResult['id'],
       'price_set_id' => $this->ids['PriceSet'][$identifier],
     ]);
+    $this->createTestEntity('Product', [
+      'name' => '5_dollars',
+      'description' => '5 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 1,
+      'is_active' => TRUE,
+      'min_contribution' => 5,
+      'cost' => .05,
+    ], '5_dollars');
+    $this->createTestEntity('Product', [
+      'name' => '10_dollars',
+      'description' => '10 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 2,
+      'is_active' => TRUE,
+      'min_contribution' => 10,
+      'cost' => .05,
+    ], '10_dollars');
+    $this->createTestEntity('Premium', [
+      'entity_id' => $this->getContributionPageID($identifier),
+      'entity_table' => 'civicrm_contribution_page',
+      'premiums_intro_title' => 'Get free monopoly money with your donation',
+      'premiums_active' => TRUE,
+    ], $identifier);
+    $this->createTestEntity('PremiumsProduct', [
+      'premiums_id' => $this->ids['Premium'][$identifier],
+      'product_id' => $this->ids['Product']['5_dollars'],
+      'weight' => 1,
+    ]);
+    $this->createTestEntity('PremiumsProduct', [
+      'premiums_id' => $this->ids['Premium'][$identifier],
+      'product_id' => $this->ids['Product']['10_dollars'],
+      'weight' => 2,
+    ]);
     return $contributionPageResult;
   }
 
@@ -110,4 +176,334 @@ trait ContributionPageTestTrait {
     return 0;
   }
 
+  /**
+   * Set up a contribution page with a complex price set.
+   *
+   * The created price set has 5 fields using a mixture of financial type 1 & 2, 3 which are created.
+   *
+   * More fields may be added.
+   *
+   * - Radio field (key= 'radio_field') with 3 options ('20_dollars','10_dollars','free'), financial type ID is 'first'
+   * - Select field (key= 'select_field') with 2 options ('40_dollars','30_dollars'), financial type ID is 'second'
+   * - Text field ('text_field_16.95') with amount = 16.95 - ie if qty is 2 then amount is 33.90, financial type ID is 'second'
+   * - Text field ('text_field_2.95') with amount = 2.95 - ie if qty is 2 then amount is 5.90, financial type ID is 'second'
+   * - Text field ('text_field') with amount = 1 - ie if qty is 2 then amount is 2, financial type ID is 'first'
+   * - CheckBox field ('check_box') with amount = 55,  financial type ID is 'third'
+   *
+   * @param array $contributionPageParameters
+   * @param array $priceSetParameters
+   */
+  public function contributionPageWithPriceSetCreate(array $contributionPageParameters = [], array $priceSetParameters = []): void {
+    $this->contributionPageCreatePaid($contributionPageParameters, $priceSetParameters);
+    $priceSetID = $this->ids['PriceSet']['ContributionPage'];
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 1'], 'first');
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 2'], 'second');
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 3'], 'third');
+    $priceField = $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Financial Type 1, radio field',
+      'html_type' => 'Radio',
+      'name' => 'radio_field',
+    ], 'radio_field');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['radio_field'],
+      'label' => 'Twenty dollars',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 20,
+      'non_deductible_amount' => 15,
+    ], '20_dollars');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $priceField['id'],
+      'label' => '10 dollars',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 10,
+      'non_deductible_amount' => 5,
+    ], '10_dollars');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $priceField['id'],
+      'label' => 'Free',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 0,
+      'non_deductible_amount' => 0,
+      'name' => 'free',
+    ], 'free')['id'];
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Financial Type 2, select field',
+      'html_type' => 'Select',
+      'name' => 'select_field',
+    ], 'select_field');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['select_field'],
+      'label' => 'Forty dollars',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => 40,
+      'non_deductible_amount' => 5,
+    ], '40_dollars');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['select_field'],
+      'label' => 'Thirty dollars',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => 30,
+      'non_deductible_amount' => 5,
+    ], '30_dollars');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Quantity * 16.95',
+      'html_type' => 'Text',
+      'name' => 'text_field_16.95',
+    ], 'text_field_16.95');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['text_field_16.95'],
+      'label' => 'Quantity * 16.95',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => '16.95',
+      'name' => 'text_field_16.95',
+    ], 'text_field_16.95');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => '2.95 text field',
+      'name' => 'text_field_2.95',
+      'html_type' => 'Text',
+    ], 'text_field_2.95');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['text_field_2.95'],
+      'label' => 'Quantity * 2.95',
+      'name' => 'text_field_2.95',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => '2.95',
+    ], 'text_field_2.95');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Checkbox',
+      'name' => 'check_box',
+      'html_type' => 'CheckBox',
+    ], 'check_box');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['check_box'],
+      'label' => 'CheckBox, 55 donation',
+      'financial_type_id:name' => 'Financial Type 3',
+      'amount' => 55,
+      'name' => 'check_box',
+    ], 'check_box');
+  }
+
+  /**
+   * Set up a contribution page configured with quick config.
+   *
+   * The created price set has up to 3 fields.
+   *
+   * - Radio field (key = 'contribution_amount') with 3 options ('contribution_amount_25','contribution_amount_15','contribution_amount_0'), financial type ID matches the page financial type.
+   * - Text field ('other_amount') with amount = 1 - ie if qty is 2 then amount is 2, financial type ID matches the page financial type.
+   * - Radio field (key = 'membership_amount') with one option per enabled membership type (General will be created if not exists).
+   *
+   * @param array $contributionPageParameters
+   * @param array $priceSetParameters
+   * @param bool $isSeparatePayment
+   * @param bool $membershipAmountField
+   *  - use false to suppress the creation of this field.
+   * @param bool $contributionAmountField
+   * - use false to suppress the creation of this field.
+   * @param bool $otherAmountField
+   * - use false to suppress the creation of this field.
+   * @param string $identifier
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function contributionPageQuickConfigCreate(array $contributionPageParameters = [], array $priceSetParameters = [], bool $isSeparatePayment = FALSE, bool $membershipAmountField = TRUE, bool $contributionAmountField = TRUE, bool $otherAmountField = TRUE, string $identifier = 'QuickConfig'): void {
+    $this->contributionPageCreatePaid($contributionPageParameters, $priceSetParameters, $identifier);
+    $priceSetID = $this->ids['PriceSet']['QuickConfig'];
+    if ($membershipAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Membership Amount',
+        'html_type' => 'Radio',
+        'name' => 'membership_amount',
+      ], 'membership_amount');
+      $membershipTypes = \CRM_Member_BAO_MembershipType::getAllMembershipTypes();
+      if (empty($membershipTypes)) {
+        $this->createTestEntity('MembershipType', [
+          'name' => 'General',
+          'duration_unit' => 'year',
+          'duration_interval' => 1,
+          'period_type' => 'rolling',
+          'member_of_contact_id' => \CRM_Core_BAO_Domain::getDomain()->contact_id,
+          'domain_id' => 1,
+          'financial_type_id:name' => 'Member Dues',
+          'is_active' => 1,
+          'sequential' => 1,
+          'minimum_fee' => 100,
+          'visibility' => 'Public',
+        ]);
+        $membershipTypes = \CRM_Member_BAO_MembershipType::getAllMembershipTypes();
+      }
+      foreach ($membershipTypes as $membershipType) {
+        $name = 'membership_' . strtolower($membershipType['name']);
+        $this->createTestEntity('PriceFieldValue', [
+          'name' => 'membership_' . $name,
+          'label' => 'Membership Amount',
+          'amount' => $membershipType['minimum_fee'],
+          'financial_type_id:name' => 'Member Dues',
+          'format.only_id' => TRUE,
+          'membership_type_id' => $membershipType['id'],
+          'price_field_id' => $priceField['id'],
+        ], $name);
+      }
+      $this->createTestEntity('MembershipBlock', [
+        'entity_id' => $this->getContributionPageID(),
+        'entity_table' => 'civicrm_contribution_page',
+        'is_required' => TRUE,
+        'is_active' => TRUE,
+        'is_separate_payment' => $isSeparatePayment,
+        'membership_type_default' => reset($this->ids['MembershipType']),
+        'membership_types' => array_fill_keys(array_keys($membershipTypes), 1),
+      ]);
+    }
+    if ($contributionAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Contribution Amount',
+        'html_type' => 'Radio',
+        'name' => 'contribution_amount',
+      ], 'contribution_amount');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Fifteen',
+        'name' => 'contribution_amount_15',
+        'amount' => 15,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_15');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Twenty Five',
+        'name' => 'contribution_amount_25',
+        'amount' => 25,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_25');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Nothing',
+        'name' => 'contribution_amount_0',
+        'amount' => 0,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_0');
+    }
+    if ($otherAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Other Amount',
+        'html_type' => 'Text',
+        'name' => 'other_amount',
+      ], 'other_amount');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Other Amount',
+        'name' => 'other_amount',
+        'amount' => 1,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'other_amount');
+    }
+  }
+
+  /**
+   * Add profiles to the event.
+   *
+   * This function is designed to reflect the
+   * normal use case where events do have profiles.
+   *
+   * Note if any classes do not want profiles, or want something different,
+   * the thinking is they should override this. Once that arises we can review
+   * making it protected rather than private & checking we are happy with the
+   * signature.
+   *
+   * @param string $identifier
+   */
+  private function addProfilesToContributionPage(string $identifier = 'ContributionPage'): void {
+    $profiles = [
+      ['name' => '_pre', 'title' => 'Page Pre Profile', 'weight' => 1, 'fields' => ['email']],
+      ['name' => '_post', 'title' => 'Page Post Profile', 'weight' => 2, 'fields' => ['first_name', 'last_name']],
+    ];
+    foreach ($profiles as $profile) {
+      $this->createContributionPageProfile($profile, $identifier);
+    }
+  }
+
+  /**
+   * Create a profile attached to an event.
+   *
+   * @param array $profile
+   * @param string $identifier
+   */
+  private function createContributionPageProfile(array $profile, string $identifier): void {
+    $profileName = $identifier . $profile['name'];
+    $profileIdentifier = $profileName;
+    try {
+      $this->setTestEntity('UFGroup', UFGroup::create(FALSE)->setValues([
+        'group_type' => 'Individual,Contact',
+        'name' => $profileName,
+        'title' => $profile['title'],
+        'frontend_title' => 'Public ' . $profile['title'],
+      ])->execute()->first(),
+        $profileIdentifier);
+    }
+    catch (\CRM_Core_Exception $e) {
+      $this->fail('UF group creation failed for ' . $profileName . ' with error ' . $e->getMessage());
+    }
+    foreach ($profile['fields'] as $field) {
+      $this->setTestEntity('UFField', UFField::create(FALSE)
+        ->setValues([
+          'uf_group_id:name' => $profileName,
+          'field_name' => $field,
+          'label' => $field,
+        ])
+        ->execute()
+        ->first(), $field . '_' . $profileIdentifier);
+    }
+    try {
+      $this->setTestEntity('UFJoin', UFJoin::create(FALSE)->setValues([
+        'module' => 'CiviContribute',
+        'uf_group_id:name' => $profileName,
+        'entity_id' => $this->getContributionPageID($identifier),
+      ])->execute()->first(), $profileIdentifier);
+    }
+    catch (\CRM_Core_Exception $e) {
+      $this->fail('UF join creation failed for UF Group ' . $profileName . ' with error ' . $e->getMessage());
+    }
+  }
+
+  /**
+   * Get suitable values for submitting the contribution form with a billing block.
+   *
+   * @param string $processorIdentifier
+   *
+   * @return array
+   */
+  protected function getBillingSubmitValues(string $processorIdentifier = 'dummy'): array {
+    // @todo determine the fields from the processor.
+    return [
+      'billing_first_name' => 'Dave',
+      'billing_middle_name' => 'Joseph',
+      'billing_last_name' => 'Wong',
+      'email-' . \CRM_Core_BAO_LocationType::getBilling() => 'dave@example.com',
+      'payment_processor_id' => $this->ids['PaymentProcessor'][$processorIdentifier],
+      'credit_card_number' => '4111111111111111',
+      'credit_card_type' => 'Visa',
+      'credit_card_exp_date' => ['M' => 9, 'Y' => 2040],
+      'cvv2' => 123,
+    ];
+  }
+
 }
diff --git a/civicrm/Civi/Test/FormTrait.php b/civicrm/Civi/Test/FormTrait.php
index a194768c15..757085ae1b 100644
--- a/civicrm/Civi/Test/FormTrait.php
+++ b/civicrm/Civi/Test/FormTrait.php
@@ -57,6 +57,18 @@ trait FormTrait {
     }
   }
 
+  /**
+   * Assert that the sent mail included the supplied strings.
+   *
+   * @param array $strings
+   * @param int $mailIndex
+   */
+  protected function assertMailSentNotContainStrings(array $strings, int $mailIndex = 0): void {
+    foreach ($strings as $string) {
+      $this->assertMailSentNotContainingString($string, $mailIndex);
+    }
+  }
+
   /**
    * Assert that the sent mail included the supplied string.
    *
@@ -65,7 +77,38 @@ trait FormTrait {
    */
   protected function assertMailSentContainingString(string $string, int $mailIndex = 0): void {
     $mail = $this->form->getMail()[$mailIndex];
-    $this->assertStringContainsString($string, $mail['body']);
+    $this->assertStringContainsString(preg_replace('/\s+/', '', $string), preg_replace('/\s+/', '', $mail['body']), 'String not found: ' . $string . "\n" . $mail['body']);
+  }
+
+  /**
+   * Assert that the sent mail included the supplied string.
+   *
+   * @param string $string
+   * @param int $mailIndex
+   */
+  protected function assertMailSentNotContainingString(string $string, int $mailIndex = 0): void {
+    $mail = $this->form->getMail()[$mailIndex];
+    $this->assertStringNotContainsString(preg_replace('/\s+/', '', $string), preg_replace('/\s+/', '', $mail['body']));
+  }
+
+  /**
+   * Assert that the sent mail included the supplied string.
+   *
+   * @param string $string
+   * @param int $mailIndex
+   */
+  protected function assertMailSentContainingHeaderString(string $string, int $mailIndex = 0): void {
+    $mail = $this->form->getMail()[$mailIndex];
+    $this->assertStringContainsString($string, $mail['headers']);
+  }
+
+  /**
+   * Assert the right number of mails were sent.
+   *
+   * @param int $count
+   */
+  protected function assertMailSentCount(int $count): void {
+    $this->assertCount($count, $this->form->getMail());
   }
 
   /**
diff --git a/civicrm/Civi/Test/FormWrapper.php b/civicrm/Civi/Test/FormWrapper.php
index e20b031061..ac13407d34 100644
--- a/civicrm/Civi/Test/FormWrapper.php
+++ b/civicrm/Civi/Test/FormWrapper.php
@@ -107,6 +107,7 @@ class FormWrapper {
    * @return \Civi\Test\FormWrapper
    */
   public function processForm(int $state = self::SUBMITTED): self {
+    \CRM_Core_Smarty::singleton()->pushScope([]);
     if ($state > self::CONSTRUCTED) {
       $this->form->preProcess();
     }
@@ -119,7 +120,8 @@ class FormWrapper {
     if ($state > self::VALIDATED) {
       $this->postProcess();
     }
-    $this->templateVariables = $this->form->get_template_vars();
+    $this->templateVariables = \CRM_Core_Smarty::singleton()->get_template_vars();
+    \CRM_Core_Smarty::singleton()->popScope([]);
     return $this;
   }
 
@@ -161,7 +163,7 @@ class FormWrapper {
    */
   public function __call(string $name, array $arguments) {
     if (!empty(ReflectionUtils::getCodeDocs((new \ReflectionMethod($this->form, $name)), 'Method')['api'])) {
-      return call_user_func([$this->form, $name], $arguments);
+      return call_user_func_array([$this->form, $name], $arguments);
     }
     throw new \CRM_Core_Exception($name . ' method not supported for external use');
   }
@@ -377,4 +379,16 @@ class FormWrapper {
     throw new \CRM_Core_Exception('Deprecation should have been triggered');
   }
 
+  /**
+   * @param string $name
+   * @param mixed $value
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function checkTemplateVariable(string $name, $value): void {
+    if ($this->templateVariables[$name] !== $value) {
+      throw new \CRM_Core_Exception("Template variable $name not set to " . print_r($value, TRUE) . ' actual value: ' . print_r($this->templateVariables[$name], TRUE));
+    }
+  }
+
 }
diff --git a/civicrm/Civi/Test/Legacy/CiviTestListener.php b/civicrm/Civi/Test/Legacy/CiviTestListener.php
index 4889da722b..f1cbbe0dcf 100644
--- a/civicrm/Civi/Test/Legacy/CiviTestListener.php
+++ b/civicrm/Civi/Test/Legacy/CiviTestListener.php
@@ -28,6 +28,11 @@ class CiviTestListener extends \PHPUnit_Framework_BaseTestListener {
    */
   private $tx;
 
+  /**
+   * @var \CRM_Core_TemporaryErrorScope|null
+   */
+  public $errorScope;
+
   public function startTestSuite(\PHPUnit_Framework_TestSuite $suite) {
     $byInterface = $this->indexTestsByInterface($suite->tests());
     $this->validateGroups($byInterface);
diff --git a/civicrm/Civi/Token/TokenCompatSubscriber.php b/civicrm/Civi/Token/TokenCompatSubscriber.php
index 2dd0f9e1ef..9c81b9180e 100644
--- a/civicrm/Civi/Token/TokenCompatSubscriber.php
+++ b/civicrm/Civi/Token/TokenCompatSubscriber.php
@@ -68,10 +68,24 @@ class TokenCompatSubscriber implements EventSubscriberInterface {
 
     // This removes the pattern used in greetings of having bits of text that
     // depend on the tokens around them - ie '{first_name}{ }{last_name}
-    // has an extra construct '{ }' which will resolve as a space if the
-    // tokens on either side are resolved to 'something'
-    $e->string = preg_replace('/\\\\|\{(\s*)?\}/', ' ', $e->string);
-
+    // has an extra construct '{ }' which will resolve what is inside the {} if the
+    // tokens on either side are resolved to 'something' (ie there is some sort of
+    // non whitespace character after the string.
+    // Accepted variants of { } are {`} {|} {,} {`} {*} {-} {(} {)}
+    // In each case any amount of preceding or trailing whitespace is acceptable.
+    // The accepted variants list contains known or suspected real world usages.
+    // Regex is to capture  { followed by 0 or more white spaces followed by
+    // a white space or one of , ` ~  ( ) - * |
+    // followed by 0 or more white spaces
+    // followed by }
+    // the captured string is followed by 1 or more non-white spaces.
+    // If it is repeated it will be replaced by the first input -
+    // ie { }{ } will be replaced by the content of the latter token.
+    // Check testGenerateDisplayNameCustomFormats for test cover.
+    $e->string = preg_replace('/\\\\|{(\s*(\s|,|`|~|\(|\)|-|\*|\|)*\s*)?\}}*(?=[^{\s])/', '$1', $e->string);
+    // Now do a another pass, removing any remaining instances (which will get rid of any that were not
+    // followed by something).
+    $e->string = preg_replace('/\\\\|' . '\{(\s*(\s|,|`|~|\(|\)|-|\*|\|)*\s?)?\}/', '', $e->string);
     if ($useSmarty) {
       $smartyVars = [];
       foreach ($e->context['smartyTokenAlias'] ?? [] as $smartyName => $tokenName) {
diff --git a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
index b2e7148e19..1dff695b1b 100644
--- a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
+++ b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
@@ -26,6 +26,8 @@ use Civi\WorkflowMessage\Traits\TemplateTrait;
  * @method int|null getContactID()
  * @method $this setContact(array|null $contact)
  * @method array|null getContact()
+ * @method $this setUserEnteredText(string $text)
+ * @method $this setUserEnteredHTML(string $html)
  *
  * @support template-only
  * GenericWorkflowMessage should aim for "full" support, but it's prudent to keep
@@ -117,4 +119,30 @@ class GenericWorkflowMessage implements WorkflowMessageInterface {
     $export['smartyTokenAlias']['taxTerm'] = 'domain.tax_term';
   }
 
+  /**
+   * Additional text to include in the receipt.
+   *
+   * @var string
+   *
+   * @scope tplParams as userTextPlain
+   */
+  protected $userEnteredText;
+
+  /**
+   * Additional html to include in the receipt.
+   *
+   * @var string
+   *
+   * @scope tplParams as userText
+   */
+  protected $userEnteredHTML;
+
+  public function getUserEnteredText(): ?string {
+    return $this->userEnteredText ?: ($this->userEnteredHTML ? \CRM_Utils_String::htmlToText($this->userEnteredHTML) : NULL);
+  }
+
+  public function getUserEnteredHTML(): ?string {
+    return \CRM_Utils_String::purifyHTML($this->userEnteredHTML ?: ($this->userEnteredText ? nl2br($this->userEnteredText) : ''));
+  }
+
 }
diff --git a/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
index 73d6f41272..2d881193e3 100644
--- a/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
+++ b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
@@ -13,6 +13,7 @@ namespace Civi\WorkflowMessage\Traits;
 
 use Civi\Api4\Contact;
 use Civi\Api4\MessageTemplate;
+use CRM_Core_Exception;
 
 /**
  * @method getTemplate(): ?array
diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js
index 811fd8101b..8bc3229ed2 100644
--- a/civicrm/ang/crmUi.js
+++ b/civicrm/ang/crmUi.js
@@ -787,7 +787,7 @@
           this.$onChanges = function() {
             // Timeout is to wait for `placeholder="{{ ts(...) }}"` to be resolved
             $timeout(function() {
-              $element.crmAutocomplete(ctrl.entity, ctrl.crmAutocompleteParams, {
+              $element.crmAutocomplete(ctrl.entity, ctrl.crmAutocompleteParams || {}, {
                 multiple: ctrl.multi,
                 // Only auto-open if there are no static options
                 minimumInputLength: ctrl.autoOpen && _.isEmpty(ctrl.staticOptions) ? 0 : 1,
diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php
index 0c4f19e5b9..597732a9ea 100644
--- a/civicrm/api/v3/Activity.php
+++ b/civicrm/api/v3/Activity.php
@@ -265,11 +265,7 @@ function civicrm_api3_activity_get($params) {
 function _civicrm_activity_get_handleSourceContactNameOrderBy(&$params, &$options, $sql) {
   $sourceContactID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_ActivityContact', 'record_type_id', 'Activity Source');
   if (!empty($options['sort'])
-    && in_array($options['sort'], [
-      'source_contact_name',
-      'source_contact_name desc',
-      'source_contact_name asc',
-    ])) {
+    && in_array($options['sort'], ['source_contact_name', 'source_contact_name desc', 'source_contact_name asc'])) {
     $order = substr($options['sort'], -4) === 'desc' ? 'desc' : 'asc';
     $sql->join(
       'source_contact',
@@ -340,12 +336,14 @@ function _civicrm_api3_activity_get_extraFilters(&$params, &$sql) {
       'join' => '!joinType civicrm_entity_file !alias ON (!alias.entity_table = "civicrm_activity" AND !alias.entity_id = a.id)',
       'column' => 'file_id',
     ],
-    'case_id' => [
+  ];
+  if (\CRM_Core_Component::isEnabled('CiviCase')) {
+    $rels['case_id'] = [
       'subquery' => 'a.id IN (SELECT activity_id FROM civicrm_case_activity WHERE !clause)',
       'join' => '!joinType civicrm_case_activity !alias ON (!alias.activity_id = a.id)',
       'column' => 'case_id',
-    ],
-  ];
+    ];
+  }
   foreach ($rels as $filter => $relSpec) {
     if (!empty($params[$filter])) {
       if (!is_array($params[$filter])) {
diff --git a/civicrm/api/v3/Contribution.php b/civicrm/api/v3/Contribution.php
index 8f95f781fe..14cf3e72ae 100644
--- a/civicrm/api/v3/Contribution.php
+++ b/civicrm/api/v3/Contribution.php
@@ -401,8 +401,15 @@ function civicrm_api3_contribution_sendconfirmation($params) {
     'receipt_text',
     'pay_later_receipt',
     'payment_processor_id',
+    'model',
   ];
   $input = array_intersect_key($params, array_flip($allowedParams));
+  if (!isset($input['model'])) {
+    $input['model'] = [
+      // Pass through legacy receipt_text.
+      'userEnteredText' => $input['tplParams']['receipt_text'] ?? NULL,
+    ];
+  }
   CRM_Contribute_BAO_Contribution::sendMail($input, [], $params['id']);
   return [];
 }
diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php
index 40feb5c6d5..bd77a64e4c 100644
--- a/civicrm/api/v3/CustomValue.php
+++ b/civicrm/api/v3/CustomValue.php
@@ -122,7 +122,7 @@ function civicrm_api3_custom_value_get($params) {
     'entityID' => $params['entity_id'],
     'entityType' => $params['entity_table'] ?? '',
   ];
-  if (strstr($getParams['entityType'], 'civicrm_')) {
+  if (str_contains($getParams['entityType'], 'civicrm_')) {
     $getParams['entityType'] = ucfirst(substr($getParams['entityType'], 8));
   }
   unset($params['entity_id'], $params['entity_table']);
diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php
index c26d6b02e5..cad9e17039 100644
--- a/civicrm/api/v3/Mailing.php
+++ b/civicrm/api/v3/Mailing.php
@@ -117,24 +117,6 @@ function _civicrm_api3_mailing_gettokens_spec(&$params) {
  *   Array of parameters determined by getfields.
  */
 function _civicrm_api3_mailing_create_spec(&$params) {
-  $params['created_id']['api.default'] = 'user_contact_id';
-
-  $params['override_verp']['api.default'] = !CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'track_civimail_replies');
-  $params['visibility']['api.default'] = 'Public Pages';
-  $params['dedupe_email']['api.default'] = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'dedupe_email_default');
-
-  $params['forward_replies']['api.default'] = FALSE;
-  $params['auto_responder']['api.default'] = FALSE;
-  $params['open_tracking']['api.default'] = Civi::settings()->get('open_tracking_default');
-  $params['url_tracking']['api.default'] = Civi::settings()->get('url_tracking_default');
-
-  $params['header_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Header', '');
-  $params['footer_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Footer', '');
-  $params['optout_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('OptOut', '');
-  $params['reply_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Reply', '');
-  $params['resubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Resubscribe', '');
-  $params['unsubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Unsubscribe', '');
-  $params['mailing_type']['api.default'] = 'standalone';
   $defaultAddress = CRM_Core_BAO_Domain::getNameAndEmail(TRUE, TRUE);
   foreach ($defaultAddress as $value) {
     if (preg_match('/"(.*)" <(.*)>/', $value, $match)) {
diff --git a/civicrm/api/v3/MessageTemplate.php b/civicrm/api/v3/MessageTemplate.php
index 08c281f295..d2683efbc1 100644
--- a/civicrm/api/v3/MessageTemplate.php
+++ b/civicrm/api/v3/MessageTemplate.php
@@ -107,6 +107,12 @@ function civicrm_api3_message_template_send($params) {
       unset($params[$field]);
     }
   }
+  if (!isset($params['model'])) {
+    $params['model'] = [
+      // Pass through legacy receipt_text.
+      'userEnteredText' => $params['tplParams']['receipt_text'] ?? NULL,
+    ];
+  }
   if (empty($params['messageTemplateID'])) {
     if (empty($params['workflow'])) {
       // Can't use civicrm_api3_verify_mandatory for this because it would give the wrong field names
diff --git a/civicrm/api/v3/utils.php b/civicrm/api/v3/utils.php
index 189b6efdd6..f5a7e89b81 100644
--- a/civicrm/api/v3/utils.php
+++ b/civicrm/api/v3/utils.php
@@ -637,7 +637,7 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
 
   //accept filters like filter.activity_date_time_high
   // std is now 'filters' => ..
-  if (strstr(implode(',', array_keys($params)), 'filter')) {
+  if (str_contains(implode(',', array_keys($params)), 'filter')) {
     if (isset($params['filters']) && is_array($params['filters'])) {
       foreach ($params['filters'] as $paramkey => $paramvalue) {
         _civicrm_api3_apply_filters_to_dao($paramkey, $paramvalue, $dao);
@@ -645,7 +645,7 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
     }
     else {
       foreach ($params as $paramkey => $paramvalue) {
-        if (strstr($paramkey, 'filter')) {
+        if (str_contains($paramkey, 'filter')) {
           _civicrm_api3_apply_filters_to_dao(substr($paramkey, 7), $paramvalue, $dao);
         }
       }
@@ -723,11 +723,11 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
  *   DAO object.
  */
 function _civicrm_api3_apply_filters_to_dao($filterField, $filterValue, &$dao) {
-  if (strstr($filterField, 'high')) {
+  if (str_contains($filterField, 'high')) {
     $fieldName = substr($filterField, 0, -5);
     $dao->whereAdd("($fieldName <= $filterValue )");
   }
-  if (strstr($filterField, 'low')) {
+  if (str_contains($filterField, 'low')) {
     $fieldName = substr($filterField, 0, -4);
     $dao->whereAdd("($fieldName >= $filterValue )");
   }
@@ -2489,7 +2489,7 @@ function _civicrm_api3_field_value_check(&$params, $fieldName, $type = NULL) {
 
   if (!empty($fieldValue) && is_array($fieldValue) &&
     (array_search(key($fieldValue), CRM_Core_DAO::acceptedSQLOperators()) ||
-      $type == 'String' && strstr(key($fieldValue), 'EMPTY'))
+      $type == 'String' && str_contains(key($fieldValue), 'EMPTY'))
   ) {
     $op = key($fieldValue);
     $fieldValue = $fieldValue[$op] ?? NULL;
diff --git a/civicrm/bin/ContributionProcessor.php b/civicrm/bin/ContributionProcessor.php
index 00b3776e0b..6dddb07a9b 100644
--- a/civicrm/bin/ContributionProcessor.php
+++ b/civicrm/bin/ContributionProcessor.php
@@ -450,11 +450,7 @@ class CiviContributeProcessor {
     }
 
     $contribution = CRM_Contribute_BAO_Contribution::create($params);
-    if (!$contribution->id) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) $contribution->id;
   }
 
   /**
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index 1ef579a347..8f91eca798 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.68.1',
+  return array( 'version'  => '5.69.0',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/composer.json b/civicrm/composer.json
index 80d4125b6a..e4bbc19350 100644
--- a/civicrm/composer.json
+++ b/civicrm/composer.json
@@ -53,7 +53,7 @@
     "php": "~7.3 || ~8",
     "composer-runtime-api": "~2.0",
     "dompdf/dompdf" : "~2.0.4",
-    "firebase/php-jwt": ">=3 <6",
+    "firebase/php-jwt": ">=3 <7",
     "rubobaquero/phpquery": "^0.9.15",
     "symfony/config": "~4.4 || ~6.0",
     "symfony/polyfill-iconv": "~1.0",
diff --git a/civicrm/composer.lock b/civicrm/composer.lock
index bcf9dffb0e..40f817de66 100644
--- a/civicrm/composer.lock
+++ b/civicrm/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d3d022bba1ca31f64298436418e2c630",
+    "content-hash": "160673a90ce1ebd1845eb3d7d4320a33",
     "packages": [
         {
             "name": "adrienrn/php-mimetyper",
@@ -610,23 +610,32 @@
         },
         {
             "name": "firebase/php-jwt",
-            "version": "v5.2.1",
+            "version": "v6.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/firebase/php-jwt.git",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23"
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
+                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": "^7.1||^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": ">=4.8 <=9"
+                "guzzlehttp/guzzle": "^6.5||^7.4",
+                "phpspec/prophecy-phpunit": "^1.1",
+                "phpunit/phpunit": "^7.5||^9.5",
+                "psr/cache": "^1.0||^2.0",
+                "psr/http-client": "^1.0",
+                "psr/http-factory": "^1.0"
+            },
+            "suggest": {
+                "ext-sodium": "Support EdDSA (Ed25519) signatures",
+                "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
             },
             "type": "library",
             "autoload": {
@@ -658,43 +667,52 @@
             ],
             "support": {
                 "issues": "https://github.com/firebase/php-jwt/issues",
-                "source": "https://github.com/firebase/php-jwt/tree/v5.2.1"
+                "source": "https://github.com/firebase/php-jwt/tree/v6.4.0"
             },
-            "time": "2021-02-12T00:02:00+00:00"
+            "time": "2023-02-09T21:01:23+00:00"
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.5.8",
+            "version": "7.6.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.9",
-                "php": ">=5.5",
-                "symfony/polyfill-intl-idn": "^1.17"
+                "guzzlehttp/promises": "^1.5",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
             },
             "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.1",
                 "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.1"
+                "php-http/client-integration-tests": "^3.0",
+                "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
             },
             "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
                 "psr/log": "Required for using the Log middleware"
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5-dev"
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
                 }
             },
             "autoload": {
@@ -747,19 +765,20 @@
                 }
             ],
             "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
                 "curl",
                 "framework",
                 "http",
                 "http client",
+                "psr-18",
+                "psr-7",
                 "rest",
                 "web service"
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+                "source": "https://github.com/guzzle/guzzle/tree/7.6.1"
             },
             "funding": [
                 {
@@ -775,7 +794,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-20T22:16:07+00:00"
+            "time": "2023-05-15T20:43:01+00:00"
         },
         {
             "name": "guzzlehttp/promises",
@@ -3590,6 +3609,73 @@
             ],
             "time": "2022-06-22T15:01:38+00:00"
         },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:53:40+00:00"
+        },
         {
             "name": "symfony/event-dispatcher",
             "version": "v4.4.42",
@@ -4043,177 +4129,6 @@
             ],
             "time": "2022-11-03T14:55:06+00:00"
         },
-        {
-            "name": "symfony/polyfill-intl-idn",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-intl-normalizer": "^1.10",
-                "symfony/polyfill-php72": "^1.10"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Laurent Bassin",
-                    "email": "laurent@bassin.info"
-                },
-                {
-                    "name": "Trevor Rowbotham",
-                    "email": "trevor.rowbotham@pm.me"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "idn",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
         {
             "name": "symfony/polyfill-mbstring",
             "version": "v1.27.0",
diff --git a/civicrm/css/backdrop.css b/civicrm/css/backdrop.css
index 89243bf5ce..286232774d 100644
--- a/civicrm/css/backdrop.css
+++ b/civicrm/css/backdrop.css
@@ -57,3 +57,16 @@
 .crm-container.ui-dialog .ui-dialog-titlebar-close .ui-icon.fa-compress::before {
   content: "\f066";
 }
+
+/* Resets details/summary appearance for accordions */
+
+.crm-container details {
+  border: 0 solid transparent;
+  background-color: inherit;
+  padding: 0;
+  margin: inherit;
+}
+.crm-container details summary span {
+  color: inherit;
+  font-size: inherit;
+}
diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css
index 0cbaa014e4..956e5ca804 100644
--- a/civicrm/css/civicrm.css
+++ b/civicrm/css/civicrm.css
@@ -2194,6 +2194,19 @@ div.crm-master-accordion-header a.helpicon {
 
 /* Specific types of headers */
 
+.crm-container summary { /* default summary setting*/
+  display: list-item;
+  list-style: none;
+  cursor: pointer;
+  font-size: 1rem;
+  padding: 0.5rem;
+  font-weight: bold;
+}
+
+.crm-container summary::-webkit-details-marker { /* Safari fix to remove summary icon */
+  display: none;
+}
+
 #crm-container .widget-content .crm-accordion-header {
   background-color: #efefe5;
   color: #080808;
@@ -2205,24 +2218,37 @@ div.crm-master-accordion-header a.helpicon {
   color: #3e3e3e;
 }
 
-.crm-container .crm-accordion-header {
+.crm-container details .crm-accordion-body {
+  display: block; /* Fix for old JS trying to hide crm-accordion-body */
+}
+
+.crm-container .crm-accordion-header,
+.crm-container .collapsed .crm-accordion-header,
+.crm-container .crm-accordion-bold > summary,
+.crm-container details > .crm-accordion-header { /* applies civi's default accordion header to summary & .crm-accrdion-bold */
   color: #f5f6f1;
   font-weight: normal;
   padding: 4px 8px;
   background-color: #5d677b;
-  border-radius: 4px 4px 0 0;
+  border-radius: 4px;
 }
 
-.crm-container .collapsed .crm-accordion-header {
-  border-radius: 4px;
+.crm-container div.crm-accordion-header,
+.crm-container details[open] > .crm-accordion-header,
+.crm-container .crm-accordion-bold[open] > summary { /* open version of that */
+  border-radius: 4px 4px 0 0;
 }
 
-.crm-container .crm-accordion-header.active {
+.crm-container .crm-accordion-header.active,
+.crm-container .crm-accordion-bold > summary.active { /* active version of that */
   font-weight: bold;
   background-color: #3e3e3e;
 }
 
-.crm-container .crm-accordion-header:hover {
+.crm-container .crm-accordion-header:hover,
+.crm-container .crm-accordion-header:focus,
+.crm-container .crm-accordion-bold > summary:hover,
+.crm-container .crm-accordion-bold > summary:focus { /* hover version of that */
   background-color: #2f2f2e;
 }
 
@@ -2230,33 +2256,43 @@ div.crm-master-accordion-header a.helpicon {
   background-color: #e8e8de;
 }
 
-.crm-container .crm-accordion-wrapper .crm-master-accordion-header {
+.crm-container .crm-accordion-wrapper .crm-master-accordion-header,
+.crm-container .crm-accordion-light > summary { /* adds a utility class to match civi's transparent accordion header style */
   background-color: transparent;
+  font-weight: normal;
   color: #3e3e3e;
-}
-
-.crm-container .crm-accordion-wrapper .crm-master-accordion-header {
-  font-size: 16px;
+  font-size: 1rem;
 }
 
 .crm-container .crm-master-accordion-header.crm-accordion-header:hover,
-.crm-container .crm-collapsible .collapsible-title:hover {
+.crm-container .crm-accordion-light > summary:hover,
+.crm-container .crm-collapsible .collapsible-title:hover,
+.crm-container .crm-master-accordion-header.crm-accordion-header:focus,
+.crm-container .crm-accordion-light > summary:focus,
+.crm-container .crm-collapsible .collapsible-title:focus { /* hover state for this */
   color: #121a2d;
 }
 
-.crm-container .collapsed .crm-accordion-body,
+.crm-container div.collapsed .crm-accordion-body,
+.crm-container fieldset.collapsed .crm-accordion-body,
 .crm-container .crm-collapsible.collapsed .collapsible-title + * {
   display: none;
 }
 
+.crm-container details details {
+  padding: 0 0.25rem; /* adds padding for nested accordions */
+}
+
 /* Collapse icon */
 
 /* General icon settings for all collapsible things */
-.crm-container .crm-accordion-header:before,
+.crm-container div.crm-accordion-header:before,
+.crm-container .collapsed div.crm-accordion-header:before,
 .crm-container .crm-collapsible .collapsible-title:before,
 .crm-container span.collapsed:before,
 .crm-container a.collapsed:before,
-.crm-container .crm-expand-row:before {
+.crm-container .crm-expand-row:before,
+.crm-container details > summary:before {
   font-family: "FontAwesome";
   display: inline-block;
   width: 1em;
@@ -2264,28 +2300,21 @@ div.crm-master-accordion-header a.helpicon {
   font-size: 13px;
 }
 
-/* Collapsed icon */
-.crm-container .collapsed .crm-accordion-header:before,
-.crm-container .crm-collapsible.collapsed .collapsible-title:before,
-.crm-container span.collapsed:before,
-.crm-container a.collapsed:before,
-.crm-container .crm-expand-row:before {
-  content: "\f0da";
-}
-
 /* Expanded icon */
-.crm-container .crm-accordion-header:before,
+.crm-container div.crm-accordion-header:before,
 .crm-container .crm-collapsible .collapsible-title:before,
 .crm-container span.expanded:before,
 .crm-container a.expanded:before,
-.crm-container .crm-expand-row.expanded:before {
+.crm-container .crm-expand-row.expanded:before,
+.crm-container details[open] > summary:before {
   font-family: "FontAwesome";
   content: "\f0d7";
 }
 
 /* Accordion bodies */
 
-.crm-container .crm-accordion-body {
+.crm-container .crm-accordion-wrapper .crm-accordion-body,
+.crm-container details.crm-accordion-bold .crm-accordion-body {
   border-radius: 0 0 4px 4px;
   border: 1px solid #70716b;
   border-top: 0;
@@ -2296,13 +2325,15 @@ div.crm-master-accordion-header a.helpicon {
   border-color: #e8e8de;
 }
 
-.crm-container .crm-master-accordion-header+.crm-accordion-body {
+.crm-container .crm-master-accordion-header+.crm-accordion-body,
+.crm-accordion-wrapper.crm-accordion-light {
   border: none;
   padding: 0;
 }
 
 #crm-container .widget-content .crm-accordion-body,
-.crm-container .crm-accordion-body.padded {
+.crm-container .crm-accordion-body.padded,
+.crm-container details.padded {
   padding-left: .5em;
   padding-right: .5em;
 }
@@ -3932,3 +3963,20 @@ span.crm-status-icon {
 .dedupe-rules-dialog label > * {
   margin-left: 30px;
 }
+
+/* Standalone-only styles. A minimal set to make it usable out-of-the-box. */
+html.crm-standalone body {
+  --sa-font-family: sans-serif;
+  --roundness: 3px;
+  --error-colour: #a00;
+  --warning-colour: #fbb862;
+  --success-colour: #86c66c;
+  --label-colour: #464354;
+  --background-colour: rgb(242,242,237);
+  --box-padding: 1.6rem;
+  --box-background: #fff;
+  margin: 0;
+  padding: 0;
+  font-family: var(--sa-font-family);
+  background-color: var(--background-colour);
+}
diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
index 6248442082..bc14646794 100644
--- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
+++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
@@ -11,6 +11,8 @@
 
 namespace Civi\AfformAdmin;
 
+use Civi\Api4\Afform;
+use Civi\Api4\SavedSearch;
 use Civi\Core\Service\AutoSubscriber;
 use CRM_Afform_ExtensionUtil as E;
 
@@ -36,14 +38,58 @@ class AfformAdminInjector extends AutoSubscriber {
     $changeSet = \Civi\Angular\ChangeSet::create('afformAdmin')
       ->alterHtml(';\\.aff\\.html$;', function($doc, $path) {
         try {
-          $moduleName = basename($path, '.aff.html');
-          // If the user has "administer CiviCRM", inject edit link
+          // If the user has "administer CiviCRM", inject gear menu with edit links
           if (\CRM_Core_Permission::check('administer CiviCRM')) {
-            $url = \CRM_Utils_System::url('civicrm/admin/afform', NULL, FALSE, '/edit/' . $moduleName, TRUE);
-            // Append link to afform directive element (using loop but there should be only one)
-            foreach (pq('af-form[ctrl]', $doc) as $afForm) {
-              pq($afForm)->append('<a href="' . $url . '" target="_blank" class="af-admin-edit-form-link"><i class="crm-i fa-gear"></i> ' . E::ts('Edit Form') . '</a>');
+            $afform = Afform::get()
+              ->addWhere('module_name', '=', basename($path, '.aff.html'))
+              ->addSelect('name', 'search_displays', 'title')
+              ->execute()->single();
+            // Create a link to edit the form, plus all embedded SavedSearches
+            $links = [
+              [
+                'url' => \CRM_Utils_System::url('civicrm/admin/afform', NULL, FALSE, "/edit/{$afform['name']}", TRUE),
+                'text' => E::ts('Edit %1 in FormBuilder', [1 => "<em>{$afform['title']}</em>"]),
+                'icon' => 'fa-pencil',
+              ],
+            ];
+            if ($afform['search_displays']) {
+              $searchNames = [];
+              foreach ($afform['search_displays'] as $searchAndDisplayName) {
+                $searchNames[] = explode('.', $searchAndDisplayName)[0];
+              }
+              $savedSearches = SavedSearch::get()
+                ->addWhere('name', 'IN', $searchNames)
+                ->addSelect('id', 'label')
+                ->execute();
+              foreach ($savedSearches as $savedSearch) {
+                $links[] = [
+                  'url' => \CRM_Utils_System::url('civicrm/admin/search', NULL, FALSE, "/edit/{$savedSearch['id']}", TRUE),
+                  'text' => E::ts('Edit %1 in SearchKit', [1 => "<em>{$savedSearch['label']}</em>"]),
+                  'icon' => 'fa-search-plus',
+                ];
+              }
             }
+            $linksMarkup = '';
+            foreach ($links as $link) {
+              $linksMarkup .= <<<HTML
+                <li>
+                  <a href="{$link['url']}" target="_blank">
+                    <i class="crm-i fa-fw {$link['icon']}"></i> {$link['text']}
+                  </a>
+                </li>
+              HTML;
+            }
+            $editMenu = <<<HTML
+              <div class="pull-right btn-group af-admin-edit-form-link">
+                <button type="button" class="btn dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  <i class="crm-i fa-gear"></i> <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu">$linksMarkup</ul>
+              </div>
+            HTML;
+            // Append link to end of afform markup so it has the highest z-index and is clickable.
+            // afCore.css will control placement at the top of the form.
+            pq($doc)->append($editMenu);
           }
         }
         catch (\Exception $e) {
diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
index e1516a21e6..2c3fcc75ce 100644
--- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
+++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
@@ -239,6 +239,7 @@ class AfformAdminMeta {
             'class' => 'af-button btn btn-primary',
             'crm-icon' => 'fa-check',
             'ng-click' => 'afform.submit()',
+            'ng-if' => 'afform.showSubmitButton',
             '#children' => [
               ['#text' => E::ts('Submit')],
             ],
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php b/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
index f2953b222e..1104e92ab9 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
@@ -8,7 +8,7 @@ return [
   ],
   'css' => ['ang/afGuiEditor.css'],
   'partials' => ['ang/afGuiEditor'],
-  'requires' => ['crmUi', 'crmUtil', 'dialogService', 'api4', 'crmMonaco', 'ui.sortable'],
+  'requires' => ['crmUi', 'crmUtil', 'crmDialog', 'api4', 'crmMonaco', 'ui.sortable'],
   'settingsFactory' => ['Civi\AfformAdmin\AfformAdminMeta', 'getMetadata'],
   'basePages' => [],
   'exports' => [
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.css b/civicrm/ext/afform/admin/ang/afGuiEditor.css
index 3081736bd4..82b87a66fb 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.css
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.css
@@ -610,3 +610,101 @@ body.af-gui-dragging {
   border: 2px solid #0071bd;
   min-height: 30px;
 }
+
+/* Rules for Conditional dialog */
+#bootstrap-theme.af-gui-conditional-dialog fieldset {
+  padding: 6px;
+  border-top: 1px solid lightgrey;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  position: relative;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset fieldset {
+  padding-top: 0;
+  border-left: 1px solid lightgrey;
+  border-right: 1px solid lightgrey;
+  border-bottom: 1px solid lightgrey;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset legend {
+  background-color: white;
+  font-size: 13px;
+  margin: 0;
+  width: auto;
+  border: 0 none;
+  padding: 2px 5px;
+  text-transform: none;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog af-gui-clause > .btn-group {
+  position: absolute;
+  right: 0;
+  top: 0;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input {
+  margin-bottom: 10px;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-fieldset fieldset {
+  float: right;
+  width: calc(100% - 58px);
+  margin-top: -8px;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-fieldset.api4-sorting fieldset .api4-clause-group-sortable {
+  min-height: 3.5em;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog legend[ng-click] {
+  cursor: pointer;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-input-group {
+  display: inline-block;
+}
+
+#bootstrap-theme i.crm-i.af-gui-conditional-dialog-move-icon {
+  opacity: .5;
+}
+#bootstrap-theme .crm-draggable:hover > i.crm-i.af-gui-conditional-dialog-move-icon,
+#bootstrap-theme .crm-draggable:hover > * > i.crm-i.af-gui-conditional-dialog-move-icon {
+  opacity: 1;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge {
+  width: 55px;
+  display: inline-block;
+  cursor: move;
+}
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .badge {
+  opacity: .5;
+  position: relative;
+}
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .caret {
+  margin: 0;
+}
+/* Icon only shown while dragging */
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .crm-i {
+  display: none;
+  padding: 0 6px;
+}
+#bootstrap-theme.af-gui-conditional-dialog .ui-sortable-helper .api4-clause-badge .badge span {
+  display: none;
+}
+#bootstrap-theme.af-gui-conditional-dialog .ui-sortable-helper .api4-clause-badge .crm-i {
+  display: inline-block;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-operator {
+  width: 110px;
+}
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.js b/civicrm/ext/afform/admin/ang/afGuiEditor.js
index 6b52f6228d..c93ca01cfa 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.js
@@ -210,6 +210,29 @@
           return indexBy ? _.indexBy(items, indexBy) : items;
         },
 
+        // Recursively searches part of a form and returns all elements matching predicate
+        // Will recurse into block elements
+        // Will stop recursing when it encounters an element matching 'exclude'
+        getFormElements: function getFormElements(collection, predicate, exclude) {
+          var childMatches = [],
+            items = _.filter(collection, predicate),
+            isExcluded = exclude ? (_.isFunction(exclude) ? exclude : _.matches(exclude)) : _.constant(false);
+          function isIncluded(item) {
+            return !isExcluded(item);
+          }
+          _.each(_.filter(collection, isIncluded), function(item) {
+            if (_.isPlainObject(item) && item['#children']) {
+              childMatches = getFormElements(item['#children'], predicate, exclude);
+            } else if (item['#tag'] && item['#tag'] in CRM.afGuiEditor.blocks) {
+              childMatches = getFormElements(CRM.afGuiEditor.blocks[item['#tag']].layout, predicate, exclude);
+            }
+            if (childMatches.length) {
+              Array.prototype.push.apply(items, childMatches);
+            }
+          });
+          return items;
+        },
+
         // Applies _.remove() to an item and its children
         removeRecursive: function removeRecursive(collection, removeParams) {
           _.remove(collection, removeParams);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js
new file mode 100644
index 0000000000..8424579c83
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js
@@ -0,0 +1,78 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').component('afGuiClause', {
+    bindings: {
+      fields: '<',
+      fieldDefns: '<',
+      clauses: '<',
+      skip: '<',
+      op: '@',
+      label: '@',
+      hideLabel: '@',
+      placeholder: '<',
+      deleteGroup: '&'
+    },
+    templateUrl: '~/afGuiEditor/afGuiClause.html',
+    controller: function ($scope, $element) {
+      var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+        ctrl = this,
+        meta = {};
+      this.conjunctions = {AND: ts('And'), OR: ts('Or'), NOT: ts('Not')};
+      this.sortOptions = {
+        axis: 'y',
+        connectWith: '.api4-clause-group-sortable',
+        containment: $element.closest('.api4-clause-fieldset'),
+        over: onSortOver,
+        start: onSort,
+        stop: onSort
+      };
+
+      this.$onInit = function() {
+        ctrl.hasParent = !!$element.attr('delete-group');
+      };
+
+      this.getField = function(expr) {
+        return ctrl.fieldDefns[expr];
+      };
+
+      this.addGroup = function(op) {
+        ctrl.clauses.push([op, []]);
+      };
+
+      function onSort(event, ui) {
+        $($element).closest('.api4-clause-fieldset').toggleClass('api4-sorting', event.type === 'sortstart');
+        $('.api4-input.form-inline').css('margin-left', '');
+      }
+
+      // Indent clause while dragging between nested groups
+      function onSortOver(event, ui) {
+        var offset = 0;
+        if (ui.sender) {
+          offset = $(ui.placeholder).offset().left - $(ui.sender).offset().left;
+        }
+        $('.api4-input.form-inline.ui-sortable-helper').css('margin-left', '' + offset + 'px');
+      }
+
+      this.addClause = function(value) {
+        if (value) {
+          var newIndex = ctrl.clauses.length;
+          ctrl.clauses.push([value, '=', '""']);
+        }
+      };
+
+      this.deleteRow = function(index) {
+        ctrl.clauses.splice(index, 1);
+      };
+
+      // Remove empty values
+      this.changeClauseField = function(clause, index) {
+        if (clause[0] === '') {
+          ctrl.deleteRow(index);
+        }
+      };
+
+    }
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html
new file mode 100644
index 0000000000..2aa86d6c09
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html
@@ -0,0 +1,43 @@
+<legend ng-if="!$ctrl.hideLabel">{{ $ctrl.label || ts('%1 group', {1: $ctrl.conjunctions[$ctrl.op]}) }}</legend>
+<div class="btn-group btn-group-xs" ng-if=":: $ctrl.hasParent">
+  <button type="button" class="btn btn-danger-outline" ng-click="$ctrl.deleteGroup()" title="{{:: ts('Remove group') }}">
+    <i class="crm-i fa-trash" aria-hidden="true"></i>
+  </button>
+</div>
+<div class="api4-clause-group-sortable" ng-model="$ctrl.clauses" ui-sortable="$ctrl.sortOptions">
+  <div class="api4-input form-inline clearfix" ng-repeat="(index, clause) in $ctrl.clauses" ng-class="{hiddenElement: index &lt; ($ctrl.skip || 0)}">
+    <div ng-if="index &gt;= ($ctrl.skip || 0)">
+      <div class="api4-clause-badge" title="{{:: ts('Drag to reposition') }}">
+        <span class="badge badge-info">
+          <span ng-if="index === ($ctrl.skip || 0) && !$ctrl.hasParent">{{ $ctrl.label }}</span>
+          <span ng-if="index &gt; ($ctrl.skip || 0) || $ctrl.hasParent">{{ $ctrl.conjunctions[$ctrl.op] }}</span>
+          <i class="crm-i fa-arrows" aria-hidden="true"></i>
+        </span>
+      </div>
+      <div ng-if="!$ctrl.conjunctions[clause[0]]" class="api4-input-group">
+        <input class="form-control collapsible-optgroups" ng-model="clause[0]" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" ng-change="$ctrl.changeClauseField(clause, index)" />
+        <af-gui-condition clause="clause" field="$ctrl.getField(clause[0])" offset="1" format="$ctrl.format" class="form-group"></af-gui-condition>
+      </div>
+      <fieldset class="clearfix" ng-if="$ctrl.conjunctions[clause[0]]">
+        <af-gui-clause clauses="clause[1]" fields="$ctrl.fields" field-defns="$ctrl.fieldDefns" op="{{ clause[0] }}" delete-group="$ctrl.deleteRow(index)"></af-gui-clause>
+      </fieldset>
+    </div>
+  </div>
+</div>
+<div class="api4-input form-inline">
+  <div class="api4-clause-badge">
+    <div class="btn-group btn-group-xs" title="{{ $ctrl.hasParent ? ts('Add a subgroup of clauses') : ts('Add a group of clauses') }}">
+      <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        {{ $ctrl.conjunctions[$ctrl.op] }} <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu api4-add-where-group-menu">
+        <li ng-repeat="(con, label) in $ctrl.conjunctions" ng-show="$ctrl.op !== con">
+          <a href ng-click="$ctrl.addGroup(con)">{{ label }}</a>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <input class="form-control collapsible-optgroups"
+         on-crm-ui-select="$ctrl.addClause(selection)"
+         crm-ui-select="{data: $ctrl.fields, placeholder: $ctrl.placeholder || ts('Select field')}" >
+</div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js
new file mode 100644
index 0000000000..15045f5b7e
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js
@@ -0,0 +1,100 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').component('afGuiCondition', {
+    bindings: {
+      field: '<',
+      clause: '<',
+      format: '<',
+      optionKey: '<',
+      offset: '<'
+    },
+    templateUrl: '~/afGuiEditor/afGuiCondition.html',
+    controller: function ($scope) {
+      var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+        ctrl = this;
+      this.operators = [
+        {
+          "key": "==",
+          "value": "=",
+        },
+        {
+          "key": "!=",
+          "value": "≠",
+        },
+        {
+          "key": ">",
+          "value": ">",
+        },
+        {
+          "key": "<",
+          "value": "<",
+        },
+        {
+          "key": ">=",
+          "value": "≥",
+        },
+        {
+          "key": "<=",
+          "value": "≤",
+        }
+      ];
+
+      this.$onInit = function() {
+        $scope.$watch('$ctrl.field', updateOperators);
+      };
+
+      function getOperator() {
+        return ctrl.clause[ctrl.offset];
+      }
+
+      function setOperator(op) {
+        if (op !== getOperator()) {
+          ctrl.clause[ctrl.offset] = op;
+          ctrl.changeClauseOperator();
+        }
+      }
+
+      function getValue() {
+        return JSON.parse(ctrl.clause[1 + ctrl.offset]);
+      }
+
+      function setValue(val) {
+        ctrl.clause[1 + ctrl.offset] = JSON.stringify(val);
+      }
+
+      // Getter/setter for use with ng-model
+      this.getSetOperator = function(op) {
+        if (arguments.length) {
+          setOperator(op);
+        }
+        return getOperator();
+      };
+
+      // Getter/setter for use with ng-model
+      this.getSetValue = function(val) {
+        if (arguments.length) {
+          setValue(val);
+        }
+        return getValue();
+      };
+
+      // Return a list of operators allowed for the current field
+      this.getOperators = function() {
+        return ctrl.operators;
+      };
+
+      // Ensures clause is using an operator that is allowed for the field
+      function updateOperators() {
+        if ((!getOperator() || !_.includes(_.pluck(ctrl.getOperators(), 'key'), getOperator()))) {
+          setOperator(ctrl.getOperators()[0].key);
+        }
+      }
+
+      this.changeClauseOperator = function() {
+      };
+
+    }
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html
new file mode 100644
index 0000000000..8ce63c5aca
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html
@@ -0,0 +1,2 @@
+<select class="form-control api4-operator" ng-model="$ctrl.getSetOperator" ng-if="$ctrl.getOperators().length > 1" ng-model-options="{getterSetter: true}" ng-options="o.key as o.value for o in $ctrl.getOperators()" ng-change="$ctrl.changeClauseOperator()" ></select>
+<input af-gui-field-value="$ctrl.field" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" class="form-control"></input>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js
new file mode 100644
index 0000000000..cd9893f001
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js
@@ -0,0 +1,62 @@
+// https://civicrm.org/licensing
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').controller('AfGuiConditionalDialog', function($scope, $parse, afGui, dialogService) {
+    var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+      ctrl = $scope.$ctrl = this;
+    this.node = $scope.model.node;
+    this.editor = $scope.model.editor;
+    this.conditions = parseConditions();
+    loadAllFields();
+
+    this.save = function() {
+      if (!ctrl.conditions.length) {
+        delete ctrl.node['af-if'];
+      } else {
+        ctrl.node['af-if'] = '(' + JSON.stringify(ctrl.conditions).replace(/"/g, '&quot;') + ')';
+      }
+      dialogService.close('afformGuiConditionalDialog');
+    };
+
+    function parseConditions() {
+      if (!ctrl.node['af-if']) {
+        return [];
+      }
+      var ngIf = _.trim(ctrl.node['af-if'].replace(/&quot;/g, '"'));
+      if (!_.startsWith(ngIf, '(')) {
+        return [];
+      }
+      return $parse(ngIf.slice(1, -1))();
+    }
+
+    function loadAllFields() {
+      ctrl.fieldSelector = [];
+      ctrl.fieldDefns = {};
+      _.each(ctrl.editor.getEntities(), function(entity) {
+        var entityFields = ctrl.editor.getEntityFields(entity.name),
+          items = _.transform(entityFields.fields, function(items, field) {
+            var key = entity.name + "[0][fields][" + field.name + "]";
+            ctrl.fieldDefns[key] = field;
+            items.push({id: key, text: field.label});
+          });
+        _.each(entityFields.joins, function(join) {
+          items.push({
+            text: afGui.getEntity(join.entity).label,
+            children: _.transform(join.fields, function(items, field) {
+              var key = entity.name + "[0][joins][" + join.entity + "][0][" + field.name + "]";
+              ctrl.fieldDefns[key] = field;
+              items.push({id: key, text: field.label});
+            })
+          });
+        });
+        ctrl.fieldSelector.push({
+          text: entity.label,
+          children: items
+        });
+      });
+    }
+
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html
new file mode 100644
index 0000000000..e03f87cc13
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html
@@ -0,0 +1,7 @@
+<div id="bootstrap-theme" class="af-gui-conditional-dialog" crm-dialog="afformGuiConditionalDialog" ng-controller="AfGuiConditionalDialog">
+  <form class="api4-clause-fieldset" ng-if="$ctrl.fieldSelector.length">
+    <label>{{:: ts('Element will be shown if') }}</label>
+    <af-gui-clause clauses="$ctrl.conditions" fields="$ctrl.fieldSelector" field-defns="$ctrl.fieldDefns" op="AND" label="{{:: ts('If') }}" hide-label="true"></af-gui-clause>
+  </form>
+  <crm-dialog-button text="ts('Apply Changes')" icons="{primary: 'fa-check'}" on-click="$ctrl.save()" />
+</div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
index d2279c950f..de4b1a2c89 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
@@ -18,7 +18,7 @@
       mode: '@'
     },
     controllerAs: 'editor',
-    controller: function($scope, crmApi4, afGui, $parse, $timeout, $location) {
+    controller: function($scope, crmApi4, afGui, $parse, $timeout) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin');
 
       this.afform = null;
@@ -328,6 +328,7 @@
         return editor.afform;
       };
 
+      // Get all entities or a filtered list
       this.getEntities = function(filter) {
         return filter ? _.filter($scope.entities, filter) : _.toArray($scope.entities);
       };
@@ -351,6 +352,44 @@
         }
       };
 
+      // Gets complete field defn, merging values from the field with default values
+      function fillFieldDefn(entityType, field) {
+        var spec = _.cloneDeep(afGui.getField(entityType, field.name));
+        return _.merge(spec, field.defn || {});
+      }
+
+      // Get all fields on the form for a particular entity
+      this.getEntityFields = function(entityName) {
+        var fieldsets = afGui.findRecursive(editor.layout['#children'], {'af-fieldset': entityName}),
+          entityType = editor.getEntity(entityName).type,
+          entityFields = {fields: [], joins: []},
+          isJoin = function(item) {
+            return _.isPlainObject(item) && ('af-join' in item);
+          };
+        _.each(fieldsets, function(fieldset) {
+          _.each(afGui.getFormElements(fieldset['#children'], {'#tag': 'af-field'}, isJoin), function(field) {
+            if (field.name) {
+              entityFields.fields.push(fillFieldDefn(entityType, field));
+            }
+          });
+          _.each(afGui.getFormElements(fieldset['#children'], isJoin), function(join) {
+            var joinFields = [];
+            _.each(afGui.getFormElements(join['#children'], {'#tag': 'af-field'}), function(field) {
+              if (field.name) {
+                joinFields.push(fillFieldDefn(join['af-join'], field));
+              }
+            });
+            if (joinFields.length) {
+              entityFields.joins.push({
+                entity: join['af-join'],
+                fields: joinFields
+              });
+            }
+          });
+        });
+        return entityFields;
+      };
+
       this.toggleNavigation = function() {
         if (editor.afform.navigation) {
           editor.afform.navigation = null;
@@ -364,6 +403,23 @@
         }
       };
 
+      this.toggleManualProcessing = function() {
+        if (editor.afform.manual_processing) {
+          editor.afform.manual_processing = null;
+        } else {
+          editor.afform.create_submission = true;
+        }
+      };
+
+      this.toggleEmailVerification = function() {
+        if (editor.afform.allow_verification_by_email) {
+          editor.afform.allow_verification_by_email = null;
+        } else {
+          editor.afform.create_submission = true;
+          editor.afform.manual_processing = true;
+        }
+      };
+
       function loadNavigationMenu() {
         if ('navigationMenu' in editor) {
           return;
@@ -576,6 +632,10 @@
         var afform = JSON.parse(angular.toJson(editor.afform));
         // This might be set to undefined by validation
         afform.server_route = afform.server_route || '';
+        // create submission is required if email confirmation is selected.
+        if (afform.manual_processing || afform.allow_verification_by_email) {
+          afform.create_submission = true;
+        }
         $scope.saving = true;
         crmApi4('Afform', 'save', {formatWhitespace: true, records: [afform]})
           .then(function (data) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
index 3f3d0c7282..bf2e9b0a30 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
@@ -10,7 +10,7 @@
       },
       require: {
         ngModel: 'ngModel',
-        editor: '^^afGuiEditor'
+        editor: '?^^afGuiEditor'
       },
       controller: function ($element, $timeout) {
         var ts = CRM.ts('org.civicrm.afform_admin'),
@@ -41,7 +41,7 @@
               if (field.fk_entity === 'Contact' && (!filters.contact_type || filters.contact_type === 'Individual')) {
                 options.push('user_contact_id');
               }
-              _.each(ctrl.editor.getEntities({type: field.fk_entity}), function(entity) {
+              _.each(ctrl.editor ? ctrl.editor.getEntities({type: field.fk_entity}) : [], function(entity) {
                 // Check if field filters match entity data (e.g. contact_type)
                 var filtersMatch = true;
                 _.each(filters, function(value, key) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
index 0beec12e19..b7dd93694d 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
@@ -12,28 +12,15 @@
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
 
-      this.isCollapsible = function() {
-        return afGui.hasClass(ctrl.node, 'af-collapsible');
-      };
-
       this.isCollapsed = function() {
-        return afGui.hasClass(ctrl.node, 'af-collapsible af-collapsed');
-      };
-
-      this.toggleCollapsible = function() {
-        // Node must have a title to be collapsible
-        if (ctrl.isCollapsible() || !ctrl.node['af-title']) {
-          afGui.modifyClasses(ctrl.node, 'af-collapsible af-collapsed');
-        } else {
-          afGui.modifyClasses(ctrl.node, null, 'af-collapsible');
-        }
+        return !('open' in ctrl.node);
       };
 
       this.toggleCollapsed = function() {
         if (ctrl.isCollapsed()) {
-          afGui.modifyClasses(ctrl.node, 'af-collapsed');
+          ctrl.node.open = '';
         } else {
-          afGui.modifyClasses(ctrl.node, null, 'af-collapsed');
+          delete ctrl.node.open;
         }
       };
 
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
index da105691c9..8752bcc210 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
@@ -1,8 +1,4 @@
-<label ng-class="{disabled: !$ctrl.node['af-title']}" ng-click="$ctrl.toggleCollapsible(); $event.stopPropagation();" title="{{ $ctrl.node['af-title'] ? ts('Allow user to collapse this to only show title') : ts('Must have a title to be collapsible') }}">
-  <i class="crm-i fa-{{ $ctrl.isCollapsible() ? 'check-' : '' }}square-o"></i>
-  {{:: ts('Collapsible') }}
+<label ng-click="$ctrl.toggleCollapsed(); $event.stopPropagation();">
+  <i class="crm-i fa{{ $ctrl.isCollapsed() ? '-check' : '' }}-square-o"></i>
+  {{:: ts('Collapsed') }}
 </label>
-<a href ng-click="$ctrl.toggleCollapsed(); $event.stopPropagation();" class="btn btn-sm btn-default" ng-class="{invisible: !$ctrl.isCollapsible()}">
-  <i class="crm-i fa-caret-{{ $ctrl.isCollapsed() ? 'right' : 'down' }}"></i>
-  {{ $ctrl.isCollapsed() ? ts('Closed') : ts('Open') }}
-</a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
index b439b4c816..eb7c8e8e19 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
@@ -122,20 +122,39 @@
     </p>
 
     <div ng-if="editor.afform.submit_enabled">
-
       <div class="form-group">
         <label>
-          <input type="checkbox" ng-model="editor.afform.create_submission" >
+          <input type="checkbox" ng-model="editor.afform.create_submission" ng-class="{'disabled': !!editor.afform.require_email_confirmation}">
           {{:: ts('Log Submissions') }}
         </label>
         <p class="help-block">{{:: ts('Keep a log of the date, time, user, and items saved by each form submission.') }}</p>
       </div>
 
-      <div class="form-inline" ng-if="editor.afform.create_submission">
+      <div class="form-group" ng-if="editor.afform.create_submission">
         <label for="submit_limit">{{:: ts('Maximum Submissions') }}</label>
         <input type="number" min="1" step="1" id="submit_limit" ng-model="editor.afform.submit_limit" placeholder="{{:: ts('Unlimited') }}">
       </div>
 
+      <div class="form-group">
+        <label>
+          <input type="checkbox" ng-model="editor.afform.manual_processing" ng-click="editor.toggleManualProcessing()" ng-class="{'disabled': !!editor.afform.allow_verification_by_email}">
+          {{:: ts('Verify submission before processing') }}
+        </label>
+        <p class="help-block">{{:: ts('The data will need to be processed manually using Form Submission action.') }}</p>
+      </div>
+
+      <div class="form-group" ng-if="!!editor.afform.manual_processing">
+        <label>
+          <input type="checkbox" ng-model="editor.afform.allow_verification_by_email" ng-click="editor.toggleEmailVerification()">
+          {{:: ts('Allow verification by email') }}
+        </label>
+        <p class="help-block">{{:: ts('The data can be processed via email verification. Email field should be included in the form for this functionality.') }}</p>
+        <div class="form-inline" ng-if="editor.afform.allow_verification_by_email">
+          <label>{{:: ts('Email template') }}</label>
+          <input class="form-control" crm-autocomplete="'MessageTemplate'" id="afform_email_confirmation_template_id" ng-model="editor.afform.email_confirmation_template_id" auto-open="true" placeholder="{{:: ts('- select -') }}">
+        </div>
+      </div>
+
       <div class="form-group" ng-class="{'has-error': !!config_form.redirect.$error.pattern}">
         <label for="af_config_redirect">
           {{:: ts('Post-Submit Page') }}
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
index d121b827d6..b6eec51f47 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
@@ -6,5 +6,7 @@
     </select>
   </div>
 </li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li><a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this button') }}</span></a></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
index a6bca1b567..9ce9a1135a 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
@@ -8,6 +8,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, afGui) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js
new file mode 100644
index 0000000000..f02de0fe43
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js
@@ -0,0 +1,18 @@
+(function(angular, $, _) {
+  angular.module('afGuiEditor').directive('afGuiConditionalMenu', function() {
+    return {
+      restrict: 'A',
+      templateUrl: '~/afGuiEditor/elements/afGuiConditionalMenu.html',
+      require: {
+        editor: '^^afGuiEditor'
+      },
+      bindToController: {
+        node: '<afGuiConditionalMenu'
+      },
+      controller: function($scope) {
+        var ts = CRM.ts('org.civicrm.afform_admin'),
+          ctrl = this;
+      }
+    };
+  });
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html
new file mode 100644
index 0000000000..ede354ffd6
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html
@@ -0,0 +1,9 @@
+<a href crm-dialog-popup="afformGuiConditionalDialog" popup-tpl="~/afGuiEditor/afGuiConditionalDialog.html" popup-data="{editor: $ctrl.editor, node: $ctrl.node}" title="{{:: ts('Conditional Rules') }}">
+  <i ng-class="{disabled: !$ctrl.node['af-if'] || !$ctrl.node['af-if'].length}" class="crm-i fa-code-fork"></i>
+  <span ng-if="!$ctrl.node['af-if'].length">
+    {{:: ts('Add Conditional Rules') }}
+  </span>
+  <strong ng-if="$ctrl.node['af-if'].length">
+    {{:: ts('Edit Conditional Rules') }}
+  </strong>
+</a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
index 00b75cff27..b8cd2eec62 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
@@ -8,6 +8,7 @@
     </select>
   </div>
 </li>
+<li><af-gui-menu-item-collapsible ng-if="!block && $ctrl.node['#tag'] === 'details'" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li ng-if="isRepeatable()" ng-click="$event.stopPropagation()">
   <div class="af-gui-field-select-in-dropdown form-inline">
     <label ng-click="$ctrl.toggleRepeat()">
@@ -30,9 +31,10 @@
     </div>
   </div>
 </li>
-<li><af-gui-menu-item-collapsible ng-if="!block" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li><af-gui-menu-item-style node="$ctrl.node"></af-gui-menu-item-style></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li><a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{ !block ? ts('Remove container') : ts('Remove block') }}</span></a></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
index 9853d7fbe9..ed78260240 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
@@ -99,7 +99,8 @@
 
       $scope.tags = {
         div: ts('Container'),
-        fieldset: ts('Fieldset')
+        fieldset: ts('Fieldset'),
+        details: ts('Collapsible')
       };
 
       // Block settings
@@ -139,9 +140,10 @@
       };
 
       this.getCollapsibleIcon = function() {
-        if (afGui.hasClass(ctrl.node, 'af-collapsible')) {
-          return afGui.hasClass(ctrl.node, 'af-collapsed') ? 'fa-caret-right' : 'fa-caret-down';
+        if (ctrl.node['#tag'] === 'details') {
+          return 'open' in ctrl.node ? 'fa-caret-down' : 'fa-caret-right';
         }
+        return '';
       };
 
       // Sets min value for af-repeat as a string, returns it as an int
@@ -369,8 +371,6 @@
             ctrl.node['af-title'] = value;
           } else {
             delete ctrl.node['af-title'];
-            // With no title, cannot be collapsible
-            afGui.modifyClasses(ctrl.node, 'af-collapsible af-collapsed');
           }
         }
         return ctrl.node['af-title'];
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
index ea4c901693..804f7f985e 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
@@ -61,7 +61,15 @@
     {{:: ts('Default value') }}
   </a>
 </li>
-<li ng-if="$ctrl.hasDefaultValue">
+<li ng-if="$ctrl.fieldDefn.input_type === 'Date' && $ctrl.hasDefaultValue">
+  <div ng-click="setDefaultDateType(); $event.stopPropagation(); $event.target.blur();" class="af-gui-field-select-in-dropdown form-inline">
+    <select class="form-control" ng-model="getSet('default_date_type')" ng-model-options="{getterSetter: true}">
+      <option value="fixed">{{:: ts('Pick Date') }}</option>
+      <option value="now">{{:: ts('Now') }}</option>
+    </select>
+  </div>
+</li>
+<li ng-if="$ctrl.hasDefaultValue && $ctrl.defaultDateType !== 'now'">
   <form ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown form-inline">
     <input class="form-control" af-gui-field-value="$ctrl.fieldDefn" ng-model="getSet('afform_default')" ng-model-options="{getterSetter: true}" >
   </form>
@@ -84,6 +92,7 @@
     {{:: ts('Post help text') }}
   </a>
 </li>
+
 <li role="separator" class="divider" ng-if="$ctrl.canBeRange() || $ctrl.canBeMultiple()"></li>
 <li ng-if="$ctrl.canBeMultiple()" ng-click="$event.stopPropagation()">
   <a href ng-click="toggleMultiple()" title="{{:: ts('Search multiple values') }}">
@@ -113,6 +122,9 @@
     </select>
   </div>
 </li>
+
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider" ng-if="hasOptions()"></li>
 <li ng-if="hasOptions()" ng-click="$event.stopPropagation()">
   <a href ng-click="resetOptions()" title="{{:: ts('Reset the option list for this field') }}">
@@ -126,6 +138,7 @@
     {{:: ts('Customize options') }}
   </a>
 </li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()" title="{{:: ts('Remove field from form') }}">
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
index 9e94963cf5..475becbd8b 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
@@ -66,6 +66,14 @@
           this.searchOperators = _.pick(this.searchOperators, ctrl.fieldDefn.operators);
         }
         setDateOptions();
+
+        if (ctrl.getDefn().input_type == 'Date') {
+          if (!getSet('default_date_type')) {
+            ctrl.defaultDateType = getSet('default_date_type', 'fixed');
+          } else {
+            ctrl.defaultDateType = getSet("default_date_type");
+          }
+        }
       };
 
       this.getFkEntity = function() {
@@ -280,6 +288,10 @@
         }
       };
 
+      $scope.setDefaultDateType = function() {
+        ctrl.defaultDateType = getSet('default_date_type');
+      };
+
       $scope.defaultValueContains = function(val) {
         val = '' + val;
         var defaultVal = getSet('afform_default');
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
index 6537d36de8..23910e4fd4 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
@@ -1,9 +1,12 @@
 <li>
   <a href ng-click="edit()">{{:: ts('Edit content') }}</a>
 </li>
+
 <li role="separator" class="divider"></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this content') }}</span></a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
index 8a7ace51f6..e0970ba76e 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
@@ -10,6 +10,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, $sce, $timeout) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
index 088e4bd712..9d172571b4 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
@@ -6,7 +6,7 @@
     </select>
   </div>
 </li>
-<li><af-gui-menu-item-collapsible node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
+<li><af-gui-menu-item-collapsible ng-if="$ctrl.node['#tag'] === 'details'" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li><af-gui-menu-item-style node="$ctrl.node"></af-gui-menu-item-style></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
index 06170c5068..0bb6cf0b1b 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
@@ -23,6 +23,8 @@
     </select>
   </div>
 </li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this text') }}</span></a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
index baa50d0408..a623d864da 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
@@ -8,6 +8,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, afGui) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
index 9d956452cd..3f69eb5e89 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
@@ -2,7 +2,6 @@
   <div class="form-group" ng-repeat="i in $ctrl.getRangeElements('Date')">
     <span class="af-field-range-sep" ng-if="i">-</span>
     <input autocomplete="off" class="form-control crm-form-date crm-placeholder-icon" placeholder="&#xF073" ng-model="getSet('input_attrs.placeholder' + i)" ng-model-options="$ctrl.editor.debounceWithGetterSetter" type="text" title="{{:: ts('Click to add placeholder text') }}" />
-    <span class="addon fa fa-calendar"></span>
     <input autocomplete="off" ng-if="getProp('input_attrs.time')" placeholder="&#xF017" class="form-control crm-form-time crm-placeholder-icon" ng-model="getSet('input_attrs.timePlaceholder' + i)" ng-model-options="$ctrl.editor.debounceWithGetterSetter" type="text" title="{{:: ts('Click to add placeholder text') }}" />
   </div>
 </div>
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index d64d84c9a6..13d0bbf6a4 100644
--- a/civicrm/ext/afform/admin/info.xml
+++ b/civicrm/ext/afform/admin/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>FormBuilder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments>
   <requires>
diff --git a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
index 6f80f032b9..2a69737dc3 100644
--- a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
+++ b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
@@ -7,8 +7,8 @@ return [
   [
     'name' => 'AfAdmin_Submission_List',
     'entity' => 'SavedSearch',
+    'cleanup' => 'always',
     'update' => 'unmodified',
-    'cleanup' => 'unused',
     'params' => [
       'version' => 4,
       'values' => [
@@ -24,8 +24,11 @@ return [
             'id',
             'contact_id.display_name',
             'submission_date',
+            'status_id:label',
           ],
         ],
+        'expires_date' => NULL,
+        'description' => NULL,
       ],
       'match' => [
         'name',
@@ -35,8 +38,8 @@ return [
   [
     'name' => 'AfAdmin_Submission_List_Display',
     'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
     'update' => 'unmodified',
-    'cleanup' => 'unused',
     'params' => [
       'version' => 4,
       'values' => [
@@ -44,8 +47,6 @@ return [
         'label' => E::ts('Form Submissions Table'),
         'saved_search_id.name' => 'AfAdmin_Submission_List',
         'type' => 'table',
-        'actions' => TRUE,
-        'acl_bypass' => FALSE,
         'settings' => [
           'actions' => TRUE,
           'limit' => 50,
@@ -93,6 +94,48 @@ return [
               'label' => E::ts('Submission Date/Time'),
               'sortable' => TRUE,
             ],
+            [
+              'type' => 'field',
+              'key' => 'status_id:label',
+              'dataType' => 'Integer',
+              'label' => E::ts('Submission Status'),
+              'sortable' => TRUE,
+            ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
+                [
+                  'entity' => 'AfformSubmission',
+                  'action' => 'view',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-external-link',
+                  'text' => E::ts('View'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'path' => '',
+                  'icon' => 'fa-check-square-o',
+                  'text' => E::ts('Process'),
+                  'style' => 'default',
+                  'condition' => [
+                    'status_id:label',
+                    '=',
+                    'Pending',
+                  ],
+                  'task' => 'process',
+                  'entity' => 'AfformSubmission',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+              ],
+              'type' => 'buttons',
+              'alignment' => '',
+            ],
           ],
           'sort' => [
             [
@@ -100,7 +143,9 @@ return [
               'ASC',
             ],
           ],
+          'placeholder' => 5,
         ],
+        'acl_bypass' => FALSE,
       ],
       'match' => [
         'name',
diff --git a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
index 427c255b5f..b965765c57 100644
--- a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
+++ b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
@@ -129,54 +129,50 @@ class CRM_Afform_AfformScanner {
   }
 
   /**
-   * Get the effective metadata for a form.
+   * Get metadata and optionally the layout for a file-based Afform.
    *
    * @param string $name
    *   Ex: 'afformViewIndividual'
-   * @return array
-   *   An array with some mix of the following keys: name, title, description, server_route, requires, is_public.
-   *   NOTE: This is only data available in *.aff.json. It does *NOT* include layout.
-   *   Ex: [
-   *     'name' => 'afformViewIndividual',
-   *     'title' => 'View an individual contact',
-   *     'server_route' => 'civicrm/view-individual',
-   *     'requires' => ['afform'],
-   *   ]
+   * @param bool $getLayout
+   *   Whether to fetch 'layout' from the related html file.
+   * @return array|null
+   *   An array with some mix of the keys supported by getFields
+   * @see \Civi\Api4\Afform::getFields
    */
-  public function getMeta(string $name): ?array {
-    // FIXME error checking
-
-    $defaults = [
-      'requires' => [],
-      'title' => '',
-      'description' => '',
-      'is_public' => FALSE,
-      'permission' => ['access CiviCRM'],
-      'type' => 'system',
-    ];
+  public function getMeta(string $name, bool $getLayout = FALSE): ?array {
     $defn = [];
+    $mtime = NULL;
 
-    // If there is a local file it will be json - read from that first
     $jsonFile = $this->findFilePath($name, self::METADATA_JSON);
+    $htmlFile = $this->findFilePath($name, self::LAYOUT_FILE);
+
+    // Meta file can be either php or json format.
+    // Json takes priority because local overrides are always saved in that format.
     if ($jsonFile !== NULL) {
       $defn = json_decode(file_get_contents($jsonFile), 1);
+      $mtime = filemtime($jsonFile);
     }
     // Extensions may provide afform definitions in php files
     else {
       $phpFile = $this->findFilePath($name, self::METADATA_PHP);
       if ($phpFile !== NULL) {
         $defn = include $phpFile;
+        $mtime = filemtime($phpFile);
       }
     }
-    // A form must have at least a layout file (if no metadata file, just use defaults)
-    if (!$defn && !$this->findFilePath($name, self::LAYOUT_FILE)) {
-      return NULL;
+    if ($htmlFile !== NULL) {
+      $mtime = max($mtime, filemtime($htmlFile));
+      if ($getLayout) {
+        // If the defn file included a layout, the html file overrides
+        $defn['layout'] = file_get_contents($htmlFile);
+      }
     }
-    $defn = array_merge($defaults, $defn, ['name' => $name]);
-    // Previous revisions of GUI allowed permission==''. array_merge() doesn't catch all forms of missing-ness.
-    if (empty($defn['permission'])) {
-      $defn['permission'] = $defaults['permission'];
+    // All 3 files don't exist!
+    elseif (!$defn) {
+      return NULL;
     }
+    $defn['name'] = $name;
+    $defn['modified_date'] = date('Y-m-d H:i:s', $mtime);
     return $defn;
   }
 
@@ -198,13 +194,10 @@ class CRM_Afform_AfformScanner {
   }
 
   /**
-   * @param string $formName
-   *   Ex: 'view-individual'
-   * @return string|NULL
-   *   Ex: '<em>Hello world!</em>'
-   *   NULL if no layout exists
+   * @deprecated unused function
    */
   public function getLayout($formName) {
+    CRM_Core_Error::deprecatedFunctionWarning('APIv4');
     $filePath = $this->findFilePath($formName, self::LAYOUT_FILE);
     return $filePath === NULL ? NULL : file_get_contents($filePath);
   }
@@ -214,7 +207,7 @@ class CRM_Afform_AfformScanner {
    *
    * @return array
    *   A list of all forms, keyed by form name.
-   *   NOTE: This is only data available in metadata files. It does *NOT* include layout.
+   *   NOTE: This is only data available in *.aff.(json|php) files. It does *NOT* include layout.
    *   Ex: ['afformViewIndividual' => ['title' => 'View an individual contact', ...]]
    */
   public function getMetas(): array {
diff --git a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
index 307e16b098..6c942b2ecc 100644
--- a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
+++ b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
@@ -199,7 +199,12 @@ class CRM_Afform_ArrayHtml {
 
     $doc = new DOMDocument();
     $doc->preserveWhiteSpace = !$this->formatWhitespace;
-    @$doc->loadHTML("<?xml encoding=\"utf-8\" ?><html><body>$html</body></html>");
+    // Angular/js isn't fussy about arbitrary tags but libxml is for html data, so ignore errors.
+    // See also Civi\Afform\Symbols::scan()
+    $oldErrorStatus = libxml_use_internal_errors(TRUE);
+    $doc->loadHTML("<?xml encoding=\"utf-8\" ?><html><body>$html</body></html>");
+    libxml_clear_errors();
+    libxml_use_internal_errors($oldErrorStatus);
 
     // FIXME: Validate expected number of child nodes
 
diff --git a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
index 4a9a953969..55c6f36e31 100644
--- a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
+++ b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
@@ -6,7 +6,7 @@
  *
  * Generated from org.civicrm.afform/xml/schema/CRM/Afform/AfformSubmission.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a617b263eb7f1a2fcb6fb259c62d6fba)
+ * (GenCodeChecksum:68e301b8eb1d4ca755e3eb3b614ee2ff)
  */
 use CRM_Afform_ExtensionUtil as E;
 
@@ -31,6 +31,15 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'view' => '[afform_name:url]#?sid=[id]',
+  ];
+
   /**
    * Unique Submission ID
    *
diff --git a/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php b/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php
new file mode 100644
index 0000000000..ca8e87bcac
--- /dev/null
+++ b/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php
@@ -0,0 +1,49 @@
+<?php
+
+class CRM_Afform_Page_Verify extends CRM_Core_Page {
+
+  public function run() {
+    $verified = FALSE;
+    $this->assign('error_message', '');
+
+    $token = CRM_Utils_Request::retrieve('token', 'String', $this, TRUE, NULL, 'GET');
+
+    try {
+      $decodedToken = \Civi::service('crypto.jwt')->decode($token);
+      $sid = $decodedToken['submissionId'] ?? NULL;
+    }
+    catch (\Civi\Crypto\Exception\CryptoException $e) {
+      if (str_contains($e->getMessage(), 'ExpiredException')) {
+        $this->assign('error_message', ts('Token expired.'));
+      }
+      else {
+        $this->assign('error_message', ts('An error occurred when processing the token.'));
+        \Civi::log()->warning(
+          __CLASS__ . ' cannot process a token due to a crypto exception.',
+          ['exception' => $e]);
+      }
+    }
+
+    if (!empty($sid)) {
+      // check submission status
+      $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+        ->addSelect('afform_name', 'status_id:name')
+        ->addWhere('id', '=', $sid)
+        ->execute()->first();
+
+      if (!empty($afformSubmissionData) && $afformSubmissionData['status_id:name'] === 'Pending') {
+        \Civi\Api4\Afform::process(FALSE)
+          ->setName($afformSubmissionData['afform_name'])
+          ->setSubmissionId($sid)
+          ->execute();
+
+        $verified = TRUE;
+      }
+    }
+
+    $this->assign('verified', $verified);
+
+    parent::run();
+  }
+
+}
diff --git a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
index 692ad8aebf..889e318e75 100644
--- a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
+++ b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
@@ -18,89 +18,37 @@ namespace Civi\Afform;
 class AngularDependencyMapper {
 
   /**
-   * Scan the list of Angular modules and inject automatic-requirements.
+   * @var array{attr: array, el: array}
+   */
+  private $revMap;
+
+  public function __construct(array $angularModules) {
+    $this->revMap = $this->getRevMap($angularModules);
+  }
+
+  /**
+   * Adds angular dependencies based on the html contents of an afform.
    *
    * TLDR: if an afform uses element "<other-el/>", and if another module defines
    * `$angularModules['otherMod']['exports']['el'][0] === 'other-el'`, then
    * the 'otherMod' is automatically required.
    *
-   * @param \Civi\Core\Event\GenericHookEvent $e
+   * @param array $afform
    * @see CRM_Utils_Hook::angularModules()
    */
-  public static function autoReq($e) {
-    /** @var \CRM_Afform_AfformScanner $scanner */
-    $scanner = \Civi::service('afform_scanner');
-    $moduleEnvId = md5(\CRM_Core_Config_Runtime::getId() . implode(',', array_keys($e->angularModules)));
-    $depCache = \CRM_Utils_Cache::create([
-      'name' => 'afdep_' . substr($moduleEnvId, 0, 32 - 6),
-      'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
-      'withArray' => 'fast',
-      'prefetch' => TRUE,
-    ]);
-    $depCacheTtl = 2 * 60 * 60;
-
-    $revMap = self::reverseDeps($e->angularModules);
-
-    $formNames = array_keys($scanner->findFilePaths());
-    foreach ($formNames as $formName) {
-      $angModule = _afform_angular_module_name($formName, 'camel');
-      $cacheLine = $depCache->get($formName, NULL);
-
-      $jFile = $scanner->findFilePath($formName, 'aff.json');
-      $hFile = $scanner->findFilePath($formName, 'aff.html');
-
-      if (!$hFile) {
-        \Civi::log()->warning("Missing html file for Afform: '$jFile'");
-        continue;
-      }
-      $jStat = $jFile ? stat($jFile) : FALSE;
-      $hStat = stat($hFile);
-
-      if ($cacheLine === NULL) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($jStat !== FALSE && $jStat['size'] !== $cacheLine['js']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($jStat !== FALSE && $jStat['mtime'] > $cacheLine['jm']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($hStat !== FALSE && $hStat['size'] !== $cacheLine['hs']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($hStat !== FALSE && $hStat['mtime'] > $cacheLine['hm']) {
-        $needsUpdate = TRUE;
-      }
-      else {
-        $needsUpdate = FALSE;
-      }
-
-      if ($needsUpdate) {
-        $cacheLine = [
-          'js' => $jStat['size'] ?? NULL,
-          'jm' => $jStat['mtime'] ?? NULL,
-          'hs' => $hStat['size'] ?? NULL,
-          'hm' => $hStat['mtime'] ?? NULL,
-          'r' => array_values(array_unique(array_merge(
-            [\CRM_Afform_AfformScanner::DEFAULT_REQUIRES],
-            $e->angularModules[$angModule]['requires'] ?? [],
-            self::reverseDepsFind(file_get_contents($hFile), $revMap)
-          ))),
-        ];
-        $depCache->set($formName, $cacheLine, $depCacheTtl);
-      }
-
-      $e->angularModules[$angModule]['requires'] = $cacheLine['r'];
-    }
+  public function autoReq(array $afform) {
+    $afform['requires'][] = \CRM_Afform_AfformScanner::DEFAULT_REQUIRES;
+    $dependencies = empty($afform['layout']) ? [] : $this->reverseDepsFind($afform['layout']);
+    return array_values(array_unique(array_merge($afform['requires'], $dependencies)));
   }
 
   /**
-   * @param $angularModules
-   * @return array
-   *   'attr': array(string $attrName => string $angModuleName)
-   *   'el': array(string $elementName => string $angModuleName)
+   * @param array $angularModules
+   * @return array{attr: array, el: array}
+   *   'attr': [string $attrName => string $angModuleName]
+   *   'el': [string $elementName => string $angModuleName]
    */
-  private static function reverseDeps($angularModules):array {
+  private function getRevMap(array $angularModules): array {
     $revMap = ['attr' => [], 'el' => []];
     foreach (array_keys($angularModules) as $module) {
       if (!isset($angularModules[$module]['exports'])) {
@@ -120,15 +68,13 @@ class AngularDependencyMapper {
 
   /**
    * @param string $html
-   * @param array $revMap
-   *   The reverse-dependencies map from reverseDeps().
    * @return array
    */
-  private static function reverseDepsFind($html, $revMap):array {
+  private function reverseDepsFind(string $html): array {
     $symbols = \Civi\Afform\Symbols::scan($html);
-    $elems = array_intersect_key($revMap['el'], $symbols->elements);
-    $attrs = array_intersect_key($revMap['attr'], $symbols->attributes);
-    return array_values(array_unique(array_merge($elems, $attrs)));
+    $elems = array_intersect_key($this->revMap['el'], $symbols->elements);
+    $attrs = array_intersect_key($this->revMap['attr'], $symbols->attributes);
+    return array_merge($elems, $attrs);
   }
 
 }
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
index 38f01a6d78..57d5fe4aed 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
@@ -29,7 +29,7 @@ class AfformEntitySortEvent extends AfformBaseEvent {
     $sorter = new FixedArraySort();
     $formEntities = array_keys($this->getFormDataModel()->getEntities());
     foreach ($formEntities as $entityName) {
-      // Add all dependencies that are the valid name of another entitiy
+      // Add all dependencies that are the valid name of another entity
       $dependencies = array_intersect($this->dependencies[$entityName] ?? [], $formEntities);
       $sorter->add($entityName, $dependencies);
     }
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
index c48849a434..864e98c6a3 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
@@ -105,7 +105,7 @@ trait AfformEventEntityTrait {
    */
   public function setJoinIds($index, $joinEntity, $joinIds) {
     $idField = CoreUtil::getIdFieldName($joinEntity);
-    $this->entityIds[$this->entityName][$index]['_joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($joinIds, [$idField]);
+    $this->entityIds[$this->entityName][$index]['joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($joinIds, [$idField]);
     return $this;
   }
 
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
index 522cf21900..548126ce71 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
@@ -2,7 +2,7 @@
 namespace Civi\Afform\Event;
 
 use Civi\Afform\FormDataModel;
-use Civi\Api4\Action\Afform\Submit;
+use Civi\Api4\Action\Afform\AbstractProcessor;
 
 /**
  * Handle submission of an "<af-form>" entity (or set of entities in the case of `<af-repeat>`).
@@ -34,13 +34,13 @@ class AfformSubmitEvent extends AfformBaseEvent {
    *
    * @param array $afform
    * @param \Civi\Afform\FormDataModel $formDataModel
-   * @param \Civi\Api4\Action\Afform\Submit $apiRequest
+   * @param \Civi\Api4\Action\Afform\AbstractProcessor $apiRequest
    * @param array $records
    * @param string $entityType
    * @param string $entityName
    * @param array $entityIds
    */
-  public function __construct(array $afform, FormDataModel $formDataModel, Submit $apiRequest, &$records, string $entityType, string $entityName, array &$entityIds) {
+  public function __construct(array $afform, FormDataModel $formDataModel, AbstractProcessor $apiRequest, &$records, string $entityType, string $entityName, array &$entityIds) {
     parent::__construct($afform, $formDataModel, $apiRequest);
     $this->records =& $records;
     $this->entityType = $entityType;
diff --git a/civicrm/ext/afform/core/Civi/Afform/Tokens.php b/civicrm/ext/afform/core/Civi/Afform/Tokens.php
index 8e4e120c33..c7b901f944 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Tokens.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Tokens.php
@@ -36,6 +36,8 @@ class Tokens extends AutoService implements EventSubscriberInterface {
       'hook_civicrm_alterMailContent' => 'applyCkeditorWorkaround',
       'hook_civicrm_tokens' => 'hook_civicrm_tokens',
       'hook_civicrm_tokenValues' => 'hook_civicrm_tokenValues',
+      'civi.token.list' => 'listTokens',
+      'civi.token.eval' => 'evaluateTokens',
     ];
   }
 
@@ -103,70 +105,72 @@ class Tokens extends AutoService implements EventSubscriberInterface {
       }
     }
     catch (CryptoException $ex) {
-      \Civi::log()->warning('Civi\Afform\LegacyTokens cannot generate tokens due to crypto exception.', ['exception' => $ex]);
+      \Civi::log()->warning(__CLASS__ . ' cannot generate tokens due to a crypto exception.',
+        ['exception' => $ex]);
     }
   }
 
-  ///**
-  // * Expose tokens for use in UI.
-  // *
-  // * @param \Civi\Token\Event\TokenRegisterEvent $e
-  // */
-  //public static function onRegister(\Civi\Token\Event\TokenRegisterEvent $e) {
-  //  $tokenForms = static::getTokenForms();
-  //  foreach ($tokenForms as $tokenName => $afform) {
-  //    $e->register([
-  //      'entity' => 'afform',
-  //      'field' => $tokenName . 'Url',
-  //      'label' => E::ts('View Form: %1 (URL)', [1 => $afform['title'] ?? $afform['name']]),
-  //    ]);
-  //    $e->register([
-  //      'entity' => 'afform',
-  //      'field' => $tokenName . 'Link',
-  //      'label' => E::ts('View Form: %1 (Full Hyperlink)', [1 => $afform['title'] ?? $afform['name']]),
-  //    ]);
-  //  }
-  //}
-
-  ///**
-  // * Substitute any tokens of the form `{afform.myFormUrl}` or `{afform.myFormLink}` with actual values.
-  // *
-  // * @param \Civi\Token\Event\TokenValueEvent $e
-  // */
-  //public static function onEvaluate(\Civi\Token\Event\TokenValueEvent $e) {
-  //  $activeTokens = $e->getTokenProcessor()->getMessageTokens();
-  //  if (empty($activeTokens['afform'])) {
-  //    return;
-  //  }
-  //
-  //  $tokenForms = static::getTokenForms();
-  //  foreach ($tokenForms as $formName => $afform) {
-  //    if (!array_intersect($activeTokens['afform'], ["{$formName}Url", "{$formName}Link"])) {
-  //      continue;
-  //    }
-  //
-  //    if (empty($afform['server_route'])) {
-  //      \Civi::log()
-  //        ->warning('Civi\Afform\Tokens: Cannot generate link for {formName} -- missing server_route', [
-  //          'formName' => $formName,
-  //        ]);
-  //      continue;
-  //    }
-  //
-  //    foreach ($e->getRows() as $row) {
-  //      /** @var \Civi\Token\TokenRow $row */
-  //      try {
-  //        $url = self::createUrl($afform, $row->context['contactId']);
-  //        $row->format('text/plain')->tokens('afform', "{$formName}Url", $url);
-  //        $row->format('text/html')->tokens('afform', "{$formName}Link",
-  //          sprintf('<a href="%s">%s</a>', htmlentities($url), htmlentities($afform['title'] ?? $afform['name'])));
-  //      }
-  //      catch (CryptoException $e) {
-  //        \Civi::log()->warning('Civi\Afform\Tokens cannot generate tokens due to crypto exception.', ['exception' => $e]);
-  //      }
-  //    }
-  //  }
-  //}
+  public static function listTokens(\Civi\Token\Event\TokenRegisterEvent $e) {
+    // this tokens should be available only in contact context i.e. in Message Templates (add/edit)
+    if (!in_array('contactId', $e->getTokenProcessor()->getContextValues('schema')[0])) {
+      return;
+    }
+
+    $e->entity('afformSubmission')
+      ->register('validateSubmissionUrl', E::ts('Validate Submission URL'))
+      ->register('validateSubmissionLink', E::ts('Validate Submission (Full Hyperlink)'));
+  }
+
+  public static function evaluateTokens(\Civi\Token\Event\TokenValueEvent $e) {
+    $messageTokens = $e->getTokenProcessor()->getMessageTokens();
+    if (empty($messageTokens['afformSubmission'])) {
+      return;
+    }
+
+    // If these tokens are being used, there will only be a single "row".
+    // The relevant context is on the TokenProcessor itself, not the row.
+    $context = $e->getTokenProcessor()->context;
+    $sid = $context['validateAfformSubmission']['submissionId'] ?? NULL;
+    if (empty($sid)) {
+      return;
+    }
+
+    /** @var \Civi\Token\TokenRow $row */
+    $url = self::generateEmailVerificationUrl($sid);
+    $link = sprintf(
+      '<a href="%s">%s</a>', htmlentities($url),
+      htmlentities(ts('verify your email address')));
+
+    foreach ($e->getRows() as $row) {
+      $row->format('text/plain')->tokens('afformSubmission', 'validateSubmissionUrl', $url);
+      $row->format('text/html')->tokens('afformSubmission', 'validateSubmissionLink', $link);
+    }
+  }
+
+  private static function generateEmailVerificationUrl(int $submissionId): string {
+    // 10 minutes
+    $expires = \CRM_Utils_Time::time() + (10 * 60);
+
+    try {
+      /** @var \Civi\Crypto\CryptoJwt $jwt */
+      $jwt = \Civi::service('crypto.jwt');
+
+      $token = $jwt->encode([
+        'exp' => $expires,
+        // Note: Scope is not the same as "authx" scope. "Authx" tokens are user-login tokens. This one is a more limited access token.
+        'scope' => 'afformVerifyEmail',
+        'submissionId' => $submissionId,
+      ]);
+    }
+    catch (CryptoException $exception) {
+      \Civi::log()->warning(
+        'Civi\Afform\LegacyTokens cannot generate tokens due to crypto exception.',
+        ['exception' => $exception]);
+    }
+
+    return \CRM_Utils_System::url('civicrm/afform/submission/verify',
+      ['token' => $token], TRUE, NULL, FALSE, TRUE);
+  }
 
   /**
    * Get a list of forms that have token support enabled.
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
index fc4ad6a32f..da392f4933 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
@@ -4,6 +4,7 @@ namespace Civi\Api4\Action\Afform;
 
 use Civi\Afform\Event\AfformEntitySortEvent;
 use Civi\Afform\Event\AfformPrefillEvent;
+use Civi\Afform\Event\AfformSubmitEvent;
 use Civi\Afform\FormDataModel;
 use Civi\API\Exception\UnauthorizedException;
 use Civi\Api4\Generic\Result;
@@ -49,7 +50,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    * Each key in the array corresponds to the name of an entity,
    * and the value is an array of arrays
    * (because of `<af-repeat>` all entities are treated as if they may be multi)
-   * E.g. $entityIds['Individual1'] = [['id' => 1, '_joins' => ['Email' => [['id' => 1], ['id' => 2]]];
+   * E.g. $entityIds['Individual1'] = [['id' => 1, 'joins' => ['Email' => [['id' => 1], ['id' => 2]]];
    *
    * @var array
    */
@@ -63,12 +64,15 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    */
   public function _run(Result $result) {
     $this->_afform = civicrm_api4('Afform', 'get', [
-      'where' => [['name', '=', $this->name], ['submit_currently_open', '=', TRUE]],
+      'select' => ['*', 'submit_currently_open'],
+      'where' => [['name', '=', $this->name]],
     ])->first();
+    // Either the form doesn't exist or user lacks permission
     if (!$this->_afform) {
-      // Either the form doesn't exist, user lacks permission,
-      // or submit_currently_open = false.
-      throw new UnauthorizedException(E::ts('You do not have permission to submit this form'));
+      throw new UnauthorizedException(E::ts('You do not have permission to submit this form'), ['show_detailed_error' => TRUE]);
+    }
+    if (empty($this->_afform['submit_currently_open'])) {
+      throw new UnauthorizedException(E::ts('This form is not currently open for submissions.'), ['show_detailed_error' => TRUE]);
     }
     $this->_formDataModel = new FormDataModel($this->_afform['layout']);
     $this->loadEntities();
@@ -82,6 +86,13 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     $sorter = new AfformEntitySortEvent($this->_afform, $this->_formDataModel, $this);
     \Civi::dispatcher()->dispatch('civi.afform.sort.prefill', $sorter);
     $sortedEntities = $sorter->getSortedEnties();
+
+    // if submission id is passed then we should display the submission data
+    if (!empty($this->args['sid'])) {
+      $this->prePopulateSubmissionData($sortedEntities);
+      return;
+    }
+
     foreach ($sortedEntities as $entityName) {
       $entity = $this->_formDataModel->getEntity($entityName);
       $this->_entityIds[$entityName] = [];
@@ -101,6 +112,32 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     }
   }
 
+  /**
+   * Load the data from submission table
+   */
+  protected function prePopulateSubmissionData($sortedEntities) {
+    // if submission id is passed then get the data from submission
+    // we should prepopulate only pending submissions
+    $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+      ->addSelect('data')
+      ->addWhere('id', '=', $this->args['sid'])
+      ->addWhere('afform_name', '=', $this->name)
+      ->execute()->first();
+
+    // do nothing and return early
+    if (empty($afformSubmissionData)) {
+      return;
+    }
+
+    foreach ($sortedEntities as $entityName) {
+      foreach ($afformSubmissionData['data'] as $entity => $data) {
+        if ($entity == $entityName) {
+          $this->_entityValues[$entityName] = $data;
+        }
+      }
+    }
+  }
+
   /**
    * Fetch all data needed to display a given entity on this form
    *
@@ -132,7 +169,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     foreach ($ids as $index => $id) {
       $this->_entityIds[$entity['name']][$index] = [
         $idField => isset($result[$id]) ? $id : NULL,
-        '_joins' => [],
+        'joins' => [],
       ];
       if (isset($result[$id])) {
         $data = ['fields' => $result[$id]];
@@ -143,7 +180,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
             'limit' => !empty($join['af-repeat']) ? $join['max'] ?? 0 : 1,
             'orderBy' => self::getEntityField($joinEntity, 'is_primary') ? ['is_primary' => 'DESC'] : [],
           ]));
-          $this->_entityIds[$entity['name']][$index]['_joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($data['joins'][$joinEntity], [$joinIdField]);
+          $this->_entityIds[$entity['name']][$index]['joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($data['joins'][$joinEntity], [$joinIdField]);
         }
         $this->_entityValues[$entity['name']][$index] = $data;
       }
@@ -300,4 +337,118 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     return $this;
   }
 
+  /**
+   * Replace Entity reference fields with the id of the referenced entity.
+   * @param string $entityName
+   * @param $records
+   */
+  protected function replaceReferences($entityName, $records) {
+    $entityNames = array_diff(array_keys($this->_entityIds), [$entityName]);
+    $entityType = $this->_formDataModel->getEntity($entityName)['type'];
+    foreach ($records as $key => $record) {
+      foreach ($record['fields'] as $field => $value) {
+        if (array_intersect($entityNames, (array) $value) && $this->getEntityField($entityType, $field)['input_type'] === 'EntityRef') {
+          if (is_array($value)) {
+            foreach ($value as $i => $val) {
+              if (in_array($val, $entityNames, TRUE)) {
+                $refIds = array_filter(array_column($this->_entityIds[$val], 'id'));
+                array_splice($records[$key]['fields'][$field], $i, 1, $refIds);
+              }
+            }
+          }
+          else {
+            $records[$key]['fields'][$field] = $this->_entityIds[$value][0]['id'] ?? NULL;
+          }
+        }
+      }
+    }
+    return $records;
+  }
+
+  /**
+   * @param array $records
+   * @param string $entityName
+   */
+  protected function fillIdFields(array &$records, string $entityName): void {
+    foreach ($records as $index => &$record) {
+      if (empty($record['fields']['id']) && !empty($this->_entityIds[$entityName][$index]['id'])) {
+        $record['fields']['id'] = $this->_entityIds[$entityName][$index]['id'];
+      }
+    }
+  }
+
+  /**
+   * Recursively add entity IDs to the values.
+   */
+  protected function combineValuesAndIds($values, $ids, $isJoin = FALSE) {
+    $combined = [];
+    $values += array_fill_keys(array_keys($ids), []);
+    foreach ($values as $name => $value) {
+      foreach ($value as $idx => $val) {
+        $idData = $ids[$name][$idx] ?? [];
+        if (!$isJoin) {
+          $idData['joins'] = $this->combineValuesAndIds($val['joins'] ?? [], $idData['joins'] ?? [], TRUE);
+        }
+        // $item = array_merge($isJoin ? $val : ($val['fields'] ?? []), $idData);
+        $item = array_merge(($val ?? []), $idData);
+        $combined[$name][$idx] = $item;
+      }
+    }
+    return $combined;
+  }
+
+  /**
+   * Preprocess submitted values
+   */
+  public function preprocessSubmittedValues(array $submittedValues) {
+    $entityValues = [];
+    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
+      $entityValues[$entityName] = [];
+      // Gather submitted field values from $values['fields'] and sub-entities from $values['joins']
+      foreach ($submittedValues[$entityName] ?? [] as $values) {
+        // Only accept values from fields on the form
+        $values['fields'] = array_intersect_key($values['fields'] ?? [], $entity['fields']);
+        // Only accept joins set on the form
+        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
+        foreach ($values['joins'] as $joinEntity => &$joinValues) {
+          // Enforce the limit set by join[max]
+          $joinValues = array_slice($joinValues, 0, $entity['joins'][$joinEntity]['max'] ?? NULL);
+          foreach ($joinValues as $index => $vals) {
+            // Only accept values from join fields on the form
+            $joinValues[$index] = array_intersect_key($vals, $entity['joins'][$joinEntity]['fields'] ?? []);
+            // Merge in pre-set data
+            $joinValues[$index] = array_merge($joinValues[$index], $entity['joins'][$joinEntity]['data'] ?? []);
+          }
+        }
+        $entityValues[$entityName][] = $values;
+      }
+      if (!empty($entity['data'])) {
+        // If no submitted values but data exists, fill the minimum number of records
+        for ($index = 0; $index < $entity['min']; $index++) {
+          $entityValues[$entityName][$index] = $entityValues[$entityName][$index] ?? ['fields' => []];
+        }
+        // Predetermined values override submitted values
+        foreach ($entityValues[$entityName] as $index => $vals) {
+          $entityValues[$entityName][$index]['fields'] = $entity['data'] + $vals['fields'];
+        }
+      }
+    }
+
+    return $entityValues;
+  }
+
+  /**
+   * Process form data
+   */
+  public function processFormData(array $entityValues) {
+    $entityWeights = \Civi\Afform\Utils::getEntityWeights($this->_formDataModel->getEntities(), $entityValues);
+    foreach ($entityWeights as $entityName) {
+      $entityType = $this->_formDataModel->getEntity($entityName)['type'];
+      $records = $this->replaceReferences($entityName, $entityValues[$entityName]);
+      $this->fillIdFields($records, $entityName);
+      $event = new AfformSubmitEvent($this->_afform, $this->_formDataModel, $this, $records, $entityType, $entityName, $this->_entityIds);
+      \Civi::dispatcher()->dispatch('civi.afform.submit', $event);
+    }
+  }
+
 }
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
index 9559b619ae..a309fd5510 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
@@ -16,19 +16,22 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
   use \Civi\Api4\Utils\AfformFormatTrait;
 
   public function getRecords() {
+    $afforms = [];
+
     /** @var \CRM_Afform_AfformScanner $scanner */
     $scanner = \Civi::service('afform_scanner');
+
+    // Optimization: only fetch extra data if requested
     $getComputed = $this->_isFieldSelected('has_local', 'has_base', 'base_module');
     $getLayout = $this->_isFieldSelected('layout');
     $getSearchDisplays = $this->_isFieldSelected('search_displays');
-    $afforms = [];
-
-    // This helps optimize lookups by file/module/directive name
+    // To optimize lookups by file/module/directive name
     $getNames = array_filter([
       'name' => $this->_itemsToGet('name'),
       'module_name' => $this->_itemsToGet('module_name'),
       'directive_name' => $this->_itemsToGet('directive_name'),
     ]);
+    // To optimize lookups by type
     $getTypes = $this->_itemsToGet('type');
 
     $names = $getNames['name'] ?? array_keys($scanner->findFilePaths());
@@ -40,22 +43,12 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
     \Civi::dispatcher()->dispatch('civi.afform.get', $event);
     // Set defaults for Afforms supplied by hook
     foreach ($hookForms as $afform) {
-      $name = $afform['name'];
-      $afform += [
-        'has_base' => TRUE,
-        'type' => 'form',
-      ];
-      // afCore and af would normally get required by AngularDependencyMapper but that only works on file-based afforms
-      $afform['requires'] = array_unique(array_merge(['afCore', 'af'], $afform['requires'] ?? []));
-      if (!in_array($name, $names)) {
-        $names[] = $name;
-      }
-      $afforms[$name] = $afform;
+      $names[] = $afform['name'];
+      $afform['has_base'] = TRUE;
+      $afforms[$afform['name']] = $afform;
     }
 
-    if ($this->checkPermissions) {
-      $names = array_filter($names, [$this, 'checkPermission']);
-    }
+    $names = array_unique($names);
 
     foreach ($names as $name) {
       $info = [
@@ -66,29 +59,35 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
       // Skip if afform does not match requested name
       foreach ($getNames as $key => $names) {
         if (!in_array($info[$key], $names)) {
+          unset($afforms[$name]);
           continue 2;
         }
       }
-      $record = $scanner->getMeta($name);
+      $record = $scanner->getMeta($name, $getLayout || $getSearchDisplays);
       // Skip if afform does not exist or is not of requested type(s)
       if (
         (!$record && !isset($afforms[$name])) ||
         ($getTypes && isset($record['type']) && !in_array($record['type'], $getTypes, TRUE))
       ) {
+        unset($afforms[$name]);
         continue;
       }
       $afforms[$name] = array_merge($afforms[$name] ?? [], $record ?? [], $info);
-      if ($getComputed) {
-        $scanner->addComputedFields($afforms[$name]);
-      }
       if (isset($afforms[$name]['permission']) && is_string($afforms[$name]['permission'])) {
         $afforms[$name]['permission'] = explode(',', $afforms[$name]['permission']);
       }
-      if ($getLayout || $getSearchDisplays) {
-        // Autogenerated layouts will already be in values but can be overridden; scanner takes priority
-        $afforms[$name]['layout'] = $scanner->getLayout($name) ?? $afforms[$name]['layout'] ?? '';
+      // No permissions specified, set default.
+      if (empty($afforms[$name]['permission'])) {
+        $afforms[$name]['permission'] = ['access CiviCRM'];
       }
-      if ($getSearchDisplays) {
+      if (!$this->checkPermission($afforms[$name])) {
+        unset($afforms[$name]);
+        continue;
+      }
+      if ($getComputed) {
+        $scanner->addComputedFields($afforms[$name]);
+      }
+      if ($getSearchDisplays && !empty($afforms[$name]['layout'])) {
         $afforms[$name]['search_displays'] = $this->getSearchDisplays($afforms[$name]['layout']);
       }
       if (!isset($afforms[$name]['placement']) && $this->_isFieldSelected('placement')) {
@@ -98,7 +97,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
 
     if ($getLayout && $this->layoutFormat !== 'html') {
       foreach ($afforms as $name => $record) {
-        $afforms[$name]['layout'] = $this->convertHtmlToOutput($record['layout']);
+        $afforms[$name]['layout'] = isset($record['layout']) ? $this->convertHtmlToOutput($record['layout']) : NULL;
       }
     }
 
@@ -124,8 +123,14 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
    *
    * @return bool
    */
-  protected function checkPermission($name) {
-    return \CRM_Core_Permission::check("@afform:$name");
+  protected function checkPermission($afform) {
+    if (!$this->checkPermissions) {
+      return TRUE;
+    }
+    if (($afform['permission_operator'] ?? NULL) === 'OR') {
+      $afform['permission'] = [$afform['permission']];
+    }
+    return \CRM_Core_Permission::check($afform['permission']);
   }
 
   /**
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php
new file mode 100644
index 0000000000..2b679b2082
--- /dev/null
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Civi\Api4\Action\Afform;
+
+use Civi\Api4\AfformSubmission;
+
+/**
+ * Class Process
+ * @package Civi/Api4/Action/Afform
+ */
+class Process extends AbstractProcessor {
+
+  /**
+   * Submission id
+   * @var int
+   * @required
+   */
+  protected $submissionId;
+
+  protected function processForm() {
+    // get the submitted data
+    $afformSubmissionData = AfformSubmission::get(FALSE)
+      ->addSelect('data')
+      ->addWhere('id', '=', $this->submissionId)
+      ->addWhere('status_id:name', '=', 'Pending')
+      ->execute()->first();
+
+    // return early if nothing to process
+    if (empty($afformSubmissionData)) {
+      return [];
+    }
+
+    // preprocess submitted values
+    $entityValues = $this->preprocessSubmittedValues($afformSubmissionData['data']);
+
+    // process and save various enities
+    $this->processFormData($entityValues);
+
+    // combine ids with existing data
+    $submissionData = $this->combineValuesAndIds($afformSubmissionData['data'], $this->_entityIds);
+
+    // Update submission record with entity IDs.
+    AfformSubmission::update(FALSE)
+      ->addWhere('id', '=', $this->submissionId)
+      ->addValue('data', $submissionData)
+      ->addValue('status_id:name', 'Processed')
+      ->execute();
+
+    return $this->_entityIds;
+  }
+
+}
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
index 1bde2e3ff2..a6024dd050 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
@@ -29,37 +29,21 @@ class Submit extends AbstractProcessor {
   protected $values;
 
   protected function processForm() {
-    // Preprocess submitted values
-    $entityValues = [];
-    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
-      $entityValues[$entityName] = [];
-      // Gather submitted field values from $values['fields'] and sub-entities from $values['joins']
-      foreach ($this->values[$entityName] ?? [] as $values) {
-        // Only accept values from fields on the form
-        $values['fields'] = array_intersect_key($values['fields'] ?? [], $entity['fields']);
-        // Only accept joins set on the form
-        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
-        foreach ($values['joins'] as $joinEntity => &$joinValues) {
-          // Enforce the limit set by join[max]
-          $joinValues = array_slice($joinValues, 0, $entity['joins'][$joinEntity]['max'] ?? NULL);
-          foreach ($joinValues as $index => $vals) {
-            // Only accept values from join fields on the form
-            $joinValues[$index] = array_intersect_key($vals, $entity['joins'][$joinEntity]['fields'] ?? []);
-            // Merge in pre-set data
-            $joinValues[$index] = array_merge($joinValues[$index], $entity['joins'][$joinEntity]['data'] ?? []);
-          }
-        }
-        $entityValues[$entityName][] = $values;
-      }
-      if (!empty($entity['data'])) {
-        // If no submitted values but data exists, fill the minimum number of records
-        for ($index = 0; $index < $entity['min']; $index++) {
-          $entityValues[$entityName][$index] = $entityValues[$entityName][$index] ?? ['fields' => []];
-        }
-        // Predetermined values override submitted values
-        foreach ($entityValues[$entityName] as $index => $vals) {
-          $entityValues[$entityName][$index]['fields'] = $entity['data'] + $vals['fields'];
-        }
+    // preprocess submitted values
+    $entityValues = $this->preprocessSubmittedValues($this->values);
+
+    // get the submission information if we have submission id.
+    // currently we don't support processing of already processed forms
+    // return validation error in those cases
+    if (!empty($this->args['sid'])) {
+      $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+        ->addWhere('id', '=', $this->args['sid'])
+        ->addWhere('afform_name', '=', $this->name)
+        ->addWhere('status_id:name', '=', 'Processed')
+        ->execute()->count();
+
+      if ($afformSubmissionData > 0) {
+        throw new \CRM_Core_Exception(ts('Submission is already processed.'));
       }
     }
 
@@ -73,30 +57,42 @@ class Submit extends AbstractProcessor {
     }
 
     // Save submission record
-    if (!empty($this->_afform['create_submission'])) {
+    $status = 'Processed';
+    if (!empty($this->_afform['create_submission']) && empty($this->args['sid'])) {
+      if (!empty($this->_afform['manual_processing'])) {
+        $status = 'Pending';
+      }
+
       $submission = AfformSubmission::create(FALSE)
         ->addValue('contact_id', \CRM_Core_Session::getLoggedInContactID())
         ->addValue('afform_name', $this->name)
         ->addValue('data', $this->getValues())
+        ->addValue('status_id:name', $status)
         ->execute()->first();
     }
 
-    // Call submit handlers
-    $entityWeights = \Civi\Afform\Utils::getEntityWeights($this->_formDataModel->getEntities(), $entityValues);
-    foreach ($entityWeights as $entityName) {
-      $entityType = $this->_formDataModel->getEntity($entityName)['type'];
-      $records = $this->replaceReferences($entityName, $entityValues[$entityName]);
-      $this->fillIdFields($records, $entityName);
-      $event = new AfformSubmitEvent($this->_afform, $this->_formDataModel, $this, $records, $entityType, $entityName, $this->_entityIds);
-      \Civi::dispatcher()->dispatch('civi.afform.submit', $event);
+    // let's not save the data in other CiviCRM table if manual verification is needed.
+    if (!empty($this->_afform['manual_processing']) && empty($this->args['sid'])) {
+      // check for verification email
+      $this->processVerficationEmail($submission['id']);
+      return [];
     }
 
+    // process and save various enities
+    $this->processFormData($entityValues);
+
     $submissionData = $this->combineValuesAndIds($this->getValues(), $this->_entityIds);
     // Update submission record with entity IDs.
     if (!empty($this->_afform['create_submission'])) {
+      $submissionId = $submission['id'];
+      if (!empty($this->args['sid'])) {
+        $submissionId = $this->args['sid'];
+      }
+
       AfformSubmission::update(FALSE)
-        ->addWhere('id', '=', $submission['id'])
+        ->addWhere('id', '=', $submissionId)
         ->addValue('data', $submissionData)
+        ->addValue('status_id:name', $status)
         ->execute();
     }
 
@@ -106,25 +102,6 @@ class Submit extends AbstractProcessor {
     ];
   }
 
-  /**
-   * Recursively add entity IDs to the values.
-   */
-  protected function combineValuesAndIds($values, $ids, $isJoin = FALSE) {
-    $combined = [];
-    $values += array_fill_keys(array_keys($ids), []);
-    foreach ($values as $name => $value) {
-      foreach ($value as $idx => $val) {
-        $idData = $ids[$name][$idx] ?? [];
-        if (!$isJoin) {
-          $idData['_joins'] = $this->combineValuesAndIds($val['joins'] ?? [], $idData['_joins'] ?? [], TRUE);
-        }
-        $item = array_merge($isJoin ? $val : ($val['fields'] ?? []), $idData);
-        $combined[$name][$idx] = $item;
-      }
-    }
-    return $combined;
-  }
-
   /**
    * Validate required field values
    *
@@ -251,34 +228,6 @@ class Submit extends AbstractProcessor {
     return NULL;
   }
 
-  /**
-   * Replace Entity reference fields with the id of the referenced entity.
-   * @param string $entityName
-   * @param $records
-   */
-  private function replaceReferences($entityName, $records) {
-    $entityNames = array_diff(array_keys($this->_entityIds), [$entityName]);
-    $entityType = $this->_formDataModel->getEntity($entityName)['type'];
-    foreach ($records as $key => $record) {
-      foreach ($record['fields'] as $field => $value) {
-        if (array_intersect($entityNames, (array) $value) && $this->getEntityField($entityType, $field)['input_type'] === 'EntityRef') {
-          if (is_array($value)) {
-            foreach ($value as $i => $val) {
-              if (in_array($val, $entityNames, TRUE)) {
-                $refIds = array_filter(array_column($this->_entityIds[$val], 'id'));
-                array_splice($records[$key]['fields'][$field], $i, 1, $refIds);
-              }
-            }
-          }
-          else {
-            $records[$key]['fields'][$field] = $this->_entityIds[$value][0]['id'] ?? NULL;
-          }
-        }
-      }
-    }
-    return $records;
-  }
-
   /**
    * Check if contact(s) meet the minimum requirements to be created (name and/or email).
    *
@@ -501,18 +450,6 @@ class Submit extends AbstractProcessor {
     return $this;
   }
 
-  /**
-   * @param array $records
-   * @param string $entityName
-   */
-  private function fillIdFields(array &$records, string $entityName): void {
-    foreach ($records as $index => &$record) {
-      if (empty($record['fields']['id']) && !empty($this->_entityIds[$entityName][$index]['id'])) {
-        $record['fields']['id'] = $this->_entityIds[$entityName][$index]['id'];
-      }
-    }
-  }
-
   /**
    * Generates token returned from submit action
    *
@@ -534,4 +471,70 @@ class Submit extends AbstractProcessor {
     ]);
   }
 
+  /**
+   * Function to send the verification email if configured
+   *
+   * @param int $submissionId
+   *
+   * @return void
+   */
+  private function processVerficationEmail(int $submissionId):void {
+    // check if email verification configured and message template is set
+    if (empty($this->_afform['allow_verification_by_email']) || empty($this->_afform['email_confirmation_template_id'])) {
+      return;
+    }
+
+    $emailValue = '';
+    $submittedValues = $this->getValues();
+    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
+      foreach ($submittedValues[$entityName] ?? [] as $values) {
+        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
+        foreach ($values['joins'] as $joinEntity => &$joinValues) {
+          if ($joinEntity === 'Email') {
+            foreach ($joinValues as $fld => $val) {
+              if (!empty($val['email'])) {
+                $emailValue = $val['email'];
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // processing sending of email only if email field exists in the form
+    if (!empty($emailValue)) {
+      $this->sendEmail($emailValue, $submissionId);
+    }
+  }
+
+  /**
+   * Function to send email
+   *
+   * @param string $emailAddress
+   * @param int $submissionId
+   *
+   * @return void
+   */
+  private function sendEmail(string $emailAddress, int $submissionId) {
+    // get domain email address
+    [$domainEmailName, $domainEmailAddress] = \CRM_Core_BAO_Domain::getNameAndEmail();
+
+    $tokenContext = [
+      'validateAfformSubmission' => [
+        'submissionId' => $submissionId,
+      ],
+    ];
+
+    // send email
+    $emailParams = [
+      'messageTemplateID' => $this->_afform['email_confirmation_template_id'],
+      'from' => "$domainEmailName <" . $domainEmailAddress . ">",
+      'toEmail' => $emailAddress,
+      'tokenContext' => $tokenContext,
+    ];
+
+    \CRM_Core_BAO_MessageTemplate::sendTemplate($emailParams);
+  }
+
 }
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
index 3ccfdd9ff5..05218b3d53 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
@@ -70,7 +70,7 @@ class SubmitFile extends AbstractProcessor {
     $joinIndex = (int) $this->joinIndex;
     $idField = CoreUtil::getIdFieldName($apiEntity);
     if ($this->joinEntity) {
-      $entityId = $this->_entityIds[$this->modelName][$entityIndex]['_joins'][$this->joinEntity][$joinIndex][$idField] ?? NULL;
+      $entityId = $this->_entityIds[$this->modelName][$entityIndex]['joins'][$this->joinEntity][$joinIndex][$idField] ?? NULL;
     }
     else {
       $entityId = $this->_entityIds[$this->modelName][$entityIndex][$idField] ?? NULL;
diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php
index 214ed88e5a..0484f05330 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Afform.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php
@@ -98,6 +98,15 @@ class Afform extends Generic\AbstractEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return Action\Afform\Process
+   */
+  public static function process($checkPermissions = TRUE) {
+    return (new Action\Afform\Process('Afform', __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @param bool $checkPermissions
    * @return Action\Afform\SubmitFile
@@ -231,6 +240,18 @@ class Afform extends Generic\AbstractEntity {
           'title' => E::ts('Log Submissions'),
           'data_type' => 'Boolean',
         ],
+        [
+          'name' => 'manual_processing',
+          'data_type' => 'Boolean',
+        ],
+        [
+          'name' => 'allow_verification_by_email',
+          'data_type' => 'Boolean',
+        ],
+        [
+          'name' => 'email_confirmation_template_id',
+          'data_type' => 'Integer',
+        ],
         [
           'name' => 'navigation',
           'title' => E::ts('Navigation Menu'),
@@ -243,6 +264,12 @@ class Afform extends Generic\AbstractEntity {
           'data_type' => 'Array',
           'description' => 'HTML form layout; format is controlled by layoutFormat param',
         ],
+        [
+          'name' => 'modified_date',
+          'title' => E::ts('Date Modified'),
+          'data_type' => 'Timestamp',
+          'readonly' => TRUE,
+        ],
       ];
       // Calculated fields returned by get action
       if ($self->getAction() === 'get') {
diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php
index e0ecada9c9..79d4cdc24c 100644
--- a/civicrm/ext/afform/core/afform.php
+++ b/civicrm/ext/afform/core/afform.php
@@ -54,7 +54,7 @@ function afform_civicrm_config(&$config) {
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processGenericEntity'], 0);
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'preprocessContact'], 10);
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processRelationships'], 1);
-  $dispatcher->addListener('hook_civicrm_angularModules', ['\Civi\Afform\AngularDependencyMapper', 'autoReq'], -1000);
+  $dispatcher->addListener('hook_civicrm_angularModules', '_afform_hook_civicrm_angularModules', -1000);
   $dispatcher->addListener('hook_civicrm_alterAngular', ['\Civi\Afform\AfformMetadataInjector', 'preprocess']);
   $dispatcher->addListener('hook_civicrm_check', ['\Civi\Afform\StatusChecks', 'hook_civicrm_check']);
   $dispatcher->addListener('civi.afform.get', ['\Civi\Api4\Action\Afform\Get', 'getCustomGroupBlocks']);
@@ -135,7 +135,7 @@ function afform_civicrm_managed(&$entities, $modules) {
         'values' => [
           'name' => $afform['name'],
           'label' => $afform['navigation']['label'] ?: $afform['title'],
-          'permission' => $afform['permission'],
+          'permission' => (array) (empty($afform['permission']) ? 'access CiviCRM' : $afform['permission']),
           'permission_operator' => $afform['permission_operator'] ?? 'AND',
           'weight' => $afform['navigation']['weight'] ?? 0,
           'url' => $afform['server_route'],
@@ -301,17 +301,22 @@ function _afform_get_contact_types(array $mixedTypes): array {
 }
 
 /**
- * Implements hook_civicrm_angularModules().
+ * Late-listener for Angular modules: adds all Afforms and their dependencies.
  *
- * Generate a list of Afform Angular modules.
+ * Must run last so that all other modules are present for reverse-dependency mapping.
+ *
+ * @implements CRM_Utils_Hook::angularModules
+ * @param \Civi\Core\Event\GenericHookEvent $e
  */
-function afform_civicrm_angularModules(&$angularModules) {
+function _afform_hook_civicrm_angularModules($e) {
   $afforms = \Civi\Api4\Afform::get(FALSE)
-    ->setSelect(['name', 'requires', 'module_name', 'directive_name'])
+    ->setSelect(['name', 'requires', 'module_name', 'directive_name', 'layout'])
+    ->setLayoutFormat('html')
     ->execute();
 
+  // 1st pass, add each Afform as angular module
   foreach ($afforms as $afform) {
-    $angularModules[$afform['module_name']] = [
+    $e->angularModules[$afform['module_name']] = [
       'ext' => E::LONG_NAME,
       'js' => ['assetBuilder://afform.js?name=' . urlencode($afform['name'])],
       'requires' => $afform['requires'],
@@ -325,6 +330,12 @@ function afform_civicrm_angularModules(&$angularModules) {
       ],
     ];
   }
+
+  // 2nd pass, now that all Angular modules are declared, add reverse dependencies
+  $dependencyMapper = new \Civi\Afform\AngularDependencyMapper($e->angularModules);
+  foreach ($afforms as $afform) {
+    $e->angularModules[$afform['module_name']]['requires'] = $dependencyMapper->autoReq($afform);
+  }
 }
 
 /**
@@ -402,7 +413,7 @@ function afform_civicrm_alterMenu(&$items) {
         'page_callback' => 'CRM_Afform_Page_AfformBase',
         'page_arguments' => 'afform=' . urlencode($name),
         'access_arguments' => [["@afform:$name"], 'and'],
-        'is_public' => $meta['is_public'],
+        'is_public' => $meta['is_public'] ?? FALSE,
       ];
     }
   }
@@ -433,31 +444,18 @@ function afform_civicrm_permission(&$permissions) {
  * @see CRM_Utils_Hook::permission_check()
  */
 function afform_civicrm_permission_check($permission, &$granted, $contactId) {
-  if ($permission[0] !== '@') {
+  if (!str_starts_with($permission, '@afform:') || strlen($permission) < 9) {
     // Micro-optimization - this function may get hit a lot.
     return;
   }
-
-  if (preg_match('/^@afform:(.*)/', $permission, $m)) {
-    $name = $m[1];
-
-    $afform = \Civi\Api4\Afform::get(FALSE)
-      ->addWhere('name', '=', $name)
-      ->addSelect('permission', 'permission_operator')
-      ->execute()
-      ->first();
-    // No permissions found... this shouldn't happen but just in case, set default.
-    if ($afform && empty($afform['permission'])) {
-      $afform['permission'] = ['access CiviCRM'];
-    }
-    if ($afform) {
-      $check = (array) $afform['permission'];
-      if ($afform['permission_operator'] === 'OR') {
-        $check = [$check];
-      }
-      $granted = CRM_Core_Permission::check($check, $contactId);
-    }
-  }
+  [, $name] = explode(':', $permission, 2);
+  // Delegate permission check to APIv4
+  $check = \Civi\Api4\Afform::checkAccess()
+    ->addValue('name', $name)
+    ->setAction('get')
+    ->execute()
+    ->first();
+  $granted = $check['access'];
 }
 
 /**
@@ -647,3 +645,16 @@ function afform_shortcode_content($content, $atts, $args, $context) {
   }
   return $content;
 }
+
+/**
+ * Implements hook_civicrm_searchKitTasks().
+ *
+ */
+function afform_civicrm_searchKitTasks(array &$tasks, bool $checkPermissions, ?int $userID) {
+  $tasks['AfformSubmission']['process'] = [
+    'module' => 'afSearchTasks',
+    'title' => E::ts('Process Submissions'),
+    'icon' => 'fa-check-square-o',
+    'uiDialog' => ['templateUrl' => '~/afSearchTasks/afformSubmissionProcessTask.html'],
+  ];
+}
diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js
index 60223ed607..c8c56c6e72 100644
--- a/civicrm/ext/afform/core/ang/af/afField.component.js
+++ b/civicrm/ext/afform/core/ang/af/afField.component.js
@@ -123,6 +123,10 @@
           else if (ctrl.afFieldset.getStoredValue(ctrl.fieldName) !== undefined) {
             setValue(ctrl.afFieldset.getStoredValue(ctrl.fieldName));
           }
+          else if ('default_date_type' in ctrl.defn && ctrl.defn.default_date_type === 'now') {
+            let currentDate = new Date();
+            setValue(currentDate.toISOString().split('T')[0]);
+          }
           // Set default value based on field defn
           else if ('afform_default' in ctrl.defn) {
             setValue(ctrl.defn.afform_default);
diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js
index e06b79dff0..40f6dee472 100644
--- a/civicrm/ext/afform/core/ang/af/afForm.component.js
+++ b/civicrm/ext/afform/core/ang/af/afForm.component.js
@@ -68,6 +68,11 @@
         if (toLoad) {
           crmApi4('Afform', 'prefill', params)
             .then((result) => {
+              // In some cases (noticed on Wordpress) the response header incorrectly outputs success when there's an error.
+              if (result.error_message) {
+                disableForm(result.error_message);
+                return;
+              }
               result.forEach((item) => {
                 // Use _.each() because item.values could be cast as an object if array keys are not sequential
                 _.each(item.values, (values, index) => {
@@ -77,12 +82,7 @@
                 });
               });
             }, (error) => {
-              if (error.status === 403) {
-                // Permission denied
-                disableForm();
-              } else {
-                // Unknown server error. What to do?
-              }
+              disableForm(error.error_message);
             });
         }
         // Clear existing contact selection
@@ -93,8 +93,17 @@
           angular.merge(data[selectedEntity][selectedIndex].fields, _.cloneDeep(schema[selectedEntity].data || {}));
           data[selectedEntity][selectedIndex].joins = {};
         }
+
+        ctrl.showSubmitButton = displaySubmitButton(args);
       };
 
+      function displaySubmitButton(args) {
+        if (args.sid && args.sid.length > 0) {
+          return false;
+        }
+        return true;
+      }
+
       // Used when submitting file fields
       this.fileUploader = new FileUploader({
         url: CRM.url('civicrm/ajax/api4/Afform/submitFile'),
@@ -106,6 +115,36 @@
         }
       });
 
+      // Handle the logic for conditional fields
+      this.checkConditions = function(conditions, op) {
+        op = op || 'AND';
+        // OR and AND have the opposite behavior so the logic is inverted
+        // NOT works identically to OR but gets flipped at the end
+        var ret = op === 'AND',
+          flip = !ret;
+        _.each(conditions, function(clause) {
+          // Recurse into nested group
+          if (_.isArray(clause[1])) {
+            if (ctrl.checkConditions(clause[1], clause[0]) === flip) {
+              ret = flip;
+            }
+          } else {
+            // Angular can't handle expressions with quotes inside brackets, so they are omitted
+            // Here we add them back to make valid js
+            _.each(clause, function(expr, idx) {
+              if (_.isString(expr) && expr.charAt(0) !== '"') {
+                clause[idx] = expr.replace(/\[/g, "['").replace(/]/g, "']");
+              }
+            });
+            var parser = $parse(clause.join(' '));
+            if (parser(data) === flip) {
+              ret = flip;
+            }
+          }
+        });
+        return op === 'NOT' ? !ret : ret;
+      };
+
       // Called after form is submitted and files are uploaded
       function postProcess() {
         var metaData = ctrl.getFormMeta(),
@@ -162,11 +201,11 @@
         return valid;
       }
 
-      function disableForm() {
-        CRM.alert(ts('This form is not currently open for submissions.'), ts('Sorry'), 'error');
+      function disableForm(errorMsg) {
         $('af-form[ng-form="' + ctrl.getFormMeta().name + '"]')
           .addClass('disabled')
           .find('button[ng-click="afform.submit()"]').prop('disabled', true);
+        CRM.alert(errorMsg, ts('Sorry'), 'error');
       }
 
       this.submit = function() {
diff --git a/civicrm/ext/afform/core/ang/af/afIf.directive.js b/civicrm/ext/afform/core/ang/af/afIf.directive.js
new file mode 100644
index 0000000000..7ed4a3473b
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/af/afIf.directive.js
@@ -0,0 +1,80 @@
+(function(angular, $, _) {
+  // A modified version of ngIf to use afform.checkConditions
+  angular.module('af').directive('afIf', function($compile, $animate, $parse) {
+    return {
+      multiElement: true,
+      transclude: 'element',
+      priority: 601,
+      terminal: true,
+      restrict: 'A',
+      require: ['^^afForm'],
+      $$tlb: true,
+      link: function($scope, $element, $attr, ctrl, $transclude) {
+        var block, childScope, previousElements;
+
+        function watcher() {
+          var conditions = $parse($attr.afIf)();
+          return ctrl[0].checkConditions(conditions);
+        }
+
+        $scope.$watch(watcher, function(value) {
+          if (value) {
+            if (!childScope) {
+              $transclude(function(clone, newScope) {
+                childScope = newScope;
+                clone[clone.length++] = $compile.$$createComment('end afIf', $attr.afIf);
+                // Note: We only need the first/last node of the cloned nodes.
+                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+                // by a directive with templateUrl when its template arrives.
+                block = {
+                  clone: clone
+                };
+                $animate.enter(clone, $element.parent(), $element);
+              });
+            }
+          } else {
+            if (previousElements) {
+              previousElements.remove();
+              previousElements = null;
+            }
+            if (childScope) {
+              childScope.$destroy();
+              childScope = null;
+            }
+            if (block) {
+              previousElements = getBlockNodes(block.clone);
+              $animate.leave(previousElements).done(function(response) {
+                if (response !== false) previousElements = null;
+              });
+              block = null;
+            }
+          }
+        });
+      }
+    };
+  });
+
+  /**
+   * Return the DOM siblings between the first and last node in the given array.
+   * @param {Array} array like object
+   * @returns {Array} the inputted object or a jqLite collection containing the nodes
+   */
+  function getBlockNodes(nodes) {
+    // TODO(perf): update `nodes` instead of creating a new object?
+    var node = nodes[0];
+    var endNode = nodes[nodes.length - 1];
+    var blockNodes;
+
+    for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
+      if (blockNodes || nodes[i] !== node) {
+        if (!blockNodes) {
+          blockNodes = $(slice.call(nodes, 0, i));
+        }
+        blockNodes.push(node);
+      }
+    }
+
+    return blockNodes || nodes;
+  }
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/af/afTitle.directive.js b/civicrm/ext/afform/core/ang/af/afTitle.directive.js
index b74a2abe72..9e369bc3da 100644
--- a/civicrm/ext/afform/core/ang/af/afTitle.directive.js
+++ b/civicrm/ext/afform/core/ang/af/afTitle.directive.js
@@ -10,15 +10,16 @@
         var ctrl = this;
 
         $scope.$watch(function() {return ctrl.title;}, function(text) {
-          var tag = $element.is('fieldset') ? 'legend' : 'h4',
-            $title = $element.children(tag + '.af-title');
+          let tag = 'h4';
+          if ($element.is('fieldset')) {
+            tag = 'legend';
+          }
+          if ($element.is('details')) {
+            tag = 'summary';
+          }
+          let $title = $element.children(tag + '.af-title');
           if (!$title.length) {
             $title = $('<' + tag + ' class="af-title" />').prependTo($element);
-            if ($element.hasClass('af-collapsible')) {
-              $title.click(function() {
-                $element.toggleClass('af-collapsed');
-              });
-            }
           }
           $title.text(text);
         });
diff --git a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
index cd415943b9..28bd70cf82 100644
--- a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
+++ b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
@@ -5,7 +5,7 @@
        ng-model="getSetSelect"
        ng-model-options="{getterSetter: true}"
        crm-autocomplete="$ctrl.defn.fk_entity"
-       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName}"
+       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName, values: dataProvider.getFieldData()}"
        multi="$ctrl.defn.input_attrs.multiple"
        auto-open="$ctrl.defn.input_attrs.autoOpen"
        quick-add="$ctrl.defn.input_attrs.quickAdd"
diff --git a/civicrm/ext/afform/core/ang/af/fields/TextArea.html b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
index cfb9942fd0..06c1314a40 100644
--- a/civicrm/ext/afform/core/ang/af/fields/TextArea.html
+++ b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
@@ -1 +1 @@
-<textarea class="crm-form-textarea" id="{{:: fieldId }}" ng-required="$ctrl.defn.required" ng-model="getSetValue" ng-model-options="{getterSetter: true}" ></textarea>
+<textarea class="crm-form-textarea" id="{{:: fieldId }}" rows="{{:: $ctrl.defn.input_attrs.rows || 4 }}" cols="{{:: $ctrl.defn.input_attrs.cols || 60 }}" ng-required="$ctrl.defn.required" ng-model="getSetValue" ng-model-options="{getterSetter: true}" ></textarea>
diff --git a/civicrm/ext/afform/core/ang/af/fields/Url.html b/civicrm/ext/afform/core/ang/af/fields/Url.html
new file mode 100644
index 0000000000..d6e49b3562
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/af/fields/Url.html
@@ -0,0 +1,6 @@
+<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="url" ng-required="$ctrl.defn.required" id="{{:: fieldId }}" ng-model="getSetValue" ng-model-options="{getterSetter: true}" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+<div ng-if=":: $ctrl.defn.search_range" class="form-inline">
+  <input class="form-control" type="url" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+  <span class="af-field-range-sep">-</span>
+  <input class="form-control" type="url" id="{{:: fieldId }}2" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['<=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder2 }}" >
+</div>
diff --git a/civicrm/ext/afform/core/ang/afCore.css b/civicrm/ext/afform/core/ang/afCore.css
index d7dae0164c..86c4d09b6c 100644
--- a/civicrm/ext/afform/core/ang/afCore.css
+++ b/civicrm/ext/afform/core/ang/afCore.css
@@ -26,6 +26,7 @@ a.af-api4-action-idle {
   width: 100%;
 }
 
+.afform-directive,
 af-form {
   display: block;
   position: relative;
@@ -45,23 +46,6 @@ af-form {
   right: 0;
 }
 
-/* Collapsible containers */
-.af-collapsible > .af-title {
-  cursor: pointer;
-}
-.af-collapsible > .af-title:before {
-  font-family: "FontAwesome";
-  display: inline-block;
-  width: 1em;
-  content: "\f0d7";
-}
-.af-collapsible.af-collapsed > .af-title:before {
-  content: "\f0da";
-}
-.af-collapsible.af-collapsed > .af-title ~ * {
-  display: none !important;
-}
-
 /* Card style */
 #bootstrap-theme .af-container-style-pane {
   background-color: white;
@@ -82,17 +66,15 @@ af-form {
   margin-top: 0;
   margin-bottom: 10px;
 }
-#bootstrap-theme .af-container-style-pane.af-collapsed > .af-title {
-  margin-bottom: 0;
-}
 
 /* Admin edit links */
-af-form a.af-admin-edit-form-link {
-  position: absolute;
+.afform-directive .af-admin-edit-form-link {
+  position: absolute !important;
   right: 0;
   top: 0;
-  display: none;
+  opacity: .5;
 }
-af-form:hover a.af-admin-edit-form-link {
-  display: block;
+.afform-directive .af-admin-edit-form-link.open,
+.afform-directive:hover .af-admin-edit-form-link {
+  opacity: 1;
 }
diff --git a/civicrm/ext/afform/core/ang/afCore.js b/civicrm/ext/afform/core/ang/afCore.js
index a1dc17aa22..3eb7abf0cf 100644
--- a/civicrm/ext/afform/core/ang/afCore.js
+++ b/civicrm/ext/afform/core/ang/afCore.js
@@ -17,6 +17,8 @@
           $scope.crmUiAlert = crmUiAlert;
           $scope.crmUrl = CRM.url;
 
+          $el.addClass('afform-directive');
+
           // Afforms do not use routing, but some forms get input from search params
           var dialog = $el.closest('.ui-dialog-content');
           if (!dialog.length) {
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks.ang.php b/civicrm/ext/afform/core/ang/afSearchTasks.ang.php
new file mode 100644
index 0000000000..e15b7b61fd
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks.ang.php
@@ -0,0 +1,14 @@
+<?php
+// This file declares an Angular module which can be autoloaded
+return [
+  'js' => [
+    'ang/afSearchTasks.module.js',
+    'ang/afSearchTasks/*.js',
+    'ang/afSearchTasks/*/*.js',
+  ],
+  'partials' => [
+    'ang/afSearchTasks',
+  ],
+  'css' => [],
+  'requires' => [],
+];
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks.module.js b/civicrm/ext/afform/core/ang/afSearchTasks.module.js
new file mode 100644
index 0000000000..35a07ee448
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks.module.js
@@ -0,0 +1,7 @@
+(function(angular, $, _) {
+  "use strict";
+
+  // Declare module
+  angular.module('afSearchTasks', CRM.angRequires('afSearchTasks'));
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js
new file mode 100644
index 0000000000..8ad6d9e3b1
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js
@@ -0,0 +1,59 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afSearchTasks').controller('afformSubmissionProcessTask', function ($scope, $timeout, crmApi4, searchTaskBaseTrait) {
+    var ts = $scope.ts = CRM.ts('org.civicrm.afform'),
+      // Combine this controller with model properties (ids, entity, entityInfo) and searchTaskBaseTrait
+      ctrl = angular.extend(this, $scope.model, searchTaskBaseTrait);
+
+    this.entityTitle = this.getEntityTitle();
+    this.afformName = '';
+
+    this.getAfformName = function(id) {
+      crmApi4('AfformSubmission', 'get', {
+        select: ["afform_name"],
+        where: [["id", "=", id]],
+      }).then(function(afformSubmissions) {
+        ctrl.afformName = afformSubmissions[0].afform_name;
+      }, function(error) {
+        ctrl.onError();
+      });
+    };
+
+    this.processData = function() {
+      _.each(ctrl.ids, function(id) {
+        ctrl.start();
+        crmApi4('Afform', 'process', {
+          submissionId: id,
+          name: ctrl.afformName
+        }).then(function(result) {
+        }, function(failure) {
+          ctrl.onError();
+        });
+      });
+
+      ctrl.onSuccess();
+    };
+
+    this.save = function() {
+      // get the afform name
+      ctrl.getAfformName(ctrl.ids[0]);
+
+      $timeout(function() {
+        ctrl.processData();
+      },500);
+
+    };
+
+    this.onSuccess = function() {
+      CRM.alert(ts('Successfully processed %1 %2.', {1: ctrl.ids.length, 2: ctrl.entityTitle}), ts('Saved'), 'success');
+      this.close();
+    };
+
+    this.onError = function() {
+      CRM.alert(ts('An error occurred while attempting to process %1 %2.', {1: ctrl.ids.length, 2: ctrl.entityTitle}), ts('Error'), 'error');
+      this.cancel();
+    };
+
+  });
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html
new file mode 100644
index 0000000000..8c34126691
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html
@@ -0,0 +1,7 @@
+<div id="bootstrap-theme" crm-dialog="crmSearchTask">
+  <form name="afformSubmissionProcessTaskForm" ng-controller="afformSubmissionProcessTask as $ctrl">
+    <p><strong>{{:: ts('Process the %1 selected %2 submission(s):', {1: model.ids.length, 2: $ctrl.entityTitle}) }}</strong></p>
+    <crm-dialog-button text="ts('Cancel')" icons="{primary: 'fa-times'}" on-click="$ctrl.cancel()" disabled="$ctrl.run" ></crm-dialog-button>
+    <crm-dialog-button text="ts('Process submission(s)')" icons="{primary: $ctrl.run ? 'fa-spin fa-spinner' : 'fa-check'}" on-click="$ctrl.save()" disabled="$ctrl.run || !afformSubmissionProcessTaskForm.$valid" ></crm-dialog-button>
+  </form>
+</div>
diff --git a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json
deleted file mode 100644
index 0a0e209345..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Address(es)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Address"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php
new file mode 100644
index 0000000000..aa4c5957d4
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Address(es)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Address',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json
deleted file mode 100644
index 6ddb66f259..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Email(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Email"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php
new file mode 100644
index 0000000000..a299946658
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Email(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Email',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactIM.aff.json b/civicrm/ext/afform/core/ang/afblockContactIM.aff.json
deleted file mode 100644
index 953d1a09d1..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactIM.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact IM(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "IM"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactIM.aff.php b/civicrm/ext/afform/core/ang/afblockContactIM.aff.php
new file mode 100644
index 0000000000..1d91ae64cf
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactIM.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact IM(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'IM',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.json b/civicrm/ext/afform/core/ang/afblockContactNote.aff.json
deleted file mode 100644
index b3412870a7..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactNote.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "title": "Contact Note(s)",
-    "type": "block",
-    "entity_type": "Contact",
-    "join_entity": "Note"
-  }
-  
\ No newline at end of file
diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.php b/civicrm/ext/afform/core/ang/afblockContactNote.aff.php
new file mode 100644
index 0000000000..6ad8421dc7
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactNote.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Note(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Note',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json
deleted file mode 100644
index c66eae8b24..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Phone(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Phone"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php
new file mode 100644
index 0000000000..62067e40ce
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Phone(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Phone',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json
deleted file mode 100644
index 89288fcfd0..0000000000
--- a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Website(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Website"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php
new file mode 100644
index 0000000000..5a01dd983a
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Website(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Website',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json
deleted file mode 100644
index dd665a10cc..0000000000
--- a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Household Name",
-  "type": "block",
-  "entity_type": "Household"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php
new file mode 100644
index 0000000000..ab157bd6b7
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Household Name'),
+  'type' => 'block',
+  'entity_type' => 'Household',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json
deleted file mode 100644
index 1cafdc4be6..0000000000
--- a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Individual Name",
-  "type": "block",
-  "entity_type": "Individual"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php
new file mode 100644
index 0000000000..772e597a7a
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Individual Name'),
+  'type' => 'block',
+  'entity_type' => 'Individual',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json
deleted file mode 100644
index ca44304b5d..0000000000
--- a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Organization Name",
-  "type": "block",
-  "entity_type": "Organization"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php
new file mode 100644
index 0000000000..9ed7f39a93
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Organization Name'),
+  'type' => 'block',
+  'entity_type' => 'Organization',
+];
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index 831e680fb9..537f2056b5 100644
--- a/civicrm/ext/afform/core/info.xml
+++ b/civicrm/ext/afform/core/info.xml
@@ -12,10 +12,10 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <develStage>stable</develStage>
   <tags>
@@ -39,6 +39,7 @@
     <mixin>scan-classes@1.0.0</mixin>
     <mixin>smarty-v2@1.0.1</mixin>
     <mixin>entity-types-php@1.0.0</mixin>
+    <mixin>menu-xml@1.0.0</mixin>
   </mixins>
   <upgrader>CRM_Afform_Upgrader</upgrader>
 </extension>
diff --git a/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl b/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl
new file mode 100644
index 0000000000..885bbbee22
--- /dev/null
+++ b/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl
@@ -0,0 +1,6 @@
+{if $verified}
+  {ts}Thank you. Your email was verified successfully and your submission was processed.{/ts}
+{else}
+  {ts}Sorry, unable to verify your submission.{/ts}
+  {$error_message}
+{/if}
diff --git a/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php b/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php
new file mode 100644
index 0000000000..d0053b5147
--- /dev/null
+++ b/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php
@@ -0,0 +1,50 @@
+<?php
+
+use Civi\Test\HeadlessInterface;
+use Civi\Test\TransactionalInterface;
+
+/**
+ * @group headless
+ */
+class CRM_Afform_PageTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
+
+  public function setUpHeadless() {
+    return \Civi\Test::headless()
+      ->installMe(__DIR__)
+      ->apply();
+  }
+
+  public function testNotesTab(): void {
+    // temporarily be more error-y
+    set_error_handler(
+      function(int $errno, string $errstr, string $errfile, int $errline) {
+        throw new \ErrorException($errstr);
+      },
+      E_ALL
+    );
+    $errorToThrow = NULL;
+    try {
+      $result = \Civi\Api4\SearchDisplay::run()
+        ->setReturn('page:1')
+        ->setSavedSearch('Contact_Summary_Notes')
+        ->setDisplay('Contact_Summary_Notes_Tab')
+        ->setAfform('afsearchTabNote')
+        ->setFilters([
+          'entity_id' => 1,
+          'entity_table' => 'civicrm_contact',
+        ])->execute();
+      $this->assertNotEmpty($result->toolbar[0]);
+    }
+    catch (\ErrorException $e) {
+      $errorToThrow = $e;
+    }
+    finally {
+      // make sure to remove our handler no matter what happens
+      restore_error_handler();
+    }
+    if ($errorToThrow) {
+      throw $errorToThrow;
+    }
+  }
+
+}
diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
index fa5766e857..2478ea0695 100644
--- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
+++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
@@ -34,6 +34,10 @@ class AfformGetTest extends \PHPUnit\Framework\TestCase implements HeadlessInter
     $this->assertEquals($this->formName, $result['name']);
     $this->assertArrayNotHasKey('directive_name', $result);
     $this->assertArrayNotHasKey('has_base', $result);
+    // Check modified date is reasonable
+    $this->assertGreaterThan('2023-01-01 12:00:00', $result['modified_date']);
+    // Hopefully this test won't need updating for the next 2000 years or so...
+    $this->assertLessThan('4000-01-01 12:00:00', $result['modified_date']);
 
     // Select * should also return regular fields only
     $result = Afform::get()
diff --git a/civicrm/ext/afform/core/xml/Menu/afform.xml b/civicrm/ext/afform/core/xml/Menu/afform.xml
new file mode 100644
index 0000000000..6486fdfa65
--- /dev/null
+++ b/civicrm/ext/afform/core/xml/Menu/afform.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<menu>
+  <item>
+    <title>Form Submission</title>
+    <path>civicrm/afform/submission/verify</path>
+    <page_callback>CRM_Afform_Page_Verify</page_callback>
+    <access_callback>1</access_callback>
+    <is_public>true</is_public>
+  </item>
+</menu>
diff --git a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
index 70c12a6783..24c7ea7d70 100644
--- a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
+++ b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
@@ -7,7 +7,9 @@
   <comment>Recorded form submissions</comment>
   <title>FormBuilder Submission</title>
   <log>true</log>
-
+  <paths>
+    <view>[afform_name:url]#?sid=[id]</view>
+  </paths>
   <field>
     <name>id</name>
     <title>Form Submission ID</title>
diff --git a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json
deleted file mode 100644
index 4feaa980aa..0000000000
--- a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Afform HTML Administration",
-  "server_route": "civicrm/admin/afform-html",
-  "permission": "administer CiviCRM"
-}
diff --git a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php
new file mode 100644
index 0000000000..9ca9fff78e
--- /dev/null
+++ b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Afform HTML Administration'),
+  'server_route' => 'civicrm/admin/afform-html',
+  'permission' => 'administer CiviCRM',
+];
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index bba3589ed9..5bf88214d4 100644
--- a/civicrm/ext/afform/html/info.xml
+++ b/civicrm/ext/afform/html/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/ang/afex.aff.json b/civicrm/ext/afform/mock/ang/afex.aff.json
deleted file mode 100644
index e0dc03664d..0000000000
--- a/civicrm/ext/afform/mock/ang/afex.aff.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "server_route": "civicrm/afex",
-  "requires":["mockFoo", "mockBareFile", "af"]
-}
diff --git a/civicrm/ext/afform/mock/ang/afex.aff.php b/civicrm/ext/afform/mock/ang/afex.aff.php
new file mode 100644
index 0000000000..4e3a8e3e00
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/afex.aff.php
@@ -0,0 +1,5 @@
+<?php
+return [
+  'server_route' => 'civicrm/afex',
+  'requires' => ['mockFoo', 'mockBareFile', 'af'],
+];
diff --git a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json
deleted file mode 100644
index f047ea604f..0000000000
--- a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "title": "Weird Name"
-}
diff --git a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php
new file mode 100644
index 0000000000..744d2aa75d
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php
@@ -0,0 +1,4 @@
+<?php
+return [
+  'title' => ts('Weird Name'),
+];
diff --git a/civicrm/ext/afform/mock/ang/mockFoo.aff.json b/civicrm/ext/afform/mock/ang/mockFoo.aff.json
deleted file mode 100644
index 0967ef424b..0000000000
--- a/civicrm/ext/afform/mock/ang/mockFoo.aff.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/civicrm/ext/afform/mock/ang/mockFoo.aff.php b/civicrm/ext/afform/mock/ang/mockFoo.aff.php
new file mode 100644
index 0000000000..881ab67d03
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockFoo.aff.php
@@ -0,0 +1,2 @@
+<?php
+return [];
diff --git a/civicrm/ext/afform/mock/ang/mockPage.aff.json b/civicrm/ext/afform/mock/ang/mockPage.aff.json
deleted file mode 100644
index b8ba11b526..0000000000
--- a/civicrm/ext/afform/mock/ang/mockPage.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "server_route": "civicrm/mock-page",
-  "requires": ["mockBespoke"],
-  "permission": "access Foobar",
-  "is_dashlet": true
-}
diff --git a/civicrm/ext/afform/mock/ang/mockPage.aff.php b/civicrm/ext/afform/mock/ang/mockPage.aff.php
new file mode 100644
index 0000000000..bca133b0fc
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockPage.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'server_route' => 'civicrm/mock-page',
+  'requires' => ['mockBespoke'],
+  'permission' => 'access Foobar',
+  'is_dashlet' => TRUE,
+];
diff --git a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json
deleted file mode 100644
index eb221305ee..0000000000
--- a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "type": "form",
-  "title": "My public form",
-  "server_route": "civicrm/mock-public-form",
-  "permission": "*always allow*",
-  "is_token": true
-}
diff --git a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php
new file mode 100644
index 0000000000..533d45e701
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php
@@ -0,0 +1,8 @@
+<?php
+return [
+  'type' => 'form',
+  'title' => ts('My public form'),
+  'server_route' => 'civicrm/mock-public-form',
+  'permission' => '*always allow*',
+  'is_token' => TRUE,
+];
diff --git a/civicrm/ext/afform/mock/ang/testAfform.aff.json b/civicrm/ext/afform/mock/ang/testAfform.aff.json
deleted file mode 100644
index 6c8684eee7..0000000000
--- a/civicrm/ext/afform/mock/ang/testAfform.aff.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "server_route": "civicrm/test-afform",
-  "title": "This is a test"
-}
diff --git a/civicrm/ext/afform/mock/ang/testAfform.aff.php b/civicrm/ext/afform/mock/ang/testAfform.aff.php
new file mode 100644
index 0000000000..906d9b68a4
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testAfform.aff.php
@@ -0,0 +1,5 @@
+<?php
+return [
+  'server_route' => 'civicrm/test-afform',
+  'title' => ts('This is a test'),
+];
diff --git a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json
deleted file mode 100644
index cefad3d1fd..0000000000
--- a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "type": "search",
-    "title": "TestContactEmailForm",
-    "server_route": "",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php
new file mode 100644
index 0000000000..d0816ecb8f
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('TestContactEmailForm'),
+  'server_route' => '',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json
deleted file mode 100644
index 609e0f5033..0000000000
--- a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "type": "search",
-    "title": "TestMultipleSearchForm",
-    "server_route": "",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php
new file mode 100644
index 0000000000..c997388130
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('TestMultipleSearchForm'),
+  'server_route' => '',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index 3de31089d8..9ec8d87590 100644
--- a/civicrm/ext/afform/mock/info.xml
+++ b/civicrm/ext/afform/mock/info.xml
@@ -11,14 +11,14 @@
   <urls>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/phpunit.xml.dist b/civicrm/ext/afform/mock/phpunit.xml.dist
index 1f804252c5..ea391745fa 100644
--- a/civicrm/ext/afform/mock/phpunit.xml.dist
+++ b/civicrm/ext/afform/mock/phpunit.xml.dist
@@ -1,30 +1,15 @@
 <?xml version="1.0"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
-         backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         convertDeprecationsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         bootstrap="tests/phpunit/bootstrap.php"
-         cacheResult="false">
-  <coverage>
-    <include>
-      <directory suffix=".php">./</directory>
-    </include>
-  </coverage>
+<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php">
   <testsuites>
     <testsuite name="My Test Suite">
       <directory>./tests/phpunit</directory>
     </testsuite>
-    <testsuite name="form-tests">
-      <directory suffix=".test.php">./ang</directory>
-    </testsuite>
   </testsuites>
+  <filter>
+    <whitelist>
+      <directory suffix=".php">./</directory>
+    </whitelist>
+  </filter>
   <listeners>
     <listener class="Civi\Test\CiviTestListener">
       <arguments/>
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
similarity index 95%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
index 54c721ef66..a56ae183f5 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -13,7 +14,7 @@ use Civi\Api4\SavedSearch;
  *
  * @group headless
  */
-class api_v4_AfformAutocompleteUsageTest extends api_v4_AfformUsageTestCase {
+class AfformAutocompleteUsageTest extends AfformUsageTestCase {
 
   /**
    * Ensure that Afform restricts autocomplete results when it's set to use a SavedSearch
@@ -33,7 +34,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     // Saved search for filtering
@@ -95,7 +96,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
@@ -163,7 +164,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $result = Contact::autocomplete()
@@ -195,7 +196,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
@@ -257,7 +258,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $result = Contact::autocomplete()
@@ -293,7 +294,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
similarity index 84%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
index b3f8c63075..06733ad126 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
@@ -1,13 +1,16 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
+use Civi\Api4\AfformSubmission;
+use Civi\Api4\Contact;
 
 /**
- * Test case for Afform.prefill and Afform.submit.
+ * Test case for Afform.checkAccess, Afform.prefill and Afform.submit.
  *
  * @group headless
  */
-class api_v4_AfformContactUsageTest extends api_v4_AfformUsageTestCase {
+class AfformContactUsageTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -80,11 +83,11 @@ EOHTML;
   public function testAboutMeAllowed(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $cid = $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     // Autofill form with current user. See `Civi\Afform\Behavior\ContactAutofill`
     $prefill = Afform::prefill()
@@ -103,7 +106,7 @@ EOHTML;
       ->setValues(['me' => $submission])
       ->execute();
 
-    $contact = Civi\Api4\Contact::get(FALSE)->addWhere('id', '=', $cid)->execute()->first();
+    $contact = Contact::get(FALSE)->addWhere('id', '=', $cid)->execute()->first();
     $this->assertEquals('Firsty', $contact['first_name']);
     $this->assertEquals('Lasty', $contact['last_name']);
   }
@@ -111,7 +114,7 @@ EOHTML;
   public function testChainSelect(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     // Get states for USA
@@ -120,7 +123,7 @@ EOHTML;
       ->setModelName('me')
       ->setFieldName('state_province_id')
       ->setJoinEntity('Address')
-      ->setValues(['country_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United States', 'id', 'name')])
+      ->setValues(['country_id' => \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United States', 'id', 'name')])
       ->execute();
     $this->assertEquals('Alabama', $result[0]['label']);
 
@@ -130,7 +133,7 @@ EOHTML;
       ->setModelName('me')
       ->setFieldName('state_province_id')
       ->setJoinEntity('Address')
-      ->setValues(['country_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United Kingdom', 'id', 'name')])
+      ->setValues(['country_id' => \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United Kingdom', 'id', 'name')])
       ->execute();
     $this->assertEquals('Aberdeen City', $result[0]['label']);
   }
@@ -138,7 +141,7 @@ EOHTML;
   public function testCheckEntityReferenceFieldsReplacement(): void {
     $this->useValues([
       'layout' => self::$layouts['registerSite'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
       'create_submission' => TRUE,
     ]);
 
@@ -170,17 +173,17 @@ EOHTML;
       ->setValues($values)
       ->execute();
 
-    $submission = Civi\Api4\AfformSubmission::get(FALSE)
+    $submission = AfformSubmission::get(FALSE)
       ->addOrderBy('id', 'DESC')
       ->execute()->first();
 
     $this->assertEquals($this->formName, $submission['afform_name']);
     $this->assertIsInt($submission['data']['Activity1'][0]['id']);
-    $this->assertEquals('Individual1', $submission['data']['Activity1'][0]['subject']);
+    $this->assertEquals('Individual1', $submission['data']['Activity1'][0]['fields']['subject']);
     $this->assertIsInt($submission['data']['Individual1'][0]['id']);
-    $this->assertEquals($firstName, $submission['data']['Individual1'][0]['first_name']);
-    $this->assertEquals('site', $submission['data']['Individual1'][0]['last_name']);
-    $this->assertEquals('This field is set in the data array', $submission['data']['Individual1'][0]['source']);
+    $this->assertEquals($firstName, $submission['data']['Individual1'][0]['fields']['first_name']);
+    $this->assertEquals('site', $submission['data']['Individual1'][0]['fields']['last_name']);
+    $this->assertEquals('This field is set in the data array', $submission['data']['Individual1'][0]['fields']['source']);
 
     // Check that Activity was submitted correctly.
     $activity = \Civi\Api4\Activity::get(FALSE)
@@ -198,14 +201,39 @@ EOHTML;
     $this->callAPISuccessGetSingle('ActivityContact', ['contact_id' => $contact['id'], 'activity_id' => $activity['id']]);
   }
 
+  public function testCheckAccess(): void {
+    $this->useValues([
+      'layout' => self::$layouts['aboutMe'],
+      'permission' => ['access CiviCRM'],
+    ]);
+    $this->createLoggedInUser();
+    \CRM_Core_Config::singleton()->userPermissionTemp = NULL;
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = [
+      'access Contact Dashboard',
+    ];
+    $check = Afform::checkAccess()
+      ->addValue('name', $this->formName)
+      ->setAction('get')
+      ->execute()->first();
+    $this->assertFalse($check['access']);
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = [
+      'access CiviCRM',
+    ];
+    $check = Afform::checkAccess()
+      ->addValue('name', $this->formName)
+      ->setAction('get')
+      ->execute()->first();
+    $this->assertTrue($check['access']);
+  }
+
   public function testAboutMeForbidden(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_DENY_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_DENY_PERMISSION,
     ]);
 
     $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     try {
       Afform::prefill()
@@ -237,7 +265,7 @@ EOHTML;
   public function testEmployerReference(): void {
     $this->useValues([
       'layout' => self::$layouts['employer'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $firstName = uniqid(__FUNCTION__);
@@ -278,7 +306,7 @@ EOHTML;
   public function testEmptyEmployerReference(): void {
     $this->useValues([
       'layout' => self::$layouts['employer'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $firstName = uniqid(__FUNCTION__);
@@ -317,12 +345,12 @@ EOHTML;
     $this->useValues([
       'layout' => self::$layouts['employer'],
       'create_submission' => TRUE,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $individualEmail = uniqid('individual@') . '.test';
     $orgEmail = uniqid('org@') . '.test';
-    $locationType = CRM_Core_BAO_LocationType::getDefault()->id;
+    $locationType = \CRM_Core_BAO_LocationType::getDefault()->id;
     $values = [
       'Individual1' => [
         [
@@ -364,12 +392,12 @@ EOHTML;
       ->execute()->single();
     $this->assertEquals($contact['id'], $submission['data']['Individual1'][0]['id']);
     $this->assertEquals($contact['org.id'], $submission['data']['Organization1'][0]['id']);
-    $this->assertEquals('Organization1', $submission['data']['Individual1'][0]['employer_id']);
-    $this->assertEquals($contact['email_primary'], $submission['data']['Individual1'][0]['_joins']['Email'][0]['id']);
-    $this->assertEquals($individualEmail, $submission['data']['Individual1'][0]['_joins']['Email'][0]['email']);
-    $this->assertEquals($locationType, $submission['data']['Individual1'][0]['_joins']['Email'][0]['location_type_id']);
-    $this->assertEquals($orgEmail, $submission['data']['Organization1'][0]['_joins']['Email'][0]['email']);
-    $this->assertEquals($locationType, $submission['data']['Organization1'][0]['_joins']['Email'][0]['location_type_id']);
+    $this->assertEquals('Organization1', $submission['data']['Individual1'][0]['fields']['employer_id']);
+    $this->assertEquals($contact['email_primary'], $submission['data']['Individual1'][0]['joins']['Email'][0]['id']);
+    $this->assertEquals($individualEmail, $submission['data']['Individual1'][0]['joins']['Email'][0]['email']);
+    $this->assertEquals($locationType, $submission['data']['Individual1'][0]['joins']['Email'][0]['location_type_id']);
+    $this->assertEquals($orgEmail, $submission['data']['Organization1'][0]['joins']['Email'][0]['email']);
+    $this->assertEquals($locationType, $submission['data']['Organization1'][0]['joins']['Email'][0]['location_type_id']);
   }
 
   public function testDedupeIndividual(): void {
@@ -388,7 +416,7 @@ EOHTML;
 EOHTML;
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
@@ -398,7 +426,7 @@ EOHTML;
       ->addValue('email_primary.email', '123@example.com')
       ->execute()->single();
 
-    $locationType = CRM_Core_BAO_LocationType::getDefault()->id;
+    $locationType = \CRM_Core_BAO_LocationType::getDefault()->id;
     $values = [
       'Individual1' => [
         [
@@ -430,7 +458,7 @@ EOHTML;
   public function testFormValidationEntityFields(): void {
     $this->useValues([
       'layout' => self::$layouts['updateInfo'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $values = [
@@ -466,7 +494,7 @@ EOHTML;
   public function testFormValidationEntityJoinFields(): void {
     $this->useValues([
       'layout' => self::$layouts['updateInfo'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $values = [
@@ -501,13 +529,13 @@ EOHTML;
   public function testSubmissionLimit() {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
       'create_submission' => TRUE,
       'submit_limit' => 3,
     ]);
 
     $cid = $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     $submitValues = [
       ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']],
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
similarity index 95%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
index f572a35c35..b33fec6849 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -10,7 +11,7 @@ use Civi\Api4\CustomGroup;
  *
  * @group headless
  */
-class api_v4_AfformCustomFieldUsageTest extends api_v4_AfformUsageTestCase {
+class AfformCustomFieldUsageTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -68,7 +69,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => self::$layouts['customMulti'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
     $firstName = uniqid(__FUNCTION__);
     $values = [
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
similarity index 97%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
index cd51151122..0f7e665cfa 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 /**
  * Test case for Afform.prefill and Afform.submit.
@@ -13,7 +14,7 @@ use Civi\Api4\CustomGroup;
 
 require_once __DIR__ . '/AfformTestCase.php';
 require_once __DIR__ . '/AfformUsageTestCase.php';
-class api_v4_AfformFileUploadTest extends api_v4_AfformUsageTestCase {
+class AfformFileUploadTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -74,7 +75,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => self::$layouts['customFiles'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
similarity index 96%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
index f99602750f..32dd640327 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -7,7 +8,7 @@ use Civi\Api4\Afform;
  *
  * @group headless
  */
-class api_v4_AfformPrefillUsageTest extends api_v4_AfformUsageTestCase {
+class AfformPrefillUsageTest extends AfformUsageTestCase {
   use \Civi\Test\Api4TestTrait;
 
   /**
@@ -35,7 +36,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $cid = $this->saveTestRecords('Contact', [
@@ -120,7 +121,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $uid = $this->createLoggedInUser();
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
similarity index 96%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
index 1d6a07b8fa..36b6d83fb4 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -10,7 +11,7 @@ use Civi\Api4\RelationshipType;
  *
  * @group headless
  */
-class api_v4_AfformRelationshipUsageTest extends api_v4_AfformUsageTestCase {
+class AfformRelationshipUsageTest extends AfformUsageTestCase {
 
   /**
    * Tests creating a relationship between multiple contacts
@@ -34,7 +35,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
@@ -91,7 +92,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $types = [
@@ -162,7 +163,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $contact = Contact::save(FALSE)
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
similarity index 78%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
index 01118ef23e..28f49ea12b 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -6,7 +7,7 @@ use Civi\Api4\Afform;
  * Ensure that the routes created by Afform are working.
  * @group e2e
  */
-class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \Civi\Test\EndToEndInterface {
+class AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \Civi\Test\EndToEndInterface {
 
   protected $formName = 'mockPage';
 
@@ -35,7 +36,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   public function testChangingPermissions(): void {
     $http = new \GuzzleHttp\Client(['http_errors' => FALSE]);
     $url = function ($path, $query = NULL) {
-      return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
+      return \CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
     };
 
     $result = $http->get($url('civicrm/mock-page'));
@@ -44,7 +45,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
     Afform::update()
       ->setCheckPermissions(FALSE)
       ->addWhere('name', '=', $this->formName)
-      ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
+      ->addValue('permission', \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
       ->execute();
 
     $result = $http->get($url('civicrm/mock-page'));
@@ -54,13 +55,13 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   public function testChangingPath(): void {
     $http = new \GuzzleHttp\Client(['http_errors' => FALSE]);
     $url = function ($path, $query = NULL) {
-      return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
+      return \CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
     };
 
     Afform::update()
       ->setCheckPermissions(FALSE)
       ->addWhere('name', '=', $this->formName)
-      ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
+      ->addValue('permission', \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
       ->execute();
 
     $this->assertOpensPage($http->get($url('civicrm/mock-page')), 'mock-page');
@@ -77,10 +78,10 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   }
 
   /**
-   * @param $result
+   * @param \Psr\Http\Message\ResponseInterface $result
    * @param string $directive
    */
-  private function assertNotAuthorized(Psr\Http\Message\ResponseInterface $result, $directive) {
+  private function assertNotAuthorized(\Psr\Http\Message\ResponseInterface $result, string $directive) {
     $contents = $result->getBody()->getContents();
     $this->assertEquals(403, $result->getStatusCode());
     $this->assertMatchesRegularExpression(';You are not authorized to access;', $contents);
@@ -88,11 +89,11 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   }
 
   /**
-   * @param $result
+   * @param \Psr\Http\Message\ResponseInterface $result
    * @param string $directive
    *   The name of the directive which auto-opens.
    */
-  private function assertOpensPage(Psr\Http\Message\ResponseInterface $result, $directive) {
+  private function assertOpensPage(\Psr\Http\Message\ResponseInterface $result, string $directive) {
     $contents = $result->getBody()->getContents();
     $this->assertEquals(200, $result->getStatusCode());
     $this->assertDoesNotMatchRegularExpression(';You are not authorized to access;', $contents);
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
similarity index 94%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
index a408249e51..4d6b9bfba5 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Dashboard;
@@ -8,7 +9,7 @@ use Civi\Api4\Dashboard;
  * This is a generic test class implemented with PHPUnit.
  * @group headless
  */
-class api_v4_AfformTest extends api_v4_AfformTestCase {
+class AfformTest extends AfformTestCase {
   use \Civi\Test\Api3TestTrait;
   use \Civi\Test\ContactTestTrait;
 
@@ -131,7 +132,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
   public function getFormatExamples() {
     $ex = [];
     $formats = ['html', 'shallow', 'deep'];
-    foreach (glob(__DIR__ . '/formatExamples/*.php') as $exampleFile) {
+    foreach (glob(__DIR__ . '/../formatExamples/*.php') as $exampleFile) {
       $example = require $exampleFile;
       if (isset($example['deep'])) {
         foreach ($formats as $updateFormat) {
@@ -227,7 +228,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
   public function getWhitespaceExamples() {
     $ex = [];
-    foreach (glob(__DIR__ . '/formatExamples/*.php') as $exampleFile) {
+    foreach (glob(__DIR__ . '/../formatExamples/*.php') as $exampleFile) {
       $example = require $exampleFile;
       if (isset($example['pretty'])) {
         $ex[] = ['mockBareFile', $example, $exampleFile];
@@ -278,9 +279,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
     // The default mockPage has 1 explicit requirement + 2 automatic requirements.
     Afform::revert()->addWhere('name', '=', $formName)->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke', 'mockFoo'], $angModule['requires']);
     $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']);
 
     // Knock down to 1 explicit + 1 automatic.
@@ -289,9 +291,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
       ->setLayoutFormat('html')
       ->setValues(['layout' => '<div>The bare file says "<mock-bare-file/>"</div>'])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke'], $angModule['requires']);
     $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']);
 
     // Remove the last explict and implicit requirements.
@@ -303,14 +306,15 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
         'requires' => [],
       ])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
+    $angModule = \Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore'], $angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
     $this->assertEquals([], $storedRequires[0]['requires']);
 
     Afform::revert()->addWhere('name', '=', $formName)->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke', 'mockFoo'], $angModule['requires']);
   }
 
 }
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
similarity index 66%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
index 43b174e415..8951f5e05c 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Test\HeadlessInterface;
 use Civi\Test\TransactionalInterface;
@@ -6,7 +7,7 @@ use Civi\Test\TransactionalInterface;
 /**
  * Base class for Afform API tests.
  */
-abstract class api_v4_AfformTestCase extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
+abstract class AfformTestCase extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
 
   /**
    * Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
@@ -23,8 +24,8 @@ abstract class api_v4_AfformTestCase extends \PHPUnit\Framework\TestCase impleme
    */
   public function setUp(): void {
     parent::setUp();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
-    CRM_Core_Config::singleton()->userPermissionTemp->grant('administer CiviCRM');
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp->grant('administer CiviCRM');
   }
 
 }
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
similarity index 91%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
index 2e9b7b30bc..7d86d1ea70 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -7,7 +8,7 @@ use Civi\Api4\Afform;
  *
  * @group headless
  */
-abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase {
+abstract class AfformUsageTestCase extends AfformTestCase {
   use \Civi\Test\Api3TestTrait;
   use \Civi\Test\ContactTestTrait;
 
diff --git a/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php b/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
index 5fd2c5bf3f..eaa8379442 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
@@ -1,19 +1,18 @@
 <?php
 
 ini_set('memory_limit', '2G');
+
 // phpcs:disable
 eval(cv('php:boot --level=classloader', 'phpcode'));
 // phpcs:enable
-
 // Allow autoloading of PHPUnit helper classes in this extension.
-foreach ([__DIR__] as $dir) {
-  $loader = new \Composer\Autoload\ClassLoader();
-  $loader->add('CRM_', $dir);
-  $loader->add('Civi\\', $dir);
-  $loader->add('api_', $dir);
-  $loader->add('api\\', $dir);
-  $loader->register();
-}
+$loader = new \Composer\Autoload\ClassLoader();
+$loader->add('CRM_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('Civi\\', [__DIR__ . '/../../Civi', __DIR__ . '/Civi']);
+$loader->add('api_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('api\\', [__DIR__ . '/../../api', __DIR__ . '/api']);
+
+$loader->register();
 
 /**
  * Call the "cv" command.
@@ -22,16 +21,17 @@ foreach ([__DIR__] as $dir) {
  *   The rest of the command to send.
  * @param string $decode
  *   Ex: 'json' or 'phpcode'.
- * @return string
+ * @return mixed
  *   Response output (if the command executed normally).
+ *   For 'raw' or 'phpcode', this will be a string. For 'json', it could be any JSON value.
  * @throws \RuntimeException
  *   If the command terminates abnormally.
  */
-function cv($cmd, $decode = 'json') {
+function cv(string $cmd, string $decode = 'json') {
   $cmd = 'cv ' . $cmd;
-  $descriptorSpec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => STDERR];
+  $descriptorSpec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => STDERR];
   $oldOutput = getenv('CV_OUTPUT');
-  putenv("CV_OUTPUT=json");
+  putenv('CV_OUTPUT=json');
 
   // Execute `cv` in the original folder. This is a work-around for
   // phpunit/codeception, which seem to manipulate PWD.
@@ -51,7 +51,7 @@ function cv($cmd, $decode = 'json') {
 
     case 'phpcode':
       // If the last output is /*PHPCODE*/, then we managed to complete execution.
-      if (substr(trim($result), 0, 12) !== "/*BEGINPHP*/" || substr(trim($result), -10) !== "/*ENDPHP*/") {
+      if (substr(trim($result), 0, 12) !== '/*BEGINPHP*/' || substr(trim($result), -10) !== '/*ENDPHP*/') {
         throw new \RuntimeException("Command failed ($cmd):\n$result");
       }
       return $result;
diff --git a/civicrm/ext/authx/Civi/Authx/Joomla.php b/civicrm/ext/authx/Civi/Authx/Joomla.php
index 51b9f4d1bc..094132b242 100644
--- a/civicrm/ext/authx/Civi/Authx/Joomla.php
+++ b/civicrm/ext/authx/Civi/Authx/Joomla.php
@@ -81,7 +81,6 @@ class Joomla implements AuthxInterface {
     // In any event, this work-around passes `AllFlowsTest::testMultipleStateless`.
 
     \JFactory::getSession()->destroy();
-    \JFactory::getSession()->setHandler(new \CRM_Utils_FakeJoomlaSession('CIVISCRIPT'));
     $user = new \JUser($userId);
     $session = \JFactory::getSession();
     $session->set('user', $user);
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index 36b1865e74..09efb77408 100644
--- a/civicrm/ext/authx/info.xml
+++ b/civicrm/ext/authx/info.xml
@@ -14,14 +14,14 @@
     <url desc="Issues">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>AuthX enables remote applications to connect to CiviCRM. Use it to enable and disable different forms of authentication (such as username-password, API key, and/or JWT).</comments>
   <classloader>
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php
new file mode 100644
index 0000000000..6348257493
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php
@@ -0,0 +1,387 @@
+<?php
+
+namespace Civi\Authx;
+
+use Civi\Test\EndToEndInterface;
+use Civi\Test\HttpTestTrait;
+use GuzzleHttp\Psr7\AppendStream;
+use GuzzleHttp\Psr7\Request;
+use GuzzleHttp\Psr7\Uri;
+use Psr\Http\Message\ResponseInterface;
+use function GuzzleHttp\Psr7\stream_for;
+
+class AbstractFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterface {
+
+  use HttpTestTrait;
+
+  /**
+   * Backup copy of the original settings.
+   *
+   * @var array
+   */
+  protected $settingsBackup;
+
+  /**
+   * List of CMS-dependent quirks that should be ignored during testing.
+   * @var array
+   */
+  protected $quirks = [];
+
+  public static function setUpBeforeClass(): void {
+    \Civi\Test::e2e()
+      ->installMe(__DIR__)
+      ->callback(
+        function() {
+          \CRM_Utils_System::synchronizeUsers();
+        },
+        'synchronizeUsers'
+      )
+      ->apply();
+  }
+
+  public function setUp(): void {
+    $this->quirks = $this->findQuirks();
+
+    parent::setUp();
+    $this->settingsBackup = [];
+    foreach (\Civi\Authx\Meta::getFlowTypes() as $flowType) {
+      foreach (["authx_{$flowType}_cred", "authx_{$flowType}_user", "authx_guards"] as $setting) {
+        $this->settingsBackup[$setting] = \Civi::settings()->get($setting);
+      }
+    }
+
+    \Civi::settings()->set('authx_guards', []);
+  }
+
+  public function tearDown(): void {
+    foreach ($this->settingsBackup as $setting => $value) {
+      \Civi::settings()->set($setting, $value);
+    }
+    parent::tearDown();
+  }
+
+  public function getCredTypes() {
+    $exs = [];
+    $exs[] = ['pass'];
+    $exs[] = ['api_key'];
+    $exs[] = ['jwt'];
+    return $exs;
+  }
+
+  public function getFlowTypes() {
+    $exs = [];
+    $exs[] = ['param'];
+    $exs[] = ['header'];
+    $exs[] = ['xheader'];
+    return $exs;
+  }
+
+  /**
+   * Apply authentication options to a prepared HTTP request.
+   *
+   * @param \Psr\Http\Message\RequestInterface $request
+   *   The original HTTP request (without any authentication options).
+   * @param string $credType
+   *   Ex: 'pass', 'jwt', 'api_key'
+   * @param string $flowType
+   *   Ex: 'param', 'header', 'xheader'
+   * @param int $cid
+   *   Authenticate as a specific contact (contact ID#).
+   * @return \Psr\Http\Message\RequestInterface
+   *   The new HTTP request (with authentication options).
+   */
+  protected function applyAuth($request, $credType, $flowType, $cid) {
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    return $this->$flowFunc($request, $this->$credFunc($cid));
+  }
+
+  // ------------------------------------------------
+  // Library: Base requests
+
+  /**
+   * Make an AJAX request with info about the current contact.
+   *
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function requestMyContact() {
+    $p = (['where' => [['id', '=', 'user_contact_id']]]);
+    $uri = (new Uri('civicrm/authx/id'))
+      ->withQuery('params=' . urlencode(json_encode($p)));
+    $req = new Request('GET', $uri);
+    return $req;
+  }
+
+  /**
+   * Assert the AJAX response provided the expected contact.
+   *
+   * @param int $cid
+   *   The expected contact ID
+   * @param int|null $uid
+   *   The expected user ID
+   * @param string $credType
+   * @param string $flow
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  public function assertMyContact($cid, $uid, $credType, $flow, ResponseInterface $response): void {
+    $this->assertContentType('application/json', $response);
+    $this->assertStatusCode(200, $response);
+    $j = json_decode((string) $response->getBody(), 1);
+    $formattedFailure = $this->formatFailure($response);
+    $this->assertEquals($cid, $j['contact_id'], "Response did not give expected contact ID\n" . $formattedFailure);
+    $this->assertEquals($uid, $j['user_id'], "Response did not give expected user ID\n" . $formattedFailure);
+    if ($flow !== NULL) {
+      $this->assertEquals($flow, $j['flow'], "Response did not give expected flow type\n" . $formattedFailure);
+    }
+    if ($credType !== NULL) {
+      $this->assertEquals($credType, $j['cred'], "Response did not give expected cred type\n" . $formattedFailure);
+    }
+  }
+
+  /**
+   * Assert the AJAX request provided empty contact information
+   *
+   * @param \Psr\Http\Message\ResponseInterface $response
+   * @param string $additionalMessage
+   */
+  public function assertAnonymousContact(ResponseInterface $response, $additionalMessage = ''): void {
+    $formattedFailure = $this->formatFailure($response);
+    $this->assertContentType('application/json', $response);
+    $this->assertStatusCode(200, $response);
+    $j = json_decode((string) $response->getBody(), 1);
+    if (json_last_error() !== JSON_ERROR_NONE || empty($j)) {
+      $this->fail('Malformed JSON' . $formattedFailure);
+    }
+    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure . ' ' . $additionalMessage);
+    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure . ' ' . $additionalMessage);
+  }
+
+  /**
+   * Assert that the $response indicates the user cannot view the dashboard.
+   *
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  public function assertDashboardUnauthorized($response = NULL): void {
+    $response = $this->resolveResponse($response);
+    if (!in_array('authErrorShowsForm', $this->quirks)) {
+      $this->assertStatusCode(403, $response);
+    }
+    $this->assertFalse(
+      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
+      'Response should not contain a dashboard' . $this->formatFailure($response)
+    );
+  }
+
+  public function assertDashboardOk($response = NULL): void {
+    $response = $this->resolveResponse($response);
+    $this->assertStatusCode(200, $response);
+    $this->assertContentType('text/html', $response);
+    // If the first two assertions pass but the next fails, then... perhaps the
+    // local site permissions are wrong?
+    $this->assertTrue(
+      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
+      'Response should contain a dashboard' . $this->formatFailure($response)
+    );
+  }
+
+  // ------------------------------------------------
+  // Library: Flow functions
+
+  /**
+   * Add query parameter ("&_authx=<CRED>").
+   *
+   * @param \GuzzleHttp\Psr7\Request $request
+   * @param string $cred
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function authParam(Request $request, $cred) {
+    $query = $request->getUri()->getQuery();
+    return $request->withUri(
+      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred))
+    );
+  }
+
+  /**
+   * Add query parameter ("&_authx=<CRED>&_authxSes=1").
+   *
+   * @param \GuzzleHttp\Psr7\Request $request
+   * @param string $cred
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function authAuto(Request $request, $cred) {
+    $query = $request->getUri()->getQuery();
+    return $request->withUri(
+      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred) . '&_authxSes=1')
+    );
+  }
+
+  public function authLogin(Request $request, $cred) {
+    return $request->withMethod('POST')
+      ->withBody(new AppendStream([
+        stream_for('_authx=' . urlencode($cred) . '&'),
+        $request->getBody(),
+      ]));
+  }
+
+  public function authHeader(Request $request, $cred) {
+    return $request->withHeader('Authorization', $cred);
+  }
+
+  public function authXHeader(Request $request, $cred) {
+    return $request->withHeader('X-Civi-Auth', $cred);
+  }
+
+  public function authNone(Request $request, $cred) {
+    return $request;
+  }
+
+  // ------------------------------------------------
+  // Library: Credential functions
+
+  /**
+   * @param int $cid
+   * @return string
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   */
+  public function credPass($cid) {
+    if ($cid === $this->getDemoCID()) {
+      return 'Basic ' . base64_encode($GLOBALS['_CV']['DEMO_USER'] . ':' . $GLOBALS['_CV']['DEMO_PASS']);
+    }
+    else {
+      $this->fail("This test does have the password the requested contact.");
+    }
+  }
+
+  public function credApikey($cid) {
+    $api_key = md5(\random_bytes(16));
+    \civicrm_api3('Contact', 'create', [
+      'id' => $cid,
+      'api_key' => $api_key,
+    ]);
+    return 'Bearer ' . $api_key;
+  }
+
+  public function credJwt($cid, $expired = FALSE) {
+    if (empty(\Civi::service('crypto.registry')->findKeysByTag('SIGN'))) {
+      $this->markTestIncomplete('Cannot test JWT. No CIVICRM_SIGN_KEYS are defined.');
+    }
+    $token = \Civi::service('crypto.jwt')->encode([
+      'exp' => $expired ? time() - 60 * 60 : time() + 60 * 60,
+      'sub' => "cid:$cid",
+      'scope' => 'authx',
+    ]);
+    return 'Bearer ' . $token;
+  }
+
+  public function credNone($cid) {
+    return NULL;
+  }
+
+  /**
+   * Assert that a request was not authenticated.
+   *
+   * @param string $mode
+   *   Expect that the  'prohibited' or 'anon'
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertNotAuthenticated(string $mode, $response) {
+    switch ($mode) {
+      case 'anon':
+        $this->assertAnonymousContact($response);
+        break;
+
+      case 'prohibit':
+        $this->assertFailedDueToProhibition($response);
+        break;
+
+      default:
+        throw new \RuntimeException("Invalid option: mode=$mode");
+    }
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertFailedDueToProhibition($response): void {
+    $this->assertBodyRegexp(';HTTP 401;', $response);
+    $this->assertContentType('text/plain', $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+    $this->assertStatusCode(401, $response);
+
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertNoCookies($response = NULL) {
+    $response = $this->resolveResponse($response);
+    $this->assertEmpty(
+      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
+      'Response should not have cookies' . $this->formatFailure($response)
+    );
+    return $this;
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertHasCookies($response = NULL) {
+    $response = $this->resolveResponse($response);
+    $this->assertNotEmpty(
+      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
+      'Response should have cookies' . $this->formatFailure($response)
+    );
+    return $this;
+  }
+
+  /**
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDemoCID(): int {
+    if (!isset(\Civi::$statics[__CLASS__]['demoId'])) {
+      \Civi::$statics[__CLASS__]['demoId'] = (int) \civicrm_api3('Contact', 'getvalue', [
+        'id' => '@user:' . $GLOBALS['_CV']['DEMO_USER'],
+        'return' => 'id',
+      ]);
+    }
+    return \Civi::$statics[__CLASS__]['demoId'];
+  }
+
+  protected function getDemoUID(): int {
+    return \CRM_Core_Config::singleton()->userSystem->getUfId($GLOBALS['_CV']['DEMO_USER']);
+  }
+
+  public function getLebowskiCID() {
+    if (!isset(\Civi::$statics[__CLASS__]['lebowskiCID'])) {
+      $contact = \civicrm_api3('Contact', 'create', [
+        'contact_type' => 'Individual',
+        'first_name' => 'Jeffrey',
+        'last_name' => 'Lebowski',
+        'external_identifier' => __CLASS__,
+        'options' => [
+          'match' => 'external_identifier',
+        ],
+      ]);
+      \Civi::$statics[__CLASS__]['lebowskiCID'] = $contact['id'];
+    }
+    return \Civi::$statics[__CLASS__]['lebowskiCID'];
+  }
+
+  /**
+   * @return array|string[]
+   */
+  protected function findQuirks(): array {
+    $quirks = [
+      'Joomla' => ['sendsExcessCookies', 'authErrorShowsForm'],
+      'WordPress' => ['sendsExcessCookies'],
+      'Standalone' => ['sendsExcessCookies'],
+    ];
+    return $quirks[CIVICRM_UF] ?? [];
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
deleted file mode 100644
index f02d987211..0000000000
--- a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
+++ /dev/null
@@ -1,943 +0,0 @@
-<?php
-
-namespace Civi\Authx;
-
-use Civi\Pipe\BasicPipeClient;
-use Civi\Pipe\JsonRpcMethodException;
-use Civi\Test\HttpTestTrait;
-use CRM_Authx_ExtensionUtil as E;
-use Civi\Test\EndToEndInterface;
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Psr7\AppendStream;
-use GuzzleHttp\Psr7\Request;
-use GuzzleHttp\Psr7\Uri;
-use Psr\Http\Message\ResponseInterface;
-use function GuzzleHttp\Psr7\stream_for;
-
-/**
- * This is a matrix-style test which assesses all supported permutations of
- *
- * @group e2e
- */
-class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterface {
-
-  use HttpTestTrait;
-
-  /**
-   * Backup copy of the original settings.
-   *
-   * @var array
-   */
-  protected $settingsBackup;
-
-  /**
-   * List of CMS-dependent quirks that should be ignored during testing.
-   * @var array
-   */
-  protected $quirks = [];
-
-  public static function setUpBeforeClass(): void {
-    \Civi\Test::e2e()
-      ->installMe(__DIR__)
-      ->callback(
-        function() {
-          \CRM_Utils_System::synchronizeUsers();
-        },
-        'synchronizeUsers'
-      )
-      ->apply();
-  }
-
-  public function setUp(): void {
-    $quirks = [
-      'Joomla' => ['sendsExcessCookies', 'authErrorShowsForm'],
-      'WordPress' => ['sendsExcessCookies'],
-    ];
-    $this->quirks = $quirks[CIVICRM_UF] ?? [];
-
-    parent::setUp();
-    $this->settingsBackup = [];
-    foreach (\Civi\Authx\Meta::getFlowTypes() as $flowType) {
-      foreach (["authx_{$flowType}_cred", "authx_{$flowType}_user", "authx_guards"] as $setting) {
-        $this->settingsBackup[$setting] = \Civi::settings()->get($setting);
-      }
-    }
-
-    \Civi::settings()->set('authx_guards', []);
-  }
-
-  public function tearDown(): void {
-    foreach ($this->settingsBackup as $setting => $value) {
-      \Civi::settings()->set($setting, $value);
-    }
-    parent::tearDown();
-  }
-
-  public function getStatelessExamples() {
-    $exs = [];
-    $exs[] = ['pass', 'param'];
-    $exs[] = ['pass', 'header'];
-    $exs[] = ['pass', 'xheader'];
-    $exs[] = ['api_key', 'param'];
-    $exs[] = ['api_key', 'header'];
-    $exs[] = ['api_key', 'xheader'];
-    $exs[] = ['jwt', 'param'];
-    $exs[] = ['jwt', 'header'];
-    $exs[] = ['jwt', 'xheader'];
-    return $exs;
-  }
-
-  public function getCredTypes() {
-    $exs = [];
-    $exs[] = ['pass'];
-    $exs[] = ['api_key'];
-    $exs[] = ['jwt'];
-    return $exs;
-  }
-
-  public function getFlowTypes() {
-    $exs = [];
-    $exs[] = ['param'];
-    $exs[] = ['header'];
-    $exs[] = ['xheader'];
-    return $exs;
-  }
-
-  public function testAnonymous(): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->requestMyContact();
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-  }
-
-  /**
-   * Send a request using a stateless protocol. Assert that identities are setup correctly.
-   *
-   * @param string $credType
-   *   The type of credential to put in the `Authorization:` header.
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getStatelessExamples
-   */
-  public function testStatelessContactOnly($credType, $flowType): void {
-    if ($credType === 'pass') {
-      $this->assertTrue(TRUE, 'No need to test password credentials with non-user contacts');
-      return;
-    }
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getLebowskiCID());
-
-    // Phase 1: Request fails if this credential type is not enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getLebowskiCID(), NULL, $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Send a request using a stateless protocol. Assert that identities are setup correctly.
-   *
-   * @param string $credType
-   *   The type of credential to put in the `Authorization:` header.
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getStatelessExamples
-   */
-  public function testStatelessUserContact($credType, $flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    // Phase 1: Request fails if this credential type is not enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Send a request using a jwt that can't be decoded at all. Assert that it fails
-   *
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   *
-   * @dataProvider getFlowTypes
-   */
-  public function testInvalidJwt($flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    $cred = $this->credJwt('Bearer thisisnotavalidjwt');
-
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->$flowFunc($this->requestMyContact(), $cred);
-
-    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated('prohibit', $response);
-  }
-
-  /**
-   * Send a request using a jwt that has expired. Assert that it fails
-   *
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   *
-   * @dataProvider getFlowTypes
-   */
-  public function testExpiredJwt($flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    $cred = $this->credJwt($this->getDemoCID(), TRUE);
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->$flowFunc($this->requestMyContact(), $cred);
-
-    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated('prohibit', $response);
-  }
-
-  /**
-   * The setting "authx_guard" may be used to require (or not require) the site_key.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testStatelessGuardSiteKey() {
-    if (!defined('CIVICRM_SITE_KEY')) {
-      $this->markTestIncomplete("Cannot run test without CIVICRM_SITE_KEY");
-    }
-
-    [$credType, $flowType] = ['pass', 'header'];
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    // Request OK. Policy requires site_key, and we have one.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request->withHeader('X-Civi-Key', CIVICRM_SITE_KEY));
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // Request OK. Policy does not require site_key, and we do not have one
-    \Civi::settings()->set("authx_guards", []);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // Request fails. Policy requires site_key, but we don't have the wrong value.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request->withHeader('X-Civi-Key', 'not-the-site-key'));
-    $this->assertFailedDueToProhibition($response);
-
-    // Request fails. Policy requires site_key, but we don't have one.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * The login flow allows you use 'civicrm/authx/login' and 'civicrm/authx/logout'
-   * to setup/teardown a session.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulLoginAllowed($credType): void {
-    $flowType = 'login';
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-
-    // Phase 1: Some pages are not accessible.
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    $http->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    $this->assertHasCookies($response);
-
-    // Phase 3: We can use cookies to request other pages
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    $response = $http->get('civicrm/user');
-    $this->assertDashboardOk();
-
-    // Phase 4: After logout, requests should fail.
-    $oldCookies = clone $cookieJar;
-    $http->get('civicrm/authx/logout');
-    $this->assertStatusCode(200);
-    $http->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-
-    $httpHaxor = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $oldCookies]);
-    $httpHaxor->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-  }
-
-  /**
-   * The login flow 'civicrm/authx/login' may be prohibited by policy.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulLoginProhibited($credType): void {
-    $flowType = 'login';
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
-    ]);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * The auto-login flow allows you to request a specific page with specific
-   * credentials. The new session is setup, and the page is displayed.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulAutoAllowed($credType): void {
-    $flowType = 'auto';
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $this->assertEquals(0, $cookieJar->count());
-    $response = $http->send($request);
-    $this->assertTrue($cookieJar->count() >= 1);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // FIXME: Assert that re-using cookies yields correct result.
-  }
-
-  /**
-   * The auto-login flow allows you to request a specific page with specific
-   * credentials. The new session is setup, and the page is displayed.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulAutoProhibited($credType): void {
-    $flowType = 'auto';
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * Create a session for $demoCID. Within the session, make a single
-   * stateless request as $lebowskiCID.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testStatefulStatelessOverlap(): void {
-    \Civi::settings()->set("authx_login_cred", ['api_key']);
-    \Civi::settings()->set("authx_header_cred", ['api_key']);
-
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    // Phase 1: Login, create a session.
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->credApikey($this->getDemoCID())],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-    $this->assertHasCookies($response);
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-
-    // Phase 2: Make a single, stateless request with different creds
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-    // The following assertion merely identifies current behavior. If you can get it working generally, then huzza.
-    $this->assertBodyRegexp(';Session already active;', $response);
-    // $this->assertMyContact($this->getLebowskiCID(), NULL, $response);
-    // $this->assertNoCookies($response);
-
-    // Phase 3: Original session is still valid
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-  }
-
-  /**
-   * Suppose a deployment has two layers of authorization:
-   *
-   * (1) a generic/site-wide HTTP restriction (perhaps enforced by a reverse proxy)
-   * (2) anything/everything else (CMS/login-form/parameter/X-Civi-Auth stuff).
-   *
-   * Layer (1) has an `Authorization:` header that should be ignored by `authx`.
-   *
-   * This test submits both layer (1) and layer (2) credentials and ensures that authx respects
-   * the layer (2).
-   */
-  public function testIgnoredHeaderAuthorization() {
-    // We may submit some other credential - it will be used.
-    $flowType = 'param';
-    $credType = 'api_key';
-
-    \Civi::settings()->set("authx_header_cred", []);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    // We submit both the irrelevant `Authorization:` and the relevant `?_authx=...` (DemoCID).
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $request = $this->applyAuth($request, $credType, $flowType, $this->getDemoCID());
-    // $request = $request->withAddedHeader('Authorization', $irrelevantAuthorization);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Similar to testIgnoredHeaderAuthorization(), but the Civi/CMS user is anonymous.
-   */
-  public function testIgnoredHeaderAuthorization_anon() {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-
-    // Variant 1: The `Authorization:` header is ignored (even if the content is totally fake/inauthentic).
-    \Civi::settings()->set("authx_header_cred", []);
-    $request = $this->requestMyContact()->withAddedHeader('Authorization', 'Basic ' . base64_encode("not:real"));
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-
-    // Variant 2: The `Authorization:` header is ignored (even if the content is sorta-real-ish for LebowskiCID).
-    \Civi::settings()->set("authx_header_cred", []);
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-  }
-
-  /**
-   * This consumer intends to make stateless requests with a handful of different identities,
-   * but their browser happens to be cookie-enabled. Ensure that identities do not leak between requests.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testMultipleStateless(): void {
-    \Civi::settings()->set("authx_header_cred", ['api_key']);
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-
-    // Alternate calls among (A)nonymous, (D)emo, and (L)ebowski
-    $planSteps = 'LADA LDLD DDLLAA';
-    $actualSteps = '';
-
-    for ($i = 0; $i < strlen($planSteps); $i++) {
-      switch ($planSteps[$i]) {
-        case 'L':
-          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-          $response = $http->send($request);
-          $this->assertMyContact($this->getLebowskiCID(), NULL, 'api_key', 'header', $response, 'Expected Lebowski in step #' . $i);
-          $actualSteps .= 'L';
-          break;
-
-        case 'A':
-          $request = $this->requestMyContact();
-          $response = $http->send($request);
-          $this->assertAnonymousContact($response, 'Expected Anonymous Contact in step #' . $i);
-          $actualSteps .= 'A';
-          break;
-
-        case 'D':
-          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getDemoCID());
-          $response = $http->send($request);
-          $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'header', $response, 'Expected demo in step #' . $i);
-          $actualSteps .= 'D';
-          break;
-
-        case ' ':
-          $actualSteps .= ' ';
-          break;
-
-        default:
-          $this->fail('Unrecognized step #' . $i);
-      }
-    }
-
-    $this->assertEquals($actualSteps, $planSteps);
-  }
-
-  /**
-   * Civi's test suite includes middleware that will add JWT tokens to outgoing requests.
-   *
-   * This test tries a few permutations with different principals ("demo", "Lebowski"),
-   * different identifier fields (authx_user, authx_contact_id), and different
-   * flows (param/header/xheader).
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testJwtMiddleware() {
-    \Civi::settings()->revert("authx_param_cred");
-
-    // HTTP GET with a specific user. Choose flow automatically.
-    $response = $this->createGuzzle()->get('civicrm/authx/id', [
-      'authx_user' => $GLOBALS['_CV']['DEMO_USER'],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
-
-    // HTTP GET with a specific contact. Choose flow automatically.
-    $response = $this->createGuzzle()->get('civicrm/authx/id', [
-      'authx_contact_id' => $this->getDemoCID(),
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
-
-    // HTTP POST with a specific contact. Per-client default.
-    $response = $this->createGuzzle([
-      'authx_contact_id' => $this->getLebowskiCID(),
-    ])->post('civicrm/authx/id');
-    $this->assertMyContact($this->getLebowskiCID(), NULL, 'jwt', 'param', $response);
-
-    // Using explicit flow options...
-    foreach (['param', 'xheader', 'header'] as $flowType) {
-      \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-      $response = $this->createGuzzle()->get('civicrm/authx/id', [
-        'authx_contact_id' => $this->getDemoCID(),
-        'authx_flow' => $flowType,
-      ]);
-      $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', $flowType, $response);
-    }
-  }
-
-  /**
-   * The internal API `authx_login()` should be used by background services to set the active user.
-   *
-   * To test this, we call `cv ev 'authx_login(...);'` and check the resulting identity.
-   *
-   * @throws \CRM_Core_Exception
-   */
-  public function testCliServiceLogin() {
-    $withCv = function($phpStmt) {
-      $cmd = strtr('cv ev -v @PHP', ['@PHP' => escapeshellarg($phpStmt)]);
-      exec($cmd, $output, $val);
-      $fullOutput = implode("\n", $output);
-      $this->assertEquals(0, $val, "Command returned error ($cmd) ($val):\n\"$fullOutput\"");
-      return json_decode($fullOutput, TRUE);
-    };
-
-    $principals = [
-      'contactId' => $this->getDemoCID(),
-      'userId' => $this->getDemoUID(),
-      'user' => $GLOBALS['_CV']['DEMO_USER'],
-    ];
-    foreach ($principals as $principalField => $principalValue) {
-      $msg = "Logged in with $principalField=$principalValue. We should see this user as authenticated.";
-
-      $loginArgs = ['principal' => [$principalField => $principalValue]];
-      $report = $withCv(sprintf('return authx_login(%s);', var_export($loginArgs, 1)));
-      $this->assertEquals($this->getDemoCID(), $report['contactId'], $msg);
-      $this->assertEquals($this->getDemoUID(), $report['userId'], $msg);
-      $this->assertEquals('script', $report['flow'], $msg);
-      $this->assertEquals('assigned', $report['credType'], $msg);
-      $this->assertEquals(FALSE, $report['useSession'], $msg);
-    }
-
-    $invalidPrincipals = [
-      ['contactId', 999999, AuthxException::CLASS, ';Contact ID 999999 is invalid;'],
-      ['userId', 999999, AuthxException::CLASS, ';Cannot login. Failed to determine contact ID.;'],
-      ['user', 'randuser' . mt_rand(0, 32767), AuthxException::CLASS, ';Must specify principal with valid user, userId, or contactId;'],
-    ];
-    foreach ($invalidPrincipals as $invalidPrincipal) {
-      [$principalField, $principalValue, $expectExceptionClass, $expectExceptionMessage] = $invalidPrincipal;
-
-      $loginArgs = ['principal' => [$principalField => $principalValue]];
-      $report = $withCv(sprintf('try { return authx_login(%s); } catch (Exception $e) { return [get_class($e), $e->getMessage()]; }', var_export($loginArgs, 1)));
-      $this->assertTrue(isset($report[0], $report[1]), "authx_login() should fail with invalid credentials ($principalField=>$principalValue). Received array: " . json_encode($report));
-      $this->assertMatchesRegularExpression($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception.");
-      $this->assertEquals($expectExceptionClass, $report[0], "Invalid principal ($principalField=>$principalValue) should generate exception.");
-    }
-  }
-
-  public function testCliPipeTrustedLogin() {
-    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("tl");\'');
-    $this->assertEquals('trusted', $rpc->getWelcome()['t']);
-    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
-
-    $login = $rpc->call('login', ['userId' => $this->getDemoUID()]);
-    $this->assertEquals($this->getDemoCID(), $login['contactId']);
-    $this->assertEquals($this->getDemoUID(), $login['userId']);
-
-    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
-    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
-  }
-
-  public function testCliPipeUntrustedLogin() {
-    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("ul");\'');
-    $this->assertEquals('untrusted', $rpc->getWelcome()['u']);
-    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
-
-    try {
-      $rpc->call('login', ['userId' => $this->getDemoUID()]);
-      $this->fail('Untrusted sessions should require authentication credentials');
-    }
-    catch (JsonRpcMethodException $e) {
-      $this->assertMatchesRegularExpression(';not trusted;', $e->getMessage());
-    }
-
-    $login = $rpc->call('login', ['cred' => $this->credJwt($this->getDemoCID())]);
-    $this->assertEquals($this->getDemoCID(), $login['contactId']);
-    $this->assertEquals($this->getDemoUID(), $login['userId']);
-
-    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
-    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
-  }
-
-  /**
-   * Filter a request, applying the given authentication options
-   *
-   * @param \Psr\Http\Message\RequestInterface $request
-   * @param string $credType
-   *   Ex: 'pass', 'jwt', 'api_key'
-   * @param string $flowType
-   *   Ex: 'param', 'header', 'xheader'
-   * @param int $cid
-   * @return \Psr\Http\Message\RequestInterface
-   */
-  protected function applyAuth($request, $credType, $flowType, $cid) {
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    return $this->$flowFunc($request, $this->$credFunc($cid));
-  }
-
-  // ------------------------------------------------
-  // Library: Base requests
-
-  /**
-   * Make an AJAX request with info about the current contact.
-   *
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function requestMyContact() {
-    $p = (['where' => [['id', '=', 'user_contact_id']]]);
-    $uri = (new Uri('civicrm/authx/id'))
-      ->withQuery('params=' . urlencode(json_encode($p)));
-    $req = new Request('GET', $uri);
-    return $req;
-  }
-
-  /**
-   * Assert the AJAX request provided the expected contact.
-   *
-   * @param int $cid
-   *   The expected contact ID
-   * @param int|null $uid
-   *   The expected user ID
-   * @param string $credType
-   * @param string $flow
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  public function assertMyContact($cid, $uid, $credType, $flow, ResponseInterface $response): void {
-    $this->assertContentType('application/json', $response);
-    $this->assertStatusCode(200, $response);
-    $j = json_decode((string) $response->getBody(), 1);
-    $formattedFailure = $this->formatFailure($response);
-    $this->assertEquals($cid, $j['contact_id'], "Response did not give expected contact ID\n" . $formattedFailure);
-    $this->assertEquals($uid, $j['user_id'], "Response did not give expected user ID\n" . $formattedFailure);
-    if ($flow !== NULL) {
-      $this->assertEquals($flow, $j['flow'], "Response did not give expected flow type\n" . $formattedFailure);
-    }
-    if ($credType !== NULL) {
-      $this->assertEquals($credType, $j['cred'], "Response did not give expected cred type\n" . $formattedFailure);
-    }
-  }
-
-  /**
-   * Assert the AJAX request provided empty contact information
-   *
-   * @param \Psr\Http\Message\ResponseInterface $response
-   * @param string $additionalMessage
-   */
-  public function assertAnonymousContact(ResponseInterface $response, $additionalMessage = ''): void {
-    $formattedFailure = $this->formatFailure($response);
-    $this->assertContentType('application/json', $response);
-    $this->assertStatusCode(200, $response);
-    $j = json_decode((string) $response->getBody(), 1);
-    if (json_last_error() !== JSON_ERROR_NONE || empty($j)) {
-      $this->fail('Malformed JSON' . $formattedFailure);
-    }
-    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure . ' ' . $additionalMessage);
-    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure . ' ' . $additionalMessage);
-  }
-
-  /**
-   * Assert that the $response indicates the user cannot view the dashboard.
-   *
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  public function assertDashboardUnauthorized($response = NULL): void {
-    $response = $this->resolveResponse($response);
-    if (!in_array('authErrorShowsForm', $this->quirks)) {
-      $this->assertStatusCode(403, $response);
-    }
-    $this->assertFalse(
-      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
-      'Response should not contain a dashboard' . $this->formatFailure($response)
-    );
-  }
-
-  public function assertDashboardOk($response = NULL): void {
-    $response = $this->resolveResponse($response);
-    $this->assertStatusCode(200, $response);
-    $this->assertContentType('text/html', $response);
-    // If the first two assertions pass but the next fails, then... perhaps the
-    // local site permissions are wrong?
-    $this->assertTrue(
-      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
-      'Response should contain a dashboard' . $this->formatFailure($response)
-    );
-  }
-
-  // ------------------------------------------------
-  // Library: Flow functions
-
-  /**
-   * Add query parameter ("&_authx=<CRED>").
-   *
-   * @param \GuzzleHttp\Psr7\Request $request
-   * @param string $cred
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function authParam(Request $request, $cred) {
-    $query = $request->getUri()->getQuery();
-    return $request->withUri(
-      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred))
-    );
-  }
-
-  /**
-   * Add query parameter ("&_authx=<CRED>&_authxSes=1").
-   *
-   * @param \GuzzleHttp\Psr7\Request $request
-   * @param string $cred
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function authAuto(Request $request, $cred) {
-    $query = $request->getUri()->getQuery();
-    return $request->withUri(
-      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred) . '&_authxSes=1')
-    );
-  }
-
-  public function authLogin(Request $request, $cred) {
-    return $request->withMethod('POST')
-      ->withBody(new AppendStream([
-        stream_for('_authx=' . urlencode($cred) . '&'),
-        $request->getBody(),
-      ]));
-  }
-
-  public function authHeader(Request $request, $cred) {
-    return $request->withHeader('Authorization', $cred);
-  }
-
-  public function authXHeader(Request $request, $cred) {
-    return $request->withHeader('X-Civi-Auth', $cred);
-  }
-
-  public function authNone(Request $request, $cred) {
-    return $request;
-  }
-
-  // ------------------------------------------------
-  // Library: Credential functions
-
-  /**
-   * @param int $cid
-   * @return string
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   */
-  public function credPass($cid) {
-    if ($cid === $this->getDemoCID()) {
-      return 'Basic ' . base64_encode($GLOBALS['_CV']['DEMO_USER'] . ':' . $GLOBALS['_CV']['DEMO_PASS']);
-    }
-    else {
-      $this->fail("This test does have the password the requested contact.");
-    }
-  }
-
-  public function credApikey($cid) {
-    $api_key = md5(\random_bytes(16));
-    \civicrm_api3('Contact', 'create', [
-      'id' => $cid,
-      'api_key' => $api_key,
-    ]);
-    return 'Bearer ' . $api_key;
-  }
-
-  public function credJwt($cid, $expired = FALSE) {
-    if (empty(\Civi::service('crypto.registry')->findKeysByTag('SIGN'))) {
-      $this->markTestIncomplete('Cannot test JWT. No CIVICRM_SIGN_KEYS are defined.');
-    }
-    $token = \Civi::service('crypto.jwt')->encode([
-      'exp' => $expired ? time() - 60 * 60 : time() + 60 * 60,
-      'sub' => "cid:$cid",
-      'scope' => 'authx',
-    ]);
-    return 'Bearer ' . $token;
-  }
-
-  public function credNone($cid) {
-    return NULL;
-  }
-
-  /**
-   * Assert that a request was not authenticated.
-   *
-   * @param string $mode
-   *   Expect that the  'prohibited' or 'anon'
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertNotAuthenticated(string $mode, $response) {
-    switch ($mode) {
-      case 'anon':
-        $this->assertAnonymousContact($response);
-        break;
-
-      case 'prohibit':
-        $this->assertFailedDueToProhibition($response);
-        break;
-
-      default:
-        throw new \RuntimeException("Invalid option: mode=$mode");
-    }
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertFailedDueToProhibition($response): void {
-    $this->assertBodyRegexp(';HTTP 401;', $response);
-    $this->assertContentType('text/plain', $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-    $this->assertStatusCode(401, $response);
-
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertNoCookies($response = NULL) {
-    $response = $this->resolveResponse($response);
-    $this->assertEmpty(
-      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
-      'Response should not have cookies' . $this->formatFailure($response)
-    );
-    return $this;
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertHasCookies($response = NULL) {
-    $response = $this->resolveResponse($response);
-    $this->assertNotEmpty(
-      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
-      'Response should have cookies' . $this->formatFailure($response)
-    );
-    return $this;
-  }
-
-  /**
-   * @return int
-   * @throws \CRM_Core_Exception
-   */
-  private function getDemoCID(): int {
-    if (!isset(\Civi::$statics[__CLASS__]['demoId'])) {
-      \Civi::$statics[__CLASS__]['demoId'] = (int) \civicrm_api3('Contact', 'getvalue', [
-        'id' => '@user:' . $GLOBALS['_CV']['DEMO_USER'],
-        'return' => 'id',
-      ]);
-    }
-    return \Civi::$statics[__CLASS__]['demoId'];
-  }
-
-  private function getDemoUID(): int {
-    return \CRM_Core_Config::singleton()->userSystem->getUfId($GLOBALS['_CV']['DEMO_USER']);
-  }
-
-  public function getLebowskiCID() {
-    if (!isset(\Civi::$statics[__CLASS__]['lebowskiCID'])) {
-      $contact = \civicrm_api3('Contact', 'create', [
-        'contact_type' => 'Individual',
-        'first_name' => 'Jeffrey',
-        'last_name' => 'Lebowski',
-        'external_identifier' => __CLASS__,
-        'options' => [
-          'match' => 'external_identifier',
-        ],
-      ]);
-      \Civi::$statics[__CLASS__]['lebowskiCID'] = $contact['id'];
-    }
-    return \Civi::$statics[__CLASS__]['lebowskiCID'];
-  }
-
-}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php
new file mode 100644
index 0000000000..2521d658e3
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Civi\Authx;
+
+use Civi\Pipe\BasicPipeClient;
+use Civi\Pipe\JsonRpcMethodException;
+
+/**
+ * Send requests using customizable flows. These don't use standard HTTP requests.
+ * Instead, they may involve authentication by external/third-party agents.
+ *
+ * The APIs `authx_login()` and `Civi::pipe()` should be focal points for customized
+ * flows. To test them, we run them in separate subprocesses (`cv ev ...`)
+ *
+ * @group e2e
+ */
+class CustomFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * The internal API `authx_login()` should be used by background services to set the active user.
+   *
+   * To test this, we call `cv ev 'authx_login(...);'` and check the resulting identity.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function testCliServiceLogin() {
+    $withCv = function($phpStmt) {
+      $cmd = strtr('cv ev -v @PHP', ['@PHP' => escapeshellarg($phpStmt)]);
+      exec($cmd, $output, $val);
+      $fullOutput = implode("\n", $output);
+      $this->assertEquals(0, $val, "Command returned error ($cmd) ($val):\n\"$fullOutput\"");
+      return json_decode($fullOutput, TRUE);
+    };
+
+    $principals = [
+      'contactId' => $this->getDemoCID(),
+      'userId' => $this->getDemoUID(),
+      'user' => $GLOBALS['_CV']['DEMO_USER'],
+    ];
+    foreach ($principals as $principalField => $principalValue) {
+      $msg = "Logged in with $principalField=$principalValue. We should see this user as authenticated.";
+
+      $loginArgs = ['principal' => [$principalField => $principalValue]];
+      $report = $withCv(sprintf('return authx_login(%s);', var_export($loginArgs, 1)));
+      $this->assertEquals($this->getDemoCID(), $report['contactId'], $msg);
+      $this->assertEquals($this->getDemoUID(), $report['userId'], $msg);
+      $this->assertEquals('script', $report['flow'], $msg);
+      $this->assertEquals('assigned', $report['credType'], $msg);
+      $this->assertEquals(FALSE, $report['useSession'], $msg);
+    }
+
+    $invalidPrincipals = [
+      ['contactId', 999999, AuthxException::CLASS, ';Contact ID 999999 is invalid;'],
+      ['userId', 999999, AuthxException::CLASS, ';Cannot login. Failed to determine contact ID.;'],
+      ['user', 'randuser' . mt_rand(0, 32767), AuthxException::CLASS, ';Must specify principal with valid user, userId, or contactId;'],
+    ];
+    foreach ($invalidPrincipals as $invalidPrincipal) {
+      [$principalField, $principalValue, $expectExceptionClass, $expectExceptionMessage] = $invalidPrincipal;
+
+      $loginArgs = ['principal' => [$principalField => $principalValue]];
+      $report = $withCv(sprintf('try { return authx_login(%s); } catch (Exception $e) { return [get_class($e), $e->getMessage()]; }', var_export($loginArgs, 1)));
+      $this->assertTrue(isset($report[0], $report[1]), "authx_login() should fail with invalid credentials ($principalField=>$principalValue). Received array: " . json_encode($report));
+      $this->assertMatchesRegularExpression($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception.");
+      $this->assertEquals($expectExceptionClass, $report[0], "Invalid principal ($principalField=>$principalValue) should generate exception.");
+    }
+  }
+
+  public function testCliPipeTrustedLogin() {
+    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("tl");\'');
+    $this->assertEquals('trusted', $rpc->getWelcome()['t']);
+    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
+
+    $login = $rpc->call('login', ['userId' => $this->getDemoUID()]);
+    $this->assertEquals($this->getDemoCID(), $login['contactId']);
+    $this->assertEquals($this->getDemoUID(), $login['userId']);
+
+    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
+    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
+  }
+
+  public function testCliPipeUntrustedLogin() {
+    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("ul");\'');
+    $this->assertEquals('untrusted', $rpc->getWelcome()['u']);
+    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
+
+    try {
+      $rpc->call('login', ['userId' => $this->getDemoUID()]);
+      $this->fail('Untrusted sessions should require authentication credentials');
+    }
+    catch (JsonRpcMethodException $e) {
+      $this->assertMatchesRegularExpression(';not trusted;', $e->getMessage());
+    }
+
+    $login = $rpc->call('login', ['cred' => $this->credJwt($this->getDemoCID())]);
+    $this->assertEquals($this->getDemoCID(), $login['contactId']);
+    $this->assertEquals($this->getDemoUID(), $login['userId']);
+
+    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
+    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php
new file mode 100644
index 0000000000..701f9c60f5
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Civi\Authx;
+
+/**
+ * Check that JWT credentials work in the expected ways.
+ *
+ * @group e2e
+ */
+class JwtCredsTest extends AbstractFlowsTest {
+
+  /**
+   * Send a request using a jwt that can't be decoded at all. Assert that it fails
+   *
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   *
+   * @dataProvider getFlowTypes
+   */
+  public function testInvalidJwt($flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    $cred = $this->credJwt('Bearer thisisnotavalidjwt');
+
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->$flowFunc($this->requestMyContact(), $cred);
+
+    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated('prohibit', $response);
+  }
+
+  /**
+   * Send a request using a jwt that has expired. Assert that it fails
+   *
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   *
+   * @dataProvider getFlowTypes
+   */
+  public function testExpiredJwt($flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    $cred = $this->credJwt($this->getDemoCID(), TRUE);
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->$flowFunc($this->requestMyContact(), $cred);
+
+    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated('prohibit', $response);
+  }
+
+  /**
+   * Civi's test suite includes middleware that will add JWT tokens to outgoing requests.
+   *
+   * This test tries a few permutations with different principals ("demo", "Lebowski"),
+   * different identifier fields (authx_user, authx_contact_id), and different
+   * flows (param/header/xheader).
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testJwtMiddleware() {
+    \Civi::settings()->revert("authx_param_cred");
+
+    // HTTP GET with a specific user. Choose flow automatically.
+    $response = $this->createGuzzle()->get('civicrm/authx/id', [
+      'authx_user' => $GLOBALS['_CV']['DEMO_USER'],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
+
+    // HTTP GET with a specific contact. Choose flow automatically.
+    $response = $this->createGuzzle()->get('civicrm/authx/id', [
+      'authx_contact_id' => $this->getDemoCID(),
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
+
+    // HTTP POST with a specific contact. Per-client default.
+    $response = $this->createGuzzle([
+      'authx_contact_id' => $this->getLebowskiCID(),
+    ])->post('civicrm/authx/id');
+    $this->assertMyContact($this->getLebowskiCID(), NULL, 'jwt', 'param', $response);
+
+    // Using explicit flow options...
+    foreach (['param', 'xheader', 'header'] as $flowType) {
+      \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+      $response = $this->createGuzzle()->get('civicrm/authx/id', [
+        'authx_contact_id' => $this->getDemoCID(),
+        'authx_flow' => $flowType,
+      ]);
+      $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', $flowType, $response);
+    }
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php
new file mode 100644
index 0000000000..5df227de2b
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php
@@ -0,0 +1,166 @@
+<?php
+
+namespace Civi\Authx;
+
+use GuzzleHttp\Cookie\CookieJar;
+
+/**
+ * In the MixedFlowsTest, we assume that the basic flows work -- then step out to another level.
+ * What happens when different authentication behaviors get mixed-up/criss-crossed?
+ * For example:
+ *
+ * - What happens if you send several stateless requests as different users -- without realizing
+ *   that your HTTP client is actually tracking cookies? Are they truly stateless?
+ * - What happens if you send a mix of stateless and stateful requests for different users?
+ * - What happens if you mix `Authorization:` headers for authx with `Authorization:`
+ *   headers for another layer (HTTPD/CMS/proxy)?
+ *
+ * @group e2e
+ */
+class MixedFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * Create a session for $demoCID. Within the session, make a single
+   * stateless request as $lebowskiCID.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testStatefulStatelessOverlap(): void {
+    \Civi::settings()->set("authx_login_cred", ['api_key']);
+    \Civi::settings()->set("authx_header_cred", ['api_key']);
+
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    // Phase 1: Login, create a session.
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->credApikey($this->getDemoCID())],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+    $this->assertHasCookies($response);
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+
+    // Phase 2: Make a single, stateless request with different creds
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+    // The following assertion merely identifies current behavior. If you can get it working generally, then huzza.
+    $this->assertBodyRegexp(';Session already active;', $response);
+    // $this->assertMyContact($this->getLebowskiCID(), NULL, $response);
+    // $this->assertNoCookies($response);
+
+    // Phase 3: Original session is still valid
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+  }
+
+  /**
+   * This consumer intends to make stateless requests with a handful of different identities,
+   * but their browser happens to be cookie-enabled. Ensure that identities do not leak between requests.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testMultipleStateless(): void {
+    \Civi::settings()->set("authx_header_cred", ['api_key']);
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+
+    // Alternate calls among (A)nonymous, (D)emo, and (L)ebowski
+    $planSteps = 'LADA LDLD DDLLAA';
+    $actualSteps = '';
+
+    for ($i = 0; $i < strlen($planSteps); $i++) {
+      switch ($planSteps[$i]) {
+        case 'L':
+          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+          $response = $http->send($request);
+          $this->assertMyContact($this->getLebowskiCID(), NULL, 'api_key', 'header', $response, 'Expected Lebowski in step #' . $i);
+          $actualSteps .= 'L';
+          break;
+
+        case 'A':
+          $request = $this->requestMyContact();
+          $response = $http->send($request);
+          $this->assertAnonymousContact($response, 'Expected Anonymous Contact in step #' . $i);
+          $actualSteps .= 'A';
+          break;
+
+        case 'D':
+          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getDemoCID());
+          $response = $http->send($request);
+          $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'header', $response, 'Expected demo in step #' . $i);
+          $actualSteps .= 'D';
+          break;
+
+        case ' ':
+          $actualSteps .= ' ';
+          break;
+
+        default:
+          $this->fail('Unrecognized step #' . $i);
+      }
+    }
+
+    $this->assertEquals($actualSteps, $planSteps);
+  }
+
+  /**
+   * Suppose a deployment has two layers of authorization:
+   *
+   * (1) a generic/site-wide HTTP restriction (perhaps enforced by a reverse proxy)
+   * (2) anything/everything else (CMS/login-form/parameter/X-Civi-Auth stuff).
+   *
+   * Layer (1) has an `Authorization:` header that should be ignored by `authx`.
+   *
+   * This test submits both layer (1) and layer (2) credentials and ensures that authx respects
+   * the layer (2).
+   */
+  public function testIgnoredHeaderAuthorization() {
+    // We may submit some other credential - it will be used.
+    $flowType = 'param';
+    $credType = 'api_key';
+
+    \Civi::settings()->set("authx_header_cred", []);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    // We submit both the irrelevant `Authorization:` and the relevant `?_authx=...` (DemoCID).
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $request = $this->applyAuth($request, $credType, $flowType, $this->getDemoCID());
+    // $request = $request->withAddedHeader('Authorization', $irrelevantAuthorization);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * Similar to testIgnoredHeaderAuthorization(), but the Civi/CMS user is anonymous.
+   */
+  public function testIgnoredHeaderAuthorization_anon() {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+
+    // Variant 1: The `Authorization:` header is ignored (even if the content is totally fake/inauthentic).
+    \Civi::settings()->set("authx_header_cred", []);
+    $request = $this->requestMyContact()->withAddedHeader('Authorization', 'Basic ' . base64_encode("not:real"));
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+
+    // Variant 2: The `Authorization:` header is ignored (even if the content is sorta-real-ish for LebowskiCID).
+    \Civi::settings()->set("authx_header_cred", []);
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php
new file mode 100644
index 0000000000..ec00197b9b
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php
@@ -0,0 +1,132 @@
+<?php
+
+namespace Civi\Authx;
+
+use GuzzleHttp\Cookie\CookieJar;
+
+/**
+ * Send requests using stateful authentication mechanisms (such as `login`).
+ *
+ * @group e2e
+ */
+class StatefulFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * The login flow allows you use 'civicrm/authx/login' and 'civicrm/authx/logout'
+   * to setup/teardown a session.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulLoginAllowed($credType): void {
+    $flowType = 'login';
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+
+    // Phase 1: Some pages are not accessible.
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    $http->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    $this->assertHasCookies($response);
+
+    // Phase 3: We can use cookies to request other pages
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    $response = $http->get('civicrm/user');
+    $this->assertDashboardOk();
+
+    // Phase 4: After logout, requests should fail.
+    $oldCookies = clone $cookieJar;
+    $http->get('civicrm/authx/logout');
+    $this->assertStatusCode(200);
+    $http->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+
+    $httpHaxor = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $oldCookies]);
+    $httpHaxor->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+  }
+
+  /**
+   * The login flow 'civicrm/authx/login' may be prohibited by policy.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulLoginProhibited($credType): void {
+    $flowType = 'login';
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
+    ]);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+  /**
+   * The auto-login flow allows you to request a specific page with specific
+   * credentials. The new session is setup, and the page is displayed.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulAutoAllowed($credType): void {
+    $flowType = 'auto';
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $this->assertEquals(0, $cookieJar->count());
+    $response = $http->send($request);
+    $this->assertTrue($cookieJar->count() >= 1);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // FIXME: Assert that re-using cookies yields correct result.
+  }
+
+  /**
+   * The auto-login flow allows you to request a specific page with specific
+   * credentials. The new session is setup, and the page is displayed.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulAutoProhibited($credType): void {
+    $flowType = 'auto';
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php
new file mode 100644
index 0000000000..0e3bf8b540
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace Civi\Authx;
+
+/**
+ * Send requests using stateless authentication mechanisms (such as `header`, `xheader`, and
+ * `param`).
+ *
+ * @group e2e
+ */
+class StatelessFlowsTest extends AbstractFlowsTest {
+
+  public function getStatelessExamples() {
+    $exs = [];
+    $exs[] = ['pass', 'param'];
+    $exs[] = ['pass', 'header'];
+    $exs[] = ['pass', 'xheader'];
+    $exs[] = ['api_key', 'param'];
+    $exs[] = ['api_key', 'header'];
+    $exs[] = ['api_key', 'xheader'];
+    $exs[] = ['jwt', 'param'];
+    $exs[] = ['jwt', 'header'];
+    $exs[] = ['jwt', 'xheader'];
+    return $exs;
+  }
+
+  public function testAnonymous(): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->requestMyContact();
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+  }
+
+  /**
+   * Send a request using a stateless protocol. Assert that identities are setup correctly.
+   *
+   * @param string $credType
+   *   The type of credential to put in the `Authorization:` header.
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getStatelessExamples
+   */
+  public function testStatelessContactOnly($credType, $flowType): void {
+    if ($credType === 'pass') {
+      $this->assertTrue(TRUE, 'No need to test password credentials with non-user contacts');
+      return;
+    }
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getLebowskiCID());
+
+    // Phase 1: Request fails if this credential type is not enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getLebowskiCID(), NULL, $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * Send a request using a stateless protocol. Assert that identities are setup correctly.
+   *
+   * @param string $credType
+   *   The type of credential to put in the `Authorization:` header.
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getStatelessExamples
+   */
+  public function testStatelessUserContact($credType, $flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    // Phase 1: Request fails if this credential type is not enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * The setting "authx_guard" may be used to require (or not require) the site_key.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testStatelessGuardSiteKey() {
+    if (!defined('CIVICRM_SITE_KEY')) {
+      $this->markTestIncomplete("Cannot run test without CIVICRM_SITE_KEY");
+    }
+
+    [$credType, $flowType] = ['pass', 'header'];
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    // Request OK. Policy requires site_key, and we have one.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request->withHeader('X-Civi-Key', CIVICRM_SITE_KEY));
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // Request OK. Policy does not require site_key, and we do not have one
+    \Civi::settings()->set("authx_guards", []);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // Request fails. Policy requires site_key, but we don't have the wrong value.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request->withHeader('X-Civi-Key', 'not-the-site-key'));
+    $this->assertFailedDueToProhibition($response);
+
+    // Request fails. Policy requires site_key, but we don't have one.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+}
diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml
index 0cc2591e2a..2e10101831 100644
--- a/civicrm/ext/civi_campaign/info.xml
+++ b/civicrm/ext/civi_campaign/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/campaign/what-is-civicampaign/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ang/crmCaseType.ang.php b/civicrm/ext/civi_case/ang/crmCaseType.ang.php
similarity index 60%
rename from civicrm/ang/crmCaseType.ang.php
rename to civicrm/ext/civi_case/ang/crmCaseType.ang.php
index 62ba2a55c3..3cb411ac77 100644
--- a/civicrm/ang/crmCaseType.ang.php
+++ b/civicrm/ext/civi_case/ang/crmCaseType.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: This only loads if CiviCase is active.
+// This file declares crmCaseType Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => ['ang/crmCaseType.js'],
   'css' => ['ang/crmCaseType.css'],
   'partials' => ['ang/crmCaseType'],
diff --git a/civicrm/ang/crmCaseType.css b/civicrm/ext/civi_case/ang/crmCaseType.css
similarity index 100%
rename from civicrm/ang/crmCaseType.css
rename to civicrm/ext/civi_case/ang/crmCaseType.css
diff --git a/civicrm/ang/crmCaseType.js b/civicrm/ext/civi_case/ang/crmCaseType.js
similarity index 100%
rename from civicrm/ang/crmCaseType.js
rename to civicrm/ext/civi_case/ang/crmCaseType.js
diff --git a/civicrm/ang/crmCaseType/activityTypesTable.html b/civicrm/ext/civi_case/ang/crmCaseType/activityTypesTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/activityTypesTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/activityTypesTable.html
diff --git a/civicrm/ang/crmCaseType/caseTypeDetails.html b/civicrm/ext/civi_case/ang/crmCaseType/caseTypeDetails.html
similarity index 100%
rename from civicrm/ang/crmCaseType/caseTypeDetails.html
rename to civicrm/ext/civi_case/ang/crmCaseType/caseTypeDetails.html
diff --git a/civicrm/ang/crmCaseType/edit.html b/civicrm/ext/civi_case/ang/crmCaseType/edit.html
similarity index 100%
rename from civicrm/ang/crmCaseType/edit.html
rename to civicrm/ext/civi_case/ang/crmCaseType/edit.html
diff --git a/civicrm/ang/crmCaseType/list.html b/civicrm/ext/civi_case/ang/crmCaseType/list.html
similarity index 100%
rename from civicrm/ang/crmCaseType/list.html
rename to civicrm/ext/civi_case/ang/crmCaseType/list.html
diff --git a/civicrm/ang/crmCaseType/rolesTable.html b/civicrm/ext/civi_case/ang/crmCaseType/rolesTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/rolesTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/rolesTable.html
diff --git a/civicrm/ang/crmCaseType/sequenceTable.html b/civicrm/ext/civi_case/ang/crmCaseType/sequenceTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/sequenceTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/sequenceTable.html
diff --git a/civicrm/ang/crmCaseType/statusTable.html b/civicrm/ext/civi_case/ang/crmCaseType/statusTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/statusTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/statusTable.html
diff --git a/civicrm/ang/crmCaseType/timelineTable.html b/civicrm/ext/civi_case/ang/crmCaseType/timelineTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/timelineTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/timelineTable.html
diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml
index 9f0fca3b2a..ad6a96c5fd 100644
--- a/civicrm/ext/civi_case/info.xml
+++ b/civicrm/ext/civi_case/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/case-management/what-is-civicase/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
@@ -28,6 +28,7 @@
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
   <mixins>
+    <mixin>ang-php@1.0.0</mixin>
     <mixin>scan-classes@1.0.0</mixin>
   </mixins>
   <civix>
diff --git a/civicrm/ext/civi_contribute/Civi/Api4/Premium.php b/civicrm/ext/civi_contribute/Civi/Api4/Premium.php
new file mode 100644
index 0000000000..2957c76350
--- /dev/null
+++ b/civicrm/ext/civi_contribute/Civi/Api4/Premium.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4;
+
+/**
+ * Premiums Product entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class Premium extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php b/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php
new file mode 100644
index 0000000000..0824491eeb
--- /dev/null
+++ b/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4;
+
+/**
+ * Premiums Product entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class PremiumsProduct extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml
index b616f14fb2..1bc6bdb83d 100644
--- a/civicrm/ext/civi_contribute/info.xml
+++ b/civicrm/ext/civi_contribute/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/contributions/what-is-civicontribute/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml
index b0058f1375..41927d6e43 100644
--- a/civicrm/ext/civi_event/info.xml
+++ b/civicrm/ext/civi_event/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/events/what-is-civievent</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php b/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php
new file mode 100644
index 0000000000..51920b3627
--- /dev/null
+++ b/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php
@@ -0,0 +1,21 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+/**
+ * MailingComponent
+ *
+ * @searchable secondary
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class MailingComponent extends Generic\DAOEntity {
+}
diff --git a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json
deleted file mode 100644
index fc0020cc18..0000000000
--- a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "type": "search",
-    "title": "Email Bounce History",
-    "icon": "fa-list-alt",
-    "server_route": "civicrm/contact/view/bounces",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php
new file mode 100644
index 0000000000..c77aa044a2
--- /dev/null
+++ b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php
@@ -0,0 +1,8 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('Email Bounce History'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/contact/view/bounces',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ang/crmMailing.ang.php b/civicrm/ext/civi_mail/ang/crmMailing.ang.php
similarity index 80%
rename from civicrm/ang/crmMailing.ang.php
rename to civicrm/ext/civi_mail/ang/crmMailing.ang.php
index e93dca1272..b4f93c346f 100644
--- a/civicrm/ang/crmMailing.ang.php
+++ b/civicrm/ext/civi_mail/ang/crmMailing.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: Only loads if you have CiviMail permissions.
+// This file declares crmMailing Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => [
     'ang/crmMailing.js',
     'ang/crmMailing/*.js',
diff --git a/civicrm/ang/crmMailing.css b/civicrm/ext/civi_mail/ang/crmMailing.css
similarity index 100%
rename from civicrm/ang/crmMailing.css
rename to civicrm/ext/civi_mail/ang/crmMailing.css
diff --git a/civicrm/ang/crmMailing.js b/civicrm/ext/civi_mail/ang/crmMailing.js
similarity index 100%
rename from civicrm/ang/crmMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailing.js
diff --git a/civicrm/ang/crmMailing/BlockApprove.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockApprove.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.html
diff --git a/civicrm/ang/crmMailing/BlockApprove.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockApprove.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.js
diff --git a/civicrm/ang/crmMailing/BlockHeaderFooter.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockHeaderFooter.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.html
diff --git a/civicrm/ang/crmMailing/BlockHeaderFooter.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockHeaderFooter.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.js
diff --git a/civicrm/ang/crmMailing/BlockMailing.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockMailing.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.html
diff --git a/civicrm/ang/crmMailing/BlockMailing.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.js
diff --git a/civicrm/ang/crmMailing/BlockPreview.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPreview.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.html
diff --git a/civicrm/ang/crmMailing/BlockPreview.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPreview.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.js
diff --git a/civicrm/ang/crmMailing/BlockPublication.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPublication.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.html
diff --git a/civicrm/ang/crmMailing/BlockPublication.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPublication.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.js
diff --git a/civicrm/ang/crmMailing/BlockRecipients.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipients.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.html
diff --git a/civicrm/ang/crmMailing/BlockRecipients.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipients.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.js
diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipientsMultiline.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.html
diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipientsMultiline.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.js
diff --git a/civicrm/ang/crmMailing/BlockResponses.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockResponses.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.html
diff --git a/civicrm/ang/crmMailing/BlockResponses.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockResponses.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.js
diff --git a/civicrm/ang/crmMailing/BlockReview.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockReview.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockReview.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockReview.html
diff --git a/civicrm/ang/crmMailing/BlockReview.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockReview.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockReview.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockReview.js
diff --git a/civicrm/ang/crmMailing/BlockSchedule.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSchedule.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.html
diff --git a/civicrm/ang/crmMailing/BlockSchedule.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSchedule.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.js
diff --git a/civicrm/ang/crmMailing/BlockSummary.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSummary.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.html
diff --git a/civicrm/ang/crmMailing/BlockSummary.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSummary.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.js
diff --git a/civicrm/ang/crmMailing/BlockTemplates.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTemplates.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.html
diff --git a/civicrm/ang/crmMailing/BlockTemplates.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTemplates.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.js
diff --git a/civicrm/ang/crmMailing/BlockTracking.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTracking.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.html
diff --git a/civicrm/ang/crmMailing/BlockTracking.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTracking.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.js
diff --git a/civicrm/ang/crmMailing/BodyHtml.html b/civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.html
similarity index 100%
rename from civicrm/ang/crmMailing/BodyHtml.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.html
diff --git a/civicrm/ang/crmMailing/BodyHtml.js b/civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.js
similarity index 100%
rename from civicrm/ang/crmMailing/BodyHtml.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.js
diff --git a/civicrm/ang/crmMailing/BodyText.html b/civicrm/ext/civi_mail/ang/crmMailing/BodyText.html
similarity index 100%
rename from civicrm/ang/crmMailing/BodyText.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyText.html
diff --git a/civicrm/ang/crmMailing/BodyText.js b/civicrm/ext/civi_mail/ang/crmMailing/BodyText.js
similarity index 100%
rename from civicrm/ang/crmMailing/BodyText.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyText.js
diff --git a/civicrm/ang/crmMailing/CreateMailingCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/CreateMailingCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/CreateMailingCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/CreateMailingCtrl.js
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl.js
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/2step.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/2step.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/2step.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/2step.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/base.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/base.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/base.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/base.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/unified.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/unified.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/unified2.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified2.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/unified2.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified2.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/wizard.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/wizard.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/wizard.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/wizard.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/workflow.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/workflow.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/workflow.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/workflow.html
diff --git a/civicrm/ang/crmMailing/EditRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditUnsubGroupCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditUnsubGroupCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditUnsubGroupCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailAddrCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EmailAddrCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EmailAddrCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailAddrCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailBodyCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EmailBodyCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailBodyCtrl/tokenAlert.html b/civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
similarity index 100%
rename from civicrm/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
diff --git a/civicrm/ang/crmMailing/FromAddress.js b/civicrm/ext/civi_mail/ang/crmMailing/FromAddress.js
similarity index 100%
rename from civicrm/ang/crmMailing/FromAddress.js
rename to civicrm/ext/civi_mail/ang/crmMailing/FromAddress.js
diff --git a/civicrm/ang/crmMailing/ListMailingsCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/ListMailingsCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/ListMailingsCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ListMailingsCtrl.js
diff --git a/civicrm/ang/crmMailing/MsgTemplateCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/MsgTemplateCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/MsgTemplateCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/MsgTemplateCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewComponentCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewComponentDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/PreviewComponentDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewMailingDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMailingDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMailingDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMailingDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewMgr/full.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/full.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/full.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/full.html
diff --git a/civicrm/ang/crmMailing/PreviewMgr/html.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/html.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/html.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/html.html
diff --git a/civicrm/ang/crmMailing/PreviewMgr/text.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/text.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/text.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/text.html
diff --git a/civicrm/ang/crmMailing/PreviewRecipCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewRecipCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.html
diff --git a/civicrm/ang/crmMailing/PreviewRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/RadioDate.js b/civicrm/ext/civi_mail/ang/crmMailing/RadioDate.js
similarity index 100%
rename from civicrm/ang/crmMailing/RadioDate.js
rename to civicrm/ext/civi_mail/ang/crmMailing/RadioDate.js
diff --git a/civicrm/ang/crmMailing/ReviewBool.js b/civicrm/ext/civi_mail/ang/crmMailing/ReviewBool.js
similarity index 100%
rename from civicrm/ang/crmMailing/ReviewBool.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ReviewBool.js
diff --git a/civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/Templates.js b/civicrm/ext/civi_mail/ang/crmMailing/Templates.js
similarity index 100%
rename from civicrm/ang/crmMailing/Templates.js
rename to civicrm/ext/civi_mail/ang/crmMailing/Templates.js
diff --git a/civicrm/ang/crmMailing/Token.js b/civicrm/ext/civi_mail/ang/crmMailing/Token.js
similarity index 100%
rename from civicrm/ang/crmMailing/Token.js
rename to civicrm/ext/civi_mail/ang/crmMailing/Token.js
diff --git a/civicrm/ang/crmMailing/ViewRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/ViewRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/ViewRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ViewRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js b/civicrm/ext/civi_mail/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
similarity index 100%
rename from civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
rename to civicrm/ext/civi_mail/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ext/civi_mail/ang/crmMailing/services.js
similarity index 100%
rename from civicrm/ang/crmMailing/services.js
rename to civicrm/ext/civi_mail/ang/crmMailing/services.js
diff --git a/civicrm/ang/crmMailingAB.ang.php b/civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
similarity index 67%
rename from civicrm/ang/crmMailingAB.ang.php
rename to civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
index 38fd42d2c5..cc26cd4345 100644
--- a/civicrm/ang/crmMailingAB.ang.php
+++ b/civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: Only loads if you have CiviMail permissions.
+// This file declares crmMailingAB Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => [
     'ang/crmMailingAB.js',
     'ang/crmMailingAB/*.js',
diff --git a/civicrm/ang/crmMailingAB.css b/civicrm/ext/civi_mail/ang/crmMailingAB.css
similarity index 100%
rename from civicrm/ang/crmMailingAB.css
rename to civicrm/ext/civi_mail/ang/crmMailingAB.css
diff --git a/civicrm/ang/crmMailingAB.js b/civicrm/ext/civi_mail/ang/crmMailingAB.js
similarity index 100%
rename from civicrm/ang/crmMailingAB.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB.js
diff --git a/civicrm/ang/crmMailingAB/BlockMailing.html b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockMailing.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.html
diff --git a/civicrm/ang/crmMailingAB/BlockMailing.js b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.js
diff --git a/civicrm/ang/crmMailingAB/BlockSetup.html b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockSetup.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.html
diff --git a/civicrm/ang/crmMailingAB/BlockSetup.js b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockSetup.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.js
diff --git a/civicrm/ang/crmMailingAB/EditCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl.js
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/edit.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/edit.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/edit.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/edit.html
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/main.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/main.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/main.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/main.html
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/report.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/report.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/report.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/report.html
diff --git a/civicrm/ang/crmMailingAB/ListCtrl.html b/civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/ListCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.html
diff --git a/civicrm/ang/crmMailingAB/ListCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/ListCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.js
diff --git a/civicrm/ang/crmMailingAB/NewCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/NewCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/NewCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/NewCtrl.js
diff --git a/civicrm/ang/crmMailingAB/ReportCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/ReportCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/ReportCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ReportCtrl.js
diff --git a/civicrm/ang/crmMailingAB/Slider.html b/civicrm/ext/civi_mail/ang/crmMailingAB/Slider.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/Slider.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Slider.html
diff --git a/civicrm/ang/crmMailingAB/Slider.js b/civicrm/ext/civi_mail/ang/crmMailingAB/Slider.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/Slider.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Slider.js
diff --git a/civicrm/ang/crmMailingAB/Stats.js b/civicrm/ext/civi_mail/ang/crmMailingAB/Stats.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/Stats.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Stats.js
diff --git a/civicrm/ang/crmMailingAB/WinnerDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/WinnerDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.html
diff --git a/civicrm/ang/crmMailingAB/WinnerDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/WinnerDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.js
diff --git a/civicrm/ang/crmMailingAB/services.js b/civicrm/ext/civi_mail/ang/crmMailingAB/services.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/services.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/services.js
diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml
index 86977a7bbf..e223d8cc95 100644
--- a/civicrm/ext/civi_mail/info.xml
+++ b/civicrm/ext/civi_mail/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/email/what-is-civimail/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
@@ -28,6 +28,7 @@
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
   <mixins>
+    <mixin>ang-php@1.0.0</mixin>
     <mixin>scan-classes@1.0.0</mixin>
     <mixin>mgd-php@1.0.0</mixin>
   </mixins>
diff --git a/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php b/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php
new file mode 100644
index 0000000000..011489dc63
--- /dev/null
+++ b/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php
@@ -0,0 +1,25 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\DAOEntity;
+use Civi\Api4\Generic\Traits\ReadOnlyEntity;
+
+/**
+ * MembershipLog entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class MembershipLog extends DAOEntity {
+  use ReadOnlyEntity;
+
+}
diff --git a/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php
new file mode 100644
index 0000000000..666103020d
--- /dev/null
+++ b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+use Civi\Core\Service\AutoService;
+
+/**
+ * @service
+ * @internal
+ */
+class MembershipStatusGetSpecProvider extends AutoService implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec): void {
+    $spec->addFieldSpec(new FieldSpec('is_new', 'Membership', 'Integer'));
+    $field = (new FieldSpec('is_new', 'Membership', 'Boolean'))
+      ->setTitle(ts('Is new membership status'))
+      ->setDescription(ts('Is this the status for new members'))
+      ->setInputType('Number')
+      ->setType('Extra')
+      ->setColumnName('id')
+      ->setSqlRenderer([__CLASS__, 'isNewMembership']);
+    $spec->addFieldSpec($field);
+  }
+
+  /**
+   * When does this apply.
+   *
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies(string $entity, string $action): bool {
+    return $entity === 'MembershipStatus' && $action === 'get';
+  }
+
+  /**
+   * Determine if the membership status is the status used for new memberships.
+   *
+   * @param array $fieldSpec
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * return string
+   *
+   * @return string
+   * @throws \CRM_Core_Exception
+   * @noinspection PhpUnusedParameterInspection
+   */
+  public static function isNewMembership(array $fieldSpec, Api4SelectQuery $query): string {
+    $newID = \CRM_Member_BAO_MembershipStatus::getNewMembershipTypeID();
+    if ($newID) {
+      return "IF ({$fieldSpec['sql_name']} = $newID, 1, 0)";
+    }
+    return '0';
+  }
+
+}
diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml
index e766940f9a..b282360c4f 100644
--- a/civicrm/ext/civi_member/info.xml
+++ b/civicrm/ext/civi_member/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/membership/what-is-civimember/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml
index 9a8b08d08c..c3e6c8acc0 100644
--- a/civicrm/ext/civi_pledge/info.xml
+++ b/civicrm/ext/civi_pledge/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/pledges/what-is-civipledge/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml
index e3f2a46abb..0562cc54a1 100644
--- a/civicrm/ext/civi_report/info.xml
+++ b/civicrm/ext/civi_report/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/reporting/what-is-civireport/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html
new file mode 100644
index 0000000000..2043d35357
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html
@@ -0,0 +1,5 @@
+<div af-fieldset="">
+  <af-field name="name" defn="{required: false, input_attrs: {}}" />
+  <af-field name="status" defn="{input_type: 'Select', input_attrs: {multiple: true}}" />
+  <crm-search-display-table search-name="Queues" display-name="Queues_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php
new file mode 100644
index 0000000000..1991f4d09b
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php
@@ -0,0 +1,12 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('CiviCRM Queues'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/queue',
+  'permission' => ['administer queues'],
+  'placement' => [],
+  'permission_operator' => "AND",
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html
new file mode 100644
index 0000000000..e4208fb697
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html
@@ -0,0 +1,3 @@
+<div af-fieldset="">
+  <crm-search-display-table search-name="Headers_Footers_and_Automated_Messages" display-name="Headers_Footers_and_Automated_Messages_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php
new file mode 100644
index 0000000000..0fc31c7885
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php
@@ -0,0 +1,14 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('Headers, Footers, and Automated Messages'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/component',
+  'permission' => [
+    'access CiviCRM',
+    'access CiviMail',
+  ],
+  'modified_date' => '2023-12-04 10:53:21',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html
new file mode 100644
index 0000000000..49829fcb11
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html
@@ -0,0 +1,7 @@
+<div class="af-markup">
+  <div class="help">{{:: ts('Saved mappings allow you to easily run the same import or export job multiple times. Mappings are created and updated as part of an Import or Export task. This screen allows you to rename or delete existing mappings.') }}</div>
+
+</div>
+<div af-fieldset="">
+  <crm-search-display-table search-name="Import_Export_Mappings" display-name="Import_Export_Mappings"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php
new file mode 100644
index 0000000000..602fb02314
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php
@@ -0,0 +1,13 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'title' => E::ts('Import/Export Mappings'),
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'type' => 'search',
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/mapping',
+  'permission_operator' => 'AND',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html
new file mode 100644
index 0000000000..56bf9151f0
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html
@@ -0,0 +1,7 @@
+<div af-fieldset="">
+  <div class="af-markup">
+    <div class="help">{{:: ts('Changing the parameters here affects the input and display for specific fields types. Setting the default date format for the entire site is a Localisation setting.') }} <a ng-href="{{:: crmUrl('civicrm/admin/setting/date?action=reset=1') }}">{{:: ts('See Administer > Localization > Date Formats.') }}</a></div>
+
+  </div>
+  <crm-search-display-table search-name="Settings_Date_Preferences" display-name="Settings_Date_Preferences"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php
new file mode 100644
index 0000000000..195a02ec7b
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php
@@ -0,0 +1,13 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'title' => E::ts('Settings - Date Preferences'),
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'type' => 'search',
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/setting/preferences/date',
+  'permission_operator' => 'AND',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 353ba929a3..75c329c3f2 100644
--- a/civicrm/ext/civicrm_admin_ui/info.xml
+++ b/civicrm/ext/civicrm_admin_ui/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.search_kit</ext>
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
index bd8af2a789..de475f50ba 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
@@ -66,6 +66,7 @@ return [
         'saved_search_id.name' => 'ACL_Roles',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [],
           'limit' => 50,
@@ -161,11 +162,11 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
index 54401dfa35..a1d89053de 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
@@ -64,7 +64,7 @@ return [
         'saved_search_id.name' => 'Administer_Assigned_Financial_Accounts',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -152,7 +152,8 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
index 315d6bcc23..30ab389b28 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
@@ -50,7 +50,7 @@ return [
         'saved_search_id.name' => 'Administer_Contact_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -113,7 +113,10 @@ return [
               'editable' => TRUE,
             ],
             [
+              'text' => '',
+              'style' => 'default',
               'size' => 'btn-xs',
+              'icon' => 'fa-bars',
               'links' => [
                 [
                   'entity' => 'ContactType',
@@ -141,7 +144,7 @@ return [
                   ],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
index 6d784e714b..67766d00cb 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
@@ -55,7 +55,7 @@ return [
         'saved_search_id.name' => 'Administer_Custom_Fields',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -113,7 +113,10 @@ return [
               'editable' => TRUE,
             ],
             [
+              'text' => '',
+              'style' => 'default',
               'size' => 'btn-xs',
+              'icon' => 'fa-bars',
               'links' => [
                 [
                   'entity' => 'CustomField',
@@ -121,28 +124,18 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit Field'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
                 ],
-              ],
-              'type' => 'buttons',
-              'alignment' => 'text-right',
-            ],
-            [
-              'text' => '',
-              'style' => 'default',
-              'size' => 'btn-xs',
-              'icon' => 'fa-bars',
-              'links' => [
                 [
                   'entity' => 'CustomField',
                   'action' => 'preview',
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-eye',
-                  'text' => E::ts('Preview Field'),
+                  'text' => E::ts('Preview'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -166,7 +159,7 @@ return [
                   'entity' => 'CustomField',
                   'target' => 'crm-popup',
                   'icon' => 'fa-toggle-on',
-                  'text' => E::ts('Enable Field'),
+                  'text' => E::ts('Enable'),
                   'style' => 'default',
                   'condition' => ['is_active', '=', FALSE],
                 ],
@@ -175,7 +168,7 @@ return [
                   'entity' => 'CustomField',
                   'target' => 'crm-popup',
                   'icon' => 'fa-toggle-off',
-                  'text' => E::ts('Disable Field'),
+                  'text' => E::ts('Disable'),
                   'style' => 'default',
                   'condition' => ['is_active', '=', TRUE],
                 ],
@@ -185,7 +178,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-random',
-                  'text' => E::ts('Move Field'),
+                  'text' => E::ts('Move'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -196,7 +189,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Field'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
index 28d95458c4..0263e16db2 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
@@ -68,7 +68,7 @@ return [
         'saved_search_id.name' => 'Administer_Custom_Groups',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -167,7 +167,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-eye',
-                  'text' => E::ts('Preview Group'),
+                  'text' => E::ts('Preview'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -196,7 +196,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Group'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
index 037272055b..db86a63bec 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
@@ -56,7 +56,7 @@ return [
         'saved_search_id.name' => 'Administer_Financial_Accounts',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -184,7 +184,8 @@ return [
                   'condition' => ['is_reserved', '=', FALSE],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
index fb1c1f5149..55ddd2f991 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
@@ -72,7 +72,7 @@ return [
         'saved_search_id.name' => 'Administer_Financial_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -151,6 +151,13 @@ return [
                   'join' => '',
                   'target' => '',
                 ],
+              ],
+              'type' => 'buttons',
+              'alignment' => 'text-right',
+            ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
                 [
                   'icon' => 'fa-pencil',
                   'text' => E::ts('Edit'),
@@ -190,7 +197,8 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
index de21d6709c..f0f1ebc698 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
@@ -54,7 +54,7 @@ return [
         'saved_search_id.name' => 'Administer_Location_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -168,7 +168,8 @@ return [
                   ],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
index 989a90f3ab..a6995d89e0 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
@@ -59,6 +59,11 @@ return [
                 '=',
                 '"Added"',
               ],
+              [
+                'Group_GroupContact_Contact_01.is_deleted',
+                '=',
+                FALSE,
+              ],
             ],
           ],
           'having' => [],
@@ -225,7 +230,7 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'links',
+              'type' => 'buttons',
               'alignment' => 'text-right',
             ],
             [
@@ -258,7 +263,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Remove Group'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
@@ -268,7 +273,7 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
+          'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
index 5d77af6ea6..3252597f0b 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
@@ -79,7 +79,7 @@ return [
         'saved_search_id.name' => 'Administer_Payment_Processors',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -208,7 +208,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
index 9e542201f1..4247f52154 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
@@ -55,7 +55,7 @@ return [
         'saved_search_id.name' => 'Profile_Fields',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -185,7 +185,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
index c866616fca..f068b18699 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
@@ -68,7 +68,7 @@ return [
         'saved_search_id.name' => 'User_defined_Profiles',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
index 543637452e..39fda6f513 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
@@ -52,7 +52,7 @@ return [
         'saved_search_id.name' => 'Administer_Relationship_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -159,7 +159,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
index 899c01af35..ae1d1bcefb 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
@@ -177,11 +177,12 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
+          'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php
new file mode 100644
index 0000000000..efa3d7005f
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php
@@ -0,0 +1,220 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Headers_Footers_and_Automated_Messages',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Headers_Footers_and_Automated_Messages',
+        'label' => E::ts('Headers, Footers, and Automated Messages'),
+        'api_entity' => 'MailingComponent',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'component_type:label',
+            'subject',
+            'body_html',
+            'body_text',
+            'is_default',
+            'is_active',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Headers_Footers_and_Automated_Messages_SearchDisplay_Headers_Footers_and_Automated_Messages_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Headers_Footers_and_Automated_Messages_Table_1',
+        'label' => E::ts('Headers, Footers, and Automated Messages'),
+        'saved_search_id.name' => 'Headers_Footers_and_Automated_Messages',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'component_type',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => FALSE,
+              'editable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'component_type:label',
+              'dataType' => 'String',
+              'label' => E::ts('Type'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'subject',
+              'dataType' => 'String',
+              'label' => E::ts('Subject'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'body_html',
+              'dataType' => 'Text',
+              'label' => E::ts('Body HTML'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'body_text',
+              'dataType' => 'Text',
+              'label' => E::ts('Body Text'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_default',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Default?'),
+              'sortable' => FALSE,
+              'rewrite' => '[none]',
+              'title' => NULL,
+              'icons' => [
+                [
+                  'icon' => 'fa-check',
+                  'side' => 'left',
+                  'if' => [
+                    'is_default',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+              ],
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_active',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Enabled?'),
+              'sortable' => FALSE,
+              'icons' => [],
+              'rewrite' => '',
+            ],
+            [
+              'links' => [
+                [
+                  'entity' => 'MailingComponent',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'MailingComponent',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'MailingComponent',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    FALSE,
+                  ],
+                ],
+              ],
+              'type' => 'links',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table-striped',
+            'table',
+          ],
+          'toolbar' => [
+            [
+              'action' => 'add',
+              'entity' => 'MailingComponent',
+              'text' => E::ts('Add Mailing Component'),
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'target' => 'crm-popup',
+              'join' => '',
+              'path' => '',
+              'task' => '',
+              'condition' => [
+                'check user permission',
+                '=',
+                [
+                  'access CiviMail',
+                ],
+              ],
+            ],
+          ],
+          'cssRules' => [
+            [
+              'disabled',
+              'is_active',
+              '=',
+              FALSE,
+            ],
+          ],
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php
new file mode 100644
index 0000000000..88eea065fe
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php
@@ -0,0 +1,149 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Import_Export_Mappings',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Export_Mappings',
+        'label' => E::ts('Import/Export Mappings'),
+        'api_entity' => 'Mapping',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'description',
+            'mapping_type_id:label',
+            'id',
+          ],
+          'orderBy' => [],
+          'where' => [
+            [
+              'mapping_type_id:name',
+              '!=',
+              'Search Builder',
+            ],
+          ],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Import_Export_Mappings_SearchDisplay_Import_Export_Mappings',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Export_Mappings',
+        'label' => E::ts('Import/Export Mappings'),
+        'saved_search_id.name' => 'Import_Export_Mappings',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'mapping_type_id:label',
+              'ASC',
+            ],
+            [
+              'name',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'id',
+              'dataType' => 'Integer',
+              'label' => E::ts('ID'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'mapping_type_id:label',
+              'dataType' => 'Integer',
+              'label' => E::ts('Mapping Type'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'description',
+              'dataType' => 'String',
+              'label' => E::ts('Description'),
+              'sortable' => TRUE,
+            ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'path' => '',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'condition' => [],
+                  'task' => '',
+                  'entity' => 'Mapping',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+                [
+                  'task' => 'delete',
+                  'entity' => 'Mapping',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => [
+            'delete',
+            'update',
+          ],
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'name',
+        'saved_search_id',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
index 22a541bf5b..9bfa13c8cd 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
@@ -56,6 +56,7 @@ return [
         'saved_search_id.name' => 'Manage_ACLs',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -136,7 +137,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit ACL'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -165,7 +166,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete ACL'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
index 9b8d0ddfd6..e5e60cfd97 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
@@ -51,7 +51,7 @@ return [
         'saved_search_id.name' => 'Manage_Contribution_Pages',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -145,7 +145,7 @@ return [
                   'entity' => '',
                   'action' => '',
                   'join' => '',
-                  'target' => '',
+                  'target' => '_blank',
                   'icon' => 'fa-external-link',
                   'text' => E::ts('Live Page'),
                   'style' => 'default',
@@ -156,7 +156,7 @@ return [
                   'entity' => '',
                   'action' => '',
                   'join' => '',
-                  'target' => '',
+                  'target' => '_blank',
                   'icon' => 'fa-external-link',
                   'text' => E::ts('Test-drive'),
                   'style' => 'default',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
index d1119fd2aa..f25c8702f2 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
@@ -59,6 +59,7 @@ return [
         'saved_search_id.name' => 'Mail_Accounts',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [],
           'limit' => 50,
@@ -173,7 +174,6 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
index 261b8f6967..fa4c89d963 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
@@ -56,6 +56,7 @@ return [
         'saved_search_id.name' => 'Scheduled_Jobs',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -187,7 +188,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit Job'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -227,7 +228,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Job'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
@@ -237,7 +238,6 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php
new file mode 100644
index 0000000000..f0b1cc7589
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php
@@ -0,0 +1,100 @@
+<?php
+
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Queues',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Queues',
+        'label' => E::ts('Queues'),
+        'api_entity' => 'Queue',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'id',
+            'name',
+            'type:label',
+            'status:label',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Queues_SearchDisplay_Queues_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Queues_Table_1',
+        'label' => E::ts('Queues'),
+        'saved_search_id.name' => 'Queues',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'id',
+              'dataType' => 'Integer',
+              'label' => E::ts('System Queue ID'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'type:label',
+              'dataType' => 'String',
+              'label' => E::ts('Type'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'status:label',
+              'dataType' => 'String',
+              'label' => E::ts('Status'),
+              'sortable' => TRUE,
+              'rewrite' => '',
+              'editable' => TRUE,
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
index dc47e1ce49..655a7d1601 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
@@ -53,6 +53,7 @@ return [
         'saved_search_id.name' => 'Scheduled_Jobs_Log',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -88,7 +89,6 @@ return [
               'rewrite' => '<b>' . E::ts("Summary:") . '</b> [description]<br><b>' . E::ts("Details:") . '</b><pre>[data]</pre>',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php
new file mode 100644
index 0000000000..5b4bb413b1
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php
@@ -0,0 +1,130 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Settings_Date_Preferences',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Settings_Date_Preferences',
+        'label' => E::ts('Settings - Date Preferences'),
+        'api_entity' => 'PreferencesDate',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'description',
+            'date_format',
+            'start',
+            'end',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Settings_Date_Preferences_SearchDisplay_Settings_Date_Preferences',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Settings_Date_Preferences',
+        'label' => E::ts('Settings - Date Preferences'),
+        'saved_search_id.name' => 'Settings_Date_Preferences',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'name',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Date Class'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'description',
+              'dataType' => 'String',
+              'label' => E::ts('Description'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'date_format',
+              'dataType' => 'String',
+              'label' => E::ts('Date Format'),
+              'sortable' => TRUE,
+              'rewrite' => '',
+              'empty_value' => 'Default',
+            ],
+            [
+              'type' => 'field',
+              'key' => 'start',
+              'dataType' => 'Integer',
+              'label' => E::ts('Start Offset'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'end',
+              'dataType' => 'Integer',
+              'label' => E::ts('End Offset'),
+              'sortable' => TRUE,
+            ],
+            [
+              'links' => [
+                [
+                  'entity' => 'PreferencesDate',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => '',
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'links',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'name',
+        'saved_search_id',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
index dac443abb7..d9ada15c74 100644
--- a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
@@ -1,13 +1,13 @@
 <div af-fieldset="">
   <p class="af-text">This is intended as a replacement for the Find Contributions page.&nbsp; Please provide feedback at https://lab.civicrm.org/dev/core/-/issues/4440</p>
-  <div class="af-container af-layout-inline af-collapsible" af-title="Contact Filters">
+  <details class="af-container af-layout-inline" open af-title="Contact Filters">
     <af-field name="Contribution_Contact_contact_id_01.display_name,Contribution_Contact_contact_id_01.sort_name,Contribution_Contact_contact_id_01.email_primary.email" defn="{label: 'Name or Email', input_type: 'Text'}" />
     <af-field name="Contribution_Contact_contact_id_01.tags" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.groups" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.contact_type" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.is_deleted" defn="{required: false, label: 'Search in Trash (deleted contacts)'}" />
-  </div>
-  <div class="af-container af-layout-inline af-collapsible" af-title="Common Filters">
+  </details>
+  <details class="af-container af-layout-inline" open af-title="Common Filters">
     <af-field name="receive_date" defn="{input_type: 'Select', search_range: true, options: [{id: '{}', label: 'Choose Date Range'}, {id: 'this.day', label: 'Today'}, {id: 'this.week', label: 'This week'}, {id: 'this.month', label: 'This calendar month'}, {id: 'this.quarter', label: 'This quarter'}, {id: 'this.fiscal_year', label: 'This fiscal year'}, {id: 'this.year', label: 'This calendar year'}, {id: 'previous.day', label: 'Yesterday'}, {id: 'previous.week', label: 'Previous week'}, {id: 'previous.month', label: 'Previous calendar month'}, {id: 'previous.quarter', label: 'Previous quarter'}, {id: 'previous.fiscal_year', label: 'Previous fiscal year'}, {id: 'previous.year', label: 'Previous calendar year'}, {id: 'ending.week', label: 'Last 7 days including today'}, {id: 'ending_30.day', label: 'Last 30 days including today'}, {id: 'ending_60.day', label: 'Last 60 days including today'}, {id: 'ending_90.day', label: 'Last 90 days including today'}, {id: 'ending.year', label: 'Last 12 months including today'}, {id: 'ending_2.year', label: 'Last 2 years including today'}, {id: 'ending_3.year', label: 'Last 3 years including today'}, {id: 'starting.day', label: 'Tomorrow'}, {id: 'next.week', label: 'Next week'}, {id: 'next.month', label: 'Next calendar month'}, {id: 'next.quarter', label: 'Next quarter'}, {id: 'next.fiscal_year', label: 'Next fiscal year'}, {id: 'next.year', label: 'Next calendar year'}, {id: 'starting.week', label: 'Next 7 days including today'}, {id: 'starting.month', label: 'Next 30 days including today'}, {id: 'starting_2.month', label: 'Next 60 days including today'}, {id: 'starting.quarter', label: 'Next 90 days including today'}, {id: 'starting.year', label: 'Next 12 months including today'}, {id: 'current.week', label: 'Current week to-date'}, {id: 'current.month', label: 'Current calendar month to-date'}, {id: 'current.quarter', label: 'Current quarter to-date'}, {id: 'current.year', label: 'Current calendar year to-date'}, {id: 'earlier.day', label: 'To end of yesterday'}, {id: 'earlier.week', label: 'To end of previous week'}, {id: 'earlier.month', label: 'To end of previous calendar month'}, {id: 'earlier.quarter', label: 'To end of previous quarter'}, {id: 'earlier.year', label: 'To end of previous calendar year'}, {id: 'greater.day', label: 'From start of current day'}, {id: 'greater.week', label: 'From start of current week'}, {id: 'greater.month', label: 'From start of current calendar month'}, {id: 'greater.quarter', label: 'From start of current quarter'}, {id: 'greater.year', label: 'From start of current calendar year'}, {id: 'less.week', label: 'To end of current week'}, {id: 'less.month', label: 'To end of current calendar month'}, {id: 'less.quarter', label: 'To end of current quarter'}, {id: 'less.year', label: 'To end of current calendar year'}, {id: 'previous_2.day', label: 'Previous 2 days'}, {id: 'previous_2.week', label: 'Previous 2 weeks'}, {id: 'previous_2.month', label: 'Previous 2 calendar months'}, {id: 'previous_2.quarter', label: 'Previous 2 quarters'}, {id: 'previous_2.year', label: 'Previous 2 calendar years'}, {id: 'previous_2.fiscal_year', label: 'Previous 2 fiscal years'}, {id: 'previous_before.day', label: 'Day prior to yesterday'}, {id: 'previous_before.week', label: 'Week prior to previous week'}, {id: 'previous_before.month', label: 'Month prior to previous calendar month'}, {id: 'previous_before.quarter', label: 'Quarter prior to previous quarter'}, {id: 'previous_before.year', label: 'Year prior to previous calendar year'}, {id: 'previous_before.fiscal_year', label: 'Fiscal year prior to previous fiscal year'}, {id: 'greater_previous.week', label: 'From end of previous week'}, {id: 'greater_previous.month', label: 'From end of previous calendar month'}, {id: 'greater_previous.quarter', label: 'From end of previous quarter'}, {id: 'greater_previous.year', label: 'From end of previous calendar year'}], input_attrs: {}}" />
     <af-field name="total_amount" defn="{required: false, input_attrs: {}, input_type: 'Number', search_range: true, label: 'Total Amount (min, max)'}" />
     <af-field name="contribution_status_id" defn="{input_attrs: {multiple: true}, afform_default: ['1']}" />
@@ -16,8 +16,8 @@
     <af-field name="contribution_page_id" defn="{input_attrs: {multiple: true}}" />
     <af-field name="source" />
     <af-field name="id" defn="{required: false, input_attrs: {}}" />
-  </div>
-  <div class="af-container af-layout-inline af-collapsible af-collapsed" af-title="Yes/No">
+  </details>
+  <div class="af-container af-layout-inline" af-title="Yes/No">
     <af-field name="ISNULL_thankyou_date" defn="{input_type: 'Radio', search_operator: '!=', label: 'Thank-you Sent?'}" />
     <af-field name="ISNULL_receipt_date" defn="{input_type: 'Radio', search_operator: '!=', label: 'Receipt Sent?'}" />
     <af-field name="is_pay_later" defn="{required: false, input_type: 'Radio', label: 'Contribution is Pay Later?'}" />
@@ -25,22 +25,22 @@
     <af-field name="is_template" defn="{required: false, input_type: 'Radio', afform_default: '0', label: 'Contribution is a Template?'}" />
     <af-field name="ISNULL_contribution_recur_id" defn="{input_type: 'Radio', search_operator: '!=', label: 'Contribution is Recurring?'}" />
   </div>
-  <div class="af-container af-layout-inline af-collapsible af-collapsed" af-title="Less Common Filters">
+  <details class="af-container af-layout-inline" af-title="Less Common Filters">
     <af-field name="invoice_number" defn="{search_operator: 'IS EMPTY', input_attrs: {}, input_type: 'Number'}" />
     <af-field name="trxn_id" />
     <af-field name="cancel_date" defn="{input_type: 'Select', search_range: true, options: [{id: '{}', label: 'Choose Date Range'}, {id: 'this.day', label: 'Today'}, {id: 'this.week', label: 'This week'}, {id: 'this.month', label: 'This calendar month'}, {id: 'this.quarter', label: 'This quarter'}, {id: 'this.fiscal_year', label: 'This fiscal year'}, {id: 'this.year', label: 'This calendar year'}, {id: 'previous.day', label: 'Yesterday'}, {id: 'previous.week', label: 'Previous week'}, {id: 'previous.month', label: 'Previous calendar month'}, {id: 'previous.quarter', label: 'Previous quarter'}, {id: 'previous.fiscal_year', label: 'Previous fiscal year'}, {id: 'previous.year', label: 'Previous calendar year'}, {id: 'ending.week', label: 'Last 7 days including today'}, {id: 'ending_30.day', label: 'Last 30 days including today'}, {id: 'ending_60.day', label: 'Last 60 days including today'}, {id: 'ending_90.day', label: 'Last 90 days including today'}, {id: 'ending.year', label: 'Last 12 months including today'}, {id: 'ending_2.year', label: 'Last 2 years including today'}, {id: 'ending_3.year', label: 'Last 3 years including today'}, {id: 'starting.day', label: 'Tomorrow'}, {id: 'next.week', label: 'Next week'}, {id: 'next.month', label: 'Next calendar month'}, {id: 'next.quarter', label: 'Next quarter'}, {id: 'next.fiscal_year', label: 'Next fiscal year'}, {id: 'next.year', label: 'Next calendar year'}, {id: 'starting.week', label: 'Next 7 days including today'}, {id: 'starting.month', label: 'Next 30 days including today'}, {id: 'starting_2.month', label: 'Next 60 days including today'}, {id: 'starting.quarter', label: 'Next 90 days including today'}, {id: 'starting.year', label: 'Next 12 months including today'}, {id: 'current.week', label: 'Current week to-date'}, {id: 'current.month', label: 'Current calendar month to-date'}, {id: 'current.quarter', label: 'Current quarter to-date'}, {id: 'current.year', label: 'Current calendar year to-date'}, {id: 'earlier.day', label: 'To end of yesterday'}, {id: 'earlier.week', label: 'To end of previous week'}, {id: 'earlier.month', label: 'To end of previous calendar month'}, {id: 'earlier.quarter', label: 'To end of previous quarter'}, {id: 'earlier.year', label: 'To end of previous calendar year'}, {id: 'greater.day', label: 'From start of current day'}, {id: 'greater.week', label: 'From start of current week'}, {id: 'greater.month', label: 'From start of current calendar month'}, {id: 'greater.quarter', label: 'From start of current quarter'}, {id: 'greater.year', label: 'From start of current calendar year'}, {id: 'less.week', label: 'To end of current week'}, {id: 'less.month', label: 'To end of current calendar month'}, {id: 'less.quarter', label: 'To end of current quarter'}, {id: 'less.year', label: 'To end of current calendar year'}, {id: 'previous_2.day', label: 'Previous 2 days'}, {id: 'previous_2.week', label: 'Previous 2 weeks'}, {id: 'previous_2.month', label: 'Previous 2 calendar months'}, {id: 'previous_2.quarter', label: 'Previous 2 quarters'}, {id: 'previous_2.year', label: 'Previous 2 calendar years'}, {id: 'previous_2.fiscal_year', label: 'Previous 2 fiscal years'}, {id: 'previous_before.day', label: 'Day prior to yesterday'}, {id: 'previous_before.week', label: 'Week prior to previous week'}, {id: 'previous_before.month', label: 'Month prior to previous calendar month'}, {id: 'previous_before.quarter', label: 'Quarter prior to previous quarter'}, {id: 'previous_before.year', label: 'Year prior to previous calendar year'}, {id: 'previous_before.fiscal_year', label: 'Fiscal year prior to previous fiscal year'}, {id: 'greater_previous.week', label: 'From end of previous week'}, {id: 'greater_previous.month', label: 'From end of previous calendar month'}, {id: 'greater_previous.quarter', label: 'From end of previous quarter'}, {id: 'greater_previous.year', label: 'From end of previous calendar year'}], input_attrs: {}, afform_default: '{}'}" />
     <af-field name="cancel_reason" />
     <af-field name="payment_instrument_id" defn="{input_attrs: {multiple: true}}" />
-  </div>
-  <div class="af-container af-collapsible af-layout-inline af-collapsed" af-title="Soft Credit">
-    <legend class="af-text">Dev note:&nbsp; several options currently - need to understand soft credits better! &nbsp;</legend>
+  </details>
+  <details class="af-container af-layout-inline" af-title="Soft Credit">
+    <!-- Dev note: several options currently - need to understand soft credits better!-->
     <af-field name="Contribution_ContributionSoft_contribution_id_01.id" />
-  </div>
-  <div class="af-container af-collapsible af-layout-inline af-collapsed" af-title="PCP">
-    <legend class="af-text">Dev note: want this as page name select. &nbsp; Does anyone use PCP's???</legend>
+  </details>
+  <details class="af-container af-layout-inline" af-title="PCP">
+    <!-- Dev note: want this as page name select. Does anyone use PCP's???-->
     <af-field name="Contribution_ContributionSoft_contribution_id_01_ContributionSoft_PCP_pcp_id_01.id" />
     <af-field name="Contribution_ContributionSoft_contribution_id_01_ContributionSoft_PCP_pcp_id_01.is_honor_roll" defn="{label: 'Honor Roll?'}" />
-  </div>
+  </details>
   <div class="af-container" af-title="Summary">
     <crm-search-display-table search-name="Find_Contributions_totals" display-name="Find_Contributions_totals_Table_1"></crm-search-display-table>
   </div>
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html
new file mode 100644
index 0000000000..e66ad29350
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html
@@ -0,0 +1,14 @@
+<div af-fieldset="">
+  <div class="af-markup">
+    
+    
+    <div class="help">
+    <div>{{:: ts('You can configure one or more Label Formats for your CiviCRM installation. Label Formats are used when creating mailing labels.')}}<br/>
+{{:: ts('You can change which fields are printed on each label in')}} <a href="/civicrm/admin/setting/preferences/address?reset=1">{{:: ts('Address Settings')}}</a>.</div>
+    </div>
+
+  
+  
+  </div>
+  <crm-search-display-table search-name="label_format" display-name="label_format_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php
new file mode 100644
index 0000000000..88742dfb1b
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php
@@ -0,0 +1,14 @@
+<?php
+use CRM_CivicrmSearchUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('Label Formats'),
+  'description' => E::ts('Label Formats'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/searchkit_ui/admin/labelFormats',
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'modified_date' => '2023-12-06 18:52:54',
+];
diff --git a/civicrm/ext/civicrm_search_ui/info.xml b/civicrm/ext/civicrm_search_ui/info.xml
index 9298c5c6ab..141872cf6a 100644
--- a/civicrm/ext/civicrm_search_ui/info.xml
+++ b/civicrm/ext/civicrm_search_ui/info.xml
@@ -14,15 +14,15 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <requires>
     <ext>org.civicrm.search_kit</ext>
     <ext>org.civicrm.afform</ext>
   </requires>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Replacement SearchKit/FormBuilder pages for core Search pages.</comments>
   <classloader>
diff --git a/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php b/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php
new file mode 100644
index 0000000000..0a225004fb
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php
@@ -0,0 +1,190 @@
+<?php
+use CRM_CivicrmSearchUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_label_format',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'label_format',
+        'label' => E::ts('label format'),
+        'api_entity' => 'OptionGroup',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'OptionGroup_OptionValue_option_group_id_01.label',
+            'title',
+            'description',
+            'is_reserved',
+            'OptionGroup_OptionValue_option_group_id_01.grouping',
+            'OptionGroup_OptionValue_option_group_id_01.is_default',
+          ],
+          'orderBy' => [],
+          'where' => [
+            [
+              'name',
+              'IN',
+              [
+                'label_format',
+                'name_badge',
+              ],
+            ],
+          ],
+          'groupBy' => [],
+          'join' => [
+            [
+              'OptionValue AS OptionGroup_OptionValue_option_group_id_01',
+              'LEFT',
+              [
+                'id',
+                '=',
+                'OptionGroup_OptionValue_option_group_id_01.option_group_id',
+              ],
+            ],
+          ],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_label_format_SearchDisplay_label_format_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'label_format_Table_1',
+        'label' => E::ts('label format Table 1'),
+        'saved_search_id.name' => 'label_format',
+        'type' => 'table',
+        'settings' => [
+          'description' => '',
+          'sort' => [],
+          'limit' => 50,
+          'pager' => [
+            'show_count' => FALSE,
+            'expose_limit' => FALSE,
+            'hide_single' => TRUE,
+          ],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.label',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'title',
+              'dataType' => 'String',
+              'label' => E::ts('Used for'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.grouping',
+              'dataType' => 'String',
+              'label' => E::ts('Grouping'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.is_default',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Default'),
+              'sortable' => TRUE,
+              'rewrite' => '{ }',
+              'icons' => [
+                [
+                  'icon' => 'fa-check',
+                  'side' => 'left',
+                  'if' => [
+                    'OptionGroup_OptionValue_option_group_id_01.is_default',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+              ],
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_reserved',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Reserved'),
+              'sortable' => TRUE,
+            ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'entity' => '',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => 'civicrm/admin/labelFormats/edit?action=update&id=[OptionGroup_OptionValue_option_group_id_01.id]&group=[name]&reset=1',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'path' => 'civicrm/admin/labelFormats/edit?action=copy&id=[OptionGroup_OptionValue_option_group_id_01.id]&group=[name]&reset=1',
+                  'icon' => 'fa-clone',
+                  'text' => E::ts('Copy'),
+                  'style' => 'default',
+                  'condition' => [],
+                  'task' => '',
+                  'entity' => '',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+          'toolbar' => [
+            [
+              'action' => '',
+              'entity' => '',
+              'text' => E::ts('Add Label Format'),
+              'icon' => '',
+              'style' => 'default',
+              'target' => 'crm-popup',
+              'join' => '',
+              'path' => 'civicrm/admin/labelFormats/edit?action=add&reset=1',
+              'task' => '',
+              'condition' => [],
+            ],
+          ],
+          'headerCount' => FALSE,
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
index 22c8eb741f..977d64d5b4 100644
--- a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
+++ b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
@@ -183,7 +183,7 @@ class CRM_Grant_BAO_Query extends CRM_Contact_BAO_Query_Interface {
       case 'grant_status_id':
       case 'grant_status':
 
-        if (strstr($name, 'type')) {
+        if (str_contains($name, 'type')) {
           $name = 'grant_type_id';
           $label = E::ts('Grant Type(s)');
         }
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
index 9217a0ccbc..85df01e9b5 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
@@ -16,23 +16,19 @@
  */
 
 /**
- * This class generates form components for processing a Grant
- *
+ * Not a real form: displays a grant in view mode.
+ * Fixme: Just use a frozen form instead of this ballyhoo
  */
 class CRM_Grant_Form_GrantView extends CRM_Core_Form {
 
   /**
-   * Set variables up before form is built.
-   *
    * @return void
    */
   public function preProcess() {
-    $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
-    $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this);
-    $this->assign('context', $context);
-
+    $params = [
+      'id' => CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE),
+    ];
     $values = [];
-    $params['id'] = $this->_id;
     CRM_Grant_BAO_Grant::retrieve($params, $values);
     $grantType = CRM_Core_PseudoConstant::get('CRM_Grant_DAO_Grant', 'grant_type_id');
     $grantStatus = CRM_Core_PseudoConstant::get('CRM_Grant_DAO_Grant', 'status_id');
@@ -56,17 +52,14 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
     $displayName = CRM_Contact_BAO_Contact::displayName($values['contact_id']);
     $this->assign('displayName', $displayName);
 
-    if (isset($this->_id)) {
-      $noteDAO = new CRM_Core_BAO_Note();
-      $noteDAO->entity_table = 'civicrm_grant';
-      $noteDAO->entity_id = $this->_id;
-      if ($noteDAO->find(TRUE)) {
-        $this->_noteId = $noteDAO->id;
-      }
+    $noteDAO = new CRM_Core_BAO_Note();
+    $noteDAO->entity_table = 'civicrm_grant';
+    $noteDAO->entity_id = $values['id'];
+    if ($noteDAO->find(TRUE)) {
+      $this->assign('note', CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Note', $noteDAO->id, 'note'));
     }
-
-    if (isset($this->_noteId)) {
-      $this->assign('note', CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Note', $this->_noteId, 'note'));
+    else {
+      $this->assign('note', '');
     }
 
     // add Grant to Recent Items
@@ -96,15 +89,14 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
       $recentOther
     );
 
-    $attachment = CRM_Core_BAO_File::attachmentInfo('civicrm_grant', $this->_id);
+    $attachment = CRM_Core_BAO_File::attachmentInfo('civicrm_grant', $values['id']);
     $this->assign('attachment', $attachment);
 
-    $grantType = CRM_Core_DAO::getFieldValue("CRM_Grant_DAO_Grant", $this->_id, "grant_type_id");
-    $groupTree = CRM_Core_BAO_CustomGroup::getTree("Grant", NULL, $this->_id, 0, $grantType, NULL,
+    $groupTree = CRM_Core_BAO_CustomGroup::getTree("Grant", NULL, $values['id'], 0, $values['grant_type_id'], NULL,
       TRUE, NULL, FALSE, CRM_Core_Permission::VIEW);
-    CRM_Core_BAO_CustomGroup::buildCustomDataView($this, $groupTree, FALSE, NULL, NULL, NULL, $this->_id);
+    CRM_Core_BAO_CustomGroup::buildCustomDataView($this, $groupTree, FALSE, NULL, NULL, NULL, $values['id']);
 
-    $this->assign('id', $this->_id);
+    $this->assign('id', $values['id']);
 
     $this->setPageTitle(ts('Grant'));
   }
@@ -115,14 +107,6 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
    * @return void
    */
   public function buildQuickForm() {
-    $this->addButtons([
-      [
-        'type' => 'cancel',
-        'name' => ts('Done'),
-        'spacing' => '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',
-        'isDefault' => TRUE,
-      ],
-    ]);
   }
 
 }
diff --git a/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php b/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
index 4c53740412..0ea5e629ea 100644
--- a/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
+++ b/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
@@ -421,7 +421,7 @@ SELECT COUNT({$this->_aliases['civicrm_grant']}.id) as count ,
       }
 
       foreach ($values as $customField => $customValue) {
-        if (strstr($customField, 'civicrm_value_')) {
+        if (str_contains($customField, 'civicrm_value_')) {
           $customFieldTitle = $this->_columnHeaders[$customField]['title'] ?? NULL;
           $customGroupTitle = explode('_custom', strstr($customField, 'civicrm_value_'));
           $customGroupTitle = $this->_columns[$customGroupTitle[0]]['group_title'];
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index 51dea4e4cd..178dff9e59 100644
--- a/civicrm/ext/civigrant/info.xml
+++ b/civicrm/ext/civigrant/info.xml
@@ -12,11 +12,11 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/grants/what-is-civigrant/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>CiviGrant was originally a core component before migrating to an extension</comments>
   <requires>
diff --git a/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl b/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
index f826193c94..370d09d10c 100644
--- a/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
+++ b/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
@@ -31,11 +31,11 @@
     {include file="CRM/Custom/Page/CustomDataView.tpl"}
     <div class="crm-submit-buttons">
         {if call_user_func(array('CRM_Core_Permission','check'), 'edit grants')}
-            {assign var='urlParams' value="reset=1&id=$id&cid=$contactId&action=update"}
+            {assign var='urlParams' value="reset=1&id=$id&action=update"}
             <a class="button" href="{crmURL p='civicrm/grant/add' q=$urlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a>
         {/if}
         {if call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviGrant')}
-            {assign var='urlParams' value="reset=1&id=$id&cid=$contactId&action=delete"}
+            {assign var='urlParams' value="reset=1&id=$id&action=delete"}
             <a class="button" href="{crmURL p='civicrm/grant/add' q=$urlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a>
         {/if}
     </div>
diff --git a/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php b/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php
new file mode 100644
index 0000000000..ad4c89cce6
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php
@@ -0,0 +1,182 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+use PhpOffice\PhpSpreadsheet\IOFactory;
+use PhpOffice\PhpSpreadsheet\Reader\Exception as ReaderException;
+
+/**
+ * Objects that implement the DataSource interface can be used in CiviCRM imports.
+ */
+class Spreadsheet extends \CRM_Import_DataSource implements DataSourceInterface {
+  use DataSourceTrait;
+  protected const NUM_ROWS_TO_INSERT = 100;
+
+  /**
+   * Provides information about the data source.
+   *
+   * @return array
+   *   collection of info about this data source
+   */
+  public function getInfo(): array {
+    return [
+      'title' => ts('Spreadsheet (xlsx, odt)'),
+      'template' => 'CRM/Import/DataSource/Spreadsheet.tpl',
+    ];
+  }
+
+  /**
+   * This is function is called by the form object to get the DataSource's form
+   * snippet.
+   *
+   * It should add all fields necessary to get the data
+   * uploaded to the temporary table in the DB.
+   *
+   * @param \CRM_Contact_Import_Form_DataSource|\CRM_Import_Form_DataSourceConfig $form
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function buildQuickForm(\CRM_Import_Forms $form): void {
+    if (\CRM_Utils_Request::retrieveValue('user_job_id', 'Integer')) {
+      $this->setUserJobID(\CRM_Utils_Request::retrieveValue('user_job_id', 'Integer'));
+    }
+    $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_Spreadsheet');
+    $form->addElement('checkbox', 'isFirstRowHeader', ts('First row contains column headers'));
+
+    $maxFileSizeMegaBytes = \CRM_Utils_File::getMaxFileSize();
+    $maxFileSizeBytes = $maxFileSizeMegaBytes * 1024 * 1024;
+    $form->assign('uploadSize', $maxFileSizeMegaBytes);
+    $form->add('File', 'uploadFile', ts('Import Data File'), NULL, TRUE);
+    $form->setMaxFileSize($maxFileSizeBytes);
+    $form->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', [
+      1 => $maxFileSizeMegaBytes,
+      2 => $maxFileSizeBytes,
+    ]), 'maxfilesize', $maxFileSizeBytes);
+    $form->registerRule('spreadsheet', 'callback', 'isValidSpreadsheet', __CLASS__);
+    $form->addRule('uploadFile', ts('The file must be of type ODS (LibreOffice), XLSX (Excel).'), 'spreadsheet');
+
+    $form->setDataSourceDefaults($this->getDefaultValues());
+  }
+
+  /**
+   * Is the value in the uploaded file field a valid spreadsheet.
+   *
+   * @param array $file
+   *
+   * @return bool
+   *
+   * @noinspection PhpUnused
+   */
+  public static function isValidSpreadsheet(array $file): bool {
+    $file_type = IOFactory::identify($file['tmp_name']);
+    return in_array($file_type, ['Xlsx', 'Ods']);
+  }
+
+  /**
+   * Get default values for excel dataSource fields.
+   *
+   * @return array
+   */
+  public function getDefaultValues(): array {
+    return [
+      'isFirstRowHeader' => 1,
+    ];
+  }
+
+  /**
+   * Get array array of field names that may be submitted for this data source.
+   *
+   * The quick form for the datasource is added by ajax - meaning that QuickForm
+   * does not see them as part of the form. However, any fields listed in this array
+   * will be taken from the `$_POST` and stored to the UserJob under the DataSource key.
+   *
+   * @return array
+   */
+  public function getSubmittableFields(): array {
+    return ['isFirstRowHeader', 'uploadFile'];
+  }
+
+  /**
+   * Initialize the datasource, based on the submitted values stored in the user job.
+   *
+   * Generally this will include transferring the data to a database table.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function initialize(): void {
+    try {
+      $result = $this->uploadToTable();
+      $this->updateUserJobDataSource([
+        'table_name' => $result['import_table_name'],
+        'column_headers' => $result['column_headers'],
+        'number_of_columns' => $result['number_of_columns'],
+      ]);
+    }
+    catch (ReaderException $e) {
+      throw new \CRM_Core_Exception(ts('Spreadsheet not loaded.') . '' . $e->getMessage());
+    }
+  }
+
+  /**
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\Core\Exception\DBQueryException
+   * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
+   */
+  private function uploadToTable(): array {
+
+    $file_type = IOFactory::identify($this->getSubmittedValue('uploadFile')['name']);
+    $objReader = IOFactory::createReader($file_type);
+    $objReader->setReadDataOnly(TRUE);
+
+    $objPHPExcel = $objReader->load($this->getSubmittedValue('uploadFile')['name']);
+    $dataRows = $objPHPExcel->getActiveSheet()->toArray(NULL, TRUE, TRUE, TRUE);
+
+    // Remove the header
+    if ($this->getSubmittedValue('isFirstRowHeader')) {
+      $headers = array_values(array_shift($dataRows));
+      $columnHeaders = $headers;
+      $columns = $this->getColumnNamesFromHeaders($headers);
+    }
+    else {
+      $columns = $this->getColumnNamesForUnnamedColumns(array_values($dataRows[1]));
+      $columnHeaders = $columns;
+    }
+
+    $tableName = $this->createTempTableFromColumns($columns);
+    $numColumns = count($columns);
+    // Re-key data using the headers
+    $sql = [];
+    foreach ($dataRows as $row) {
+      // CRM-17859 Trim non-breaking spaces from columns.
+      $row = array_map([__CLASS__, 'trimNonBreakingSpaces'], $row);
+      $row = array_map(['CRM_Core_DAO', 'escapeString'], $row);
+      $sql[] = "('" . implode("', '", $row) . "')";
+
+      if (count($sql) >= self::NUM_ROWS_TO_INSERT) {
+        \CRM_Core_DAO::executeQuery("INSERT IGNORE INTO $tableName VALUES " . implode(', ', $sql));
+        $sql = [];
+      }
+    }
+
+    if (!empty($sql)) {
+      \CRM_Core_DAO::executeQuery("INSERT IGNORE INTO $tableName VALUES " . implode(', ', $sql));
+    }
+    $this->addTrackingFieldsToTable($tableName);
+
+    return [
+      'import_table_name' => $tableName,
+      'number_of_columns' => $numColumns,
+      'column_headers' => $columnHeaders,
+    ];
+  }
+
+}
diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml
index 5b713ff9c5..59acd8ac47 100644
--- a/civicrm/ext/civiimport/info.xml
+++ b/civicrm/ext/civiimport/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension contains import functionality which was previously in CiviCRM Core. If you use the import functionality it is recommended to enable this extension.</comments>
   <requires>
diff --git a/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl b/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl
new file mode 100644
index 0000000000..11f3659407
--- /dev/null
+++ b/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl
@@ -0,0 +1,27 @@
+{*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+*}
+<h3>{ts}Upload Spreadsheet{/ts}</h3>
+
+<table class="form-layout">
+  <tr>
+    <td class="label">{$form.uploadFile.label}</td>
+    <td>{$form.uploadFile.html}<br />
+      <div class="description">
+          {ts}The file must be of type ODS (LibreOffice), XLSX (Excel) or CSV.{/ts}<br />
+          {ts 1=$uploadSize}Maximum Upload File Size: %1 MB{/ts}
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td></td>
+    <td>{$form.isFirstRowHeader.html} {$form.isFirstRowHeader.label}</td>
+  </tr>
+</table>
+
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index 08db56a950..8c152e4022 100644
--- a/civicrm/ext/ckeditor4/info.xml
+++ b/civicrm/ext/ckeditor4/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://github.com/civicrm/civicrm-core/</url>
     <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is the version of CKEditor that originally shipped with CiviCRM core</comments>
   <classloader>
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index 9817a3518c..ec6467f51d 100644
--- a/civicrm/ext/contributioncancelactions/info.xml
+++ b/civicrm/ext/contributioncancelactions/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments>
   <classloader>
diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml
index 8ceee27585..67ad218307 100644
--- a/civicrm/ext/elavon/info.xml
+++ b/civicrm/ext/elavon/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments/>
   <classloader>
diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
index ba283646d6..0adf8b1d6e 100644
--- a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
+++ b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
@@ -162,8 +162,6 @@ class CRM_Event_Cart_Form_Checkout_Payment extends CRM_Event_Cart_Form_Cart {
           ) {
             $this->_paymentProcessor = $paymentProcessorDetail;
             $this->assign('paymentProcessor', $this->_paymentProcessor);
-            // Setting this is a bit of a legacy overhang.
-            $this->_paymentObject = $paymentProcessorDetail['object'];
           }
         }
         // It's not clear why we set this on the form.
@@ -250,10 +248,7 @@ class CRM_Event_Cart_Form_Checkout_Payment extends CRM_Event_Cart_Form_Cart {
       else {
         $cost = $event_price_values['amount'];
       }
-      // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-      // function to get correct amount level consistently. Remove setting of the amount level in
-      // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-      // to cover all variants.
+      // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
       $amount_level = $event_price_values['amount_level'];
       $price_details[$price_set_id] = $price_set_amount;
     }
diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
index 6a4d5c07d8..08c8867ec3 100644
--- a/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
+++ b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
@@ -34,7 +34,7 @@ class CRM_Event_Cart_Form_MerParticipant extends CRM_Core_Form {
     foreach ($custom_fields_post as $key => $field) {
       CRM_Core_BAO_UFGroup::buildProfile($form, $field, CRM_Profile_Form::MODE_CREATE, $this->participant->id);
     }
-    $custom = CRM_Utils_Array::value('custom', $form->getTemplate()->_tpl_vars, []);
+    $custom = $form->get_template_vars()['custom'] ?? [];
     $form->assign('custom', array_merge($custom, [
       $this->html_field_name('customPre') => $custom_fields_pre,
       $this->html_field_name('customPost') => $custom_fields_post,
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index 18a5617c89..3353259cef 100644
--- a/civicrm/ext/eventcart/info.xml
+++ b/civicrm/ext/eventcart/info.xml
@@ -12,14 +12,14 @@
     <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index 56239b8cbc..306c26308f 100644
--- a/civicrm/ext/ewaysingle/info.xml
+++ b/civicrm/ext/ewaysingle/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">https://github.com/civicrm/civicrm-core/blob/master/ext/ewaysingle</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/financialacls/financialacls.php b/civicrm/ext/financialacls/financialacls.php
index 334105d92e..da20a0922f 100644
--- a/civicrm/ext/financialacls/financialacls.php
+++ b/civicrm/ext/financialacls/financialacls.php
@@ -57,12 +57,13 @@ function financialacls_civicrm_pre($op, $objectName, $id, &$params) {
   if (!financialacls_is_acl_limiting_enabled()) {
     return;
   }
-  if ($objectName === 'LineItem' && !empty($params['check_permissions'])) {
+  if (in_array($objectName, ['LineItem', 'Product'], TRUE) && !empty($params['check_permissions'])) {
+    if (empty($params['financial_type_id']) && !empty($params['id'])) {
+      $dao = CRM_Core_DAO_AllCoreTables::getFullName($objectName);
+      $params['financial_type_id'] = CRM_Core_DAO::getFieldValue($dao, $params['id'], 'financial_type_id');
+    }
     $operationMap = ['delete' => CRM_Core_Action::DELETE, 'edit' => CRM_Core_Action::UPDATE, 'create' => CRM_Core_Action::ADD];
     CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types, $operationMap[$op]);
-    if (empty($params['financial_type_id'])) {
-      $params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_LineItem', $params['id'], 'financial_type_id');
-    }
     if (!array_key_exists($params['financial_type_id'], $types)) {
       throw new CRM_Core_Exception('You do not have permission to ' . $op . ' this line item');
     }
@@ -93,6 +94,7 @@ function financialacls_civicrm_selectWhereClause($entity, &$clauses) {
     case 'MembershipType':
     case 'ContributionRecur':
     case 'Contribution':
+    case 'Product':
       $clauses['financial_type_id'][] = _financialacls_civicrm_get_type_clause();
       break;
 
@@ -173,7 +175,7 @@ function _financialacls_civicrm_get_accessible_financial_types(): array {
  *
  * @return string
  *
- * @throws \CRM_Core_Exception
+ * @noinspection PhpUnhandledExceptionInspection
  */
 function _financialacls_civicrm_get_membership_type_clause(): string {
   $financialTypes = _financialacls_civicrm_get_accessible_financial_types();
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index 68d7ed87fb..08579fc7de 100644
--- a/civicrm/ext/financialacls/info.xml
+++ b/civicrm/ext/financialacls/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <tags>
     <tag>mgmt:hidden</tag>
@@ -31,6 +31,9 @@
   <mixins>
     <mixin>setting-php@1.0.0</mixin>
   </mixins>
+  <requires>
+    <ext>civi_contribute</ext>
+  </requires>
   <civix>
     <namespace>CRM/Financialacls</namespace>
     <format>23.02.1</format>
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
index 8aea397324..894db1f311 100644
--- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
@@ -7,6 +7,7 @@ use Civi\Api4\FinancialType;
 use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
+use Civi\Api4\Product;
 use Civi\Test;
 use Civi\Test\CiviEnvBuilder;
 use Civi\Test\HeadlessInterface;
@@ -49,6 +50,7 @@ class BaseTestClass extends TestCase implements HeadlessInterface, HookInterface
   public function tearDown(): void {
     Contribution::delete(FALSE)->addWhere('id', '>', 0)->execute();
     FinancialType::delete(FALSE)->addWhere('name', 'LIKE', '%test%')->execute();
+    Product::delete(FALSE)->addWhere('name', '=', '10_dollars')->execute();
     $this->cleanupPriceSets();
   }
 
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php
new file mode 100644
index 0000000000..07c28362b7
--- /dev/null
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Civi\Financialacls;
+
+require_once 'BaseTestClass.php';
+
+/**
+ * @group headless
+ */
+class ProductTest extends BaseTestClass {
+
+  /**
+   * Test api applies permissions on line item actions (delete & get).
+   *
+   * @dataProvider versionThreeAndFour
+   */
+  public function testProductApiPermissions($version): void {
+    $this->createTestEntity('Product', [
+      'name' => '10_dollars',
+      'description' => '10 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 2,
+      'min_contribution' => 10,
+      'cost' => .05,
+      'financial_type_id:name' => 'Member Dues',
+    ], '10_dollars');
+    $this->_apiversion = $version;
+    $this->setupLoggedInUserWithLimitedFinancialTypeAccess();
+    $products = $this->callAPISuccess('Product', 'get', ['sequential' => TRUE])['values'];
+    $this->assertCount(1, $products);
+    $this->callAPISuccessGetCount('Product', ['check_permissions' => TRUE], 0);
+    $this->callAPIFailure('Product', 'Delete', ['check_permissions' => TRUE, 'id' => $products[0]['id']]);
+    $this->callAPISuccess('Product', 'Delete', ['check_permissions' => FALSE, 'id' => $products[0]['id']]);
+  }
+
+}
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index ba6f1de750..d2037aba3d 100644
--- a/civicrm/ext/flexmailer/info.xml
+++ b/civicrm/ext/flexmailer/info.xml
@@ -14,8 +14,8 @@
     <url desc="Support">http://civicrm.stackexchange.com/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <comments>
     FlexMailer is an email delivery engine which replaces the internal guts
@@ -23,7 +23,7 @@
     to provide richer email features.
   </comments>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <tags>
     <tag>mgmt:required</tag>
diff --git a/civicrm/ext/flexmailer/src/Listener/DefaultSender.php b/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
index d09386ff11..0d0a9e2f09 100644
--- a/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
+++ b/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
@@ -167,15 +167,15 @@ class DefaultSender extends BaseListener {
       return FALSE;
     }
 
-    if (strpos($message, 'Failed to set sender') !== FALSE) {
+    if (str_contains($message, 'Failed to set sender')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to add recipient') !== FALSE) {
+    if (str_contains($message, 'Failed to add recipient')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to send data') !== FALSE) {
+    if (str_contains($message, 'Failed to send data')) {
       return TRUE;
     }
 
diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
index 7ae2774f42..531f662cfe 100644
--- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
+++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
@@ -49,10 +49,7 @@ class SimpleFilterTest extends \CiviUnitTestCase {
     SimpleFilter::byValue($e, 'text', function ($value, $t, $e) use ($test) {
       $test->assertInstanceOf('Civi\FlexMailer\FlexMailerTask', $t);
       $test->assertInstanceOf('Civi\FlexMailer\Event\ComposeBatchEvent', $e);
-      $test->assertTrue(in_array($value, [
-        'eat more cheese',
-        'eat more ice cream',
-      ]));
+      $test->assertTrue(in_array($value, ['eat more cheese', 'eat more ice cream']));
       return preg_replace('/more/', 'thoughtfully considered quantities of', $value);
     });
 
diff --git a/civicrm/ext/greenwich/dist/bootstrap3.css b/civicrm/ext/greenwich/dist/bootstrap3.css
index 6378b6ac51..2e71c62d23 100644
--- a/civicrm/ext/greenwich/dist/bootstrap3.css
+++ b/civicrm/ext/greenwich/dist/bootstrap3.css
@@ -7294,6 +7294,10 @@
 	font-weight: normal;
 }
 
+#bootstrap-theme summary {
+	display: list-item;
+}
+
 #bootstrap-theme .form-control .select2-choice {
 	border: 0;
 	border-radius: 2px;
diff --git a/civicrm/ext/greenwich/dist/bootstrap3.min.css b/civicrm/ext/greenwich/dist/bootstrap3.min.css
index d59a5e99c2..3e65fa6aae 100644
--- a/civicrm/ext/greenwich/dist/bootstrap3.min.css
+++ b/civicrm/ext/greenwich/dist/bootstrap3.min.css
@@ -1 +1 @@
-@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"☁"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"✏"}#bootstrap-theme .glyphicon-glass:before{content:""}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:""}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:""}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:""}#bootstrap-theme .glyphicon-tag:before{content:""}#bootstrap-theme .glyphicon-tags:before{content:""}#bootstrap-theme .glyphicon-book:before{content:""}#bootstrap-theme .glyphicon-bookmark:before{content:""}#bootstrap-theme .glyphicon-print:before{content:""}#bootstrap-theme .glyphicon-camera:before{content:""}#bootstrap-theme .glyphicon-font:before{content:""}#bootstrap-theme .glyphicon-bold:before{content:""}#bootstrap-theme .glyphicon-italic:before{content:""}#bootstrap-theme .glyphicon-text-height:before{content:""}#bootstrap-theme .glyphicon-text-width:before{content:""}#bootstrap-theme .glyphicon-align-left:before{content:""}#bootstrap-theme .glyphicon-align-center:before{content:""}#bootstrap-theme .glyphicon-align-right:before{content:""}#bootstrap-theme .glyphicon-align-justify:before{content:""}#bootstrap-theme .glyphicon-list:before{content:""}#bootstrap-theme .glyphicon-indent-left:before{content:""}#bootstrap-theme .glyphicon-indent-right:before{content:""}#bootstrap-theme .glyphicon-facetime-video:before{content:""}#bootstrap-theme .glyphicon-picture:before{content:""}#bootstrap-theme .glyphicon-map-marker:before{content:""}#bootstrap-theme .glyphicon-adjust:before{content:""}#bootstrap-theme .glyphicon-tint:before{content:""}#bootstrap-theme .glyphicon-edit:before{content:""}#bootstrap-theme .glyphicon-share:before{content:""}#bootstrap-theme .glyphicon-check:before{content:""}#bootstrap-theme .glyphicon-move:before{content:""}#bootstrap-theme .glyphicon-step-backward:before{content:""}#bootstrap-theme .glyphicon-fast-backward:before{content:""}#bootstrap-theme .glyphicon-backward:before{content:""}#bootstrap-theme .glyphicon-play:before{content:""}#bootstrap-theme .glyphicon-pause:before{content:""}#bootstrap-theme .glyphicon-stop:before{content:""}#bootstrap-theme .glyphicon-forward:before{content:""}#bootstrap-theme .glyphicon-fast-forward:before{content:""}#bootstrap-theme .glyphicon-step-forward:before{content:""}#bootstrap-theme .glyphicon-eject:before{content:""}#bootstrap-theme .glyphicon-chevron-left:before{content:""}#bootstrap-theme .glyphicon-chevron-right:before{content:""}#bootstrap-theme .glyphicon-plus-sign:before{content:""}#bootstrap-theme .glyphicon-minus-sign:before{content:""}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:""}#bootstrap-theme .glyphicon-question-sign:before{content:""}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:""}#bootstrap-theme .glyphicon-arrow-left:before{content:""}#bootstrap-theme .glyphicon-arrow-right:before{content:""}#bootstrap-theme .glyphicon-arrow-up:before{content:""}#bootstrap-theme .glyphicon-arrow-down:before{content:""}#bootstrap-theme .glyphicon-share-alt:before{content:""}#bootstrap-theme .glyphicon-resize-full:before{content:""}#bootstrap-theme .glyphicon-resize-small:before{content:""}#bootstrap-theme .glyphicon-exclamation-sign:before{content:""}#bootstrap-theme .glyphicon-gift:before{content:""}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:""}#bootstrap-theme .glyphicon-eye-open:before{content:""}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:""}#bootstrap-theme .glyphicon-comment:before{content:""}#bootstrap-theme .glyphicon-magnet:before{content:""}#bootstrap-theme .glyphicon-chevron-up:before{content:""}#bootstrap-theme .glyphicon-chevron-down:before{content:""}#bootstrap-theme .glyphicon-retweet:before{content:""}#bootstrap-theme .glyphicon-shopping-cart:before{content:""}#bootstrap-theme .glyphicon-folder-close:before{content:""}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:""}#bootstrap-theme .glyphicon-resize-horizontal:before{content:""}#bootstrap-theme .glyphicon-hdd:before{content:""}#bootstrap-theme .glyphicon-bullhorn:before{content:""}#bootstrap-theme .glyphicon-bell:before{content:""}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:""}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:""}#bootstrap-theme .glyphicon-hand-down:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:""}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:""}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:""}#bootstrap-theme .glyphicon-dashboard:before{content:""}#bootstrap-theme .glyphicon-paperclip:before{content:""}#bootstrap-theme .glyphicon-heart-empty:before{content:""}#bootstrap-theme .glyphicon-link:before{content:""}#bootstrap-theme .glyphicon-phone:before{content:""}#bootstrap-theme .glyphicon-pushpin:before{content:""}#bootstrap-theme .glyphicon-usd:before{content:""}#bootstrap-theme .glyphicon-gbp:before{content:""}#bootstrap-theme .glyphicon-sort:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-order:before{content:""}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:""}#bootstrap-theme .glyphicon-unchecked:before{content:""}#bootstrap-theme .glyphicon-expand:before{content:""}#bootstrap-theme .glyphicon-collapse-down:before{content:""}#bootstrap-theme .glyphicon-collapse-up:before{content:""}#bootstrap-theme .glyphicon-log-in:before{content:""}#bootstrap-theme .glyphicon-flash:before{content:""}#bootstrap-theme .glyphicon-log-out:before{content:""}#bootstrap-theme .glyphicon-new-window:before{content:""}#bootstrap-theme .glyphicon-record:before{content:""}#bootstrap-theme .glyphicon-save:before{content:""}#bootstrap-theme .glyphicon-open:before{content:""}#bootstrap-theme .glyphicon-saved:before{content:""}#bootstrap-theme .glyphicon-import:before{content:""}#bootstrap-theme .glyphicon-export:before{content:""}#bootstrap-theme .glyphicon-send:before{content:""}#bootstrap-theme .glyphicon-floppy-disk:before{content:""}#bootstrap-theme .glyphicon-floppy-saved:before{content:""}#bootstrap-theme .glyphicon-floppy-remove:before{content:""}#bootstrap-theme .glyphicon-floppy-save:before{content:""}#bootstrap-theme .glyphicon-floppy-open:before{content:""}#bootstrap-theme .glyphicon-credit-card:before{content:""}#bootstrap-theme .glyphicon-transfer:before{content:""}#bootstrap-theme .glyphicon-cutlery:before{content:""}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:""}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:""}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:""}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:""}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"¥"}#bootstrap-theme .glyphicon-jpy:before{content:"¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:""}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:""}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:""}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important}
\ No newline at end of file
+@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"☁"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"✏"}#bootstrap-theme .glyphicon-glass:before{content:""}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:""}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:""}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:""}#bootstrap-theme .glyphicon-tag:before{content:""}#bootstrap-theme .glyphicon-tags:before{content:""}#bootstrap-theme .glyphicon-book:before{content:""}#bootstrap-theme .glyphicon-bookmark:before{content:""}#bootstrap-theme .glyphicon-print:before{content:""}#bootstrap-theme .glyphicon-camera:before{content:""}#bootstrap-theme .glyphicon-font:before{content:""}#bootstrap-theme .glyphicon-bold:before{content:""}#bootstrap-theme .glyphicon-italic:before{content:""}#bootstrap-theme .glyphicon-text-height:before{content:""}#bootstrap-theme .glyphicon-text-width:before{content:""}#bootstrap-theme .glyphicon-align-left:before{content:""}#bootstrap-theme .glyphicon-align-center:before{content:""}#bootstrap-theme .glyphicon-align-right:before{content:""}#bootstrap-theme .glyphicon-align-justify:before{content:""}#bootstrap-theme .glyphicon-list:before{content:""}#bootstrap-theme .glyphicon-indent-left:before{content:""}#bootstrap-theme .glyphicon-indent-right:before{content:""}#bootstrap-theme .glyphicon-facetime-video:before{content:""}#bootstrap-theme .glyphicon-picture:before{content:""}#bootstrap-theme .glyphicon-map-marker:before{content:""}#bootstrap-theme .glyphicon-adjust:before{content:""}#bootstrap-theme .glyphicon-tint:before{content:""}#bootstrap-theme .glyphicon-edit:before{content:""}#bootstrap-theme .glyphicon-share:before{content:""}#bootstrap-theme .glyphicon-check:before{content:""}#bootstrap-theme .glyphicon-move:before{content:""}#bootstrap-theme .glyphicon-step-backward:before{content:""}#bootstrap-theme .glyphicon-fast-backward:before{content:""}#bootstrap-theme .glyphicon-backward:before{content:""}#bootstrap-theme .glyphicon-play:before{content:""}#bootstrap-theme .glyphicon-pause:before{content:""}#bootstrap-theme .glyphicon-stop:before{content:""}#bootstrap-theme .glyphicon-forward:before{content:""}#bootstrap-theme .glyphicon-fast-forward:before{content:""}#bootstrap-theme .glyphicon-step-forward:before{content:""}#bootstrap-theme .glyphicon-eject:before{content:""}#bootstrap-theme .glyphicon-chevron-left:before{content:""}#bootstrap-theme .glyphicon-chevron-right:before{content:""}#bootstrap-theme .glyphicon-plus-sign:before{content:""}#bootstrap-theme .glyphicon-minus-sign:before{content:""}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:""}#bootstrap-theme .glyphicon-question-sign:before{content:""}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:""}#bootstrap-theme .glyphicon-arrow-left:before{content:""}#bootstrap-theme .glyphicon-arrow-right:before{content:""}#bootstrap-theme .glyphicon-arrow-up:before{content:""}#bootstrap-theme .glyphicon-arrow-down:before{content:""}#bootstrap-theme .glyphicon-share-alt:before{content:""}#bootstrap-theme .glyphicon-resize-full:before{content:""}#bootstrap-theme .glyphicon-resize-small:before{content:""}#bootstrap-theme .glyphicon-exclamation-sign:before{content:""}#bootstrap-theme .glyphicon-gift:before{content:""}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:""}#bootstrap-theme .glyphicon-eye-open:before{content:""}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:""}#bootstrap-theme .glyphicon-comment:before{content:""}#bootstrap-theme .glyphicon-magnet:before{content:""}#bootstrap-theme .glyphicon-chevron-up:before{content:""}#bootstrap-theme .glyphicon-chevron-down:before{content:""}#bootstrap-theme .glyphicon-retweet:before{content:""}#bootstrap-theme .glyphicon-shopping-cart:before{content:""}#bootstrap-theme .glyphicon-folder-close:before{content:""}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:""}#bootstrap-theme .glyphicon-resize-horizontal:before{content:""}#bootstrap-theme .glyphicon-hdd:before{content:""}#bootstrap-theme .glyphicon-bullhorn:before{content:""}#bootstrap-theme .glyphicon-bell:before{content:""}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:""}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:""}#bootstrap-theme .glyphicon-hand-down:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:""}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:""}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:""}#bootstrap-theme .glyphicon-dashboard:before{content:""}#bootstrap-theme .glyphicon-paperclip:before{content:""}#bootstrap-theme .glyphicon-heart-empty:before{content:""}#bootstrap-theme .glyphicon-link:before{content:""}#bootstrap-theme .glyphicon-phone:before{content:""}#bootstrap-theme .glyphicon-pushpin:before{content:""}#bootstrap-theme .glyphicon-usd:before{content:""}#bootstrap-theme .glyphicon-gbp:before{content:""}#bootstrap-theme .glyphicon-sort:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-order:before{content:""}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:""}#bootstrap-theme .glyphicon-unchecked:before{content:""}#bootstrap-theme .glyphicon-expand:before{content:""}#bootstrap-theme .glyphicon-collapse-down:before{content:""}#bootstrap-theme .glyphicon-collapse-up:before{content:""}#bootstrap-theme .glyphicon-log-in:before{content:""}#bootstrap-theme .glyphicon-flash:before{content:""}#bootstrap-theme .glyphicon-log-out:before{content:""}#bootstrap-theme .glyphicon-new-window:before{content:""}#bootstrap-theme .glyphicon-record:before{content:""}#bootstrap-theme .glyphicon-save:before{content:""}#bootstrap-theme .glyphicon-open:before{content:""}#bootstrap-theme .glyphicon-saved:before{content:""}#bootstrap-theme .glyphicon-import:before{content:""}#bootstrap-theme .glyphicon-export:before{content:""}#bootstrap-theme .glyphicon-send:before{content:""}#bootstrap-theme .glyphicon-floppy-disk:before{content:""}#bootstrap-theme .glyphicon-floppy-saved:before{content:""}#bootstrap-theme .glyphicon-floppy-remove:before{content:""}#bootstrap-theme .glyphicon-floppy-save:before{content:""}#bootstrap-theme .glyphicon-floppy-open:before{content:""}#bootstrap-theme .glyphicon-credit-card:before{content:""}#bootstrap-theme .glyphicon-transfer:before{content:""}#bootstrap-theme .glyphicon-cutlery:before{content:""}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:""}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:""}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:""}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:""}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"¥"}#bootstrap-theme .glyphicon-jpy:before{content:"¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:""}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:""}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:""}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme summary{display:list-item}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important}
\ No newline at end of file
diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml
index 3dbd78797a..95c8b08874 100644
--- a/civicrm/ext/greenwich/info.xml
+++ b/civicrm/ext/greenwich/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/greenwich/scss/_tweaks.scss b/civicrm/ext/greenwich/scss/_tweaks.scss
index 9ff7350a79..e472c7e5e4 100644
--- a/civicrm/ext/greenwich/scss/_tweaks.scss
+++ b/civicrm/ext/greenwich/scss/_tweaks.scss
@@ -25,3 +25,7 @@ input[type="search"]::-webkit-search-cancel-button {
   font-size: inherit;
   font-weight: normal;
 }
+/* Bootstrap3 styles these as block which is non-compliant with html standards */
+summary {
+  display: list-item;
+}
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
index 79ed104952..159577b173 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
@@ -96,7 +96,7 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch extends CRM_Contact_Form_Sea
     );
 
     // Select box for Activity Type
-    $activityType = ['' => ts(' - select activity - ')] + CRM_Core_PseudoConstant::activityType();
+    $activityType = ['' => ts(' - select activity - ')] + CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'search');
 
     $form->add('select', 'activity_type_id', ts('Activity Type'),
       $activityType,
@@ -104,7 +104,7 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch extends CRM_Contact_Form_Sea
     );
 
     // textbox for Activity Status
-    $activityStatus = ['' => ts(' - select status - ')] + CRM_Core_PseudoConstant::activityStatus();
+    $activityStatus = ['' => ts(' - select status - ')] + CRM_Activity_BAO_Activity::buildOptions('status_id', 'search');
 
     $form->add('select', 'activity_status_id', ts('Activity Status'),
       $activityStatus,
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
index ae6eeec70c..d19435aaa6 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
@@ -112,8 +112,8 @@ class CRM_Contact_Form_Search_Custom_FullText extends CRM_Contact_Form_Search_Cu
       // 1. this custom search has slightly different structure ,
       // 2. we are in constructor right now,
       // we 'll use a small hack -
-      $rowCount = CRM_Utils_Array::value('crmRowCount', $_REQUEST, Civi::settings()->get('default_pager_size'));
-      $pageId = CRM_Utils_Array::value('crmPID', $_REQUEST, 1);
+      $rowCount = $_REQUEST['crmRowCount'] ?? Civi::settings()->get('default_pager_size');
+      $pageId = $_REQUEST['crmPID'] ?? 1;
       $offset = ($pageId - 1) * $rowCount;
       $this->_limitClause = NULL;
       $this->_limitRowClause = [$rowCount, NULL];
@@ -137,7 +137,7 @@ class CRM_Contact_Form_Search_Custom_FullText extends CRM_Contact_Form_Search_Cu
   public function getFieldValue(array $formValues, string $field, $type, $default = NULL) {
     $value = $formValues[$field] ?? NULL;
     if (!$value) {
-      return CRM_Utils_Request::retrieve($field, $type, CRM_Core_DAO::$_nullObject, FALSE, $default);
+      return CRM_Utils_Request::retrieve($field, $type, NULL, FALSE, $default);
     }
     return $value;
   }
@@ -377,8 +377,6 @@ WHERE      t.table_name = 'Activity' AND
     }
     $dao = CRM_Core_DAO::executeQuery($sql);
 
-    $activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE);
-    $roleIds = CRM_Event_PseudoConstant::participantRole();
     while ($dao->fetch()) {
       $row = [];
       foreach ($this->_tableFields as $name => $dontCare) {
@@ -386,14 +384,14 @@ WHERE      t.table_name = 'Activity' AND
           $row[$name] = $dao->$name;
         }
         else {
-          $row['activity_type'] = $activityTypes[$dao->$name] ?? NULL;
+          $row['activity_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $dao->$name);
         }
       }
       if (isset($row['participant_role'])) {
         $participantRole = explode(CRM_Core_DAO::VALUE_SEPARATOR, $row['participant_role']);
         $viewRoles = [];
         foreach ($participantRole as $v) {
-          $viewRoles[] = $roleIds[$v];
+          $viewRoles[] = CRM_Core_PseudoConstant::getLabel('CRM_Event_BAO_Participant', 'role_id', $v);
         }
         $row['participant_role'] = implode(', ', $viewRoles);
       }
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
index e23b4d5cf7..589efdc3b9 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
@@ -63,11 +63,7 @@ class CRM_Contact_Form_Search_Custom_PriceSet extends CRM_Contact_Form_Search_Cu
 ';
 
     foreach ($this->_columns as $fieldName) {
-      if (in_array($fieldName, [
-        'contact_id',
-        'participant_id',
-        'display_name',
-      ])) {
+      if (in_array($fieldName, ['contact_id', 'participant_id', 'display_name'])) {
         continue;
       }
       $sql .= "{$fieldName} int default 0,\n";
@@ -259,10 +255,7 @@ contact_a.id             as contact_id  ,
 contact_a.display_name   as display_name";
 
       foreach ($this->_columns as $dontCare => $fieldName) {
-        if (in_array($fieldName, [
-          'contact_id',
-          'display_name',
-        ])) {
+        if (in_array($fieldName, ['contact_id', 'display_name'])) {
           continue;
         }
         $selectClause .= ",\ntempTable.{$fieldName} as {$fieldName}";
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 63d16483e9..80bcc9121f 100644
--- a/civicrm/ext/legacycustomsearches/info.xml
+++ b/civicrm/ext/legacycustomsearches/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is our old search system which has limited support. All new effort is on SearchKit</comments>
   <classloader>
diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
index 7bff678351..ed40a2dfe8 100644
--- a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
+++ b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
@@ -300,7 +300,7 @@ class GroupTest extends TestCase implements HeadlessInterface, HookInterface, Tr
         $full[] = [
           'contact_id' => $this->ids['Contact'][$id],
           'contact_type' => 'Individual',
-          'sort_name' => 'Contact ' . $id . ', Test',
+          'sort_name' => 'Contact ' . $id . ', Test II',
         ];
       }
     }
diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml
index d133966116..13dd89608e 100644
--- a/civicrm/ext/message_admin/info.xml
+++ b/civicrm/ext/message_admin/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index 84ca39e0c5..88d6a7eec4 100644
--- a/civicrm/ext/oauth-client/info.xml
+++ b/civicrm/ext/oauth-client/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext version="~4.5">org.civicrm.afform</ext>
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index a90d69bb18..bc2e345fbc 100644
--- a/civicrm/ext/payflowpro/info.xml
+++ b/civicrm/ext/payflowpro/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index 4d008d4dfc..2a71a6b02d 100644
--- a/civicrm/ext/recaptcha/info.xml
+++ b/civicrm/ext/recaptcha/info.xml
@@ -12,14 +12,14 @@
     <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/recaptcha</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/scheduled_communications/info.xml b/civicrm/ext/scheduled_communications/info.xml
index c017b2bf5c..af9cecbb84 100644
--- a/civicrm/ext/scheduled_communications/info.xml
+++ b/civicrm/ext/scheduled_communications/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/search-improvements</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments>
   <classloader>
diff --git a/civicrm/ext/search_kit/CRM/Search/Upgrader.php b/civicrm/ext/search_kit/CRM/Search/Upgrader.php
index 24f573e1c5..69ab606922 100644
--- a/civicrm/ext/search_kit/CRM/Search/Upgrader.php
+++ b/civicrm/ext/search_kit/CRM/Search/Upgrader.php
@@ -40,7 +40,7 @@ class CRM_Search_Upgrader extends CRM_Extension_Upgrader_Base {
     foreach ($savedSearches as $savedSearch) {
       $newAliases = [];
       foreach ($savedSearch['api_params']['select'] ?? [] as $i => $select) {
-        if (strstr($select, '(') && !strstr($select, ' AS ')) {
+        if (str_contains($select, '(') && !str_contains($select, ' AS ')) {
           $alias = CRM_Utils_String::munge(str_replace(')', '', $select), '_', 256);
           $newAliases[$select] = $alias;
           $savedSearch['api_params']['select'][$i] = $select . ' AS ' . $alias;
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
index 69acf8e3ff..75982ddf83 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
@@ -651,7 +651,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
       return \CRM_Core_Permission::check($permissions) == ($op !== '!=');
     }
     // Convert the conditional value of 'current_domain' into an actual value that filterCompare can work with
-    if ($item['condition'][2] === 'current_domain') {
+    if ($item['condition'][2] ?? '' === 'current_domain') {
       if (str_ends_with($item['condition'][0], ':label') !== FALSE) {
         $item['condition'][2] = \CRM_Core_BAO_Domain::getDomain()->name;
       }
diff --git a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
index 03649969ba..54cd5ce2cf 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
@@ -59,10 +59,9 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements
       throw new \CRM_Core_Exception("Entity name is required to get autocomplete default display.");
     }
     $idField = CoreUtil::getIdFieldName($entityName);
-    $searchFields = CoreUtil::getSearchFields($entityName);
-    if (!$searchFields) {
-      throw new \CRM_Core_Exception("Entity $entityName has no default label field.");
-    }
+
+    // If there's no label field, fall back on id. That's a pretty lame autocomplete but better than nothing.
+    $searchFields = CoreUtil::getSearchFields($entityName) ?: [$idField];
 
     // Default sort order
     $e->display['settings']['sort'] = self::getDefaultSort($entityName);
diff --git a/civicrm/ext/search_kit/Civi/Search/Meta.php b/civicrm/ext/search_kit/Civi/Search/Meta.php
index 9fadf2364c..fe1120cb60 100644
--- a/civicrm/ext/search_kit/Civi/Search/Meta.php
+++ b/civicrm/ext/search_kit/Civi/Search/Meta.php
@@ -57,7 +57,7 @@ class Meta {
     ];
 
     foreach ($apiParams['select'] ?? [] as $select) {
-      if (strstr($select, ' AS ')) {
+      if (str_contains($select, ' AS ')) {
         $expr = SqlExpression::convert($select, TRUE);
         $label = $expr::getTitle();
         foreach ($expr->getFields() as $num => $fieldName) {
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
index 1b9adf9ffd..c1c8f9fbcf 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
@@ -190,7 +190,7 @@
         function getKeyword(whitelist) {
           var keyword;
           _.each(_.filter(whitelist), function(flag) {
-            if (argString.indexOf(flag + ' ') === 0) {
+            if (argString.indexOf(flag + ' ') === 0 || argString === flag) {
               keyword = flag;
               argString = _.trim(argString.substr(flag.length));
               return false;
@@ -241,7 +241,7 @@
               }
               getKeyword([',']);
             }
-            if (expr && !_.isEmpty(expr.flag_after)) {
+            if (info.args.length && !_.isEmpty(param.flag_after)) {
               _.last(info.args).flag_after = getKeyword(_.keys(param.flag_after));
             }
           } else if (param.flag_before && !param.optional) {
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
index 6a52133a58..6ba39c1c30 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
@@ -74,15 +74,14 @@
     </ul>
   </div>
 </div>
-<fieldset id="crm-search-build-functions">
-  <legend ng-click="controls.showFunctions = !controls.showFunctions">
-    <i class="crm-i fa-caret-{{ !controls.showFunctions ? 'right' : 'down' }}"></i>
+<details id="crm-search-build-functions">
+  <summary ng-click="controls.showFunctions = !controls.showFunctions">
     {{:: ts('Field Transformations') }}
-  </legend>
+  </summary>
   <div ng-if="!!controls.showFunctions">
     <!-- Must use track by $index with an array of primitives, and manually refresh this loop when indexes change -->
     <fieldset ng-repeat="col in $ctrl.savedSearch.api_params.select track by $index" ng-if="!$ctrl.isPseudoField(col)">
       <crm-search-function class="form-inline" mode="select" expr="$ctrl.savedSearch.api_params.select[$index]"></crm-search-function>
     </fieldset>
   </div>
-</fieldset>
+</details>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
index 5f4902f998..6acdeb50e7 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
@@ -22,7 +22,7 @@
         <span ng-if="!$ctrl.hasFunction(clause[0])">
           <input class="form-control collapsible-optgroups" ng-model="clause[0]" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" ng-change="$ctrl.changeClauseField(clause, index)" />
         </span>
-        <crm-search-condition clause="clause" field="$ctrl.getFieldOrFunction(clause[0])" offset="1" option-key="$ctrl.getOptionKey(clause[0])" format="$ctrl.format" class="form-group"></crm-search-condition>
+        <crm-search-condition clause="clause" field="$ctrl.getFieldOrFunction(clause[0])" fields="$ctrl.fields" offset="1" option-key="$ctrl.getOptionKey(clause[0])" format="$ctrl.format" class="form-group"></crm-search-condition>
       </div>
       <fieldset class="clearfix" ng-if="$ctrl.conjunctions[clause[0]]">
         <crm-search-clause allow-functions="$ctrl.allowFunctions" clauses="clause[1]" format="{{ $ctrl.format }}" op="{{ clause[0] }}" fields="$ctrl.fields" delete-group="$ctrl.deleteRow(index)" ></crm-search-clause>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
index aa90a53f26..ac682c5b13 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
@@ -7,6 +7,7 @@
       clause: '<',
       format: '<',
       optionKey: '<',
+      fields: '<',
       offset: '<'
     },
     templateUrl: '~/crmSearchAdmin/crmSearchCondition.html',
@@ -16,6 +17,20 @@
       this.operators = {};
 
       this.$onInit = function() {
+        if (this.fields) {
+          let val = getValue();
+          // WHERE clause has an explicit flag if input type is a field
+          if (this.format !== 'json') {
+            this.inputMode = this.clause[2 + ctrl.offset] ? 'field' : 'value';
+          }
+          // ON clause will be quoted json-style if not a field
+          else {
+            if (typeof val === 'string' && /^[a-zA-Z]/.test(val)) {
+              this.inputMode = 'field';
+            }
+          }
+        }
+        this.inputMode = this.inputMode || 'value';
         $scope.$watch('$ctrl.field', updateOperators);
       };
 
@@ -54,6 +69,18 @@
         return getValue();
       };
 
+      // ngChange handler for the field/value mode toggle
+      this.changeInputMode = function() {
+        setValue('');
+        if (ctrl.format !== 'json') {
+          if (ctrl.inputMode === 'field') {
+            this.clause[2 + ctrl.offset] = true;
+          } else {
+            delete this.clause[2 + ctrl.offset];
+          }
+        }
+      };
+
       // Return a list of operators allowed for the current field
       this.getOperators = function() {
         var field = ctrl.field || {},
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
index ed54a75a28..be6ac8ff7b 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
@@ -1,2 +1,9 @@
 <select class="form-control api4-operator" ng-model="$ctrl.getSetOperator" ng-if="$ctrl.getOperators().length > 1" ng-model-options="{getterSetter: true}" ng-options="o.key as o.value for o in $ctrl.getOperators()" ng-change="$ctrl.changeClauseOperator()" ></select>
-<crm-search-input ng-if="$ctrl.operatorTakesInput()" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" field="$ctrl.field" option-key="$ctrl.optionKey" op="$ctrl.getSetOperator()" format="$ctrl.format" class="form-group"></crm-search-input>
+<select class="form-control crm-search-input-mode" ng-if="$ctrl.fields" ng-model="$ctrl.inputMode" ng-change="$ctrl.changeInputMode(clause, index)" >
+  <option value="value">{{:: ts('Value') }}</option>
+  <option value="field">{{:: ts('Field') }}</option>
+</select>
+<crm-search-input ng-if="$ctrl.inputMode === 'value' && $ctrl.operatorTakesInput()" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" field="$ctrl.field" option-key="$ctrl.optionKey" op="$ctrl.getSetOperator()" format="$ctrl.format" class="form-group"></crm-search-input>
+<span ng-if="$ctrl.inputMode === 'field' && $ctrl.operatorTakesInput()">
+  <input class="form-control collapsible-optgroups" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" />
+</span>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
index 366bb69105..25e472b5b3 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
@@ -44,19 +44,20 @@
         }
       });
 
-      this.addArg = function(exprType) {
+      this.addArg = function(exprType, optional) {
         var param = ctrl.getParam(ctrl.args.length),
           val = '';
         if (exprType === 'SqlNumber') {
           // Number: default to 0
           val = 0;
-        } else if (exprType === 'SqlField') {
+        } else if (exprType === 'SqlField' && !optional) {
           // Field: Default to first available field, making it easier to delete the value
           val = ctrl.getFields().results[0].children[0].id;
         }
         ctrl.args.push({
           type: ctrl.exprTypes[exprType].type,
           flag_before: _.filter(_.keys(param.flag_before))[0],
+          flag_after: _.filter(_.keys(param.flag_after))[0],
           name: param.name,
           value: val
         });
@@ -70,11 +71,11 @@
         _.each(ctrl.fn.params, function(param, index) {
           while (
             (ctrl.args.length - index < param.min_expr) &&
-            // TODO: Handle named params like "ORDER BY"
-            !(param.name && param.optional) &&
+            // Exclude 'api_default' params (should not be changed by the user)
+            !param.api_default &&
             (!param.optional || param.must_be.length === 1)
           ) {
-            ctrl.addArg(param.must_be[0]);
+            ctrl.addArg(param.must_be[0], param.optional);
           }
         });
       }
@@ -144,6 +145,7 @@
             ctrl.args.splice(pos, 0, {
               type: exprType ? ctrl.exprTypes[exprType].type : null,
               flag_before: _.filter(_.keys(ctrl.fn.params[pos].flag_before))[0],
+              flag_after: _.filter(_.keys(ctrl.fn.params[pos].flag_after))[0],
               name: ctrl.fn.params[pos].name,
               value: exprType === 'SqlNumber' ? 0 : ''
             });
@@ -152,6 +154,7 @@
           // Update fieldArg
           var fieldParam = ctrl.fn.params[pos];
           ctrl.fieldArg.flag_before = _.keys(fieldParam.flag_before)[0];
+          ctrl.fieldArg.flag_after = _.keys(fieldParam.flag_after)[0];
           ctrl.fieldArg.name = fieldParam.name;
           initFunction();
         }
@@ -159,9 +162,10 @@
       };
 
       this.changeArg = function(index) {
-        var val = ctrl.args[index].value;
-        // Delete empty value
-        if (index && !val && val !== 0 && ctrl.args.length > ctrl.fn.params[0].min_expr) {
+        var val = ctrl.args[index].value,
+          param = ctrl.getParam(index);
+        // Delete empty value if allowed
+        if (index && !val && val !== 0 && !param.optional && ctrl.args.length > param.min_expr) {
           ctrl.args.splice(index, 1);
         }
         ctrl.writeExpr();
@@ -178,7 +182,8 @@
           var args = _.transform(ctrl.args, function(args, arg, index) {
             if (arg.value || arg.value === 0 || arg.flag_before) {
               var prefix = arg.flag_before || arg.name ? (index ? ' ' : '') + (arg.flag_before || arg.name) + (arg.value ? ' ' : '') : (index ? ', ' : '');
-              args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value));
+              var suffix = arg.flag_after ? ' ' + arg.flag_after : '';
+              args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value) + suffix);
             }
           });
           // Replace fake function "e"
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
index 431c2b15d2..08ef094441 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
@@ -4,12 +4,13 @@
 <label ng-hide="$ctrl.mode !== 'select' && !$ctrl.fn">{{ $ctrl.fieldArg.field.label }}</label>
 
 <div class="form-group" ng-repeat="arg in $ctrl.args">
-  <crm-search-function-flag ng-if="$ctrl.fn" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
+  <crm-search-function-flag ng-if="$ctrl.fn" flag="flag_before" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
   <span ng-switch="arg.type" ng-if="arg !== $ctrl.fieldArg">
     <input ng-switch-when="number" class="form-control" type="number" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-model-options="{updateOn: 'blur'}">
     <input ng-switch-when="string" class="form-control" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-trim="false" ng-model-options="{updateOn: 'blur'}">
     <input ng-switch-when="field" class="form-control" ng-model="arg.value" crm-ui-select="{data: $ctrl.getFields, placeholder: $ctrl.getParam($index).label}" ng-change="$ctrl.changeArg($index)">
   </span>
+  <crm-search-function-flag ng-if="$ctrl.fn && arg.value" flag="flag_after" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
 </div>
 <div class="btn-group" ng-if="$ctrl.canAddArg()">
   <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
index cf2dc92af3..24db599dd3 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
@@ -5,6 +5,7 @@
     bindings: {
       arg: '<',
       param: '<',
+      flag: '@',
       writeExpr: '&'
     },
     templateUrl: '~/crmSearchAdmin/crmSearchFunctionFlag.html',
@@ -12,13 +13,13 @@
       var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
         ctrl = this;
 
-      this.$onInit = function() {
-        if (!ctrl.param || !ctrl.param.flag_before) {
-          this.widget = null;
-        } else if (_.keys(ctrl.param.flag_before).length === 2 && '' in ctrl.param.flag_before) {
-          this.widget = 'checkbox';
+      this.getWidget = function() {
+        if (!ctrl.param || !ctrl.param[ctrl.flag]) {
+          return null;
+        } else if (_.keys(ctrl.param[ctrl.flag]).length === 2 && '' in ctrl.param[ctrl.flag]) {
+          return 'checkbox';
         } else {
-          this.widget = 'select';
+          return 'select';
         }
       };
     }
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
index 8d9d19b4b0..32a126b0fd 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
@@ -1,12 +1,12 @@
-<span ng-switch="$ctrl.widget">
+<span ng-switch="$ctrl.getWidget()">
   <span ng-switch-when="checkbox">
-    <label ng-repeat="(val, label) in $ctrl.param.flag_before" ng-if="val">
-      <input type="checkbox" ng-checked="$ctrl.arg.flag_before === val" ng-click="$ctrl.arg.flag_before = ($ctrl.arg.flag_before === val ? null : val); $ctrl.writeExpr();" >
+    <label ng-repeat="(val, label) in $ctrl.param[$ctrl.flag]" ng-if="val">
+      <input type="checkbox" ng-checked="$ctrl.arg[$ctrl.flag] === val" ng-click="$ctrl.arg[$ctrl.flag] = ($ctrl.arg[$ctrl.flag] === val ? null : val); $ctrl.writeExpr();" >
       {{ label }}
     </label>
   </span>
-  <select ng-switch-when="select" class="form-control" ng-model="$ctrl.arg.flag_before" ng-change="$ctrl.writeExpr();">
-    <option ng-repeat="(val, label) in $ctrl.param.flag_before" value="{{ val }}">
+  <select ng-switch-when="select" class="form-control" ng-model="$ctrl.arg[$ctrl.flag]" ng-change="$ctrl.writeExpr();">
+    <option ng-repeat="(val, label) in $ctrl.param[$ctrl.flag]" value="{{ val }}">
       {{ label }}
     </option>
   </select>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
index a61f99abe9..63d15daf0f 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
@@ -1,9 +1,8 @@
-<fieldset id="crm-search-admin-debug">
-  <legend ng-click="$ctrl.showDebug = !$ctrl.showDebug">
-    <i class="crm-i fa-caret-{{ !$ctrl.showDebug ? 'right' : 'down' }}"></i>
+<details id="crm-search-admin-debug">
+  <summary>
     {{:: ts('Query Info') }}
-  </legend>
-  <div ng-if="$ctrl.showDebug">
+  </summary>
+  <div>
     <pre ng-if="$ctrl.debug.timeIndex">{{ ts('Request took %1 seconds.', {1: $ctrl.debug.timeIndex}) }}</pre>
     <div>
       <strong>API:</strong>
@@ -15,4 +14,4 @@
       <pre ng-repeat="query in $ctrl.debug.sql">{{ query }}</pre>
     </div>
   </div>
-</fieldset>
+</details>
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
index 2f790129d5..d08e57c9d3 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
@@ -1,4 +1,4 @@
-<div class="btn-group" role="group">
+<div class="btn-group" role="group" ng-if="colData.links.length">
   <button type="button" class="dropdown-toggle btn {{:: $ctrl.settings.columns[colIndex].size }} btn-{{:: $ctrl.settings.columns[colIndex].style }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="colData.open = true">
     <i ng-if=":: $ctrl.settings.columns[colIndex].icon" class="crm-i {{:: $ctrl.settings.columns[colIndex].icon }}"></i>
     {{:: colData.text }}
diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml
index a11d088fb1..88c32cf32a 100644
--- a/civicrm/ext/search_kit/info.xml
+++ b/civicrm/ext/search_kit/info.xml
@@ -14,14 +14,14 @@
     <url desc="Issues">https://lab.civicrm.org/dev/report/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments>
   <classloader>
diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
index 9a1d211b7e..bc8d2d8eec 100644
--- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
+++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
@@ -87,6 +87,7 @@ class SearchDownloadTest extends \PHPUnit\Framework\TestCase implements Headless
     $header = array_shift($download);
 
     $this->assertEquals('Duration Subject', $header[0]);
+    $this->assertEquals('Details', $header[1]);
 
     foreach ($download as $rowNum => $data) {
       $this->assertEquals($sampleData[$rowNum]['duration'] . ' ' . $subject, $data[0]);
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index dc945693db..f53134cf4c 100644
--- a/civicrm/ext/sequentialcreditnotes/info.xml
+++ b/civicrm/ext/sequentialcreditnotes/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">https://lab.civicrm.org/extensions/sequentialcreditnotes</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <mixins>
     <mixin>setting-php@1.0.0</mixin>
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
index ad9305b61c..e9e3ceef8c 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
@@ -3,28 +3,51 @@
 use CRM_Standaloneusers_ExtensionUtil as E;
 // phpcs:enable
 
-class CRM_Standaloneusers_BAO_Role extends CRM_Standaloneusers_DAO_Role {
+class CRM_Standaloneusers_BAO_Role extends CRM_Standaloneusers_DAO_Role implements \Civi\Core\HookInterface {
 
   /**
-   * Create a new Role based on array-data
-   *
-   * @param array $params key-value pairs
-   * @return CRM_Standaloneusers_DAO_Role|NULL
+   * Event fired after an action is taken on a Role record.
+   * @param \Civi\Core\Event\PostEvent $event
    */
-  /*
-  public static function create($params) {
-  $className = 'CRM_Standaloneusers_DAO_Role';
-  $entityName = 'Role';
-  $hook = empty($params['id']) ? 'create' : 'edit';
-
-  CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params);
-  $instance = new $className();
-  $instance->copyValues($params);
-  $instance->save();
-  CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance);
+  public static function self_hook_civicrm_post(\Civi\Core\Event\PostEvent $event) {
+    // Remove role from users on deletion
+    if ($event->action === 'delete') {
+      $users = \Civi\Api4\User::get(FALSE)
+        ->addSelect('id', 'roles')
+        ->addWhere('roles', 'CONTAINS', $event->id)
+        ->execute();
+      foreach ($users as $user) {
+        $roles = array_diff($user['roles'], [$event->id]);
+        \Civi\Api4\User::update(FALSE)
+          ->addValue('roles', $roles)
+          ->addWhere('id', '=', $user['id'])
+          ->execute();
+      }
+    }
 
-  return $instance;
+    // Reset cache
+    Civi::cache('metadata')->clear();
   }
+
+  /**
+   * Check access permission
+   *
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param integer|null $userID
+   * @return boolean
+   * @see CRM_Core_DAO::checkAccess
    */
+  public static function _checkAccess(string $entityName, string $action, array $record, ?int $userID): bool {
+    // Prevent users from updating or deleting the admin and everyone roles
+    if (in_array($action, ['delete', 'update'], TRUE)) {
+      $name = $record['name'] ?? CRM_Core_DAO::getFieldValue(self::class, $record['id']);
+      if (in_array($name, ['admin', 'everyone'], TRUE)) {
+        return FALSE;
+      }
+    }
+    return TRUE;
+  }
 
 }
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php
new file mode 100644
index 0000000000..bfbb09a837
--- /dev/null
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+/**
+ * Business access object for the User entity.
+ */
+class CRM_Standaloneusers_BAO_User extends CRM_Standaloneusers_DAO_User implements \Civi\Core\HookInterface {
+
+  /**
+   * Event fired after an action is taken on a User record.
+   * @param \Civi\Core\Event\PreEvent $event
+   */
+  public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if (in_array($event->action, ['create', 'edit'])
+        && empty($event->params['when_updated'])) {
+      // Track when_updated.
+      $event->params['when_updated'] = date('YmdHis');
+    }
+  }
+
+  public static function updateLastAccessed() {
+    $sess = CRM_Core_Session::singleton();
+    $ufID = (int) $sess->get('ufID');
+    CRM_Core_DAO::executeQuery("UPDATE civicrm_uf_match SET when_last_accessed = NOW() WHERE id = $ufID");
+    $sess->set('lastAccess', time());
+  }
+
+  public static function getPreferredLanguages(): array {
+    return CRM_Core_I18n::uiLanguages(FALSE);
+  }
+
+  public static function getTimeZones(): array {
+    $timeZones = [];
+    foreach (\DateTimeZone::listIdentifiers() as $timezoneId) {
+      $timeZones[$timezoneId] = $timezoneId;
+    }
+    return $timeZones;
+  }
+
+  /**
+   * Check access permission
+   *
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param integer|null $userID
+   * @return boolean
+   * @see CRM_Core_DAO::checkAccess
+   */
+  public static function _checkAccess(string $entityName, string $action, array $record, ?int $userID): bool {
+    // Prevent users from deleting their own user account
+    if (in_array($action, ['delete'], TRUE)) {
+      $sess = CRM_Core_Session::singleton();
+      $ufID = (int) $sess->get('ufID');
+      if ($record['id'] == $ufID) {
+        return FALSE;
+      };
+    }
+    return TRUE;
+  }
+
+}
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
index 585f241f2f..31bc162368 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
@@ -6,7 +6,7 @@
  *
  * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d5053ae97fba22b13adecdce76ebb30f)
+ * (GenCodeChecksum:b027d757eff8ad3b630c304037699382)
  */
 use CRM_Standaloneusers_ExtensionUtil as E;
 
@@ -38,6 +38,16 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'add' => 'civicrm/admin/role',
+    'update' => 'civicrm/admin/role#?Role1=[id]',
+  ];
+
   /**
    * Unique Role ID
    *
@@ -77,7 +87,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
   /**
    * Only active roles grant permissions
    *
-   * @var bool|string|null
+   * @var bool|string
    *   (SQL type: tinyint)
    *   Note that values will be retrieved from the database as a string.
    */
@@ -211,6 +221,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
           'type' => CRM_Utils_Type::T_BOOLEAN,
           'title' => E::ts('Role is active'),
           'description' => E::ts('Only active roles grant permissions'),
+          'required' => TRUE,
           'usage' => [
             'import' => FALSE,
             'export' => FALSE,
@@ -225,6 +236,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'CheckBox',
+            'label' => E::ts("Enabled"),
           ],
           'add' => NULL,
         ],
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
index 76ae428a29..4cc9d4b608 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
@@ -6,7 +6,7 @@
  *
  * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:60852489e3705659312988971c632fb7)
+ * (GenCodeChecksum:889ac5b24fb6913d046bd2e52dcb65ea)
  */
 use CRM_Standaloneusers_ExtensionUtil as E;
 
@@ -44,8 +44,8 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'add' => 'civicrm/user',
-    'update' => 'civicrm/user/#?User1=[id]',
+    'add' => 'civicrm/admin/user',
+    'update' => 'civicrm/admin/user/#?User1=[id]',
   ];
 
   /**
@@ -481,6 +481,7 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'CheckBox',
+            'label' => E::ts("Enabled"),
           ],
           'add' => NULL,
         ],
@@ -504,7 +505,10 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'bao' => 'CRM_Standaloneusers_DAO_User',
           'localizable' => 0,
           'html' => [
-            'type' => 'Text',
+            'type' => 'Select',
+          ],
+          'pseudoconstant' => [
+            'callback' => 'CRM_Standaloneusers_BAO_User::getTimeZones',
           ],
           'add' => NULL,
         ],
@@ -526,6 +530,12 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'entity' => 'User',
           'bao' => 'CRM_Standaloneusers_DAO_User',
           'localizable' => 0,
+          'html' => [
+            'type' => 'Select',
+          ],
+          'pseudoconstant' => [
+            'callback' => 'CRM_Standaloneusers_BAO_User::getPreferredLanguages',
+          ],
           'add' => '2.1',
         ],
         'password_reset_token' => [
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
index b3a40144e9..d9017529dc 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
@@ -5,15 +5,21 @@ use Civi\Standalone\Security;
 class CRM_Standaloneusers_Page_Login extends CRM_Core_Page {
 
   public function run() {
-    // // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
-    // CRM_Utils_System::setTitle(E::ts('Login'));
-    //
-    // // Example: Assign a variable for use in a template
-    // $this->assign('currentTime', date('Y-m-d H:i:s'));
+    Security::singleton()->getLoggedInUfID();
+    if (CRM_Core_Session::singleton()->get('ufID')) {
+      // Already logged in.
+      CRM_Utils_System::redirect('/civicrm');
+    }
+
     $this->assign('logoUrl', E::url('images/civicrm-logo.png'));
+    $this->assign('pageTitle', '');
+    $this->assign('forgottenPasswordURL', CRM_Utils_System::url('civicrm/login/password'));
     // Remove breadcrumb for login page.
     $this->assign('breadcrumb', NULL);
 
+    $this->assign('anonAccessDenied', isset($_GET['anonAccessDenied']));
+    $this->assign('justLoggedOut', isset($_GET['justLoggedOut']));
+
     parent::run();
   }
 
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
index 1f18b66c39..6017a8f284 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
@@ -13,7 +13,10 @@ class CRM_Standaloneusers_Page_ResetPassword extends CRM_Core_Page {
 
   public function run() {
 
+    $this->assign('logoUrl', E::url('images/civicrm-logo.png'));
     $this->assign('hibp', CIVICRM_HIBP_URL);
+    $this->assign('pageTitle', '');
+    $this->assign('breadcrumb', NULL);
     // $this->assign('loggedInUserID', CRM_Utils_System::getLoggedInUfID());
     Civi::service('angularjs.loader')->addModules('crmResetPassword');
 
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
index 3797232262..76f45c5d24 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
@@ -3,10 +3,10 @@ use Civi\WorkflowMessage\GenericWorkflowMessage;
 
 /**
  *
- * @method static setResetUrlPlaintext(string $s)
- * @method static setResetUrlHtml(string $s)
- * @method static setUsernamePlaintext(string $s)
- * @method static setUsernameHtml(string $s)
+ * @method $this setResetUrlPlaintext(string $s)
+ * @method $this setResetUrlHtml(string $s)
+ * @method $this setUsernamePlaintext(string $s)
+ * @method $this setUsernameHtml(string $s)
  *
  */
 class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowMessage {
@@ -62,6 +62,7 @@ class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowM
     $resetUrlHtml = htmlspecialchars($resetUrlPlaintext);
     $this->logParams = [
       'userID'   => $user['id'],
+      'contactID' => $user['contact_id'],
       'username' => $user['username'],
       'email'    => $user['uf_name'],
       'url'      => $resetUrlPlaintext,
@@ -71,7 +72,8 @@ class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowM
       ->setResetUrlHtml($resetUrlHtml)
       ->setUsernamePlaintext($user['username'])
       ->setUsernameHtml(htmlspecialchars($user['username']))
-      ->setTo($user['uf_name']);
+      ->setTo(['name' => $user['username'], 'email' => $user['uf_name']])
+      ->setContactID($user['contact_id']);
     return $this;
   }
 
diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
index 6205d79078..54f99a76fa 100644
--- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
+++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
@@ -41,7 +41,7 @@ class SendPasswordReset extends AbstractAction {
     }
 
     $user = User::get(FALSE)
-      ->addSelect('id', 'uf_name', 'username')
+      ->addSelect('id', 'uf_name', 'username', 'contact_id')
       ->addWhere('is_active', '=', TRUE)
       ->setLimit(1)
       ->addWhere(
diff --git a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
index 587f1f504e..7b5313a0c7 100644
--- a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
+++ b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
@@ -81,7 +81,7 @@ class Security {
     return \Civi\Api4\User::get(FALSE)
       ->addWhere('username', '=', $username)
       ->execute()
-      ->single()['id'] ?? NULL;
+      ->first()['id'] ?? NULL;
   }
 
   /**
@@ -210,6 +210,8 @@ class Security {
       return FALSE;
     }
 
+    $this->applyLocaleFromUser($user);
+
     // Note: random_int is more appropriate for cryptographical use than mt_rand
     // The long number is the max 32 bit value.
     return [$user['contact_id'], $user['id'], random_int(0, 2147483647)];
@@ -235,6 +237,7 @@ class Security {
       ])['values'][0]['contact_id'] ?? NULL;
       // Confusingly, Civi stores it's *Contact* ID as *userID* on the session.
       $session->set('userID', $contactID);
+      $this->applyLocaleFromUser($user);
     }
   }
 
@@ -245,12 +248,6 @@ class Security {
     return !empty($this->getLoggedInUfID());
   }
 
-  public function getCurrentLanguage() {
-    // @todo
-    \Civi::log()->debug('CRM_Utils_System_Standalone::getCurrentLanguage: not implemented');
-    return NULL;
-  }
-
   /**
    * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method.
    */
@@ -452,4 +449,17 @@ class Security {
     return $workflowMessage;
   }
 
+  /**
+   * Applies the locale from the user record.
+   *
+   * @param array $user
+   * @return void
+   */
+  private function applyLocaleFromUser(array $user) {
+    $session = CRM_Core_Session::singleton();
+    if (!empty($user['language'])) {
+      $session->set('lcMessages', $user['language']);
+    }
+  }
+
 }
diff --git a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
index 0af704bf35..e5e795c8d2 100644
--- a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
@@ -4,7 +4,7 @@
     <af-field name="name" />
     <af-field name="label" />
     <af-field name="permissions" />
-    <af-field name="is_active" />
+    <af-field name="is_active" defn="{afform_default: '1', input_attrs: {}}" />
   </fieldset>
   <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button>
 </af-form>
diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
index 53e67473d1..ef1eb4be19 100644
--- a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
@@ -5,8 +5,8 @@
     <af-field name="username" />
     <af-field name="uf_name" />
     <af-field name="is_active" />
-    <af-field name="timezone" />
-    <af-field name="language" />
+    <af-field name="timezone" defn="{help_pre: ts('Set the timezone of the user. Date and times will be shown in this timezone. You can also leave it empty to use the default system timezone (which is a server setting).'), input_attrs: {placeholder: ts('Server default timezone')}}" />
+    <af-field name="language" defn="{help_pre: ts('Set the user interface language of this user. You can also leave it empty to use the default system language.'), input_attrs: {placeholder: ts('System default language')}}" />
   </fieldset>
   <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button>
 </af-form>
diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
index 669ca2e222..c17e57e19c 100644
--- a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
@@ -1,16 +1,12 @@
 <div af-fieldset="">
   <div class="af-markup">
-
-
     <div class="help"><p>{{:: ts('User accounts allow people to access CiviCRM. What they can access is determined by which roles the users have, and what permissions are granted to those roles.') }}</p>
     </div>
-
-
   </div>
   <div class="af-container af-layout-cols" af-title="Filters">
     <af-field name="username" defn="{required: false, input_attrs: {}}" />
     <af-field name="uf_name" defn="{required: false, input_attrs: {}}" />
-    <af-field name="is_active" defn="{label: 'Active'}" />
+    <af-field name="is_active" defn="{input_type: 'Radio'}" />
     <af-field name="roles" defn="{input_attrs: {multiple: true}}" />
   </div>
   <crm-search-display-table search-name="Users" display-name="Users"></crm-search-display-table>
diff --git a/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html b/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
index d2604837fd..d9332425c2 100644
--- a/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
+++ b/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
@@ -1,4 +1,5 @@
 <div>
+  <h1>Forgotten Password</h1>
   <form name="changePassword" crm-ui-id-scope>
 
     <div crm-ui-field="{name: 'actorPassword', title: ts('Enter your current password')}">
@@ -34,7 +35,7 @@
       </span>
     </div>
 
-    <button ng-click="$ctrl.attemptChange()" >{{ts('Change Password')}}</button>
+    <button class=btn ng-click="$ctrl.attemptChange()" >{{ts('Change Password')}}</button>
 
   </form>
   <div ng-if="$ctrl.busy" >{{$ctrl.busy}}</div>
diff --git a/civicrm/ext/standaloneusers/ang/crmResetPassword.js b/civicrm/ext/standaloneusers/ang/crmResetPassword.js
index 2d5db04fd4..017c6c6ff2 100644
--- a/civicrm/ext/standaloneusers/ang/crmResetPassword.js
+++ b/civicrm/ext/standaloneusers/ang/crmResetPassword.js
@@ -62,6 +62,7 @@
           return;
         }
         if (ctrl.newPassword != ctrl.newPasswordAgain) {
+          updateAngular('formSubmitted', false);
           alert(ts("Passwords do not match"));
           return;
         }
diff --git a/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html b/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
index 26793c848e..f7e692d0a6 100644
--- a/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
+++ b/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
@@ -3,19 +3,23 @@
   <form name="requestLink" crm-ui-id-scope
     ng-if="!$ctrl.formSubmitted && !$ctrl.token">
 
-    <div crm-ui-field="{name: 'identifier', title: ts('Enter the username or email on your account')}">
+    <h1>Request Password Reset Link</h1>
+
+    <div class="input-wrapper">
+      <label crm-ui-for="identifier">{{ts('Enter the username or email on your account')}}</label>
       <input
-        crm-ui-id="identifier"
-        name="identifier"
-        ng-model="$ctrl.identifier"
-        class="crm-form-text"
-        type=text
-      />
+          crm-ui-id="identifier"
+          name="identifier"
+          ng-model="$ctrl.identifier"
+          class="crm-form-text form-control"
+          type=text
+          />
     </div>
 
-    <button ng-click="$ctrl.sendPasswordReset()" >{{ts('Send Password Reset')}}</button>
+    <button class=crm-button ng-click="$ctrl.sendPasswordReset()" >{{ts('Send Password Reset')}}</button>
   </form>
-  <div ng-if="$ctrl.resetSuccessfullySubmitted" >
+
+  <div ng-if="$ctrl.resetSuccessfullySubmitted" class="help" >
     <p>{{ts('Thanks. If your username/email matched an active account, we will email you with a special link to provide a new password.')}}</p>
     <p>{{ts('The link must be used within an hour, and can only be used once.')}}</p>
   </div>
@@ -24,32 +28,33 @@
 
   <!-- without a token, we offer for them to generate one. -->
   <form ng-if="$ctrl.token && $ctrl.token !== 'invalid' && !$ctrl.formSubmitted" name="resetPassword" crm-ui-id-scope >
-    <div ng=if="$ctrl.token !== 'invalid'" >
-      <div crm-ui-field="{name: 'newPassword', title: ts('Enter a new password')}">
-        <input
+    <h1>Reset Password</h1>
+
+    <div class="input-wrapper">
+      <label crm-ui-for="newPassword">{{ts('Enter a new password')}}</label>
+      <input
           crm-ui-id="newPassword"
           name="newPassword"
           ng-model="$ctrl.newPassword"
-          class="crm-form-text"
+          class="crm-form-text form-control"
           type=password
           />
-      </div>
-
-      <div crm-ui-field="{name: 'newPasswordAgain', title: ts('Re-enter new password')}">
-        <input
+    </div>
+    <div class="input-wrapper">
+      <label crm-ui-for="newPasswordAgain">{{ts('Re-enter new password')}}</label>
+      <input
           crm-ui-id="newPasswordAgain"
           name="newPasswordAgain"
           ng-model="$ctrl.newPasswordAgain"
-          class="crm-form-text"
+          class="crm-form-text form-control"
           type=password
           />
-        <span class="crm-error" ng-show="$ctrl.newPasswordAgain && $ctrl.newPassword && $ctrl.newPassword !== $ctrl.newPasswordAgain">
+      <span class="crm-error" ng-show="$ctrl.newPasswordAgain && $ctrl.newPassword && $ctrl.newPassword !== $ctrl.newPasswordAgain">
           {{ts('Passwords do not match')}}
-        </span>
-      </div>
-
-      <button ng-click="$ctrl.attemptChange()" ng-disabled="$ctrl.formSubmitted">{{ts('Change Password')}}</button>
+      </span>
     </div>
+
+    <button class=crm-button ng-click="$event.preventDefault();$ctrl.attemptChange()" ng-disabled="$ctrl.formSubmitted">{{ts('Change Password')}}</button>
   </form>
 
   <div ng-if="$ctrl.token === 'invalid'" >
diff --git a/civicrm/ext/standaloneusers/css/standalone.css b/civicrm/ext/standaloneusers/css/standalone.css
new file mode 100644
index 0000000000..9093579fe7
--- /dev/null
+++ b/civicrm/ext/standaloneusers/css/standalone.css
@@ -0,0 +1,52 @@
+html.crm-standalone body>.crm-container {
+  padding: 1px 3vw 1rem;
+}
+
+html.crm-standalone  nav.breadcrumb>ol {
+  padding-inline-start: 0;
+}
+
+.standalone-auth-form {
+  display: grid;
+  place-content: center;
+  width: 100%;
+  height: 100vh;
+}
+.standalone-auth-box {
+  box-sizing: border-box;
+  width: clamp(280px, 68vw, 45rem);
+  margin: 0;
+  background-color: white;
+  border: none;
+  border-radius: 3px;
+  padding: 1rem 3vw;;
+}
+.standalone-auth-form img.crm-logo {
+  width: 100%;
+  max-width: 400px;
+  margin: 0 auto 2rem;
+  display: block;
+}
+.standalone-auth-form .input-wrapper {
+  margin-bottom: 1rem;
+}
+.standalone-auth-form label {
+  display: block;
+}
+.standalone-auth-form input {
+  box-sizing: border-box;
+  width: 100%;
+}
+.standalone-auth-form .login-or-forgot {
+  display: grid;
+  gap: 1rem;
+  grid-template-columns: 1fr 1fr;
+}
+.standalone-auth-form .login-or-forgot>a {
+  grid-column: 1;
+}
+.standalone-auth-form .login-or-forgot>button {
+  grid-column: 2;
+  place-self: end;
+  margin-right: 0; /* override civicrm.css's 6px */
+}
diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml
index af1ab0711e..1b1c013eb7 100644
--- a/civicrm/ext/standaloneusers/info.xml
+++ b/civicrm/ext/standaloneusers/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.search_kit</ext>
diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
index 692ea568bd..a17ed750e7 100644
--- a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
+++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
@@ -20,6 +20,7 @@ return [
           'version' => 4,
           'select' => [
             'id',
+            'name',
             'label',
             'is_active',
           ],
@@ -56,35 +57,91 @@ return [
           'pager' => [],
           'placeholder' => 5,
           'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
             [
               'type' => 'field',
               'key' => 'label',
               'dataType' => 'String',
               'label' => E::ts('Label'),
               'sortable' => TRUE,
-              'link' => [
-                'path' => '/civicrm/admin/role#?Role1=[id]',
-                'entity' => '',
-                'action' => '',
-                'join' => '',
-                'target' => '',
-              ],
+              'editable' => TRUE,
             ],
             [
               'type' => 'field',
               'key' => 'is_active',
               'dataType' => 'Boolean',
-              'label' => E::ts('Active'),
+              'label' => E::ts('Enabled'),
               'sortable' => TRUE,
               'rewrite' => '',
               'alignment' => '',
             ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
+                [
+                  'entity' => 'Role',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'Role',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-on',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'condition' => ['is_active', '=', FALSE],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'Role',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-off',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'condition' => ['is_active', '=', TRUE],
+                ],
+                [
+                  'entity' => 'Role',
+                  'task' => 'delete',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                ],
+              ],
+              'type' => 'menu',
+              'icon' => 'fa-bars',
+              'alignment' => 'text-right',
+            ],
           ],
           'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
           ],
+          'toolbar' => [
+            [
+              'text' => E::ts('Add Role'),
+              'target' => 'crm-popup',
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'entity' => 'Role',
+              'action' => 'add',
+            ],
+          ],
         ],
         'acl_bypass' => FALSE,
       ],
diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
index dccaaeb660..7689f3e6f1 100644
--- a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
+++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
@@ -12,9 +12,6 @@ return [
       'values' => [
         'name' => 'Users',
         'label' => E::ts('Administer Users'),
-        'form_values' => NULL,
-        'mapping_id' => NULL,
-        'search_custom_id' => NULL,
         'api_entity' => 'User',
         'api_params' => [
           'version' => 4,
@@ -25,6 +22,7 @@ return [
             'is_active',
             'when_created',
             'when_last_accessed',
+            'roles:label',
           ],
           'orderBy' => [],
           'where' => [],
@@ -32,8 +30,6 @@ return [
           'join' => [],
           'having' => [],
         ],
-        'expires_date' => NULL,
-        'description' => NULL,
       ],
       'match' => [
         'name',
@@ -54,18 +50,16 @@ return [
         'type' => 'table',
         'settings' => [
           'description' => NULL,
-          'sort' => [],
+          'sort' => [
+            [
+              'username',
+              'ASC',
+            ],
+          ],
           'limit' => 50,
           'pager' => [],
           'placeholder' => 5,
           'columns' => [
-            [
-              'type' => 'field',
-              'key' => 'id',
-              'dataType' => 'Integer',
-              'label' => E::ts('id'),
-              'sortable' => TRUE,
-            ],
             [
               'type' => 'field',
               'key' => 'username',
@@ -87,11 +81,18 @@ return [
               'label' => E::ts('Email'),
               'sortable' => TRUE,
             ],
+            [
+              'type' => 'field',
+              'key' => 'roles:label',
+              'dataType' => 'String',
+              'label' => E::ts('Roles'),
+              'sortable' => TRUE,
+            ],
             [
               'type' => 'field',
               'key' => 'is_active',
               'dataType' => 'Boolean',
-              'label' => E::ts('Active?'),
+              'label' => E::ts('Enabled'),
               'sortable' => TRUE,
               'editable' => TRUE,
             ],
@@ -99,16 +100,82 @@ return [
               'type' => 'field',
               'key' => 'when_created',
               'dataType' => 'Timestamp',
-              'label' => E::ts('When Created'),
+              'label' => E::ts('Created'),
               'sortable' => TRUE,
             ],
             [
               'type' => 'field',
               'key' => 'when_last_accessed',
               'dataType' => 'Timestamp',
-              'label' => E::ts('When Last Accessed'),
+              'label' => E::ts('Last Accessed'),
               'sortable' => TRUE,
             ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'entity' => 'User',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-off',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-on',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    FALSE,
+                  ],
+                ],
+                [
+                  'task' => 'delete',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
           ],
           'actions' => [
             'delete',
@@ -120,17 +187,26 @@ return [
             'table',
             'table-striped',
           ],
-          'addButton' => [
-            'path' => '/civicrm/admin/user#',
-            'text' => E::ts('Add User'),
-            'icon' => 'fa-plus',
+          'toolbar' => [
+            [
+              'path' => '/civicrm/admin/user#',
+              'text' => E::ts('Add User'),
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'task' => '',
+              'entity' => '',
+              'action' => '',
+              'join' => '',
+              'target' => '',
+              'condition' => [],
+            ],
           ],
+          'button' => NULL,
         ],
-        'acl_bypass' => FALSE,
       ],
       'match' => [
-        'name',
         'saved_search_id',
+        'name',
       ],
     ],
   ],
diff --git a/civicrm/ext/standaloneusers/sql/auto_install.sql b/civicrm/ext/standaloneusers/sql/auto_install.sql
index ec2f3676e9..9a482bb76e 100644
--- a/civicrm/ext/standaloneusers/sql/auto_install.sql
+++ b/civicrm/ext/standaloneusers/sql/auto_install.sql
@@ -39,7 +39,7 @@ CREATE TABLE `civicrm_role` (
   `name` varchar(60) NOT NULL COMMENT 'Machine name for this role',
   `label` varchar(128) NOT NULL COMMENT 'Human friendly name for this role',
   `permissions` text NOT NULL COMMENT 'List of permissions granted by this role',
-  `is_active` tinyint DEFAULT 1 COMMENT 'Only active roles grant permissions',
+  `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Only active roles grant permissions',
   PRIMARY KEY (`id`)
 )
 ENGINE=InnoDB;
diff --git a/civicrm/ext/standaloneusers/sql/auto_uninstall.sql b/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
index e963db9f2a..35c0c090b4 100644
--- a/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
+++ b/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
@@ -8,9 +8,11 @@
 --
 -- Generated from drop.tpl
 -- DO NOT EDIT.  Generated by CRM_Core_CodeGen
----- /*******************************************************
+--
+-- /*******************************************************
+-- *
+-- * Clean up the existing tables
 -- *
--- * Clean up the existing tables-- *
 -- *******************************************************/
 
 SET FOREIGN_KEY_CHECKS=0;
diff --git a/civicrm/ext/standaloneusers/standaloneusers.php b/civicrm/ext/standaloneusers/standaloneusers.php
index dff4299e3f..a463b09f8d 100644
--- a/civicrm/ext/standaloneusers/standaloneusers.php
+++ b/civicrm/ext/standaloneusers/standaloneusers.php
@@ -10,6 +10,32 @@ require_once 'standaloneusers.civix.php';
 use CRM_Standaloneusers_ExtensionUtil as E;
 // phpcs:enable
 
+
+function standaloneusers_civicrm_alterBundle(CRM_Core_Resources_Bundle $bundle) {
+  if ($bundle->name !== 'coreResources') {
+    return;
+  }
+  // This adds a few styles that only need apply to standalone, mainly
+  // providing a default style for login/password reset type pages.
+  $bundle->addStyleFile('standaloneusers', 'css/standalone.css');
+}
+
+/**
+ * Hide the inherit CMS language on the Settings - Localization form.
+ *
+ * Implements hook_civicrm_buildForm().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_buildForm/
+ */
+function standaloneusers_civicrm_buildForm($formName, CRM_Core_Form $form) {
+  // Administer / Localization / Languages, Currency, Locations
+  if ($formName == 'CRM_Admin_Form_Setting_Localization') {
+    if ($inheritLocaleElement = $form->getElement('inheritLocale')) {
+      $inheritLocaleElement->freeze();
+    }
+  }
+}
+
 /**
  * Implements hook_civicrm_config().
  *
@@ -17,6 +43,15 @@ use CRM_Standaloneusers_ExtensionUtil as E;
  */
 function standaloneusers_civicrm_config(&$config) {
   _standaloneusers_civix_civicrm_config($config);
+  $sess = CRM_Core_Session::singleton();
+
+  if (!empty($sess->get('ufID'))) {
+    // Logged in user is making a request.
+    if (empty($sess->get('lastAccess')) || (time() - $sess->get('lastAccess')) >= 60) {
+      // Once a minute, update the when_last_accessed field
+      CRM_Standaloneusers_BAO_User::updateLastAccessed();
+    }
+  }
 }
 
 /**
diff --git a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
index 4dc2993675..ac40561086 100644
--- a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
+++ b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
@@ -1,350 +1,66 @@
-<style>
-{literal}
-/***Structure****
-    Variables (comment out your subtheme)
-        - Finsbury Park
-        - Jerry Seinfeld
-        - Shoreditch (soon)
-        - Aah (soon)
-    Resets
-    Base
-****************/
-
-/***************
-    Variables
-****************/
-
-/* Finsbury Park
-
-:root {
-    --roundness: 0.25rem;
-    --font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans, Ubuntu,Cantarell,"Helvetica Neue",Helvetica,Arial,sans-serif,"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
-    --text-colour: #000;
-    --text-size: 0.9rem;
-    --error-colour: #aa0c0c;
-    --label-colour: #000;
-    --background-colour: #ededed;
-    --box-border: 1px #cdcdcd solid;
-    --box-padding: 2rem 1.75rem;
-    --box-shadow: none;
-    --box-roundness: 0.25rem;
-    --box-background: #fff;
-    --input-border: 1px solid #ccc;
-    --input-padding: 0.5rem;
-    --input-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-    --button-border: 1px solid #bbb;
-    --button-shadow: 0 1px 2px rgba(0,0,0,0.05);
-    --button-padding: 5px 15px;
-    --button-text-colour: #3e3e3e;
-    --button-background: #f0f0f0;
-}
-
-/* Shoreditch
-
-:root {
-    --roundness: 2px;
-    --font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
-    --text-colour: #232429;
-    --text-size: 0.9rem;
-    --error-colour: #cf3458;
-    --label-colour: #464354;
-    --background-colour: #f3f6f7;
-    --box-border: 0 transparent solid;
-    --box-padding: 20px;
-    --box-shadow: 0 3px 18px 0 rgba(48,40,40,0.25);
-    --box-roundness: 2px;
-    --box-background: #fff;
-    --input-border: 1px solid #c2cfd8;
-    --input-padding: 5px 10px;
-    --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2);
-    --button-border: 0 solid transparent;
-    --button-shadow: none;
-    --button-padding: 8px 28px;
-    --button-text-colour: #fff;
-    --button-background: #0071bd;
-}
-
-/* Aah */
-
-:root {
-    --roundness: 3px;
-    --font-family: Lato,Helvetica,Arial,sans-serif;
-    --text-colour: #222;
-    --text-size: 0.9rem;
-    --error-colour: #a00;
-    --warning-colour: #fbb862;
-    --success-colour: #86c66c;
-    --label-colour: #464354;
-    --background-colour: rgb(242,242,237);
-    --box-border: 0 transparent solid;
-    --box-padding: 1.6rem;
-    --box-shadow: none;
-    --box-roundness: 0;
-    --box-background: #fff;
-    --input-border: 1px solid rgba(0,0,0,.2);
-    --input-padding: 5px 10px;
-    --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2);
-    --button-border: 0 solid transparent;
-    --button-shadow: 0 0 6px rgba(0,0,0,.2);
-    --button-padding: .4rem 1.6rem;
-    --button-text-colour: #fff;
-    --button-background: #2c98ed;
-    --button-text-shadow: none;
-}
-
-/* Ffresh
-
-:root {
-    --roundness: 2rem;
-    --font-family: Lato,Helvetica,Arial,sans-serif;
-    --text-colour: #222;
-    --text-size: 1rem;
-    --error-colour: #a00;
-    --label-colour: #464354;
-    --background-colour: #2c98ed;
-    --box-border: 0 transparent solid;
-    --box-padding: 1.6rem;
-    --box-shadow: 0 0 10px 0 rgba(0,0,0,0.2);
-    --box-roundness: 1.75rem;
-    --box-background: #fff;
-    --input-border: 2px solid #2c98ed;
-    --input-padding: 0.75rem;
-    --input-shadow: none;
-    --button-border: 0 solid transparent;
-    --button-shadow: none;
-    --button-padding: 0.75rem 2rem;
-    --button-text-colour: #fff;
-    --button-background: #2c98ed;
-}
-
-/***************
-    Base
-****************/
-
-body {
-    background-color: var(--background-colour);
-    font-family: var(--font-family);
-    color: var(--text-colour);
-    font-size: var(--text-size);
-}
-#crm-container.standalone-entry * {
-    box-sizing: border-box;
-}
-a {
-    text-decoration: none;
-    font-size: 90%;
-}
-a:hover, a:focus {
-    text-decoration: underline;
-}
-.flex {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-
-/***************
-    UI Elements
-****************/
-
-#crm-container.standalone-entry .mid-block {
-    margin: 0;
-    background-color: var(--box-background);
-    border: var(--box-border);
-    border-radius: var(--box-roundness);
-    padding: var(--box-padding);
-    box-shadow: var(--box-shadow);
-}
-#crm-container.standalone-entry img {
-    width: 100%;
-    max-width: 400px;
-    margin-bottom: 2rem;
-}
-#crm-container.standalone-entry label {
-    display: inline-block;
-    max-width: 100%;
-    margin-bottom: 5px;
-    font-weight: 700;
-    color: var(--label-colour);
-}
-#crm-container.standalone-entry input {
-    display: block;
-    width: 100%;
-    color: #555;
-    background-color: #fff;
-    background-image: none;
-    margin-bottom: 0.75rem;
-    padding: var(--input-padding);
-    font-size: var(--text-size);
-    border-radius: var(--roundness);
-    border: var(--input-border);
-    box-shadow: var(--input-shadow);
-}
-#crm-container.standalone-entry input:focus,
-#crm-container.standalone-entry input:focus-visible {
-    border: 1px solid #66afe9;
-}
-#crm-container.standalone-entry .btn {
-    display: inline-block;
-    margin:0;
-    text-align: center;
-    vertical-align: middle;
-    touch-action: manipulation;
-    cursor: pointer;
-    background-image: none;
-    font-size: var(--text-size);
-    background-color: var(--button-background);
-    color: var(--button-text-colour);
-    border: var(--button-border);
-    padding: var(--button-padding);
-    border-radius: var(--roundness);
-    font-family: var(--font-family);
-    box-shadow: var(--button-shadow);
-    text-shadow: var(--button-text-shadow);
-}
-#crm-container.standalone-entry .btn:hover,
-#crm-container.standalone-entry .btn:focus {
-    filter: brightness(80%);
-}
-#crm-container.standalone-entry .float-right {
-    float: right;
-    font-size: 90%;
-    margin-top: 0.2rem;
-}
-#crm-container.standalone-entry .form-alert {
-    color: var(--error-colour);
-    margin: 1rem 0;
-}
-
-
-#loggedOutNotice {
-  text-align: center;
-  font-weight: bold;
-  padding: var(--box-padding);
-  background-color: var(--success-colour);
-  margin: 1rem 0;
-  border-radius: var(--box-roundness);
-}
-#anonAccessDenied {
-  text-align: center;
-  font-weight: bold;
-  padding: var(--box-padding);
-  background-color: var(--warning-colour);
-  margin: 1rem 0;
-  border-radius: var(--box-roundness);
-}
-
-@media  (min-width: 768px) {
-    #crm-container.standalone-entry {
-        width: 60vw;
-        margin: 20vh auto 0;
-    }
-}
-@media  (min-width: 960px) {
-    #crm-container.standalone-entry {
-        width: 30vw;
-    }
-}
-{/literal}
-</style>
-
-<div id="crm-container" class="crm-container standalone-entry">
-  <div class="mid-block">
-    <img src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
-    <div class="message info" style="display:none;" id="loggedOutNotice">{ts}You have been logged out.{/ts}</div>
-    <div class="message warning" style="display:none;" id="anonAccessDenied">{ts}You may need to login to access that.{/ts}</div>
+<div class="standalone-auth-form">
+  <div class="standalone-auth-box">
     <form>
-      <div>
+      <img class="crm-logo" src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
+      {if $justLoggedOut}<div class="help message info">{ts}You have been logged out.{/ts}</div>{/if}
+      {if $anonAccessDenied}<div class="help message warning">{ts}You do not have permission to access that, you may
+        need to login.{/ts}</div>{/if}
+      <div class="input-wrapper">
         <label for="usernameInput" name=username class="form-label">Username</label>
-        <input type="text" class="form-control" id="usernameInput" >
+        <input type="text" class="form-control" id="usernameInput">
       </div>
-      <div>
+      <div class="input-wrapper">
         <label for="passwordInput" class="form-label">Password</label>
         <input type="password" class="form-control" id="passwordInput">
       </div>
       <div id="error" style="display:none;" class="form-alert">Your username and password do not match</div>
-      <div class="flex">
-      <a href="request.html">Forgotten password?</a>
-      <button id="loginSubmit" type="submit" class="btn btn-secondary crm-button">Submit</button>
+      <div class="login-or-forgot">
+        <a href="{$forgottenPasswordURL}">Forgotten password?</a>
+        <button id="loginSubmit" type="submit" class="btn btn-secondary crm-button">Submit</button>
       </div>
     </form>
   </div>
 </div>
+
 {literal}
 <script>
-document.addEventListener('DOMContentLoaded', () => {
-
-  const submitBtn = document.getElementById('loginSubmit'),
-        username = document.getElementById('usernameInput'),
-        password = document.getElementById('passwordInput'),
-        loggedOutNotice = document.getElementById('loggedOutNotice');
-
-  // Special messages.
-  if (window.location.search === '?justLoggedOut') {
-    loggedOutNotice.style.display = '';
-    console.log("successful logout");
-  }
-  else if (window.location.search === '?anonAccessDenied') {
-    anonAccessDenied.style.display = '';
-  }
-
-  submitBtn.addEventListener('click', async e => {
-    e.preventDefault();
-
-    const response = await fetch(CRM.url("civicrm/authx/login"), {
-      method: 'POST',
-      headers: {
-        'Content-Type': 'application/x-www-form-urlencoded'
-      },
-      //body: '_authx=Basic ' + btoa(encodeURIComponent(`${username.value}:${password.value}`))
-      body: '_authx=Basic ' + encodeURIComponent(btoa(`${username.value}:${password.value}`))
-    });
-    if (!response.ok) {
-      const contentType = response.headers.get("content-type");
-      let msg = 'Unexpected error';
-      if (!contentType || !contentType.includes("application/json")) {
-        // Non-JSON response; an error.
-        msg = await response.text();
-        // Example error string: 'HTTP 401 Invalid credential'
-        msg = msg.replace(/^HTTP \d{3} /,'');
+  document.addEventListener('DOMContentLoaded', () => {
+
+    const submitBtn = document.getElementById('loginSubmit'),
+      username = document.getElementById('usernameInput'),
+      password = document.getElementById('passwordInput');
+
+    submitBtn.addEventListener('click', async e => {
+      e.preventDefault();
+
+      const response = await fetch(CRM.url("civicrm/authx/login"), {
+        method: 'POST',
+        headers: {
+          'Content-Type': 'application/x-www-form-urlencoded'
+        },
+        //body: '_authx=Basic ' + btoa(encodeURIComponent(`${username.value}:${password.value}`))
+        body: '_authx=Basic ' + encodeURIComponent(btoa(`${username.value}:${password.value}`))
+      });
+      if (!response.ok) {
+        const contentType = response.headers.get("content-type");
+        let msg = 'Unexpected error';
+        if (!contentType || !contentType.includes("application/json")) {
+          // Non-JSON response; an error.
+          msg = await response.text();
+          // Example error string: 'HTTP 401 Invalid credential'
+          msg = msg.replace(/^HTTP \d{3} /, '');
+        }
+        else {
+          let responseObj = await response.json();
+          console.log("responseObj with error", responseObj);
+        }
+        alert(`Sorry, that didn‘t work. ${msg}`);
       }
       else {
-        let responseObj = await response.json();
-        console.log("responseObj with error", responseObj);
+        // OK response (it includes contact_id and user_id in JSON, but we don't need those)
+        window.location = '/civicrm/';
       }
-      alert(`Sorry, that didn‘t work. ${msg}`);
-    }
-    else {
-      // OK response (it includes contact_id and user_id in JSON, but we don't need those)
-      window.location = '/civicrm/';
-    }
+    });
   });
-});
-/* (function($) { */
-/*     var request = new XMLHttpRequest(); */
-/*     request.open("POST", ); */
-/*     request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); */
-/*     request.responseType = "json"; */
-/*     request.onreadystatechange = function() { */
-/*       console.log(request.response); */
-/*       if (request.readyState == 4) { */
-/*         if (request.status == 200) { */
-/*           if (request.response.user_id > 0) { */
-/*             window.location.href = "/civicrm?reset=1"; */
-/*           } else { */
-/*             // probably won't ever be here? */
-/*             alert("Success but fail because ???"); */
-/*             console.log(request.response); */
-/*           } */
-/*         } else { */
-/*           // todo - send errors back to the form via whatever forms framework we'll be using */
-/*           alert("Fail with status code " + request.status + " " + request.statusText); */
-/*           console.log(request.response); */
-/*         } */
-/*       } */
-/*     }; */
-/*     var data = '_authx=Basic ' + btoa(encodeURIComponent($('#username').val()) + ':' + $('#password').val()); */
-/*     request.send(data); */
-/*   }); */
 </script>
 {/literal}
diff --git a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
index 5a594b3356..243d852fe6 100644
--- a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
+++ b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
@@ -1,5 +1,10 @@
-<crm-angular-js modules="crmResetPassword">
-  <crm-reset-password
-    hibp="{$hibp|escape}"
-    token="{$token|escape}" ></crm-reset-password>
-</crm-angular-js>
+<div class="standalone-auth-form">
+  <div class="standalone-auth-box">
+    <img class="crm-logo" src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
+    <crm-angular-js modules="crmResetPassword">
+    <crm-reset-password
+        hibp="{$hibp|escape}"
+        token="{$token|escape}" ></crm-reset-password>
+    </crm-angular-js>
+  </div>
+</div>
diff --git a/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
index d22c669a22..a63ec2c986 100644
--- a/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
+++ b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
@@ -426,6 +426,12 @@ class SecurityTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf
     $this->assertEquals('Password reset link for Demonstrators Anonymous', $result['subject']);
   }
 
+  public function testGetUserIDFromUsername() {
+    [$contactID, $adminUserID, $security] = $this->createFixtureContactAndUser();
+    $this->assertEquals($adminUserID, $security->getUserIDFromUsername('user_one'), 'Should return admin user ID');
+    $this->assertNull($security->getUserIDFromUsername('user_unknown'), 'Should return NULL for non-existent user');
+  }
+
   protected function deleteStuffWeMade() {
     User::delete(FALSE)->addWhere('username', '=', 'testuser1')->execute();
   }
diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
index 4c0e0d0abc..a437a1c45b 100644
--- a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
+++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
@@ -7,6 +7,11 @@
   <comment>A Role holds a set of permissions. Roles may be granted to Users.</comment>
   <log>true</log>
 
+  <paths>
+    <add>civicrm/admin/role</add>
+    <update>civicrm/admin/role#?Role1=[id]</update>
+  </paths>
+
   <field>
     <name>id</name>
     <type>int unsigned</type>
@@ -63,8 +68,10 @@
     <comment>Only active roles grant permissions</comment>
     <type>boolean</type>
     <default>1</default>
+    <required>true</required>
     <html>
       <type>CheckBox</type>
+      <label>Enabled</label>
     </html>
   </field>
 
diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
index 4b2e5be0ea..1fc8cbcb35 100644
--- a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
+++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
@@ -10,8 +10,8 @@
   <descriptionField>email</descriptionField>
   <log>true</log>
   <paths>
-    <add>civicrm/user</add>
-    <update>civicrm/user/#?User1=[id]</update>
+    <add>civicrm/admin/user</add>
+    <update>civicrm/admin/user/#?User1=[id]</update>
   </paths>
 
   <field>
@@ -163,6 +163,7 @@
     <required>true</required>
     <html>
       <type>CheckBox</type>
+      <label>Enabled</label>
     </html>
   </field>
 
@@ -172,8 +173,11 @@
     <length>32</length>
     <required>false</required>
     <comment>User's timezone</comment>
+    <pseudoconstant>
+      <callback>CRM_Standaloneusers_BAO_User::getTimeZones</callback>
+    </pseudoconstant>
     <html>
-      <type>Text</type>
+      <type>Select</type>
     </html>
   </field>
 
@@ -183,6 +187,12 @@
     <type>varchar</type>
     <length>5</length>
     <comment>UI language preferred by the given user/contact</comment>
+    <pseudoconstant>
+      <callback>CRM_Standaloneusers_BAO_User::getPreferredLanguages</callback>
+    </pseudoconstant>
+    <html>
+      <type>Select</type>
+    </html>
     <add>2.1</add>
   </field>
   <index>
diff --git a/civicrm/ext/user_dashboard/info.xml b/civicrm/ext/user_dashboard/info.xml
index 3a6b8f5c8f..db991e6785 100644
--- a/civicrm/ext/user_dashboard/info.xml
+++ b/civicrm/ext/user_dashboard/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension is still experimental</comments>
   <classloader>
diff --git a/civicrm/extension-compatibility.json b/civicrm/extension-compatibility.json
index 60252782c8..41a2ce4945 100644
--- a/civicrm/extension-compatibility.json
+++ b/civicrm/extension-compatibility.json
@@ -1,4 +1,9 @@
 {
+  "org.civicrm.angularex": {
+    "obsolete": "5.69",
+    "disable": true,
+    "uninstall": true
+  },
   "org.civicrm.afform-gui": {
     "obsolete": "5.35",
     "force-uninstall": true,
diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js
index 852540fab8..1b5c08f9d1 100644
--- a/civicrm/js/Common.js
+++ b/civicrm/js/Common.js
@@ -1706,7 +1706,7 @@ if (!CRM.vars) CRM.vars = {};
         e.stopPropagation();
       })
       // Handle accordions
-      .on('click.crmAccordions', '.crm-accordion-header, .crm-collapsible .collapsible-title', function (e) {
+      .on('click.crmAccordions', 'div.crm-accordion-header, fieldset.crm-accordion-header, .crm-collapsible .collapsible-title', function (e) {
         var action = 'open';
         if ($(this).parent().hasClass('collapsed')) {
           $(this).next().css('display', 'none').slideDown(200);
diff --git a/civicrm/js/version.json b/civicrm/js/version.json
new file mode 100644
index 0000000000..756158becf
--- /dev/null
+++ b/civicrm/js/version.json
@@ -0,0 +1 @@
+"5.69.0"\n
\ No newline at end of file
diff --git a/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php b/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
index c2739138b7..789b3eefe4 100644
--- a/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
+++ b/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
@@ -45,7 +45,9 @@ return [
             'is_active',
           ],
           'orderBy' => [],
-          'where' => [],
+          'where' => [
+            ['RelationshipCache_Contact_far_contact_id_01.is_deleted', '=', FALSE],
+          ],
           'groupBy' => [],
           'join' => $joins,
           'having' => [],
diff --git a/civicrm/package.json b/civicrm/package.json
index 887aa9f7d9..afd8c38831 100644
--- a/civicrm/package.json
+++ b/civicrm/package.json
@@ -14,8 +14,7 @@
     "jasmine-core": "~3.3.0",
     "karma": "^6.3.16",
     "karma-jasmine": "~2.0.1",
-    "karma-ng-html2js-preprocessor": "^1.0.0",
-    "karma-phantomjs-launcher": "^1.0.4"
+    "karma-ng-html2js-preprocessor": "^1.0.0"
   },
   "scripts": {
     "postinstall": "bash tools/scripts/npm/postinstall.sh",
diff --git a/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php b/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
index 8d034f723a..64a5503ad8 100644
--- a/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
+++ b/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
@@ -421,6 +421,10 @@ abstract class AbstractGenerator implements GeneratorInterface
      */
     protected function prepareOutput($filename, $overwrite)
     {
+        if (\strpos($filename, 'phar://') === 0) {
+            throw new InvalidArgumentException('The output file cannot be a phar archive.');
+        }
+
         $directory = dirname($filename);
 
         if ($this->fileExists($filename)) {
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index af8e8b6e15..2ab6b7140e 100644
--- a/civicrm/release-notes.md
+++ b/civicrm/release-notes.md
@@ -15,14 +15,16 @@ Other resources for identifying changes are:
     * https://github.com/civicrm/civicrm-joomla
     * https://github.com/civicrm/civicrm-wordpress
 
-## CiviCRM 5.68.1
+## CiviCRM 5.69.0
 
-Released December 30, 2023
+Released January 3, 2024
 
-- **[Synopsis](release-notes/5.68.1.md#synopsis)**
-- **[Bugs resolved](release-notes/5.68.1.md#bugs)**
-- **[Credits](release-notes/5.68.1.md#credits)**
-- **[Feedback](release-notes/5.68.1.md#feedback)**
+- **[Synopsis](release-notes/5.69.0.md#synopsis)**
+- **[Features](release-notes/5.69.0.md#features)**
+- **[Bugs resolved](release-notes/5.69.0.md#bugs)**
+- **[Miscellany](release-notes/5.69.0.md#misc)**
+- **[Credits](release-notes/5.69.0.md#credits)**
+- **[Feedback](release-notes/5.69.0.md#feedback)**
 
 ## CiviCRM 5.68.0
 
diff --git a/civicrm/release-notes/5.68.1.md b/civicrm/release-notes/5.68.1.md
deleted file mode 100644
index 1350b0f8c6..0000000000
--- a/civicrm/release-notes/5.68.1.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# CiviCRM 5.68.1
-
-Released December 30, 2023
-
-- **[Synopsis](#synopsis)**
-- **[Bugs resolved](#bugs)**
-- **[Credits](#credits)**
-- **[Feedback](#feedback)**
-
-## <a name="synopsis"></a>Synopsis
-
-| *Does this version...?*                                         |          |
-| --------------------------------------------------------------- | -------- |
-| Change the database schema?                                     | no       |
-| Alter the API?                                                  | no       |
-| Require attention to configuration options?                     | no       |
-| Fix problems installing or upgrading to a previous version?     | no       |
-| Introduce features?                                             | no       |
-| **Fix bugs?**                                                   | **yes**  |
-| Fix security vulnerabilities?                                   | no       |
-
-## <a name="bugs"></a>Bugs resolved
-
-* **_CiviEvent_: iCalendar fails to generate due to timezone error ([#28709](https://github.com/civicrm/civicrm-core/pull/28709))**
-* **_Edit Contact_: Fix new warning about "VALUES_SEPARATOR" ([#28611](https://github.com/civicrm/civicrm-core/pull/28611))**
-* **_View Contact_: Notes do not display correctly ([dev/core#4852](https://lab.civicrm.org/dev/core/-/issues/4852): [#28614](https://github.com/civicrm/civicrm-core/pull/28614))**
-* **_dompdf_: Update to v2.0.2 to v2.0.4 (with dependencies) ([#28643](https://github.com/civicrm/civicrm-core/pull/28643))**
-
-## <a name="credits"></a>Credits
-
-This release was developed by the following authors and reviewers:
-
-Wikimedia Foundation - Eileen McNaughton; Systopia - Johannes; Megaphone Technology
-Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; Dave D; CiviCRM - Tim Otten,
-Coleman Watts
-
-## <a name="feedback"></a>Feedback
-
-These release notes are edited by Tim Otten and Andie Hunt.  If you'd like to
-provide feedback on them, please login to https://chat.civicrm.org/civicrm and
-contact `@agh1`.
diff --git a/civicrm/release-notes/5.69.0.md b/civicrm/release-notes/5.69.0.md
new file mode 100644
index 0000000000..61e95cafa7
--- /dev/null
+++ b/civicrm/release-notes/5.69.0.md
@@ -0,0 +1,1500 @@
+# CiviCRM 5.69.0
+
+Released January 3, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Security advisories](#security)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## <a name="synopsis"></a>Synopsis
+
+| *Does this version...?*                                         |         |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities?                                   |   no    |
+| **Change the database schema?**                                 | **yes** |
+| **Alter the API?**                                              | **yes** |
+| **Require attention to configuration options?**                 | **yes** |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
+
+## <a name="features"></a>Features
+
+### Core CiviCRM
+
+- **Add system check encouraging Smarty3
+  ([28521](https://github.com/civicrm/civicrm-core/pull/28521))**
+
+  Adds a system check encouraging Smarty3.
+
+- **Afform: Support conditional logic
+  ([24699](https://github.com/civicrm/civicrm-core/pull/24699))**
+
+  Adds client-side support for conditional logic to hide fields and containers
+  based on rules using and/or/not logic.
+
+- **Afform - Add shortcuts to Edit Forms and related Searchs on Search Forms
+  ([dev/core#4786](https://lab.civicrm.org/dev/core/-/issues/4786):
+  [28206](https://github.com/civicrm/civicrm-core/pull/28206))**
+
+  Adds shortcuts (for those with permission) to edit afforms and related
+  searches on afform search forms.
+
+- **Improve FormBuilder handling of non logged in flows
+  ([dev/core#4232](https://lab.civicrm.org/dev/core/-/issues/4232):
+  [27107](https://github.com/civicrm/civicrm-core/pull/27107))**
+
+  Allows afforms that can save the data only as submission, manually
+  processing of afform submissions and the ability to confirm submission via
+  Email.
+
+- **Add Afform field for input type `Url`
+  ([28024](https://github.com/civicrm/civicrm-core/pull/28024))**
+
+  Adds an Afform field input type for "Url".
+
+- **Afform - ability to set fixed or now date defaults
+  ([28014](https://github.com/civicrm/civicrm-core/pull/28014))**
+
+  Adds the ability to set date defaults to fixed or now.
+
+- **Afform - improve loading performance
+  ([27783](https://github.com/civicrm/civicrm-core/pull/27783))**
+
+  Improves performance when loading afforms.
+
+- **Afform - improve display of error messages
+  ([28021](https://github.com/civicrm/civicrm-core/pull/28021))**
+
+  Improves the display of error messages on afforms.
+
+- **APIv4 - Pass form values to autocomplete field
+  ([28452](https://github.com/civicrm/civicrm-core/pull/28452))**
+
+  Makes Afform APIv4 autocomplete field user selections available on the form.
+
+- **Formbuilder: support rows and columns values for Note (textarea) custom
+  field type ([28388](https://github.com/civicrm/civicrm-core/pull/28388))**
+
+  Displaying a custom field of type Note in Form Builder now shows the textarea
+  tag with rows and cols set to the custom field definition set by the admin for
+  that field
+
+- **ADMIN_UI: default checkbox
+  ([dev/core#4734](https://lab.civicrm.org/dev/core/-/issues/4734):
+  [28001](https://github.com/civicrm/civicrm-core/pull/28001))**
+
+  Adds row checkboxes and the Actions menu for AdminUI screens. Standardises
+  edit/disable/delete/etc actions in a menu instead of buttons.
+
+- **Added Export Mapping search kit UI
+  ([28509](https://github.com/civicrm/civicrm-core/pull/28509))**
+
+  Moves the Import/Export mappings page to a search kit user interface.
+
+- **Add searchkit and afform display
+  ([28484](https://github.com/civicrm/civicrm-core/pull/28484) and
+  [28472](https://github.com/civicrm/civicrm-core/pull/28472))**
+
+  Moves the 'Headers Footers and Automated Messages' page to use a search
+  kit/afform user interface.
+
+- **Create Formbuilder page to view Queue status
+  ([dev/core#4815](https://lab.civicrm.org/dev/core/-/issues/4815):
+  [28348](https://github.com/civicrm/civicrm-core/pull/28348))**
+
+  Adds a page powered by afform/searchkit to view queue status.
+
+- **SearchUI - Updates to Label Format display
+  ([28546](https://github.com/civicrm/civicrm-core/pull/28546),
+  [28513](https://github.com/civicrm/civicrm-core/pull/28513) and
+  [28545](https://github.com/civicrm/civicrm-core/pull/28545))**
+
+  Switches the Label format screen to use a searchkit ui.
+
+- **Add support for spreadsheet format in imports
+  ([28495](https://github.com/civicrm/civicrm-core/pull/28495))**
+
+  Adds support for spreadsheet formats ods and xlsx in imports.
+
+- **make Mapping entity available on searchkit
+  ([28508](https://github.com/civicrm/civicrm-core/pull/28508) and
+  [28534](https://github.com/civicrm/civicrm-core/pull/28534))**
+
+  Adds Mapping entity to SearchKit.
+
+- **Adding PreferencesDate API
+  ([28482](https://github.com/civicrm/civicrm-core/pull/28482))**
+
+  Adds APIv4 and searchkit support for `PreferencesDate`.
+
+- **Changed the URL path for DatePreference screen
+  ([28500](https://github.com/civicrm/civicrm-core/pull/28500))**
+
+  Changes the URL path for the DatePreference screen to play nicely with
+  searchkit.
+
+- **Added DatePreference admin UI
+  ([28483](https://github.com/civicrm/civicrm-core/pull/28483))**
+
+  Transitions Date Preference admin user interface to an afform/searchkit
+  interface.
+
+- **Adds an accessible accordion, applies to news-feed dashlet
+  ([28415](https://github.com/civicrm/civicrm-core/pull/28415))**
+
+  Adds an accessible accordion and starts the process of updating the user
+  interface to use it by updating the news-feed dashlet.
+
+- **Applies accessible accordion to SearchKit, adds fallbacks
+  ([28441](https://github.com/civicrm/civicrm-core/pull/28441),
+  [28449](https://github.com/civicrm/civicrm-core/pull/28449),
+  [28606](https://github.com/civicrm/civicrm-core/pull/28606),
+  [28781](https://github.com/civicrm/civicrm-core/pull/28781),
+  [28541](https://github.com/civicrm/civicrm-core/pull/28541),
+  [28421](https://github.com/civicrm/civicrm-core/pull/28421),
+  [28665](https://github.com/civicrm/civicrm-core/pull/28665),
+  [28661](https://github.com/civicrm/civicrm-core/pull/28661),
+  [28430](https://github.com/civicrm/civicrm-core/pull/28430) and
+  [28418](https://github.com/civicrm/civicrm-core/pull/28418))**
+
+  User interface changes that makes the SearchKit accordions more accessible.
+
+- **Add userEnteredText as generic workflow template smarty variable
+  ([27162](https://github.com/civicrm/civicrm-core/pull/27162))**
+
+  Makes userEnteredText a property across all WorkflowMessages - with it
+  outputting the smarty variable user_text.
+
+- **convert .aff.json to .aff.php and add ts()
+  ([28499](https://github.com/civicrm/civicrm-core/pull/28499))**
+
+  Makes afform file titles translatable.
+
+- **SearchKit - Add inputMode setting to allow clauses to reference column
+  values ([28112](https://github.com/civicrm/civicrm-core/pull/28112))**
+
+  Adds more power to SearchKit by allowing clauses to reference fields.
+
+- **APIv4 - Add GROUP_FIRST aggregate function
+  ([28164](https://github.com/civicrm/civicrm-core/pull/28164))**
+
+  Adds a useful new SQL function (GROUP_FIRST aggregate function) to APIv4, and
+  exposes it to SearchKit.
+
+- **SearchKit - Hide empty menus
+  ([28454](https://github.com/civicrm/civicrm-core/pull/28454))**
+
+  If a user doesn't have access to any actions, hides the actions menu.
+
+- **Add CRM_Utils_CacheWrapper to all caches
+  ([28428](https://github.com/civicrm/civicrm-core/pull/28428))**
+
+  Wraps all caches and dispatches a 'civi.cache.clear' event when deleting items
+  from the cache.
+
+- **setup: Allow language selection regardless of whether languages are
+  available ([28139](https://github.com/civicrm/civicrm-core/pull/28139),
+  [28209](https://github.com/civicrm/civicrm-core/pull/28209) and
+  [28179](https://github.com/civicrm/civicrm-core/pull/28179))**
+
+  Allow language selection regardless of whether the files are downloaded.
+
+- **Setup: able to download translation files automatically
+  ([28061](https://github.com/civicrm/civicrm-core/pull/28061) and
+  [28169](https://github.com/civicrm/civicrm-core/pull/28169))**
+
+  Makes it so the CiviCRM setup utility downloads the translation files
+  automatically, making the download of the l10n civicrm files an obsolete step,
+  and adds a system check for multiple l10n dirs.
+
+- **Update language download during install to use existing folder if present
+  ([28425](https://github.com/civicrm/civicrm-core/pull/28425))**
+
+  Use language folder if present instead of always downloading.
+
+- **Log extension download errors
+  ([28176](https://github.com/civicrm/civicrm-core/pull/28176))**
+
+  Improves logs by logging extension download errors.
+
+- **Include separator text in details send to log
+  ([28034](https://github.com/civicrm/civicrm-core/pull/28034))**
+
+  Improves logging by adding separator text for queue specific logs.
+
+- **Add missing Zambia provinces
+  ([28025](https://github.com/civicrm/civicrm-core/pull/28025))**
+
+  Adds missing Zambia provinces.
+
+- **Add system check for if people disabled default location type
+  ([28330](https://github.com/civicrm/civicrm-core/pull/28330))**
+
+  Disabling the default location type causes problems, this adds a system check
+  to let the user know if it has been disabled.
+
+- **Add suffix to sort name
+  ([28393](https://github.com/civicrm/civicrm-core/pull/28393))**
+
+  Adds suffix to default sort name configuration.
+
+### CiviCase
+
+- **Case activity filter causes performance headache for non-superusers
+  ([dev/core#4822](https://lab.civicrm.org/dev/core/-/issues/4822):
+  [28383](https://github.com/civicrm/civicrm-core/pull/28383))**
+
+  Performance improvement when searching case activities.
+
+### CiviContribute
+
+- **Add Premium Product v4 api
+  ([28261](https://github.com/civicrm/civicrm-core/pull/28261))**
+
+  Adds `Premium` entity to APIv4.
+
+- **Premiums metadata
+  ([28544](https://github.com/civicrm/civicrm-core/pull/28544))**
+
+  Set up Premiums metadata to make it compatible with searchkit conversion.
+
+- **Blank out text version of online_contribution_receipt
+  ([28268](https://github.com/civicrm/civicrm-core/pull/28268))**
+
+  For new installs blank out text version of the `online_contribution_receipt`
+  system workflow message template. When there is no text version of the
+  `online_contribution_receipt` one will be generated based on the html version.
+
+### CiviEvent
+
+- **Add option to control display of calendar links.
+  ([27768](https://github.com/civicrm/civicrm-core/pull/27768))**
+
+  Adds an option to control whether calendar links are shown or not.
+
+### CiviMail
+
+- **Add filter on archived in Mailing Summary report
+  ([28504](https://github.com/civicrm/civicrm-core/pull/28504))**
+
+  Adds a archive filter to the Mailing Summary report.
+
+- **APIv4 - Add is_draft field for mailings, fix test
+  ([28019](https://github.com/civicrm/civicrm-core/pull/28019) and
+  [28032](https://github.com/civicrm/civicrm-core/pull/28032))**
+
+  Adds an `is_draft` field for mailings.
+
+- **Schema - Add CiviMail field metadata
+  ([28017](https://github.com/civicrm/civicrm-core/pull/28017))**
+
+  Work toward converting the "Find Mailings" page to Searchkit/Afform.
+
+### CiviMember
+
+- **Add Membership log entity
+  ([28220](https://github.com/civicrm/civicrm-core/pull/28220))**
+
+  Adds a Membership log entity to APIv4.
+
+- **Add is_new as a field on membership api or possibly via membership_status
+  ([dev/core#4826](https://lab.civicrm.org/dev/core/-/issues/4826):
+  [28395](https://github.com/civicrm/civicrm-core/pull/28395))**
+
+  Adds `is_new` as a field on Membership status.
+
+- **Blank out membership_online_receipt - text version
+  ([28096](https://github.com/civicrm/civicrm-core/pull/28096))**
+
+  Blanks out the membership_online_receipt (for new installs) and generates a
+  text version based on the html version instead.
+
+### CiviSMS
+
+- **Add SMS provider API 4 Support
+  ([28510](https://github.com/civicrm/civicrm-core/pull/28510))**
+
+  Adds SMS provider support to APIv4.
+
+### Standalone Implementation
+
+- **Standalone language support (Work towards
+  [dev/core#4411](https://lab.civicrm.org/dev/core/-/issues/4411):
+  [28453](https://github.com/civicrm/civicrm-core/pull/28453) and
+  [28469](https://github.com/civicrm/civicrm-core/pull/28469))**
+
+  Adds the option to set a user language and if set that language is used for
+  the UI when the user logs in. Freezes the element for inherit CMS Language
+  under Administer > Localization > Languages, Currencies, Locations.
+
+- **Roles - Define default taxonomy (for standalone deployments)
+  ([dev/core#4466](https://lab.civicrm.org/dev/core/-/issues/4466):
+  [28413](https://github.com/civicrm/civicrm-core/pull/28413))**
+
+  Adds a staff role to the standalone CiviCRM. The staff role gets all
+  permissions except for certain administer permissions.
+
+- **Standalone - prevent users from deleting own user
+  ([28532](https://github.com/civicrm/civicrm-core/pull/28532))**
+
+  Prevents users from deleting their own user.
+
+- **Standalone mobile support
+  ([dev/core#4787](https://lab.civicrm.org/dev/core/-/issues/4787):
+  [28213](https://github.com/civicrm/civicrm-core/pull/28213))**
+
+  Adds viewport meta to improve mobile support for standalone sites.
+
+- **Standalone - Improve administer user screen
+  ([28528](https://github.com/civicrm/civicrm-core/pull/28528))**
+
+  Improvements to the Standalone administer user screen.
+
+- **Standalone - add name and delete en/disable actions for roles
+  ([28420](https://github.com/civicrm/civicrm-core/pull/28420))**
+
+  Adds the ability to enable/disable and delete roles.
+
+- **standalone: implement User fields when_last_accessed and when_updated
+  ([28440](https://github.com/civicrm/civicrm-core/pull/28440))**
+
+  Implements fields to track when users last accessed the site and when they
+  were last updated.
+
+- **Standalone - give admin role super permission
+  ([28447](https://github.com/civicrm/civicrm-core/pull/28447))**
+
+  Makes admin role a super user.
+
+- **Standalone - Add button to add user role Merging as it works and is a good
+  improvement! Thanks @wmortada  
+  ([28412](https://github.com/civicrm/civicrm-core/pull/28412))**
+
+  Improvements to the the user role screen.
+
+## WordPress Integration
+
+- **Full update of the CiviCRM WP-CLI command
+  ([309](https://github.com/civicrm/civicrm-wordpress/pull/309))**
+
+  Updates the wp cli command options.
+
+## <a name="bugs"></a>Bugs resolved
+
+### Core CiviCRM
+
+- **Upgrading to 5.66+ still has old copy of crm.menubar.js
+  ([dev/core#4754](https://lab.civicrm.org/dev/core/-/issues/4754):
+  [28033](https://github.com/civicrm/civicrm-core/pull/28033))**
+
+- **When importing/updating persons, taking over the address of another contact
+  does not work.
+  ([dev/core#4447](https://lab.civicrm.org/dev/core/-/issues/4447):
+  [28496](https://github.com/civicrm/civicrm-core/pull/28496))**
+
+- **Cannot clear country and state/province in contact summary address
+  ([dev/core#4702](https://lab.civicrm.org/dev/core/-/issues/4702):
+  [28115](https://github.com/civicrm/civicrm-core/pull/28115))**
+
+- **Angularjs.bootstrap behaves differently when opening in a popup on older
+  CMSes ([dev/core#4811](https://lab.civicrm.org/dev/core/-/issues/4811):
+  [28321](https://github.com/civicrm/civicrm-core/pull/28321))**
+
+  Ensures that if a popup link requires AngularJS, it will always be available.
+
+- **Fix duplicate instance of Spreadsheet import class
+  ([28573](https://github.com/civicrm/civicrm-core/pull/28573))**
+
+- **Add unique constraint on ufmatch user ID+domain ID
+  ([28538](https://github.com/civicrm/civicrm-core/pull/28538))**
+
+  Prevent creation of multiple ufmatch entries for different contacts to the
+  same user account.
+
+- **civi_case/civi_campaign extensions not configured properly on a fresh
+  install ([dev/core#4867](https://lab.civicrm.org/dev/core/-/issues/4867):
+  [28677](https://github.com/civicrm/civicrm-core/pull/28677))**
+
+- **Update CustomField default_value to NULL instead of '' for floats
+  ([28491](https://github.com/civicrm/civicrm-core/pull/28491))**
+
+- **SearchKit: Don't assume a comparison value when none exists
+  ([28515](https://github.com/civicrm/civicrm-core/pull/28515))**
+
+- **AdminUI - Remove deleted contacts from group count
+  ([28275](https://github.com/civicrm/civicrm-core/pull/28275))**
+
+- **TemplateTrait - Fix references to CRM_Core_Exception
+  ([28524](https://github.com/civicrm/civicrm-core/pull/28524))**
+
+- **ensure exception class supports getErrorData
+  ([28398](https://github.com/civicrm/civicrm-core/pull/28398))**
+
+- **Use buttons instead of buttons, but only when not 4, but also if it's 4
+  ([28470](https://github.com/civicrm/civicrm-core/pull/28470))**
+
+- **Greenwich - Fix styling of summary collapsible element
+  ([28448](https://github.com/civicrm/civicrm-core/pull/28448))**
+
+  Fixes incorrect styling of summary/details collapsible element by Bootstrap3.
+
+- **SearchKit: Many "group by" requests result in "illegal offset type" 500 error
+  ([dev/core#4872](https://lab.civicrm.org/dev/core/-/issues/4872):
+  [28741](https://github.com/civicrm/civicrm-core/pull/28741))**
+
+- **SearchKit - Ensure result autocompleted by id is excluded from subsequent
+  pages ([28460](https://github.com/civicrm/civicrm-core/pull/28460))**
+
+- **Stop forcing apiVersion to 3 in setUp
+  ([28404](https://github.com/civicrm/civicrm-core/pull/28404))**
+
+- **set extension browser timeout to minimum of 10 seconds.
+  ([27934](https://github.com/civicrm/civicrm-core/pull/27934))**
+
+- **Fix notice, minor code cleanup with searching for a free text tag (advanced
+  search) ([28377](https://github.com/civicrm/civicrm-core/pull/28377))**
+
+- **Ensure onBehalfEmail always assigned to prevent notices
+  ([28365](https://github.com/civicrm/civicrm-core/pull/28365))**
+
+- **Check financial acls for product in extension
+  ([28316](https://github.com/civicrm/civicrm-core/pull/28316))**
+
+- **Use getCurrency() function for currency retrieval
+  ([28289](https://github.com/civicrm/civicrm-core/pull/28289))**
+
+- **PHP 8.x add getFromEmails() function, remove use of undeclared property
+  ([28347](https://github.com/civicrm/civicrm-core/pull/28347))**
+
+- **Simplify handling of discount_id in participant form postProcess
+  ([28308](https://github.com/civicrm/civicrm-core/pull/28308))**
+
+- **Fix Smarty3 notices on merge screen
+  ([28334](https://github.com/civicrm/civicrm-core/pull/28334))**
+
+- **Activity - Fix backwards logic in getViewOnlyActivityTypeIDs
+  ([28331](https://github.com/civicrm/civicrm-core/pull/28331))**
+
+- **BAO - Handle hypothetical userId in addSelectWhereClause
+  ([28329](https://github.com/civicrm/civicrm-core/pull/28329))**
+
+- **Fix tax when selection a contribution with the membership, test
+  ([28317](https://github.com/civicrm/civicrm-core/pull/28317))**
+
+- **Update send_receipt once actually sent, rather than predicting
+  ([28166](https://github.com/civicrm/civicrm-core/pull/28166))**
+
+- **Use function for getBillingID() rather than relying on form property
+  ([28280](https://github.com/civicrm/civicrm-core/pull/28280))**
+
+- **SearchBuilder - Add deprecation notice to users
+  ([28274](https://github.com/civicrm/civicrm-core/pull/28274))**
+
+  Adds a user-facing notice on the Search Builder page that Search Builder is
+  deprecated in favor of SearchKit.
+
+- **Use currentPath method to build QuickForm post URL
+  ([28258](https://github.com/civicrm/civicrm-core/pull/28258))**
+
+- **Replace ref to undeclared property with tax-inclusive lookup
+  ([28267](https://github.com/civicrm/civicrm-core/pull/28267))**
+
+- **Show membership info on pay later receipts
+  ([28183](https://github.com/civicrm/civicrm-core/pull/28183))**
+
+- **APIv4 - Add autocomplete & fix joins in CustomValue entities
+  ([28132](https://github.com/civicrm/civicrm-core/pull/28132))**
+
+  Fixes autocomplete widgets for entity types that do not have a label field
+  declared (instead of an error, they will now at least allow a search by id).
+  Adds the ability to autocomplete-search for CustomValue entities (aka
+  multi-record custom field groups). Fixes a bug preventing joins in SearchKit
+  from a multi-record custom entity back to the parent contact.
+
+- **APIv4 - Fix autocomplete filters for multi-record custom groups
+  ([28156](https://github.com/civicrm/civicrm-core/pull/28156))**
+
+- **Clarify that the values passed are the submitted values, not altered values
+  ([28076](https://github.com/civicrm/civicrm-core/pull/28076))**
+
+- **Update Merger.php to compare strict type for checkboxes where a dummy-string
+  is being used, to prevent this matching 'true'
+  ([28160](https://github.com/civicrm/civicrm-core/pull/28160))**
+
+- **Use token to avoid breaky-smarty3-maths
+  ([28211](https://github.com/civicrm/civicrm-core/pull/28211))**
+
+- **Replace math in template with variable, smarty3 support
+  ([28144](https://github.com/civicrm/civicrm-core/pull/28144))**
+
+- **Queue: hook_QueueTaskError missing some params
+  ([dev/core#4774](https://lab.civicrm.org/dev/core/-/issues/4774):
+  [28123](https://github.com/civicrm/civicrm-core/pull/28123))**
+
+- **Revisit the default Scheduled Jobs. Adjust the frequency…
+  ([28052](https://github.com/civicrm/civicrm-core/pull/28052))**
+
+  Adjusts the defaults of several scheduled jobs to: adjust the frequency and
+  remove comments that prevent the jobs from running correctly when enabled but
+  not edited.
+
+- **Fix online membership receipt to be form-independent
+  ([28394](https://github.com/civicrm/civicrm-core/pull/28394))**
+
+- **Fix notice regression on contact edit
+  ([28611](https://github.com/civicrm/civicrm-core/pull/28611))**
+
+- **Searchkit: Notes tab and relationships tab on contact crashing with
+  DOMDocument::loadHTML(): Tag crm-search-display-table invalid in Entity
+  ([dev/core#4855](https://lab.civicrm.org/dev/core/-/issues/4855):
+  [28628](https://github.com/civicrm/civicrm-core/pull/28628))**
+
+- **Viewing contact notes is broken
+  ([dev/core#4852](https://lab.civicrm.org/dev/core/-/issues/4852):
+  [28614](https://github.com/civicrm/civicrm-core/pull/28614))**
+
+- **ContactSummary - Exclude deleted contacts from relationship tab
+  ([28737](https://github.com/civicrm/civicrm-core/pull/28737))**
+
+- **Follow up fixes on `maxFileSize`
+  ([28074](https://github.com/civicrm/civicrm-core/pull/28074))**
+
+- **Notice fix - specify emailMode is false when including SocialNetwork.tpl
+  ([28359](https://github.com/civicrm/civicrm-core/pull/28359))**
+
+- **[PHP 8.0] Curly brace syntax for accessing array elements
+  ([dev/core#4758](https://lab.civicrm.org/dev/core/-/issues/4758):
+  [28057](https://github.com/civicrm/civicrm-core/pull/28057))**
+
+- **Recurring Activity: avoid validation if the fieldset is visible but not used
+  ([28279](https://github.com/civicrm/civicrm-core/pull/28279))**
+
+- **Fix activity view bug where an activity type id in the url overrides the
+  actual activity type id
+  ([27496](https://github.com/civicrm/civicrm-core/pull/27496))**
+
+- **Switch to non deprecated functions for dompdf
+  ([28059](https://github.com/civicrm/civicrm-core/pull/28059))**
+
+- **Replace undefined property `_currentMemberships` with a define
+  ([28222](https://github.com/civicrm/civicrm-core/pull/28222))**
+
+- **Update 'Some kind of numbery-looky-printy thing.'  - ie
+  `CRM_Utils_Number::formatUnitSize`
+  ([28054](https://github.com/civicrm/civicrm-core/pull/28054))**
+
+- **Do not suppress appropriate notices
+  ([28576](https://github.com/civicrm/civicrm-core/pull/28576))**
+
+- **Move form specific code out of shared function
+  ([28344](https://github.com/civicrm/civicrm-core/pull/28344))**
+
+- **Make undefined property local variable
+  ([28345](https://github.com/civicrm/civicrm-core/pull/28345))**
+
+- **Fix setting of misnamed property
+  ([28172](https://github.com/civicrm/civicrm-core/pull/28172))**
+
+- **Afform - Fix undefined index warning
+  ([28081](https://github.com/civicrm/civicrm-core/pull/28081))**
+
+- **Set cache folder for dompdf
+  ([dev/core#4791 ](https://lab.civicrm.org/dev/core/-/issues/4791):
+  [28257](https://github.com/civicrm/civicrm-core/pull/28257))**
+
+- **Stop setting unused key
+  ([28215](https://github.com/civicrm/civicrm-core/pull/28215))**
+
+- **Add missing quote
+  ([28088](https://github.com/civicrm/civicrm-core/pull/28088))**
+
+- **Reverse variable check to fix notice
+  ([28180](https://github.com/civicrm/civicrm-core/pull/28180))**
+
+- **Notice fix
+  ([28309](https://github.com/civicrm/civicrm-core/pull/28309))**
+
+- **Fix notice on showCMS:
+  ([28142](https://github.com/civicrm/civicrm-core/pull/28142))**
+
+- **Fix recently-merged typo
+  ([28288](https://github.com/civicrm/civicrm-core/pull/28288))**
+
+- **Fix always present parameter
+  ([28221](https://github.com/civicrm/civicrm-core/pull/28221))**
+
+- **Fix typo in smarty compatibility class
+  ([28791](https://github.com/civicrm/civicrm-core/pull/28791))**
+
+- **Reduce smarty notices on civireport pages
+  ([27985](https://github.com/civicrm/civicrm-core/pull/27985))**
+
+- **Set correct financial type when creating membership using price set with
+  single line item
+  ([28319](https://github.com/civicrm/civicrm-core/pull/28319))**
+
+- **Use local variable rather than undefined property to build array
+  ([28281](https://github.com/civicrm/civicrm-core/pull/28281))**
+
+- **php 8.2 undefined properties (Work towards
+  [dev/core#4072](https://lab.civicrm.org/dev/core/-/issues/4072):
+  [28044](https://github.com/civicrm/civicrm-core/pull/28044) and
+  [28043](https://github.com/civicrm/civicrm-core/pull/28043))**
+
+- **Php 8.x fix on variable
+  ([28050](https://github.com/civicrm/civicrm-core/pull/28050))**
+
+- **_Import Contacts_: Fix syntax error ([dev/core#4886](https://lab.civicrm.org/dev/core/-/issues/4886): [#28881](https://github.com/civicrm/civicrm-core/pull/28881))**
+
+### CiviCase
+
+- **When adding a follow up activity on an existing case activity with multiple
+  assignees only one is saved
+  ([dev/core#4770](https://lab.civicrm.org/dev/core/-/issues/4770):
+  [28136](https://github.com/civicrm/civicrm-core/pull/28136))**
+
+- **[php8] php warnings on case dashboard
+  ([28117](https://github.com/civicrm/civicrm-core/pull/28117))**
+
+- **CiviCase - Clear value before reusing editCaseRoleDialog
+  ([28270](https://github.com/civicrm/civicrm-core/pull/28270))**
+
+### CiviContribute
+
+- **Online contribution flow - fix for php8.x, notices, smarty3
+  (Work towards [dev/core#4798](https://lab.civicrm.org/dev/core/-/issues/4798):
+  [28271](https://github.com/civicrm/civicrm-core/pull/28271) and
+  [28276](https://github.com/civicrm/civicrm-core/pull/28276))**
+
+  Contribution flow cleanup.
+
+- **Price field and value weights not respected in 5.68
+  ([dev/core#4880](https://lab.civicrm.org/dev/core/-/issues/4880):
+  [28842](https://github.com/civicrm/civicrm-core/pull/28842))**
+
+- **getNonDeductibleAmountFromPriceSet should take into account the financial
+  type of the price field option (Work towards
+  [dev/core#3083](https://lab.civicrm.org/dev/core/-/issues/3083):
+  [28487](https://github.com/civicrm/civicrm-core/pull/28487))**
+
+  Adds a warning about price fields where non_deductible amount potentially
+  misconfigured.
+
+- **Update Payment or receipt notification template
+  ([28405](https://github.com/civicrm/civicrm-core/pull/28405))**
+
+  Fixes notices.
+
+- **Address payment processor notice in thankyou.tpl
+  ([28696](https://github.com/civicrm/civicrm-core/pull/28696))**
+
+- **Fix some notices on the Contribution ThankYou page
+  ([28695](https://github.com/civicrm/civicrm-core/pull/28695))**
+
+- **Fix amount not getting passed through in simple contribution flow
+  ([28658](https://github.com/civicrm/civicrm-core/pull/28658))**
+
+- **Check tax is present in online contribution page receipt
+  ([28138](https://github.com/civicrm/civicrm-core/pull/28138))**
+
+- **Tax amount on 'other amount field' - not being added
+  ([dev/core#4806](https://lab.civicrm.org/dev/core/-/issues/4806):
+  [28294](https://github.com/civicrm/civicrm-core/pull/28294))**
+
+- **Thank you page notice - ensure friendText & linkText is assigned
+  ([28358](https://github.com/civicrm/civicrm-core/pull/28358))**
+
+- **Add notice fix for Confirm & thank you pages
+  ([28362](https://github.com/civicrm/civicrm-core/pull/28362))**
+
+- **[LineItem cleanup] Standardise a couple of calls to get values from the line
+  items ([28264](https://github.com/civicrm/civicrm-core/pull/28264))**
+
+- **[LineItem cleanup] Clean up & clarify code splitting line items in
+  Contribution page membership flow
+  ([28266](https://github.com/civicrm/civicrm-core/pull/28266))**
+
+- **Reduce passing of `lineItems`
+  ([28234](https://github.com/civicrm/civicrm-core/pull/28234))**
+
+- **Auto renew options for membership types are not saving for a contribution
+  page ([dev/core#3994](https://lab.civicrm.org/dev/core/-/issues/3994):
+  [28387](https://github.com/civicrm/civicrm-core/pull/28387))**
+
+- **Authorize.net webhooks fail, because processor expects Integer for
+  x_invoice_num, while some have 20-character alphanumeric
+  ([dev/core#4833](https://lab.civicrm.org/dev/core/-/issues/4833):
+  [28474](https://github.com/civicrm/civicrm-core/pull/28474) and
+  [28575](https://github.com/civicrm/civicrm-core/pull/28575))**
+
+- **"Amount before tax" is wrong on online contribution receipt
+  ([dev/financial#206](https://lab.civicrm.org/dev/financial/-/issues/206):
+  [28008](https://github.com/civicrm/civicrm-core/pull/28008))**
+
+- **Clean up smarty notices on Contribution View (when not in pop-up mode)
+  ([28006](https://github.com/civicrm/civicrm-core/pull/28006))**
+
+- **Use `supportsNoReturn()` instead of contributeMode check
+  ([28060](https://github.com/civicrm/civicrm-core/pull/28060))**
+
+- **Declare property from paypal express as public
+  ([28227](https://github.com/civicrm/civicrm-core/pull/28227))**
+
+- **Manage Contribution Pages: Open Live/Test page in new tab like old screen
+  ([28173](https://github.com/civicrm/civicrm-core/pull/28173))**
+
+- **Use payment create rather than transitionComponents
+  ([26227](https://github.com/civicrm/civicrm-core/pull/26227))**
+
+- **Pass year to mktime as int in CRM_Contribution_Form_ContributionCharts
+ ([28013](https://github.com/civicrm/civicrm-core/pull/28013))**
+
+- **Main contribution page - amounts entered with money formatting that is
+  non-English are truncated
+  ([dev/core#4802](https://lab.civicrm.org/dev/core/-/issues/4802):
+  [28306](https://github.com/civicrm/civicrm-core/pull/28306))**
+
+- **Add some assigns to prevent notices on Confirm
+  ([28295](https://github.com/civicrm/civicrm-core/pull/28295))**
+
+- **Extend line item notice fix from Confirm to Thank you page
+  ([28252](https://github.com/civicrm/civicrm-core/pull/28252))**
+
+- **Fix notice on is_quick_config - Main contribution page
+  ([28095](https://github.com/civicrm/civicrm-core/pull/28095))**
+
+- **Fix notice on payment processor object
+  ([28141](https://github.com/civicrm/civicrm-core/pull/28141))**
+
+- **Unshare toxic function `getContributionParams()`
+  ([28254](https://github.com/civicrm/civicrm-core/pull/28254))**
+
+- **Unshared toxic function `getNonDeductibleAmount()`
+  ([28253](https://github.com/civicrm/civicrm-core/pull/28253))**
+
+- **Fix notice on intro_text when none configured for the page
+  ([28098](https://github.com/civicrm/civicrm-core/pull/28098))**
+
+- **fix error on confirm page when using on-behalf-of
+  ([28382](https://github.com/civicrm/civicrm-core/pull/28382))**
+
+- **Notice fix on payment block
+  ([28196](https://github.com/civicrm/civicrm-core/pull/28196))**
+
+- **PHp8.x notice fix - remove use of legacy paymentObject
+  ([28011](https://github.com/civicrm/civicrm-core/pull/28011))**
+
+- **Fix fatal adding price set on contribution page
+  ([28357](https://github.com/civicrm/civicrm-core/pull/28357))**
+
+- **Fix a whole lot of conditional assignments on confirm & thank you pages
+  ([28364](https://github.com/civicrm/civicrm-core/pull/28364))**
+
+- **Fix notices on credit_card & bank number on Confirm & ThankYou
+  ([28370](https://github.com/civicrm/civicrm-core/pull/28370))**
+
+- **Fix notices on manage premiums page
+  ([28250](https://github.com/civicrm/civicrm-core/pull/28250))**
+
+- **Fix notices on premiums across all 3 pages
+  ([28320](https://github.com/civicrm/civicrm-core/pull/28320))**
+
+- **Ensure onBehalfProfile assigned
+  ([28367](https://github.com/civicrm/civicrm-core/pull/28367))**
+
+- **Fix Main Contribution form to identify money fields
+  ([28300](https://github.com/civicrm/civicrm-core/pull/28300))**
+
+- **Fix getTaxDetails notices on Confirm page
+  ([28256](https://github.com/civicrm/civicrm-core/pull/28256))**
+
+- **[Premiums] Fix access to undeclared property, remove unreachable code
+  ([28238](https://github.com/civicrm/civicrm-core/pull/28238))**
+
+- **Fix notice on unassigned tax
+  ([28296](https://github.com/civicrm/civicrm-core/pull/28296))**
+
+- **Cleanup notices around line Item display on Contribution Confirm Page
+  ([28205](https://github.com/civicrm/civicrm-core/pull/28205))**
+
+- **Sample data fixes for contribution pages
+  ([28497](https://github.com/civicrm/civicrm-core/pull/28497))**
+
+- **Replace last tpl uses of `contributeMode`
+  ([28065](https://github.com/civicrm/civicrm-core/pull/28065))**
+
+- **Replace use of contributeMode with alternatives
+  ([28045](https://github.com/civicrm/civicrm-core/pull/28045))**
+
+- **don't warn users about invalid financial types on unused price sets
+  ([28322](https://github.com/civicrm/civicrm-core/pull/28322))**
+
+- **Make financialacls require civi-contribute
+  ([28318](https://github.com/civicrm/civicrm-core/pull/28318))**
+
+- **Clarify which line items are passed in` processSecondaryMembership`
+  ([28233](https://github.com/civicrm/civicrm-core/pull/28233))**
+
+* **Re-calculate prices when using "Go Back" ([dev/core#4877](https://lab.civicrm.org/dev/core/-/issues/4877): [#28819](https://github.com/civicrm/civicrm-core/pull/28819))**
+
+* **Do not delete price_set_entity record while page supports payment ([#28820](https://github.com/civicrm/civicrm-core/pull/28820))**
+
+* **Improve warning/diagnostic for unreproduced bug ([dev/core#4881](https://lab.civicrm.org/dev/core/-/issues/4881): [#28858](https://github.com/civicrm/civicrm-core/pull/28858))**
+
+### CiviEvent
+
+- **Add getParticipantID() to register
+  ([28402](https://github.com/civicrm/civicrm-core/pull/28402))**
+
+- **Updated fix for badge layouts
+  ([28080](https://github.com/civicrm/civicrm-core/pull/28080))**
+
+- **Fix eventcart to not interact with _tpl_vars directly
+  ([28335](https://github.com/civicrm/civicrm-core/pull/28335))**
+
+- **Get currency from the event for backoffice participant form
+  ([28350](https://github.com/civicrm/civicrm-core/pull/28350))**
+
+- **Fix potential error in Smarty v3 ([#28886](https://github.com/civicrm/civicrm-core/pull/28886))**
+
+### CiviMail
+
+- **Default mailing footer component incorrectly describes opt-out action as
+  unsubscribe ([28053](https://github.com/civicrm/civicrm-core/pull/28053))**
+
+- **Cancel button on the "unsubscribe mailing" form doesn't work as expected.
+  ([dev/core#4796](https://lab.civicrm.org/dev/core/-/issues/4796):
+  [28301](https://github.com/civicrm/civicrm-core/pull/28301))**
+
+- **Fix ID retrieval for MailingComponent edit page
+  ([28526](https://github.com/civicrm/civicrm-core/pull/28526))**
+
+### CiviMember
+
+- **Fix handling of auto renew memberships where frequency_interval > 1
+  ([dev/core#3810](https://lab.civicrm.org/dev/core/-/issues/3810) and
+  [dev/core#3339](https://lab.civicrm.org/dev/core/-/issues/3339):
+  [28718](https://github.com/civicrm/civicrm-core/pull/28718)**
+
+- **Recurring membership term is incorrect when using price sets
+  ([dev/core#3344](https://lab.civicrm.org/dev/core/-/issues/3344):
+  [28694](https://github.com/civicrm/civicrm-core/pull/28694))**
+
+- **In membership detail report the join date field has a different output date
+  format than the other date fields
+  ([dev/core#3202](https://lab.civicrm.org/dev/core/-/issues/3202):
+  [28089](https://github.com/civicrm/civicrm-core/pull/28089))**
+
+- **Notice fix in membership_online_receipt
+  ([28462](https://github.com/civicrm/civicrm-core/pull/28462))**
+
+- **Use apiv4 rather than V3 for cached membershipTypes retrieval
+  ([28386](https://github.com/civicrm/civicrm-core/pull/28386))**
+
+- **Fix notices on new membership
+  ([28434](https://github.com/civicrm/civicrm-core/pull/28434))**
+
+- **Fix notices on view membership
+  ([28435](https://github.com/civicrm/civicrm-core/pull/28435))**
+
+- **Online membership receipt simplification
+  ([28240](https://github.com/civicrm/civicrm-core/pull/28240))**
+
+- **Align online membership receipt with other templates for line items, tax
+  ([28181](https://github.com/civicrm/civicrm-core/pull/28181))**
+
+- **Fix membership online preview to display subject (using token)
+  ([28174](https://github.com/civicrm/civicrm-core/pull/28174))**
+
+- **Reformat whitespace in online membership receipt
+  ([28177](https://github.com/civicrm/civicrm-core/pull/28177))**
+
+- **Declare _groupTree on MembershipRenewal form
+  ([28066](https://github.com/civicrm/civicrm-core/pull/28066))**
+
+- **Use getSubmittedValues() rather than ad-hoc money 'cleaning' on
+  membershipType form
+  ([28389](https://github.com/civicrm/civicrm-core/pull/28389))**
+
+- **Unconditionally assign membership variables to fix notices on thankYou page
+  ([28366](https://github.com/civicrm/civicrm-core/pull/28366))**
+
+- **Fix notice on membership online main page
+  ([28285](https://github.com/civicrm/civicrm-core/pull/28285))**
+
+- **Auto-renew options may not show correctly (depending on the last option) ([#28871](https://github.com/civicrm/civicrm-core/pull/28871))**
+
+- **Auto-renew options may not show correctly (depending on the kind of price-set) ([#28872](https://github.com/civicrm/civicrm-core/pull/28872))**
+
+### Drupal Integration
+
+- **CV crashes if LoginSecurity extension is enabled on Drupal8/9/10
+  ([dev/core#4756](https://lab.civicrm.org/dev/core/-/issues/4756):
+  [28037](https://github.com/civicrm/civicrm-core/pull/28037))**
+
+### Joomla Integration
+
+- **unable to authenticate in Joomla using Authx
+  ([dev/core#4772](https://lab.civicrm.org/dev/core/-/issues/4772):
+  [28119](https://github.com/civicrm/civicrm-core/pull/28119))**
+
+- **Add Joomla user to group when created from civi profile
+  ([27459](https://github.com/civicrm/civicrm-core/pull/27459))**
+
+### Standalone Implementation
+
+- **Epic: Re-implement CiviCRM Standalone (CMS-less CiviCRM) (Work towards
+  [dev/core#2998](https://lab.civicrm.org/dev/core/-/issues/2998):
+  [28407](https://github.com/civicrm/civicrm-core/pull/28407) and
+  [28439](https://github.com/civicrm/civicrm-core/pull/28439))**
+
+  Fixes an issue for standalone implementations where getUserIDFromUsername()
+  was throwing an exception when fetching unknown users, rather than returning
+  NULL. Also fixes JWT cookie test for standalone implementations.
+
+- **Standalone timezone support
+  ([dev/core#4410](https://lab.civicrm.org/dev/core/-/issues/4410):
+  [28468](https://github.com/civicrm/civicrm-core/pull/28468))**
+
+- **Standalone: civicrm/user path conflicts with existing path to user dashboard
+  ([dev/core#4697](https://lab.civicrm.org/dev/core/-/issues/4697):
+  [28343](https://github.com/civicrm/civicrm-core/pull/28343))**
+
+- **Standalone: language change does not stick
+  ([dev/core#4425](https://lab.civicrm.org/dev/core/-/issues/4425):
+  [27292](https://github.com/civicrm/civicrm-core/pull/27292))**
+
+- **Standalone: clean up styling on login/reset password
+  ([28471](https://github.com/civicrm/civicrm-core/pull/28471))**
+
+- **standaloneusers - Fix tokens+docblocks for "Password reset" email  
+  ([28525](https://github.com/civicrm/civicrm-core/pull/28525))**
+
+- **fix standalone permission for civimail subscribe pages
+  ([28455](https://github.com/civicrm/civicrm-core/pull/28455))**
+
+- **Fix confusing login screen on standalone + pretty up
+  ([28424](https://github.com/civicrm/civicrm-core/pull/28424))**
+
+- **Standalone - bootstrap script fixes
+  ([28427](https://github.com/civicrm/civicrm-core/pull/28427))**
+
+- **Standalone - Make active field required and labelled enabled
+  ([28478](https://github.com/civicrm/civicrm-core/pull/28478))**
+
+- **Standalone - remove role from users on deletion
+  ([28429](https://github.com/civicrm/civicrm-core/pull/28429))**
+
+- **Standalone - set default value to active when adding new user role
+  ([28426](https://github.com/civicrm/civicrm-core/pull/28426))**
+
+- **Standalone absolute paths
+  ([28436](https://github.com/civicrm/civicrm-core/pull/28436))**
+
+- **Standalone - Protect admin and everyone roles
+  ([28451](https://github.com/civicrm/civicrm-core/pull/28451))**
+
+### WordPress Integration
+
+- **Attempting to create a pretty URL on a subpage results in non-pretty URL
+  ([dev/wordpress#144](https://lab.civicrm.org/dev/wordpress/-/issues/144):
+  [310](https://github.com/civicrm/civicrm-wordpress/pull/310))**
+
+- **update the phpunit xml definition
+  ([311](https://github.com/civicrm/civicrm-wordpress/pull/311))**
+
+## <a name="misc"></a>Miscellany
+
+- **Update Firebase JWT to version 6.x
+  ([28055](https://github.com/civicrm/civicrm-core/pull/28055))**
+
+- **Update Guzzle to 7.6.1 for Drupal 7/Backdrop/WordPress/Joomla
+  ([28000](https://github.com/civicrm/civicrm-core/pull/28000))**
+
+- **Deploy Package updates for DomPDF and PHP SVG Lib
+  ([28643](https://github.com/civicrm/civicrm-core/pull/28643))**
+
+- **set-version.php - Autocommit changes for version.json
+  ([28622](https://github.com/civicrm/civicrm-core/pull/28622))**
+
+- **Deprecate passing `billingID`to `mapParams`
+  ([28310](https://github.com/civicrm/civicrm-core/pull/28310))**
+
+- **Smarty 3: Mark sectionTotals smarty function deprecated
+  ([27777](https://github.com/civicrm/civicrm-core/pull/27777))**
+
+* **Smarty 3: Fix loading of uncommon calendar widgets ([#28856](https://github.com/civicrm/civicrm-core/pull/28856/))**
+
+- **Consolidate source text determination
+  ([28047](https://github.com/civicrm/civicrm-core/pull/28047))**
+
+- **Go to bed without supper 🥪🚫
+  ([28340](https://github.com/civicrm/civicrm-core/pull/28340))**
+
+- **Extract code that defines the renewal membership
+  ([28287](https://github.com/civicrm/civicrm-core/pull/28287))**
+
+- **[php8] undeclared property action and id in Page
+  ([28314](https://github.com/civicrm/civicrm-core/pull/28314))**
+
+- **Replace a few sub_str with str_contains
+  ([28262](https://github.com/civicrm/civicrm-core/pull/28262))**
+
+- **Use form property rather than passing mode
+  ([28307](https://github.com/civicrm/civicrm-core/pull/28307))**
+
+- **Simplify use of word 'Register'
+  ([28046](https://github.com/civicrm/civicrm-core/pull/28046))**
+
+- **Add helper functions to contribution page
+  ([28228](https://github.com/civicrm/civicrm-core/pull/28228))**
+
+- **Add warnings to processAmount
+  ([28463](https://github.com/civicrm/civicrm-core/pull/28463))**
+
+- **Update comment todos to referred to preferred method
+  ([28324](https://github.com/civicrm/civicrm-core/pull/28324))**
+
+- **Copy buildPremiumsBlock back to contribution page base
+  ([28315](https://github.com/civicrm/civicrm-core/pull/28315))**
+
+- **Stop using & deprectate `getSalesTaxTerm`
+  ([28459](https://github.com/civicrm/civicrm-core/pull/28459))**
+
+- **Pass contact id to sendmail function
+  ([28229](https://github.com/civicrm/civicrm-core/pull/28229))**
+
+- **Minor consolidation on `isTest()`
+  ([28284](https://github.com/civicrm/civicrm-core/pull/28284))**
+
+- **Clarify doRefund() signature
+  ([28490](https://github.com/civicrm/civicrm-core/pull/28490))**
+
+- **Add deprecation to transition components
+  ([28485](https://github.com/civicrm/civicrm-core/pull/28485))**
+
+- **Partial standardisation of MembershipType::Add
+  ([28489](https://github.com/civicrm/civicrm-core/pull/28489))**
+
+- **Consolidate invoice determination
+  ([28493](https://github.com/civicrm/civicrm-core/pull/28493))**
+
+- **Cleanup return on processContact
+  ([28494](https://github.com/civicrm/civicrm-core/pull/28494))**
+
+- **Clean up parameters in add payment form
+  ([28479](https://github.com/civicrm/civicrm-core/pull/28479))**
+
+- **Clean up `getMainContributionAmount()` function
+  ([28292](https://github.com/civicrm/civicrm-core/pull/28292))**
+
+- **Move getAmountLevel() to Order class
+  ([28312](https://github.com/civicrm/civicrm-core/pull/28312))**
+
+- **Superficial cleanup in Contribution Thank You form
+  ([28269](https://github.com/civicrm/civicrm-core/pull/28269))**
+
+- **Fix UFGroup add to call writeRecord
+  ([28552](https://github.com/civicrm/civicrm-core/pull/28552))**
+
+- **Copy functions back from metadata trait to only caller
+  ([28555](https://github.com/civicrm/civicrm-core/pull/28555))**
+
+- **Clean up contributionParams - backoffice participant form
+  ([28070](https://github.com/civicrm/civicrm-core/pull/28070))**
+
+- **CRM_Core_CodeGen_Schema: fix generated comments and whitespace
+  ([28363](https://github.com/civicrm/civicrm-core/pull/28363))**
+
+- **Simplify if
+  ([28093](https://github.com/civicrm/civicrm-core/pull/28093))**
+
+- **Further cleanup on previously shared participant form code
+  ([28030](https://github.com/civicrm/civicrm-core/pull/28030))**
+
+- **Follow up cleanup on multiple participant form edit
+  ([28007](https://github.com/civicrm/civicrm-core/pull/28007))**
+
+- **Fix docblock for loadUser()
+  ([28563](https://github.com/civicrm/civicrm-core/pull/28563))**
+
+- **Cleanup SQL in xml/templates/civicrm_state_province.tpl
+  ([28041](https://github.com/civicrm/civicrm-core/pull/28041))**
+
+- **Civi grant cleanup
+  ([28438](https://github.com/civicrm/civicrm-core/pull/28438))**
+
+- **Superficial cleanup
+  ([28385](https://github.com/civicrm/civicrm-core/pull/28385))**
+
+- **contributor_key.yml: add civiservice.de to four users, remove one duplicate
+  ([28390](https://github.com/civicrm/civicrm-core/pull/28390))**
+
+- **Page Templates - Remove unused `$localTasks` (`localNav.tpl`)
+  ([28155](https://github.com/civicrm/civicrm-core/pull/28155))**
+
+- **Finally remove `dataArray` , some notice fixes
+  ([28184](https://github.com/civicrm/civicrm-core/pull/28184))**
+
+- **Remove never-used variables
+  ([28009](https://github.com/civicrm/civicrm-core/pull/28009))**
+
+- **Remove extraneous space, breaks smarty3
+  ([28100](https://github.com/civicrm/civicrm-core/pull/28100))**
+
+- **Remove karama-phantomjs-launcher as we now use chrome browser for karma
+  tests ([28056](https://github.com/civicrm/civicrm-core/pull/28056))**
+
+- **Remove registered_by_id as not set in this flow
+  ([28063](https://github.com/civicrm/civicrm-core/pull/28063))**
+
+- **Remove more traces of the old 'contribution_invoice_settings'
+  ([27955](https://github.com/civicrm/civicrm-core/pull/27955))**
+
+- **Remove unused property from previously shared code
+  ([28049](https://github.com/civicrm/civicrm-core/pull/28049))**
+
+- **Remove references to not-set form _values array property 'event' from
+  previously shared code
+  ([28048](https://github.com/civicrm/civicrm-core/pull/28048))**
+
+- **Remove unused property from previously shared code `_membershipTypeValues`
+  ([28224](https://github.com/civicrm/civicrm-core/pull/28224))**
+
+- **Remove unnecessary pass-by-reference
+  ([28337](https://github.com/civicrm/civicrm-core/pull/28337))**
+
+- **Remove code cruft which is now ignored
+  ([28298](https://github.com/civicrm/civicrm-core/pull/28298))**
+
+- **Remove assignments for template that are not needed for updated template
+  ([28232](https://github.com/civicrm/civicrm-core/pull/28232))**
+
+- **Remove assignment of now-unused membership_assign variable
+  ([28208](https://github.com/civicrm/civicrm-core/pull/28208))**
+
+- **Remove extraneous set from previously shared code
+  ([28167](https://github.com/civicrm/civicrm-core/pull/28167))**
+
+- **Remove last references to `_contributeMode`
+  ([28140](https://github.com/civicrm/civicrm-core/pull/28140))**
+
+- **Remove unused _tempClause
+  ([28342](https://github.com/civicrm/civicrm-core/pull/28342))**
+
+- **Remove handling from previously shared code
+  ([28336](https://github.com/civicrm/civicrm-core/pull/28336))**
+
+- **Remove notice from main donate page
+  ([28498](https://github.com/civicrm/civicrm-core/pull/28498))**
+
+- **Remove some calls to deprecated function
+  ([28384](https://github.com/civicrm/civicrm-core/pull/28384))**
+
+- **Remove unused functions noisily deprecated in 2021
+  ([28346](https://github.com/civicrm/civicrm-core/pull/28346))**
+
+- **Remove unreachable code
+  ([28360](https://github.com/civicrm/civicrm-core/pull/28360))**
+
+- **Remove unused variable
+  ([28570](https://github.com/civicrm/civicrm-core/pull/28570))**
+
+- **Remove unused variable
+  ([28571](https://github.com/civicrm/civicrm-core/pull/28571))**
+
+- **remove unused variable
+  ([28572](https://github.com/civicrm/civicrm-core/pull/28572))**
+
+- **[REF] Extract code to determine the column names
+  ([28077](https://github.com/civicrm/civicrm-core/pull/28077))**
+
+- **(REF) Authx - Split `AllFlowsTest` into smaller, themetic tests
+  ([28161](https://github.com/civicrm/civicrm-core/pull/28161))**
+
+- **[REF] Regen after #28144
+  ([28158](https://github.com/civicrm/civicrm-core/pull/28158))**
+
+- **[REF] APIv4 - Minor cleanup of redundant variables
+  ([28150](https://github.com/civicrm/civicrm-core/pull/28150))**
+
+- **[REF] Afform - Namespace mock tests for autoloading
+  ([28165](https://github.com/civicrm/civicrm-core/pull/28165))**
+
+- **[REF] Switch strstr to str_contains
+  ([28323](https://github.com/civicrm/civicrm-core/pull/28323))**
+
+- **REF: Cleanup to Event Registration Confirm form
+  ([28071](https://github.com/civicrm/civicrm-core/pull/28071))**
+
+- **[REF] Angular - cleanup core angular module declarations
+  ([28042](https://github.com/civicrm/civicrm-core/pull/28042))**
+
+- **[REF] Fix test fails caused by changes to mailing footer
+  ([28146](https://github.com/civicrm/civicrm-core/pull/28146))**
+
+- **[REF] Fix Smarty Notice Errors on Contribution Edit
+  ([28163](https://github.com/civicrm/civicrm-core/pull/28163))**
+
+- **REF - Cleanup overly-verbose conditionals
+  ([28368](https://github.com/civicrm/civicrm-core/pull/28368))**
+
+- **REF - Cleanup overly-verbose conditionals
+  ([28373](https://github.com/civicrm/civicrm-core/pull/28373))**
+
+- **[REF] Use Token Processor to generate sort name and display name for
+  individuals ([28391](https://github.com/civicrm/civicrm-core/pull/28391))**
+
+- **[REF][PHP8.2] Properties in TopDonor report
+  ([28067](https://github.com/civicrm/civicrm-core/pull/28067))**
+
+- **[REF][PHP8.2] Tidy up properties in CRM_Badge_BAO_Badge
+  ([28304](https://github.com/civicrm/civicrm-core/pull/28304))**
+
+- **[REF][PHP8.2] Remove unused property $_loadedMappingId
+  ([28290](https://github.com/civicrm/civicrm-core/pull/28290))**
+
+- **[REF][PHP8.2] Declare _context in CRM_Contact_Selector
+  ([28200](https://github.com/civicrm/civicrm-core/pull/28200))**
+
+- **[REF][PHP8.2] Declare donorEmail and donorDisplayName properties
+  ([28204](https://github.com/civicrm/civicrm-core/pull/28204))**
+
+- **[REF][PHP8.2] Remove need for _allowMultiClient property
+  ([28203](https://github.com/civicrm/civicrm-core/pull/28203))**
+
+- **[REF][PHP8.2] Remove unused property usage from test
+  ([28201](https://github.com/civicrm/civicrm-core/pull/28201))**
+
+- **[REF][PHP8.2] Declare _redactionRegexRules property
+  ([28199](https://github.com/civicrm/civicrm-core/pull/28199))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Utils_PDF_Label
+  ([28064](https://github.com/civicrm/civicrm-core/pull/28064))**
+
+- **[REF][PHP8.2] Remove unused id property
+  ([28062](https://github.com/civicrm/civicrm-core/pull/28062))**
+
+- **[REF][PHP8.2] Update CRM_Activity_Form_ActivityView for PHP8.2 support
+  ([28027](https://github.com/civicrm/civicrm-core/pull/28027))**
+
+- **[REF][PHP8.2] Declare property in CRM_Admin_Form_ParticipantStatusType
+  ([28457](https://github.com/civicrm/civicrm-core/pull/28457))**
+
+- **[REF][PHP8.2] Declare properties in TimeSpent report
+  ([28444](https://github.com/civicrm/civicrm-core/pull/28444))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Contact_Form_Task_Delete
+  ([28446](https://github.com/civicrm/civicrm-core/pull/28446))**
+
+- **[REF][PHP8.2] Declare properties in HouseholdSummary report
+  ([28432](https://github.com/civicrm/civicrm-core/pull/28432))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Contact_Form_GroupContact
+  ([28106](https://github.com/civicrm/civicrm-core/pull/28106))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Event_Form_Task_Badge
+  ([28107](https://github.com/civicrm/civicrm-core/pull/28107))**
+
+- **[REF][PHP8.2] Fix MembershipTest on PHP 8.2
+  ([28108](https://github.com/civicrm/civicrm-core/pull/28108))**
+
+- **[REF][PHP8.2] Remove unused property from CRM_Contact_Selector
+  ([28341](https://github.com/civicrm/civicrm-core/pull/28341))**
+
+- **[REF][PHP8.2] Ensure _subscriptionDetails is consistently declared
+  ([28110](https://github.com/civicrm/civicrm-core/pull/28110))**
+
+- **[REF][PHP8.2] Update CRM_Batch_Form_Entry
+  ([28111](https://github.com/civicrm/civicrm-core/pull/28111))**
+
+- **[REF][PHP8.2] Cleanup CRM_Event_Form_SelfSvcUpdate
+  ([28109](https://github.com/civicrm/civicrm-core/pull/28109))**
+
+- **[REF][PHP8.2] Remove unused dynamic props
+  ([28022](https://github.com/civicrm/civicrm-core/pull/28022))**
+
+- **[REF][PHP8.2] Fix Case_Form_TaskTest test fails on php8.2
+  ([28016](https://github.com/civicrm/civicrm-core/pull/28016))**
+
+- **[REF][PHP8.2] Declare properties
+  ([305](https://github.com/civicrm/civicrm-wordpress/pull/305))**
+
+- **[REF][PHP8.2] Tidy up CRM_Report_Form_Case_Detail
+  ([28028](https://github.com/civicrm/civicrm-core/pull/28028))**
+
+- **[REF][PHP8.2] Update CRM_SMS_Page_Provider
+  ([28023](https://github.com/civicrm/civicrm-core/pull/28023))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Activity_Page_Tab
+  ([28416](https://github.com/civicrm/civicrm-core/pull/28416))**
+
+- **[REF][PHP8.2] Remove unused dynamic property
+  ([28417](https://github.com/civicrm/civicrm-core/pull/28417))**
+
+- **[php8]] Replace undeclared class var with local var
+  ([28020](https://github.com/civicrm/civicrm-core/pull/28020))**
+
+- **[NFC] APIv4 - Ensure ContactType api handles accent characters
+  ([27994](https://github.com/civicrm/civicrm-core/pull/27994))**
+
+- **[NFC] APIv4 - > test coverage for Search Download by 1 line
+  ([27995](https://github.com/civicrm/civicrm-core/pull/27995))**
+
+- **[NFC] update version info in readme.txt
+  ([312](https://github.com/civicrm/civicrm-wordpress/pull/312))**
+
+- **NFC - Fix breadcrumb variable type in docblock
+  ([304](https://github.com/civicrm/civicrm-wordpress/pull/304))**
+
+- **[NFC] Apply sub-set of WordPress codestyle
+  ([306](https://github.com/civicrm/civicrm-wordpress/pull/306))**
+
+- **[NFC] Fix typo in `Localization.tpl` file.
+  ([28562](https://github.com/civicrm/civicrm-core/pull/28562))**
+
+- **[NFC] Fix a tiypo
+  ([28465](https://github.com/civicrm/civicrm-core/pull/28465))**
+
+- **[NFC] Pass correct param types to file_get_contents
+  ([28397](https://github.com/civicrm/civicrm-core/pull/28397))**
+
+- **[NFC] Array formatting cleanup
+  ([28339](https://github.com/civicrm/civicrm-core/pull/28339))**
+
+- **Regen
+  ([28516](https://github.com/civicrm/civicrm-core/pull/28516))**
+
+- **Regen after 28052
+  ([28116](https://github.com/civicrm/civicrm-core/pull/28116))**
+
+- **Regen
+  ([28551](https://github.com/civicrm/civicrm-core/pull/28551))**
+
+- **Regen after 28096
+  ([28120](https://github.com/civicrm/civicrm-core/pull/28120))**
+
+- **regen
+  ([28450](https://github.com/civicrm/civicrm-core/pull/28450))**
+
+- **Regen after 28268
+  ([28313](https://github.com/civicrm/civicrm-core/pull/28313))**
+
+- **Re-run regen
+  ([28210](https://github.com/civicrm/civicrm-core/pull/28210))**
+
+- **Fix test to not do weird form-trait sharing thing
+  ([28554](https://github.com/civicrm/civicrm-core/pull/28554))**
+
+- **Further test consolidation
+  ([28212](https://github.com/civicrm/civicrm-core/pull/28212))**
+
+- **Standalone PathUrlTest
+  ([28419](https://github.com/civicrm/civicrm-core/pull/28419))**
+
+- **Standalone: fix e2e error message test(s)
+  ([28507](https://github.com/civicrm/civicrm-core/pull/28507))**
+
+- **standalone: fix failing E2E test due to getting resource base URL
+  ([28475](https://github.com/civicrm/civicrm-core/pull/28475))**
+
+- **add Query to AssetBuilder test to fix WP E2E test failures
+  ([28561](https://github.com/civicrm/civicrm-core/pull/28561))**
+
+- **Test-notice-fix affecting all tests
+  ([28535](https://github.com/civicrm/civicrm-core/pull/28535))**
+
+- **Fix tests calling AdditionalPayment form to use full flow, add standard ID
+  get functions ([28461](https://github.com/civicrm/civicrm-core/pull/28461))**
+
+- **Asset builder test
+  ([28443](https://github.com/civicrm/civicrm-core/pull/28443))**
+
+- **LegacyRestTest - No need to test `extern/rest.php` on `Standalone`
+  ([28410](https://github.com/civicrm/civicrm-core/pull/28410))**
+
+- **LocalizedDataTest - Fix for standalone
+  ([28408](https://github.com/civicrm/civicrm-core/pull/28408))**
+
+- **"Fix" test fail E2E_Extern_WidgetTest::testWidget by skipping it
+  ([28411](https://github.com/civicrm/civicrm-core/pull/28411))**
+
+- **Fix for intermittent test fail on checksum time
+  ([28392](https://github.com/civicrm/civicrm-core/pull/28392))**
+
+- **Fix dataSource test to test permissions
+  ([28327](https://github.com/civicrm/civicrm-core/pull/28327))**
+
+- **Minor test clean up
+  ([28235](https://github.com/civicrm/civicrm-core/pull/28235))**
+
+- **Add testing on emails for separate payment,
+  ([28091](https://github.com/civicrm/civicrm-core/pull/28091))**
+
+- **Improve test output message
+  ([28214](https://github.com/civicrm/civicrm-core/pull/28214))**
+
+- **Minor standardisation in test class
+  ([28197](https://github.com/civicrm/civicrm-core/pull/28197))**
+
+- **Move ContributionPage test to ConfirmTest class
+  ([28692](https://github.com/civicrm/civicrm-core/pull/28692))**
+
+- **Fix tests to use full form flow, more reliable data
+  ([28207](https://github.com/civicrm/civicrm-core/pull/28207))**
+
+- **Add test cover for tax details in Dummy payment online contribution receipt
+  ([28143](https://github.com/civicrm/civicrm-core/pull/28143))**
+
+- **_Backdrop_: Fix clash in styling "summary/detail" accordions ([#28879](https://github.com/civicrm/civicrm-core/pull/28879))**
+
+
+- **Update contributor-key.yml
+  ([28486](https://github.com/civicrm/civicrm-core/pull/28486))**
+
+- **5.69.0 release notes
+  ([28590](https://github.com/civicrm/civicrm-core/pull/28590), and
+  [28807](https://github.com/civicrm/civicrm-core/pull/28807),
+  [28870](https://github.com/civicrm/civicrm-core/pull/28870))**
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following code authors:
+
+19ATF72; AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Francis Whittle,
+Justin Freeman; Artful Robot - Rich Lott; ASMAC (American Society of Music
+Arrangers and Composers) - Jeff Kellem; Benjamin W; BrightMinded Ltd - Bradley
+Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Erik
+Hommel, Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha
+Chaku; civiservice.de - Sebastian Lisken; CompuCorp - Omar Abu Hussein; Coop
+SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Greenpeace Central
+and Eastern Europe - Patrick Figel; iXiam - César Ramos; JMA Consulting - Seamus
+Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller; Lighthouse Consulting and
+Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW
+Consulting - Matthew Wire; Nicol Wistreich; OPEN - dewy; OSSeed Technologies
+LLP - Vinay Gawade; PHD Computer Consultants Ltd - Chris Cant; Reflexive
+Communications - Sandor Semsey; Skvare - Sunil Pawar; Squiffle Consulting -
+Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design -
+Kurund Jalmi, William Mortada; Wikimedia Foundation - Damilare Adedoyin, Eileen
+McNaughton, Wenjun Fan
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+Blackfly Solutions - Alan Dixon; civiservice.de - Andreas Howiller, Tobias
+Voigt; Coop SymbioTIC - Samuel Vanhove; Francesc Bassas i Bullich; Freeform
+Solutions - Herb van den Dool; Humanists UK - Andrew West; JMA Consulting - Joe
+Murray, Monish Deb; Makoa - Usha F. Matisson; Mark; Megaphone Technology
+Consulting - Brienne Kordis; Systopia - Dominic Tubach, Johannes Franz;
+Wildsight - Lars Sander-Green
+
+## <a name="feedback"></a>Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt.  If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/civicrm/settings/Contribute.setting.php b/civicrm/settings/Contribute.setting.php
index fca6aee40e..5f3cd604ab 100644
--- a/civicrm/settings/Contribute.setting.php
+++ b/civicrm/settings/Contribute.setting.php
@@ -68,21 +68,24 @@ return [
     'html_type' => 'text',
     'name' => 'invoice_prefix',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'title' => ts('Invoice Prefix'),
-    'description' => ts('Enter prefix to be be preprended when creating an invoice number'),
+    'description' => ts('Enter prefix to be be pre-pended when creating an invoice number'),
     'is_domain' => 1,
     'is_contact' => 0,
+    'settings_pages' => ['contribute' => ['weight' => 100]],
   ],
   'invoice_due_date' => [
     'default' => '10',
     'name' => 'invoice_due_date',
     'html_type' => 'text',
     'title' => ts('Due Date'),
+    'description' => '',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_INT,
+    'type' => 'Integer',
     'is_domain' => 1,
     'is_contact' => 0,
+    'settings_pages' => ['contribute' => ['weight' => 110]],
   ],
   'invoice_due_date_period' => [
     'default' => 'days',
@@ -91,7 +94,7 @@ return [
     'title' => ts('For transmission'),
     'weight' => 4,
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'is_domain' => 1,
     'is_contact' => 0,
     'description' => ts('Select the interval for due date.'),
@@ -101,28 +104,31 @@ return [
       'months' => ts('Months'),
       'years' => ts('Years'),
     ],
+    'settings_pages' => ['contribute' => ['weight' => 120]],
   ],
   'invoice_notes' => [
     'default' => '',
     'name' => 'invoice_notes',
     'html_type' => 'wysiwyg',
     'title' => ts('Notes or Standard Terms'),
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'add' => '5.23',
     'is_domain' => 1,
     'is_contact' => 0,
     'description' => ts('Enter note or message to be displayed on PDF invoice or credit notes '),
     'attributes' => ['rows' => 2, 'cols' => 40],
+    'settings_pages' => ['contribute' => ['weight' => 130]],
   ],
   'invoice_is_email_pdf' => [
     'name' => 'invoice_is_email_pdf',
     'html_type' => 'checkbox',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_BOOLEAN,
+    'type' => 'Boolean',
     'is_domain' => 1,
     'is_contact' => 0,
     'title' => ts('Automatically email invoice when user purchases online'),
     'description' => ts('Should a pdf invoice be emailed automatically?'),
+    'settings_pages' => ['contribute' => ['weight' => 140]],
   ],
   'tax_term' => [
     'default' => 'Sales Tax',
@@ -130,20 +136,24 @@ return [
     'html_type' => 'text',
     'add' => '5.23',
     'title' => ts('Tax Term'),
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'is_domain' => 1,
     'is_contact' => 0,
+    'description' => '',
+    'settings_pages' => ['contribute' => ['weight' => 150]],
   ],
   'tax_display_settings' => [
     'default' => 'Inclusive',
     'html_type' => 'select',
     'name' => 'tax_display_settings',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'add' => '5.23',
     'title' => ts('Tax Display Settings'),
     'is_domain' => 1,
     'is_contact' => 0,
+    'description' => '',
     'pseudoconstant' => ['callback' => 'CRM_Core_SelectValues::taxDisplayOptions'],
+    'settings_pages' => ['contribute' => ['weight' => 160]],
   ],
   'deferred_revenue_enabled' => [
     'group_name' => 'Contribute Preferences',
diff --git a/civicrm/settings/Core.setting.php b/civicrm/settings/Core.setting.php
index 9106338b1e..9f2177c621 100644
--- a/civicrm/settings/Core.setting.php
+++ b/civicrm/settings/Core.setting.php
@@ -155,7 +155,7 @@ return [
     'name' => 'sort_name_format',
     'type' => 'String',
     'html_type' => 'textarea',
-    'default' => '{contact.last_name}{, }{contact.first_name}',
+    'default' => '{contact.last_name}{, }{contact.first_name}{ }{contact.suffix_id:label}',
     'add' => '4.1',
     'title' => ts('Individual Sort Name Format'),
     'is_domain' => 1,
@@ -800,9 +800,10 @@ return [
     'help_text' => NULL,
     'on_change' => [
       'CRM_Case_Info::onToggleComponents',
+      'CRM_Core_Component::preToggleComponents',
     ],
     'post_change' => [
-      'CRM_Core_Component::onToggleComponents',
+      'CRM_Core_Component::postToggleComponents',
     ],
     'pseudoconstant' => [
       'callback' => 'CRM_Core_SelectValues::getComponentSelectValues',
diff --git a/civicrm/setup/plugins/blocks/l10n.civi-setup.php b/civicrm/setup/plugins/blocks/l10n.civi-setup.php
index 1202323f9e..d184c91a2d 100644
--- a/civicrm/setup/plugins/blocks/l10n.civi-setup.php
+++ b/civicrm/setup/plugins/blocks/l10n.civi-setup.php
@@ -15,7 +15,7 @@ if (!defined('CIVI_SETUP')) {
     $ctrl->blocks['l10n'] = array(
       'is_active' => TRUE,
       'file' => __DIR__ . DIRECTORY_SEPARATOR . 'l10n.tpl.php',
-      'class' => 'if-no-errors',
-      'weight' => 30,
+      'class' => '',
+      'weight' => 10,
     );
   }, \Civi\Setup::PRIORITY_PREPARE);
diff --git a/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php b/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
index 4eb5730d6c..603fa494d3 100644
--- a/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
+++ b/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
@@ -19,16 +19,7 @@ if (!defined('CIVI_SETUP')) {
     $m = $e->getModel();
 
     $langs = NULL;
-    require implode(DIRECTORY_SEPARATOR, [$m->srcPath, 'install', 'langs.php']);
-    foreach ($langs as $locale => $_) {
-      if ($locale == 'en_US') {
-        continue;
-      }
-      if (!file_exists(implode(DIRECTORY_SEPARATOR, array($m->srcPath, 'sql', "civicrm_data.$locale.mysql")))) {
-        unset($langs[$locale]);
-      }
-    }
-
+    require implode(DIRECTORY_SEPARATOR, [$m->srcPath, 'setup', 'res', 'languages.php']);
     $m->setField('lang', 'options', $langs);
 
   }, \Civi\Setup::PRIORITY_PREPARE);
diff --git a/civicrm/setup/plugins/init/Backdrop.civi-setup.php b/civicrm/setup/plugins/init/Backdrop.civi-setup.php
index 4805d998f4..c5d832a3ed 100644
--- a/civicrm/setup/plugins/init/Backdrop.civi-setup.php
+++ b/civicrm/setup/plugins/init/Backdrop.civi-setup.php
@@ -57,6 +57,8 @@ if (!defined('CIVI_SETUP')) {
     // $model->paths['civicrm.files']['url'] = $filePublicPath;
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR,
       [_backdrop_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR,
+      [_backdrop_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR,
diff --git a/civicrm/setup/plugins/init/Drupal.civi-setup.php b/civicrm/setup/plugins/init/Drupal.civi-setup.php
index c65d12f220..02bf1bb87f 100644
--- a/civicrm/setup/plugins/init/Drupal.civi-setup.php
+++ b/civicrm/setup/plugins/init/Drupal.civi-setup.php
@@ -55,6 +55,8 @@ if (!defined('CIVI_SETUP')) {
     // $model->paths['civicrm.files']['url'] = $filePublicPath;
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR,
       [_drupal_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR,
+      [_drupal_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR,
diff --git a/civicrm/setup/plugins/init/Drupal8.civi-setup.php b/civicrm/setup/plugins/init/Drupal8.civi-setup.php
index f81b362a51..32b789f2e1 100644
--- a/civicrm/setup/plugins/init/Drupal8.civi-setup.php
+++ b/civicrm/setup/plugins/init/Drupal8.civi-setup.php
@@ -59,6 +59,7 @@ if (!defined('CIVI_SETUP')) {
     // Compute general paths
     $model->paths['civicrm.files']['url'] = implode('/', [$model->cmsBaseUrl, \Drupal\Core\StreamWrapper\PublicStream::basePath(), 'civicrm']);
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPrivateFiles(), 'civicrm', 'templates_c']);
diff --git a/civicrm/setup/plugins/init/Standalone.civi-setup.php b/civicrm/setup/plugins/init/Standalone.civi-setup.php
index 7c0820b4c8..82c34364f5 100644
--- a/civicrm/setup/plugins/init/Standalone.civi-setup.php
+++ b/civicrm/setup/plugins/init/Standalone.civi-setup.php
@@ -75,7 +75,7 @@ function _standalone_setup_scheme(): string {
     if (empty($projectRootPath)) {
       throw new \RuntimeException("Failed to identify standalone root. (TIP: Set extras.standaloneRoot)");
     }
-
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data']);
     $model->settingsPath = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data', 'civicrm.settings.php']);
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data', 'templates_c']);
     // print "\n-------------------------\nSet model values:\n" . json_encode($model->getValues(), JSON_PRETTY_PRINT) . "\n-----------------------------\n";
diff --git a/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
index b756ef77c8..51db2076e9 100644
--- a/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
+++ b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
@@ -50,7 +50,7 @@ if (!defined('CIVI_SETUP')) {
           'label' => ts('Everyone, including anonymous users'),
           // Provide default open permissions
           'permissions' => [
-            'CiviMail subscribe/unsubscribe pages',
+            'access CiviMail subscribe/unsubscribe pages',
             'make online contributions',
             'view event info',
             'register for events',
@@ -58,10 +58,100 @@ if (!defined('CIVI_SETUP')) {
             'authenticate with password',
           ],
         ],
+        [
+          'name' => 'staff',
+          'label' => ts('Staff'),
+          'permissions' => [
+            'access AJAX API',
+            'access CiviCRM',
+            'access Contact Dashboard',
+            'access uploaded files',
+            'add contacts',
+            'view my contact',
+            'view all contacts',
+            'edit all contacts',
+            'edit my contact',
+            'delete contacts',
+            'import contacts',
+            'access deleted contacts',
+            'merge duplicate contacts',
+            'edit groups',
+            'manage tags',
+            'administer Tagsets',
+            'view all activities',
+            'delete activities',
+            'add contact notes',
+            'view all notes',
+            'access CiviContribute',
+            'delete in CiviContribute',
+            'edit contributions',
+            'make online contributions',
+            'view my invoices',
+            'access CiviEvent',
+            'delete in CiviEvent',
+            'edit all events',
+            'edit event participants',
+            'register for events',
+            'view event info',
+            'view event participants',
+            'gotv campaign contacts',
+            'interview campaign contacts',
+            'manage campaign',
+            'release campaign contacts',
+            'reserve campaign contacts',
+            'sign CiviCRM Petition',
+            'access CiviGrant',
+            'delete in CiviGrant',
+            'edit grants',
+            'access CiviMail',
+            'access CiviMail subscribe/unsubscribe pages',
+            'delete in CiviMail',
+            'view public CiviMail content',
+            'access CiviMember',
+            'delete in CiviMember',
+            'edit memberships',
+            'access all cases and activities',
+            'access my cases and activities',
+            'add cases',
+            'delete in CiviCase',
+            'access CiviPledge',
+            'delete in CiviPledge',
+            'edit pledges',
+            'access CiviReport',
+            'access Report Criteria',
+            'administer reserved reports',
+            'save Report Criteria',
+            'profile create',
+            'profile edit',
+            'profile listings',
+            'profile listings and forms',
+            'profile view',
+            'close all manual batches',
+            'close own manual batches',
+            'create manual batch',
+            'delete all manual batches',
+            'delete own manual batches',
+            'edit all manual batches',
+            'edit own manual batches',
+            'export all manual batches',
+            'export own manual batches',
+            'reopen all manual batches',
+            'reopen own manual batches',
+            'view all manual batches',
+            'view own manual batches',
+            'access all custom data',
+            'access contact reference fields',
+            // The admninister CiviCRM data implicitly sets other permissions as well.
+            // Such as, edit message templates and admnister dedupe rules.
+            'administer CiviCRM Data',
+          ],
+        ],
         [
           'name' => 'admin',
           'label' => ts('Administrator'),
-          'permissions' => array_keys(\CRM_Core_SelectValues::permissions()),
+          'permissions' => [
+            'all CiviCRM permissions and ACLs',
+          ],
         ],
       ])
       ->execute()->indexBy('name');
diff --git a/civicrm/setup/plugins/init/WordPress.civi-setup.php b/civicrm/setup/plugins/init/WordPress.civi-setup.php
index f273231d0c..01c46bb313 100644
--- a/civicrm/setup/plugins/init/WordPress.civi-setup.php
+++ b/civicrm/setup/plugins/init/WordPress.civi-setup.php
@@ -47,6 +47,7 @@ if (!defined('CIVI_SETUP')) {
       $model->settingsPath = $preferredSettingsPath;
     }
 
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [$uploadDir['basedir'], 'civicrm']);
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [$uploadDir['basedir'], 'civicrm', 'templates_c']);
 
     // Compute DSN.
diff --git a/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php b/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php
new file mode 100644
index 0000000000..9f9f210fba
--- /dev/null
+++ b/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * @file
+ *
+ * Generate the civicrm.settings.php file.
+ */
+
+if (!defined('CIVI_SETUP')) {
+  exit("Installation plugins must only be loaded by the installer.\n");
+}
+
+/**
+ * Validate the $model.
+ */
+\Civi\Setup::dispatcher()
+  ->addListener('civi.setup.checkRequirements', function(\Civi\Setup\Event\CheckRequirementsEvent $e) {
+    $lang = \Civi\Setup::instance()->getModel()->lang;
+    if ($lang && $lang != 'en_US') {
+      // build list of candidate folders in preferred order
+      $candidates = [];
+      // if it's already set, that's our pref
+      if (isset($e->getModel()->paths['civicrm.l10n']['path'])) {
+        $candidates[] = $e->getModel()->paths['civicrm.l10n']['path'];
+      }
+      // Now check CIVICRM_L10N_BASEDIR via either define or env.
+      // The GenCode.php tries to locate the l10n files
+      // from this location if other than l10n in the civicrm core directory.
+      $civicrm_l10n_basedir = CRM_Utils_Constant::value('CIVICRM_L10N_BASEDIR');
+      if ($civicrm_l10n_basedir) {
+        $candidates[] = $civicrm_l10n_basedir . DIRECTORY_SEPARATOR . 'l10n';
+      }
+      elseif (isset($e->getModel()->paths['civicrm.private']['path'])) {
+        // If the civicrm files directory is set use this as the base path.
+        $candidates[] = $e->getModel()->paths['civicrm.private']['path'] . DIRECTORY_SEPARATOR . 'l10n';
+      }
+      // Use CiviCRM Core directory as a fall back.
+      $candidates[] = $e->getModel()->srcPath . DIRECTORY_SEPARATOR . 'l10n';
+
+      // Now see if any of the folders already exist.
+      foreach ($candidates as $candidate) {
+        if (is_dir($candidate)) {
+          $e->getModel()->paths['civicrm.l10n']['path'] = $candidate;
+          break;
+        }
+      }
+      // If none existed, then take our first preference. We know there's always at least one.
+      if (!isset($e->getModel()->paths['civicrm.l10n']['path'])) {
+        $e->getModel()->paths['civicrm.l10n']['path'] = $candidates[0];
+      }
+
+      if (getenv('CIVICRM_L10N_BASEDIR') === FALSE) {
+        // Set the environment variable CIVICRM_L10N_BASEDIR which is used in xml/GenCode.php
+        // to create the localized sql files.
+        putenv('CIVICRM_L10N_BASEDIR=' . $e->getModel()->paths['civicrm.l10n']['path']);
+      }
+      if (!is_dir($e->getModel()->paths['civicrm.l10n']['path'])) {
+        \Civi\Setup::log()->info("Creating directory: " . $e->getModel()->paths['civicrm.l10n']['path']);
+        if (!mkdir($e->getModel()->paths['civicrm.l10n']['path'], 0777, TRUE)) {
+          $e->addError('system', 'l10nWritable', sprintf('Unable to create l10n directory "%s"', $e->getModel()->paths['civicrm.l10n']['path']));
+        }
+      }
+    }
+  }, \Civi\Setup::PRIORITY_MAIN);
+
+\Civi\Setup::dispatcher()
+  ->addListener('civi.setup.installFiles', function (\Civi\Setup\Event\InstallFilesEvent $e) {
+    $lang = \Civi\Setup::instance()->getModel()->lang;
+    if ($lang && $lang != 'en_US') {
+      $downloadDir = $e->getModel()->paths['civicrm.l10n']['path'] . DIRECTORY_SEPARATOR . $lang . DIRECTORY_SEPARATOR . 'LC_MESSAGES';
+      if (!is_dir($downloadDir)) {
+        \Civi\Setup::log()->info("Creating directory: " . $downloadDir);
+        if (!mkdir($downloadDir, 0777, TRUE)) {
+          $e->addError('system', 'l10nWritable', sprintf('Unable to create language directory "%s"', $downloadDir));
+        }
+
+        foreach ($e->getModel()->moFiles as $moFile => $url) {
+          $l10DownloadFile = str_replace('[locale]', $lang, $url);
+          \Civi\Setup::log()
+            ->info("Download translation '$moFile' from " . $l10DownloadFile . ' into ' . $downloadDir);
+          $client = new \GuzzleHttp\Client();
+          $response = $client->get($l10DownloadFile);
+          if ($response->getStatusCode() == 200) {
+            $success = file_put_contents($downloadDir . DIRECTORY_SEPARATOR . $moFile, $response->getBody());
+            if (!$success) {
+              $e->addError('l10n', 'download', 'Unable to download translation file');
+            }
+          }
+        }
+      }
+    }
+  }, \Civi\Setup::PRIORITY_MAIN);
diff --git a/civicrm/setup/res/languages.php b/civicrm/setup/res/languages.php
new file mode 100644
index 0000000000..0f0844467a
--- /dev/null
+++ b/civicrm/setup/res/languages.php
@@ -0,0 +1,54 @@
+<?php
+\Civi\Setup::assertRunning();
+$langs = [
+  'af_ZA' => 'Afrikaans',
+  'sq_AL' => 'Albanian',
+  'ar_EG' => 'Arabic',
+  'bg_BG' => 'Bulgarian',
+  'ca_ES' => 'Catalan; Valencian',
+  'zh_CN' => 'Chinese (China)',
+  'zh_TW' => 'Chinese (Taiwan)',
+  'hr_HR' => 'Croatian',
+  'cs_CZ' => 'Czech',
+  'da_DK' => 'Danish',
+  'nl_NL' => 'Dutch (Netherlands)',
+  'nl_BE' => 'Dutch (Belgium)',
+  'en_AU' => 'English (Australia)',
+  'en_CA' => 'English (Canada)',
+  'en_GB' => 'English (United Kingdom)',
+  'en_US' => 'English (United States)',
+  'et_EE' => 'Estonian',
+  'fi_FI' => 'Finnish',
+  'fr_CA' => 'French (Canada)',
+  'fr_FR' => 'French (France)',
+  'de_DE' => 'German',
+  'de_CH' => 'German (Swiss)',
+  'el_GR' => 'Greek, Modern',
+  'he_IL' => 'Hebrew (modern)',
+  'hi_IN' => 'Hindi',
+  'hu_HU' => 'Hungarian',
+  'id_ID' => 'Indonesian',
+  'it_IT' => 'Italian',
+  'ja_JP' => 'Japanese',
+  'km_KH' => 'Khmer',
+  'lt_LT' => 'Lithuanian',
+  'nb_NO' => 'Norwegian Bokmål',
+  'fa_IR' => 'Persian (Iran)',
+  'pl_PL' => 'Polish',
+  'pt_BR' => 'Portuguese (Brazil)',
+  'pt_PT' => 'Portuguese (Portugal)',
+  'ro_RO' => 'Romanian, Moldavian, Moldovan',
+  'ru_RU' => 'Russian',
+  'sr_RS' => 'Serbian',
+  'sk_SK' => 'Slovak',
+  'sl_SI' => 'Slovene',
+  'es_ES' => 'Spanish; Castilian (Spain)',
+  'es_MX' => 'Spanish; Castilian (Mexico)',
+  'es_PR' => 'Spanish; Castilian (Puerto Rico)',
+  'sv_SE' => 'Swedish',
+  'te_IN' => 'Telugu',
+  'th_TH' => 'Thai',
+  'tr_TR' => 'Turkish',
+  'uk_UA' => 'Ukrainian',
+  'vi_VN' => 'Vietnamese',
+];
diff --git a/civicrm/setup/src/Setup/Model.php b/civicrm/setup/src/Setup/Model.php
index a8e00e1147..d7c24a8ead 100644
--- a/civicrm/setup/src/Setup/Model.php
+++ b/civicrm/setup/src/Setup/Model.php
@@ -3,6 +3,7 @@ namespace Civi\Setup;
 
 /**
  * Class Model
+ *
  * @package Civi\Setup
  *
  * The `Model` defines the main options and inputs that are used to configure
@@ -62,6 +63,10 @@ namespace Civi\Setup;
  *   Keys should be prefixed based on which plugin manages the field.
  *   Values must only be scalars (bool/int/string) and arrays.
  *   Ex: ['opt-in.version-check' => TRUE].
+ * @property array $moFiles
+ *   Open-ended list translations files which should be downloaded. Each entry is a url of an mo-file.
+ *   Provide each entry with en_US langugae code. That code will be replaced with the actual language.
+ *   The default is: ['https://download.civicrm.org/civicrm-l10n-core/mo/en_US/civicrm.mo']
  */
 class Model {
 
@@ -172,6 +177,14 @@ class Model {
       'type' => 'array',
       'value' => array(),
     ));
+    $this->addField(array(
+      'description' => 'l10n download files. The [locale] will be replaced with the selected language.',
+      'name' => 'moFiles',
+      'type' => 'array',
+      'value' => array(
+        'civicrm.mo' => 'https://download.civicrm.org/civicrm-l10n-core/mo/[locale]/civicrm.mo',
+      ),
+    ));
   }
 
   /**
diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql
index 31c74fb7dc..b3586f94c4 100644
--- a/civicrm/sql/civicrm.mysql
+++ b/civicrm/sql/civicrm.mysql
@@ -1898,6 +1898,7 @@ CREATE TABLE `civicrm_uf_match` (
   `language` varchar(5) COMMENT 'UI language preferred by the given user/contact',
   PRIMARY KEY (`id`),
   INDEX `I_civicrm_uf_match_uf_id`(uf_id),
+  INDEX `UI_uf_match_uf_id_domain_id`(uf_id, domain_id),
   UNIQUE INDEX `UI_uf_name_domain_id`(uf_name, domain_id),
   UNIQUE INDEX `UI_contact_domain_id`(contact_id, domain_id),
   CONSTRAINT FK_civicrm_uf_match_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
@@ -4004,6 +4005,7 @@ CREATE TABLE `civicrm_event` (
   `slot_label_id` int unsigned DEFAULT NULL COMMENT 'Needs to be moved to Event cart extension. Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.',
   `dedupe_rule_group_id` int unsigned DEFAULT NULL COMMENT 'Rule to use when matching registrations for this event',
   `is_billing_required` tinyint NOT NULL DEFAULT 0 COMMENT 'if true than billing block is required this event',
+  `is_show_calendar_links` tinyint NOT NULL DEFAULT 1 COMMENT 'If true then calendar links are shown for this event.',
   PRIMARY KEY (`id`),
   INDEX `index_event_type_id`(event_type_id),
   INDEX `index_participant_listing_id`(participant_listing_id),
diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql
index fb05e74e17..b9af0a8777 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -290,4174 +290,4085 @@ INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated
 --
 /*!40101 SET NAMES utf8mb4 */;
 
-INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
-(1000, 1228, "AL", "Alabama"),
-(1001, 1228, "AK", "Alaska"),
-(1002, 1228, "AZ", "Arizona"),
-(1003, 1228, "AR", "Arkansas"),
-(1004, 1228, "CA", "California"),
-(1005, 1228, "CO", "Colorado"),
-(1006, 1228, "CT", "Connecticut"),
-(1007, 1228, "DE", "Delaware"),
-(1008, 1228, "FL", "Florida"),
-(1009, 1228, "GA", "Georgia"),
-(1010, 1228, "HI", "Hawaii"),
-(1011, 1228, "ID", "Idaho"),
-(1012, 1228, "IL", "Illinois"),
-(1013, 1228, "IN", "Indiana"),
-(1014, 1228, "IA", "Iowa"),
-(1015, 1228, "KS", "Kansas"),
-(1016, 1228, "KY", "Kentucky"),
-(1017, 1228, "LA", "Louisiana"),
-(1018, 1228, "ME", "Maine"),
-(1019, 1228, "MD", "Maryland"),
-(1020, 1228, "MA", "Massachusetts"),
-(1021, 1228, "MI", "Michigan"),
-(1022, 1228, "MN", "Minnesota"),
-(1023, 1228, "MS", "Mississippi"),
-(1024, 1228, "MO", "Missouri"),
-(1025, 1228, "MT", "Montana"),
-(1026, 1228, "NE", "Nebraska"),
-(1027, 1228, "NV", "Nevada"),
-(1028, 1228, "NH", "New Hampshire"),
-(1029, 1228, "NJ", "New Jersey"),
-(1030, 1228, "NM", "New Mexico"),
-(1031, 1228, "NY", "New York"),
-(1032, 1228, "NC", "North Carolina"),
-(1033, 1228, "ND", "North Dakota"),
-(1034, 1228, "OH", "Ohio"),
-(1035, 1228, "OK", "Oklahoma"),
-(1036, 1228, "OR", "Oregon"),
-(1037, 1228, "PA", "Pennsylvania"),
-(1038, 1228, "RI", "Rhode Island"),
-(1039, 1228, "SC", "South Carolina"),
-(1040, 1228, "SD", "South Dakota"),
-(1041, 1228, "TN", "Tennessee"),
-(1042, 1228, "TX", "Texas"),
-(1043, 1228, "UT", "Utah"),
-(1044, 1228, "VT", "Vermont"),
-(1045, 1228, "VA", "Virginia"),
-(1046, 1228, "WA", "Washington"),
-(1047, 1228, "WV", "West Virginia"),
-(1048, 1228, "WI", "Wisconsin"),
-(1049, 1228, "WY", "Wyoming"),
-(1050, 1228, "DC", "District of Columbia"),
-(1052, 1228, "AS", "American Samoa"),
-(1053, 1228, "GU", "Guam"),
-(1055, 1228, "MP", "Northern Mariana Islands"),
-(1056, 1228, "PR", "Puerto Rico"),
-(1057, 1228, "VI", "Virgin Islands"),
-(1058, 1228, "UM", "United States Minor Outlying Islands"),
-(1059, 1228, "AE", "Armed Forces Europe"),
-(1060, 1228, "AA", "Armed Forces Americas"),
-(1061, 1228, "AP", "Armed Forces Pacific"),
-(1100, 1039, "AB", "Alberta"),
-(1101, 1039, "BC", "British Columbia"),
-(1102, 1039, "MB", "Manitoba"),
-(1103, 1039, "NB", "New Brunswick"),
-(1104, 1039, "NL", "Newfoundland and Labrador"),
-(1105, 1039, "NT", "Northwest Territories"),
-(1106, 1039, "NS", "Nova Scotia"),
-(1107, 1039, "NU", "Nunavut"),
-(1108, 1039, "ON", "Ontario"),
-(1109, 1039, "PE", "Prince Edward Island"),
-(1110, 1039, "QC", "Quebec"),
-(1111, 1039, "SK", "Saskatchewan"),
-(1112, 1039, "YT", "Yukon Territory"),
-(1200, 1101, "MH", "Maharashtra"),
-(1201, 1101, "KA", "Karnataka"),
-(1202, 1101, "AP", "Andhra Pradesh"),
-(1203, 1101, "AR", "Arunachal Pradesh"),
-(1204, 1101, "AS", "Assam"),
-(1205, 1101, "BR", "Bihar"),
-(1206, 1101, "CG", "Chhattisgarh"),
-(1207, 1101, "GA", "Goa"),
-(1208, 1101, "GJ", "Gujarat"),
-(1209, 1101, "HR", "Haryana"),
-(1210, 1101, "HP", "Himachal Pradesh"),
-(1211, 1101, "JK", "Jammu and Kashmir"),
-(1212, 1101, "JH", "Jharkhand"),
-(1213, 1101, "KL", "Kerala"),
-(1214, 1101, "MP", "Madhya Pradesh"),
-(1215, 1101, "MN", "Manipur"),
-(1216, 1101, "ML", "Meghalaya"),
-(1217, 1101, "MZ", "Mizoram"),
-(1218, 1101, "NL", "Nagaland"),
-(1219, 1101, "OR", "Orissa"),
-(1220, 1101, "PB", "Punjab"),
-(1221, 1101, "RJ", "Rajasthan"),
-(1222, 1101, "SK", "Sikkim"),
-(1223, 1101, "TN", "Tamil Nadu"),
-(1224, 1101, "TR", "Tripura"),
-(1225, 1101, "UT", "Uttarakhand"),
-(1226, 1101, "UP", "Uttar Pradesh"),
-(1227, 1101, "WB", "West Bengal"),
-(1228, 1101, "AN", "Andaman and Nicobar Islands"),
-(1231, 1101, "DL", "Delhi"),
-(1232, 1101, "LD", "Lakshadweep"),
-(1233, 1101, "PY", "Pondicherry"),
+-- For historical reasons we start the sequence at 1000 as an attempt to help
+-- with tests and with legacy third-party code that may have hardcoded IDs.
+-- This may change in the future.
+ALTER TABLE civicrm_state_province AUTO_INCREMENT=1000;
+
+-- Note to developers: records are somewhat sorted by country ID
+-- Insert changes directly in the list (keeping the sort), not at the end
+-- All changes must also have a corresponding upgrade statement in
+-- CRM/Upgrade/Incremental/sql/5.xx.alpha1.mysql.tpl
+
+INSERT INTO civicrm_state_province (country_id, abbreviation, name) VALUES
+(1228, "AL", "Alabama"),
+(1228, "AK", "Alaska"),
+(1228, "AZ", "Arizona"),
+(1228, "AR", "Arkansas"),
+(1228, "CA", "California"),
+(1228, "CO", "Colorado"),
+(1228, "CT", "Connecticut"),
+(1228, "DE", "Delaware"),
+(1228, "FL", "Florida"),
+(1228, "GA", "Georgia"),
+(1228, "HI", "Hawaii"),
+(1228, "ID", "Idaho"),
+(1228, "IL", "Illinois"),
+(1228, "IN", "Indiana"),
+(1228, "IA", "Iowa"),
+(1228, "KS", "Kansas"),
+(1228, "KY", "Kentucky"),
+(1228, "LA", "Louisiana"),
+(1228, "ME", "Maine"),
+(1228, "MD", "Maryland"),
+(1228, "MA", "Massachusetts"),
+(1228, "MI", "Michigan"),
+(1228, "MN", "Minnesota"),
+(1228, "MS", "Mississippi"),
+(1228, "MO", "Missouri"),
+(1228, "MT", "Montana"),
+(1228, "NE", "Nebraska"),
+(1228, "NV", "Nevada"),
+(1228, "NH", "New Hampshire"),
+(1228, "NJ", "New Jersey"),
+(1228, "NM", "New Mexico"),
+(1228, "NY", "New York"),
+(1228, "NC", "North Carolina"),
+(1228, "ND", "North Dakota"),
+(1228, "OH", "Ohio"),
+(1228, "OK", "Oklahoma"),
+(1228, "OR", "Oregon"),
+(1228, "PA", "Pennsylvania"),
+(1228, "RI", "Rhode Island"),
+(1228, "SC", "South Carolina"),
+(1228, "SD", "South Dakota"),
+(1228, "TN", "Tennessee"),
+(1228, "TX", "Texas"),
+(1228, "UT", "Utah"),
+(1228, "VT", "Vermont"),
+(1228, "VA", "Virginia"),
+(1228, "WA", "Washington"),
+(1228, "WV", "West Virginia"),
+(1228, "WI", "Wisconsin"),
+(1228, "WY", "Wyoming"),
+(1228, "DC", "District of Columbia"),
+(1228, "AS", "American Samoa"),
+(1228, "GU", "Guam"),
+(1228, "MP", "Northern Mariana Islands"),
+(1228, "PR", "Puerto Rico"),
+(1228, "VI", "Virgin Islands"),
+(1228, "UM", "United States Minor Outlying Islands"),
+(1228, "AE", "Armed Forces Europe"),
+(1228, "AA", "Armed Forces Americas"),
+(1228, "AP", "Armed Forces Pacific"),
+(1039, "AB", "Alberta"),
+(1039, "BC", "British Columbia"),
+(1039, "MB", "Manitoba"),
+(1039, "NB", "New Brunswick"),
+(1039, "NL", "Newfoundland and Labrador"),
+(1039, "NT", "Northwest Territories"),
+(1039, "NS", "Nova Scotia"),
+(1039, "NU", "Nunavut"),
+(1039, "ON", "Ontario"),
+(1039, "PE", "Prince Edward Island"),
+(1039, "QC", "Quebec"),
+(1039, "SK", "Saskatchewan"),
+(1039, "YT", "Yukon Territory"),
+(1101, "MH", "Maharashtra"),
+(1101, "KA", "Karnataka"),
+(1101, "AP", "Andhra Pradesh"),
+(1101, "AR", "Arunachal Pradesh"),
+(1101, "AS", "Assam"),
+(1101, "BR", "Bihar"),
+(1101, "CG", "Chhattisgarh"),
+(1101, "GA", "Goa"),
+(1101, "GJ", "Gujarat"),
+(1101, "HR", "Haryana"),
+(1101, "HP", "Himachal Pradesh"),
+(1101, "JK", "Jammu and Kashmir"),
+(1101, "JH", "Jharkhand"),
+(1101, "KL", "Kerala"),
+(1101, "MP", "Madhya Pradesh"),
+(1101, "MN", "Manipur"),
+(1101, "ML", "Meghalaya"),
+(1101, "MZ", "Mizoram"),
+(1101, "NL", "Nagaland"),
+(1101, "OR", "Orissa"),
+(1101, "PB", "Punjab"),
+(1101, "RJ", "Rajasthan"),
+(1101, "SK", "Sikkim"),
+(1101, "TN", "Tamil Nadu"),
+(1101, "TR", "Tripura"),
+(1101, "UT", "Uttarakhand"),
+(1101, "UP", "Uttar Pradesh"),
+(1101, "WB", "West Bengal"),
+(1101, "AN", "Andaman and Nicobar Islands"),
+(1101, "DL", "Delhi"),
+(1101, "LD", "Lakshadweep"),
+(1101, "PY", "Pondicherry"),
+(1101, "TG", "Telangana"),
+(1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
+(1101, "LA", "Ladākh"),
+(1101, "CH", "Chandigarh"),
 -- Note we believe all lower-case is correct for Poland. See https://github.com/civicrm/civicrm-core/pull/17107
-(1300, 1172, "MZ", "mazowieckie"),
-(1301, 1172, "PM", "pomorskie"),
-(1302, 1172, "DS", "dolnośląskie"),
-(1303, 1172, "KP", "kujawsko-pomorskie"),
-(1304, 1172, "LU", "lubelskie"),
-(1305, 1172, "LB", "lubuskie"),
-(1306, 1172, "LD", "łódzkie"),
-(1307, 1172, "MA", "małopolskie"),
-(1308, 1172, "OP", "opolskie"),
-(1309, 1172, "PK", "podkarpackie"),
-(1310, 1172, "PD", "podlaskie"),
-(1311, 1172, "SL", "śląskie"),
-(1312, 1172, "SK", "świętokrzyskie"),
-(1313, 1172, "WN", "warmińsko-mazurskie"),
-(1314, 1172, "WP", "wielkopolskie"),
-(1315, 1172, "ZP", "zachodniopomorskie"),
-(1500, 1225, "AZ", "Abu Zaby"),
-(1501, 1225, "AJ", "\'Ajman"),
-(1502, 1225, "FU", "Al Fujayrah"),
-(1503, 1225, "SH", "Ash Shariqah"),
-(1504, 1225, "DU", "Dubayy"),
-(1505, 1225, "RK", "Ra\'s al Khaymah"),
-(1506, 1233, "33", "Dac Lac"),
-(1507, 1225, "UQ", "Umm al Qaywayn"),
-(1508, 1001, "BDS", "Badakhshan"),
-(1509, 1001, "BDG", "Badghis"),
-(1510, 1001, "BGL", "Baghlan"),
-(1511, 1001, "BAL", "Balkh"),
-(1512, 1001, "BAM", "Bamian"),
-(1513, 1001, "FRA", "Farah"),
-(1514, 1001, "FYB", "Faryab"),
-(1515, 1001, "GHA", "Ghazni"),
-(1516, 1001, "GHO", "Ghowr"),
-(1517, 1001, "HEL", "Helmand"),
-(1518, 1001, "HER", "Herat"),
-(1519, 1001, "JOW", "Jowzjan"),
-(1520, 1001, "KAB", "Kabul"),
-(1521, 1001, "KAN", "Kandahar"),
-(1522, 1001, "KAP", "Kapisa"),
-(1523, 1001, "KHO", "Khowst"),
-(1524, 1001, "KNR", "Konar"),
-(1525, 1001, "KDZ", "Kondoz"),
-(1526, 1001, "LAG", "Laghman"),
-(1527, 1001, "LOW", "Lowgar"),
-(1528, 1001, "NAN", "Nangrahar"),
-(1529, 1001, "NIM", "Nimruz"),
-(1530, 1001, "NUR", "Nurestan"),
-(1531, 1001, "ORU", "Oruzgan"),
-(1532, 1001, "PIA", "Paktia"),
-(1533, 1001, "PKA", "Paktika"),
-(1534, 1001, "PAR", "Parwan"),
-(1535, 1001, "SAM", "Samangan"),
-(1536, 1001, "SAR", "Sar-e Pol"),
-(1537, 1001, "TAK", "Takhar"),
-(1538, 1001, "WAR", "Wardak"),
-(1539, 1001, "ZAB", "Zabol"),
-(1540, 1002, "BR", "Berat"),
-(1541, 1002, "BU", "Bulqizë"),
-(1542, 1002, "DL", "Delvinë"),
-(1543, 1002, "DV", "Devoll"),
-(1544, 1002, "DI", "Dibër"),
-(1545, 1002, "DR", "Durrës"),
-(1546, 1002, "EL", "Elbasan"),
-(1547, 1002, "FR", "Fier"),
-(1548, 1002, "GR", "Gramsh"),
-(1549, 1002, "GJ", "Gjirokastër"),
-(1550, 1002, "HA", "Has"),
-(1551, 1002, "KA", "Kavajë"),
-(1552, 1002, "ER", "Kolonjë"),
-(1553, 1002, "KO", "Korçë"),
-(1554, 1002, "KR", "Krujë"),
-(1555, 1002, "KC", "Kuçovë"),
-(1556, 1002, "KU", "Kukës"),
-(1557, 1002, "KB", "Kurbin"),
-(1558, 1002, "LE", "Lezhë"),
-(1559, 1002, "LB", "Librazhd"),
-(1560, 1002, "LU", "Lushnjë"),
-(1561, 1002, "MM", "Malësi e Madhe"),
-(1562, 1002, "MK", "Mallakastër"),
-(1563, 1002, "MT", "Mat"),
-(1564, 1002, "MR", "Mirditë"),
-(1565, 1002, "PQ", "Peqin"),
-(1566, 1002, "PR", "Përmet"),
-(1567, 1002, "PG", "Pogradec"),
-(1568, 1002, "PU", "Pukë"),
-(1569, 1002, "SR", "Sarandë"),
-(1570, 1002, "SK", "Skrapar"),
-(1571, 1002, "SH", "Shkodër"),
-(1572, 1002, "TE", "Tepelenë"),
-(1573, 1002, "TR", "Tiranë"),
-(1574, 1002, "TP", "Tropojë"),
-(1575, 1002, "VL", "Vlorë"),
-(1576, 1011, "ER", "Erevan"),
-(1577, 1011, "AG", "Aragacotn"),
-(1578, 1011, "AR", "Ararat"),
-(1579, 1011, "AV", "Armavir"),
-(1580, 1011, "GR", "Gegarkunik\'"),
-(1581, 1011, "KT", "Kotayk\'"),
-(1582, 1011, "LO", "Lory"),
-(1583, 1011, "SH", "Sirak"),
-(1584, 1011, "SU", "Syunik\'"),
-(1585, 1011, "TV", "Tavus"),
-(1586, 1011, "VD", "Vayoc Jor"),
-(1587, 1006, "BGO", "Bengo"),
-(1588, 1006, "BGU", "Benguela"),
-(1589, 1006, "BIE", "Bie"),
-(1590, 1006, "CAB", "Cabinda"),
-(1591, 1006, "CCU", "Cuando-Cubango"),
-(1592, 1006, "CNO", "Cuanza Norte"),
-(1593, 1006, "CUS", "Cuanza Sul"),
-(1594, 1006, "CNN", "Cunene"),
-(1595, 1006, "HUA", "Huambo"),
-(1596, 1006, "HUI", "Huila"),
-(1597, 1006, "LUA", "Luanda"),
-(1598, 1006, "LNO", "Lunda Norte"),
-(1599, 1006, "LSU", "Lunda Sul"),
-(1600, 1006, "MAL", "Malange"),
-(1601, 1006, "MOX", "Moxico"),
-(1602, 1006, "NAM", "Namibe"),
-(1603, 1006, "UIG", "Uige"),
-(1604, 1006, "ZAI", "Zaire"),
-(1605, 1010, "C", "Capital federal"),
-(1606, 1010, "B", "Buenos Aires"),
-(1607, 1010, "K", "Catamarca"),
-(1608, 1010, "X", "Cordoba"),
-(1609, 1010, "W", "Corrientes"),
-(1610, 1010, "H", "Chaco"),
-(1611, 1010, "U", "Chubut"),
-(1612, 1010, "E", "Entre Rios"),
-(1613, 1010, "P", "Formosa"),
-(1614, 1010, "Y", "Jujuy"),
-(1615, 1010, "L", "La Pampa"),
-(1616, 1010, "M", "Mendoza"),
-(1617, 1010, "N", "Misiones"),
-(1618, 1010, "Q", "Neuquen"),
-(1619, 1010, "R", "Rio Negro"),
-(1620, 1010, "A", "Salta"),
-(1621, 1010, "J", "San Juan"),
-(1622, 1010, "D", "San Luis"),
-(1623, 1010, "Z", "Santa Cruz"),
-(1624, 1010, "S", "Santa Fe"),
-(1625, 1010, "G", "Santiago del Estero"),
-(1626, 1010, "V", "Tierra del Fuego"),
-(1627, 1010, "T", "Tucuman"),
-(1628, 1014, "1", "Burgenland"),
-(1629, 1014, "2", "Kärnten"),
-(1630, 1014, "3", "Niederösterreich"),
-(1631, 1014, "4", "Oberösterreich"),
-(1632, 1014, "5", "Salzburg"),
-(1633, 1014, "6", "Steiermark"),
-(1634, 1014, "7", "Tirol"),
-(1635, 1014, "8", "Vorarlberg"),
-(1636, 1014, "9", "Wien"),
-(1637, 1008, "AAT", "Australian Antarctic Territory"),
-(1638, 1013, "ACT", "Australian Capital Territory"),
-(1639, 1013, "NT", "Northern Territory"),
-(1640, 1013, "NSW", "New South Wales"),
-(1641, 1013, "QLD", "Queensland"),
-(1642, 1013, "SA", "South Australia"),
-(1643, 1013, "TAS", "Tasmania"),
-(1644, 1013, "VIC", "Victoria"),
-(1645, 1013, "WA", "Western Australia"),
-(1646, 1015, "NX", "Naxcivan"),
-(1647, 1015, "AB", "Ali Bayramli"),
-(1648, 1015, "BA", "Baki"),
-(1649, 1015, "GA", "Ganca"),
-(1650, 1015, "LA", "Lankaran"),
-(1651, 1015, "MI", "Mingacevir"),
-(1652, 1015, "NA", "Naftalan"),
-(1653, 1015, "SA", "Saki"),
-(1654, 1015, "SM", "Sumqayit"),
-(1655, 1015, "SS", "Susa"),
-(1656, 1015, "XA", "Xankandi"),
-(1657, 1015, "YE", "Yevlax"),
-(1658, 1015, "ABS", "Abseron"),
-(1659, 1015, "AGC", "Agcabadi"),
-(1660, 1015, "AGM", "Agdam"),
-(1661, 1015, "AGS", "Agdas"),
-(1662, 1015, "AGA", "Agstafa"),
-(1663, 1015, "AGU", "Agsu"),
-(1664, 1015, "AST", "Astara"),
-(1665, 1015, "BAB", "Babak"),
-(1666, 1015, "BAL", "Balakan"),
-(1667, 1015, "BAR", "Barda"),
-(1668, 1015, "BEY", "Beylagan"),
-(1669, 1015, "BIL", "Bilasuvar"),
-(1670, 1015, "CAB", "Cabrayll"),
-(1671, 1015, "CAL", "Calilabad"),
-(1672, 1015, "CUL", "Culfa"),
-(1673, 1015, "DAS", "Daskasan"),
-(1674, 1015, "DAV", "Davaci"),
-(1675, 1015, "FUZ", "Fuzuli"),
-(1676, 1015, "GAD", "Gadabay"),
-(1677, 1015, "GOR", "Goranboy"),
-(1678, 1015, "GOY", "Goycay"),
-(1679, 1015, "HAC", "Haciqabul"),
-(1680, 1015, "IMI", "Imisli"),
-(1681, 1015, "ISM", "Ismayilli"),
-(1682, 1015, "KAL", "Kalbacar"),
-(1683, 1015, "KUR", "Kurdamir"),
-(1684, 1015, "LAC", "Lacin"),
-(1685, 1015, "LER", "Lerik"),
-(1686, 1015, "MAS", "Masalli"),
-(1687, 1015, "NEF", "Neftcala"),
-(1688, 1015, "OGU", "Oguz"),
-(1689, 1015, "ORD", "Ordubad"),
-(1690, 1015, "QAB", "Qabala"),
-(1691, 1015, "QAX", "Qax"),
-(1692, 1015, "QAZ", "Qazax"),
-(1693, 1015, "QOB", "Qobustan"),
-(1694, 1015, "QBA", "Quba"),
-(1695, 1015, "QBI", "Qubadli"),
-(1696, 1015, "QUS", "Qusar"),
-(1697, 1015, "SAT", "Saatli"),
-(1698, 1015, "SAB", "Sabirabad"),
-(1699, 1015, "SAD", "Sadarak"),
-(1700, 1015, "SAH", "Sahbuz"),
-(1701, 1015, "SAL", "Salyan"),
-(1702, 1015, "SMI", "Samaxi"),
-(1703, 1015, "SKR", "Samkir"),
-(1704, 1015, "SMX", "Samux"),
-(1705, 1015, "SAR", "Sarur"),
-(1706, 1015, "SIY", "Siyazan"),
-(1707, 1015, "TAR", "Tartar"),
-(1708, 1015, "TOV", "Tovuz"),
-(1709, 1015, "UCA", "Ucar"),
-(1710, 1015, "XAC", "Xacmaz"),
-(1711, 1015, "XAN", "Xanlar"),
-(1712, 1015, "XIZ", "Xizi"),
-(1713, 1015, "XCI", "Xocali"),
-(1714, 1015, "XVD", "Xocavand"),
-(1715, 1015, "YAR", "Yardimli"),
-(1716, 1015, "ZAN", "Zangilan"),
-(1717, 1015, "ZAQ", "Zaqatala"),
-(1718, 1015, "ZAR", "Zardab"),
-(1719, 1026, "BIH", "Federacija Bosna i Hercegovina"),
-(1720, 1026, "SRP", "Republika Srpska"),
-(1721, 1017, "05", "Bagerhat zila"),
-(1722, 1017, "01", "Bandarban zila"),
-(1723, 1017, "02", "Barguna zila"),
-(1724, 1017, "06", "Barisal zila"),
-(1725, 1017, "07", "Bhola zila"),
-(1726, 1017, "03", "Bogra zila"),
-(1727, 1017, "04", "Brahmanbaria zila"),
-(1728, 1017, "09", "Chandpur zila"),
-(1729, 1017, "10", "Chittagong zila"),
-(1730, 1017, "12", "Chuadanga zila"),
-(1731, 1017, "08", "Comilla zila"),
-(1732, 1017, "11", "Cox\'s Bazar zila"),
-(1733, 1017, "13", "Dhaka zila"),
-(1734, 1017, "14", "Dinajpur zila"),
-(1735, 1017, "15", "Faridpur zila"),
-(1736, 1017, "16", "Feni zila"),
-(1737, 1017, "19", "Gaibandha zila"),
-(1738, 1017, "18", "Gazipur zila"),
-(1739, 1017, "17", "Gopalganj zila"),
-(1740, 1017, "20", "Habiganj zila"),
-(1741, 1017, "24", "Jaipurhat zila"),
-(1742, 1017, "21", "Jamalpur zila"),
-(1743, 1017, "22", "Jessore zila"),
-(1744, 1017, "25", "Jhalakati zila"),
-(1745, 1017, "23", "Jhenaidah zila"),
-(1746, 1017, "29", "Khagrachari zila"),
-(1747, 1017, "27", "Khulna zila"),
-(1748, 1017, "26", "Kishorganj zila"),
-(1749, 1017, "28", "Kurigram zila"),
-(1750, 1017, "30", "Kushtia zila"),
-(1751, 1017, "31", "Lakshmipur zila"),
-(1752, 1017, "32", "Lalmonirhat zila"),
-(1753, 1017, "36", "Madaripur zila"),
-(1754, 1017, "37", "Magura zila"),
-(1755, 1017, "33", "Manikganj zila"),
-(1756, 1017, "39", "Meherpur zila"),
-(1757, 1017, "38", "Moulvibazar zila"),
-(1758, 1017, "35", "Munshiganj zila"),
-(1759, 1017, "34", "Mymensingh zila"),
-(1760, 1017, "48", "Naogaon zila"),
-(1761, 1017, "43", "Narail zila"),
-(1762, 1017, "40", "Narayanganj zila"),
-(1763, 1017, "42", "Narsingdi zila"),
-(1764, 1017, "44", "Natore zila"),
-(1765, 1017, "45", "Nawabganj zila"),
-(1766, 1017, "41", "Netrakona zila"),
-(1767, 1017, "46", "Nilphamari zila"),
-(1768, 1017, "47", "Noakhali zila"),
-(1769, 1017, "49", "Pabna zila"),
-(1770, 1017, "52", "Panchagarh zila"),
-(1771, 1017, "51", "Patuakhali zila"),
-(1772, 1017, "50", "Pirojpur zila"),
-(1773, 1017, "53", "Rajbari zila"),
-(1774, 1017, "54", "Rajshahi zila"),
-(1775, 1017, "56", "Rangamati zila"),
-(1776, 1017, "55", "Rangpur zila"),
-(1777, 1017, "58", "Satkhira zila"),
-(1778, 1017, "62", "Shariatpur zila"),
-(1779, 1017, "57", "Sherpur zila"),
-(1780, 1017, "59", "Sirajganj zila"),
-(1781, 1017, "61", "Sunamganj zila"),
-(1782, 1017, "60", "Sylhet zila"),
-(1783, 1017, "63", "Tangail zila"),
-(1784, 1017, "64", "Thakurgaon zila"),
-(1785, 1020, "VAN", "Antwerpen"),
-(1786, 1020, "WBR", "Brabant Wallon"),
-(1787, 1020, "WHT", "Hainaut"),
-(1788, 1020, "WLG", "Liege"),
-(1789, 1020, "VLI", "Limburg"),
-(1790, 1020, "WLX", "Luxembourg"),
-(1791, 1020, "WNA", "Namur"),
-(1792, 1020, "VOV", "Oost-Vlaanderen"),
-(1793, 1020, "VBR", "Vlaams-Brabant"),
-(1794, 1020, "VWV", "West-Vlaanderen"),
-(1795, 1034, "BAL", "Bale"),
-(1796, 1034, "BAM", "Bam"),
-(1797, 1034, "BAN", "Banwa"),
-(1798, 1034, "BAZ", "Bazega"),
-(1799, 1034, "BGR", "Bougouriba"),
-(1800, 1034, "BLG", "Boulgou"),
-(1801, 1034, "BLK", "Boulkiemde"),
-(1802, 1034, "COM", "Comoe"),
-(1803, 1034, "GAN", "Ganzourgou"),
-(1804, 1034, "GNA", "Gnagna"),
-(1805, 1034, "GOU", "Gourma"),
-(1806, 1034, "HOU", "Houet"),
-(1807, 1034, "IOB", "Ioba"),
-(1808, 1034, "KAD", "Kadiogo"),
-(1809, 1034, "KEN", "Kenedougou"),
-(1810, 1034, "KMD", "Komondjari"),
-(1811, 1034, "KMP", "Kompienga"),
-(1812, 1034, "KOS", "Kossi"),
-(1813, 1034, "KOP", "Koulpulogo"),
-(1814, 1034, "KOT", "Kouritenga"),
-(1815, 1034, "KOW", "Kourweogo"),
-(1816, 1034, "LER", "Leraba"),
-(1817, 1034, "LOR", "Loroum"),
-(1818, 1034, "MOU", "Mouhoun"),
-(1819, 1034, "NAO", "Nahouri"),
-(1820, 1034, "NAM", "Namentenga"),
-(1821, 1034, "NAY", "Nayala"),
-(1822, 1034, "NOU", "Noumbiel"),
-(1823, 1034, "OUB", "Oubritenga"),
-(1824, 1034, "OUD", "Oudalan"),
-(1825, 1034, "PAS", "Passore"),
-(1826, 1034, "PON", "Poni"),
-(1827, 1034, "SNG", "Sanguie"),
-(1828, 1034, "SMT", "Sanmatenga"),
-(1829, 1034, "SEN", "Seno"),
-(1830, 1034, "SIS", "Siasili"),
-(1831, 1034, "SOM", "Soum"),
-(1832, 1034, "SOR", "Sourou"),
-(1833, 1034, "TAP", "Tapoa"),
-(1834, 1034, "TUI", "Tui"),
-(1835, 1034, "YAG", "Yagha"),
-(1836, 1034, "YAT", "Yatenga"),
-(1837, 1034, "ZIR", "Ziro"),
-(1838, 1034, "ZON", "Zondoma"),
-(1839, 1034, "ZOU", "Zoundweogo"),
-(1840, 1033, "01", "Blagoevgrad"),
-(1841, 1033, "02", "Burgas"),
-(1842, 1033, "08", "Dobrich"),
-(1843, 1033, "07", "Gabrovo"),
-(1844, 1033, "26", "Haskovo"),
-(1845, 1033, "28", "Yambol"),
-(1846, 1033, "09", "Kardzhali"),
-(1847, 1033, "10", "Kyustendil"),
-(1848, 1033, "11", "Lovech"),
-(1849, 1033, "12", "Montana"),
-(1850, 1033, "13", "Pazardzhik"),
-(1851, 1033, "14", "Pernik"),
-(1852, 1033, "15", "Pleven"),
-(1853, 1033, "16", "Plovdiv"),
-(1854, 1033, "17", "Razgrad"),
-(1855, 1033, "18", "Ruse"),
-(1856, 1033, "19", "Silistra"),
-(1857, 1033, "20", "Sliven"),
-(1858, 1033, "21", "Smolyan"),
-(1859, 1033, "23", "Sofia"),
-(1860, 1033, "24", "Stara Zagora"),
-(1861, 1033, "27", "Shumen"),
-(1862, 1033, "25", "Targovishte"),
-(1863, 1033, "03", "Varna"),
-(1864, 1033, "04", "Veliko Tarnovo"),
-(1865, 1033, "05", "Vidin"),
-(1866, 1033, "06", "Vratsa"),
-(1867, 1016, "01", "Al Hadd"),
-(1868, 1016, "03", "Al Manamah"),
-(1869, 1016, "10", "Al Mintaqah al Gharbiyah"),
-(1870, 1016, "07", "Al Mintagah al Wusta"),
-(1871, 1016, "05", "Al Mintaqah ash Shamaliyah"),
-(1872, 1016, "02", "Al Muharraq"),
-(1873, 1016, "09", "Ar Rifa"),
-(1874, 1016, "04", "Jidd Hafs"),
-(1875, 1016, "12", "Madluat Jamad"),
-(1876, 1016, "08", "Madluat Isa"),
-(1877, 1016, "11", "Mintaqat Juzur tawar"),
-(1878, 1016, "06", "Sitrah"),
-(1879, 1036, "BB", "Bubanza"),
-(1880, 1036, "BJ", "Bujumbura"),
-(1881, 1036, "BR", "Bururi"),
-(1882, 1036, "CA", "Cankuzo"),
-(1883, 1036, "CI", "Cibitoke"),
-(1884, 1036, "GI", "Gitega"),
-(1885, 1036, "KR", "Karuzi"),
-(1886, 1036, "KY", "Kayanza"),
-(1887, 1036, "MA", "Makamba"),
-(1888, 1036, "MU", "Muramvya"),
-(1889, 1036, "MW", "Mwaro"),
-(1890, 1036, "NG", "Ngozi"),
-(1891, 1036, "RT", "Rutana"),
-(1892, 1036, "RY", "Ruyigi"),
-(1893, 1022, "AL", "Alibori"),
-(1894, 1022, "AK", "Atakora"),
-(1895, 1022, "AQ", "Atlantique"),
-(1896, 1022, "BO", "Borgou"),
-(1897, 1022, "CO", "Collines"),
-(1898, 1022, "DO", "Donga"),
-(1899, 1022, "KO", "Kouffo"),
-(1900, 1022, "LI", "Littoral"),
-(1901, 1022, "MO", "Mono"),
-(1902, 1022, "OU", "Oueme"),
-(1903, 1022, "PL", "Plateau"),
-(1904, 1022, "ZO", "Zou"),
-(1905, 1032, "BE", "Belait"),
-(1906, 1032, "BM", "Brunei-Muara"),
-(1907, 1032, "TE", "Temburong"),
-(1908, 1032, "TU", "Tutong"),
-(1909, 1025, "C", "Cochabamba"),
-(1910, 1025, "H", "Chuquisaca"),
-(1911, 1025, "B", "El Beni"),
-(1912, 1025, "L", "La Paz"),
-(1913, 1025, "O", "Oruro"),
-(1914, 1025, "N", "Pando"),
-(1915, 1025, "P", "Potosi"),
-(1916, 1025, "T", "Tarija"),
-(1917, 1029, "AC", "Acre"),
-(1918, 1029, "AL", "Alagoas"),
-(1919, 1029, "AM", "Amazonas"),
-(1920, 1029, "AP", "Amapa"),
-(1921, 1029, "BA", "Bahia"),
-(1922, 1029, "CE", "Ceara"),
-(1923, 1029, "DF", "Distrito Federal"),
-(1924, 1029, "ES", "Espirito Santo"),
-(1926, 1029, "GO", "Goias"),
-(1927, 1029, "MA", "Maranhao"),
-(1928, 1029, "MG", "Minas Gerais"),
-(1929, 1029, "MS", "Mato Grosso do Sul"),
-(1930, 1029, "MT", "Mato Grosso"),
-(1931, 1029, "PA", "Para"),
-(1932, 1029, "PB", "Paraiba"),
-(1933, 1029, "PE", "Pernambuco"),
-(1934, 1029, "PI", "Piaui"),
-(1935, 1029, "PR", "Parana"),
-(1936, 1029, "RJ", "Rio de Janeiro"),
-(1937, 1029, "RN", "Rio Grande do Norte"),
-(1938, 1029, "RO", "Rondonia"),
-(1939, 1029, "RR", "Roraima"),
-(1940, 1029, "RS", "Rio Grande do Sul"),
-(1941, 1029, "SC", "Santa Catarina"),
-(1942, 1029, "SE", "Sergipe"),
-(1943, 1029, "SP", "Sao Paulo"),
-(1944, 1029, "TO", "Tocantins"),
-(1945, 1212, "AC", "Acklins and Crooked Islands"),
-(1946, 1212, "BI", "Bimini"),
-(1947, 1212, "CI", "Cat Island"),
-(1948, 1212, "EX", "Exuma"),
-(1955, 1212, "IN", "Inagua"),
-(1957, 1212, "LI", "Long Island"),
-(1959, 1212, "MG", "Mayaguana"),
-(1960, 1212, "NP", "New Providence"),
-(1962, 1212, "RI", "Ragged Island"),
-(1966, 1024, "33", "Bumthang"),
-(1967, 1024, "12", "Chhukha"),
-(1968, 1024, "22", "Dagana"),
-(1969, 1024, "GA", "Gasa"),
-(1970, 1024, "13", "Ha"),
-(1971, 1024, "44", "Lhuentse"),
-(1972, 1024, "42", "Monggar"),
-(1973, 1024, "11", "Paro"),
-(1974, 1024, "43", "Pemagatshel"),
-(1975, 1024, "23", "Punakha"),
-(1976, 1024, "45", "Samdrup Jongkha"),
-(1977, 1024, "14", "Samtee"),
-(1978, 1024, "31", "Sarpang"),
-(1979, 1024, "15", "Thimphu"),
-(1980, 1024, "41", "Trashigang"),
-(1981, 1024, "TY", "Trashi Yangtse"),
-(1982, 1024, "32", "Trongsa"),
-(1983, 1024, "21", "Tsirang"),
-(1984, 1024, "24", "Wangdue Phodrang"),
-(1985, 1024, "34", "Zhemgang"),
-(1986, 1027, "CE", "Central"),
-(1987, 1027, "GH", "Ghanzi"),
-(1988, 1027, "KG", "Kgalagadi"),
-(1989, 1027, "KL", "Kgatleng"),
-(1990, 1027, "KW", "Kweneng"),
-(1991, 1027, "NG", "Ngamiland"),
-(1992, 1027, "NE", "North-East"),
-(1993, 1027, "NW", "North-West"),
-(1994, 1027, "SE", "South-East"),
-(1995, 1027, "SO", "Southern"),
-(1996, 1019, "BR", "Brèsckaja voblasc\'"),
-(1997, 1019, "HO", "Homel\'skaja voblasc\'"),
-(1998, 1019, "HR", "Hrodzenskaja voblasc\'"),
-(1999, 1019, "MA", "Mahilëuskaja voblasc\'"),
-(2000, 1019, "MI", "Minskaja voblasc\'"),
-(2001, 1019, "VI", "Vicebskaja voblasc\'"),
-(2002, 1021, "BZ", "Belize"),
-(2003, 1021, "CY", "Cayo"),
-(2004, 1021, "CZL", "Corozal"),
-(2005, 1021, "OW", "Orange Walk"),
-(2006, 1021, "SC", "Stann Creek"),
-(2007, 1021, "TOL", "Toledo"),
-(2008, 1050, "KN", "Kinshasa"),
-(2011, 1050, "EQ", "Equateur"),
-(2014, 1050, "KE", "Kasai-Oriental"),
-(2016, 1050, "MA", "Maniema"),
-(2017, 1050, "NK", "Nord-Kivu"),
-(2019, 1050, "SK", "Sud-Kivu"),
-(2020, 1042, "BGF", "Bangui"),
-(2021, 1042, "BB", "Bamingui-Bangoran"),
-(2022, 1042, "BK", "Basse-Kotto"),
-(2023, 1042, "HK", "Haute-Kotto"),
-(2024, 1042, "HM", "Haut-Mbomou"),
-(2025, 1042, "KG", "Kemo"),
-(2026, 1042, "LB", "Lobaye"),
-(2027, 1042, "HS", "Mambere-Kadei"),
-(2028, 1042, "MB", "Mbomou"),
-(2029, 1042, "KB", "Nana-Grebizi"),
-(2030, 1042, "NM", "Nana-Mambere"),
-(2031, 1042, "MP", "Ombella-Mpoko"),
-(2032, 1042, "UK", "Ouaka"),
-(2033, 1042, "AC", "Ouham"),
-(2034, 1042, "OP", "Ouham-Pende"),
-(2035, 1042, "SE", "Sangha-Mbaere"),
-(2036, 1042, "VR", "Vakaga"),
-(2037, 1051, "BZV", "Brazzaville"),
-(2038, 1051, "11", "Bouenza"),
-(2039, 1051, "8", "Cuvette"),
-(2040, 1051, "15", "Cuvette-Ouest"),
-(2041, 1051, "5", "Kouilou"),
-(2042, 1051, "2", "Lekoumou"),
-(2043, 1051, "7", "Likouala"),
-(2044, 1051, "9", "Niari"),
-(2045, 1051, "14", "Plateaux"),
-(2046, 1051, "12", "Pool"),
-(2047, 1051, "13", "Sangha"),
-(2048, 1205, "AG", "Aargau"),
-(2049, 1205, "AI", "Appenzell Innerrhoden"),
-(2050, 1205, "AR", "Appenzell Ausserrhoden"),
-(2051, 1205, "BE", "Bern"),
-(2052, 1205, "BL", "Basel-Landschaft"),
-(2053, 1205, "BS", "Basel-Stadt"),
-(2054, 1205, "FR", "Fribourg"),
-(2055, 1205, "GE", "Geneva"),
-(2056, 1205, "GL", "Glarus"),
-(2057, 1205, "GR", "Graubunden"),
-(2058, 1205, "JU", "Jura"),
-(2059, 1205, "LU", "Luzern"),
-(2060, 1205, "NE", "Neuchatel"),
-(2061, 1205, "NW", "Nidwalden"),
-(2062, 1205, "OW", "Obwalden"),
-(2063, 1205, "SG", "Sankt Gallen"),
-(2064, 1205, "SH", "Schaffhausen"),
-(2065, 1205, "SO", "Solothurn"),
-(2066, 1205, "SZ", "Schwyz"),
-(2067, 1205, "TG", "Thurgau"),
-(2068, 1205, "TI", "Ticino"),
-(2069, 1205, "UR", "Uri"),
-(2070, 1205, "VD", "Vaud"),
-(2071, 1205, "VS", "Valais"),
-(2072, 1205, "ZG", "Zug"),
-(2073, 1205, "ZH", "Zurich"),
-(2074, 1054, "06", "18 Montagnes"),
-(2075, 1054, "16", "Agnebi"),
-(2076, 1054, "09", "Bas-Sassandra"),
-(2077, 1054, "10", "Denguele"),
-(2078, 1054, "02", "Haut-Sassandra"),
-(2079, 1054, "07", "Lacs"),
-(2080, 1054, "01", "Lagunes"),
-(2081, 1054, "12", "Marahoue"),
-(2082, 1054, "05", "Moyen-Comoe"),
-(2083, 1054, "11", "Nzi-Comoe"),
-(2084, 1054, "03", "Savanes"),
-(2085, 1054, "15", "Sud-Bandama"),
-(2086, 1054, "13", "Sud-Comoe"),
-(2087, 1054, "04", "Vallee du Bandama"),
-(2088, 1054, "14", "Worodouqou"),
-(2089, 1054, "08", "Zanzan"),
-(2090, 1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
-(2091, 1044, "AN", "Antofagasta"),
-(2092, 1044, "AR", "Araucania"),
-(2093, 1044, "AT", "Atacama"),
-(2094, 1044, "BI", "Bio-Bio"),
-(2095, 1044, "CO", "Coquimbo"),
-(2096, 1044, "LI", "Libertador General Bernardo O\'Higgins"),
-(2097, 1044, "LL", "Los Lagos"),
-(2098, 1044, "MA", "Magallanes"),
-(2099, 1044, "ML", "Maule"),
-(2100, 1044, "SM", "Santiago Metropolitan"),
-(2101, 1044, "TA", "Tarapaca"),
-(2102, 1044, "VS", "Valparaiso"),
-(2103, 1038, "AD", "Adamaoua"),
-(2104, 1038, "CE", "Centre"),
-(2105, 1038, "ES", "East"),
-(2106, 1038, "EN", "Far North"),
-(2107, 1038, "NO", "North"),
-(2108, 1038, "SW", "South"),
-(2109, 1038, "SW", "South-West"),
-(2110, 1038, "OU", "West"),
-(2111, 1045, "11", "Beijing"),
-(2112, 1045, "50", "Chongqing"),
-(2113, 1045, "31", "Shanghai"),
-(2114, 1045, "12", "Tianjin"),
-(2115, 1045, "34", "Anhui"),
-(2116, 1045, "35", "Fujian"),
-(2117, 1045, "62", "Gansu"),
-(2118, 1045, "44", "Guangdong"),
-(2119, 1045, "52", "Guizhou"),
-(2120, 1045, "46", "Hainan"),
-(2121, 1045, "13", "Hebei"),
-(2122, 1045, "23", "Heilongjiang"),
-(2123, 1045, "41", "Henan"),
-(2124, 1045, "42", "Hubei"),
-(2125, 1045, "43", "Hunan"),
-(2126, 1045, "32", "Jiangsu"),
-(2127, 1045, "36", "Jiangxi"),
-(2128, 1045, "22", "Jilin"),
-(2129, 1045, "21", "Liaoning"),
-(2130, 1045, "63", "Qinghai"),
-(2131, 1045, "61", "Shaanxi"),
-(2132, 1045, "37", "Shandong"),
-(2133, 1045, "14", "Shanxi"),
-(2134, 1045, "51", "Sichuan"),
-(2135, 1045, "71", "Taiwan"),
-(2136, 1045, "53", "Yunnan"),
-(2137, 1045, "33", "Zhejiang"),
-(2138, 1045, "45", "Guangxi"),
-(2139, 1045, "15", "Neia Mongol (mn)"),
-(2140, 1045, "65", "Xinjiang"),
-(2141, 1045, "54", "Xizang"),
-(2142, 1045, "91", "Hong Kong"),
-(2143, 1045, "92", "Macau"),
-(2144, 1048, "DC", "Distrito Capital de Bogotá"),
-(2145, 1048, "AMA", "Amazonea"),
-(2146, 1048, "ANT", "Antioquia"),
-(2147, 1048, "ARA", "Arauca"),
-(2148, 1048, "ATL", "Atlántico"),
-(2149, 1048, "BOL", "Bolívar"),
-(2150, 1048, "BOY", "Boyacá"),
-(2151, 1048, "CAL", "Caldea"),
-(2152, 1048, "CAQ", "Caquetá"),
-(2153, 1048, "CAS", "Casanare"),
-(2154, 1048, "CAU", "Cauca"),
-(2155, 1048, "CES", "Cesar"),
-(2156, 1048, "COR", "Córdoba"),
-(2157, 1048, "CUN", "Cundinamarca"),
-(2158, 1048, "CHO", "Chocó"),
-(2159, 1048, "GUA", "Guainía"),
-(2160, 1048, "GUV", "Guaviare"),
-(2161, 1048, "LAG", "La Guajira"),
-(2162, 1048, "MAG", "Magdalena"),
-(2163, 1048, "MET", "Meta"),
-(2164, 1048, "NAR", "Nariño"),
-(2165, 1048, "NSA", "Norte de Santander"),
-(2166, 1048, "PUT", "Putumayo"),
-(2167, 1048, "QUI", "Quindio"),
-(2168, 1048, "RIS", "Risaralda"),
-(2169, 1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
-(2170, 1048, "SAN", "Santander"),
-(2171, 1048, "SUC", "Sucre"),
-(2172, 1048, "TOL", "Tolima"),
-(2173, 1048, "VAC", "Valle del Cauca"),
-(2174, 1048, "VAU", "Vaupés"),
-(2175, 1048, "VID", "Vichada"),
-(2176, 1053, "A", "Alajuela"),
-(2177, 1053, "C", "Cartago"),
-(2178, 1053, "G", "Guanacaste"),
-(2179, 1053, "H", "Heredia"),
-(2180, 1053, "L", "Limon"),
-(2181, 1053, "P", "Puntarenas"),
-(2182, 1053, "SJ", "San Jose"),
-(2183, 1056, "09", "Camagey"),
-(2184, 1056, "08", "Ciego de `vila"),
-(2185, 1056, "06", "Cienfuegos"),
-(2186, 1056, "03", "Ciudad de La Habana"),
-(2187, 1056, "12", "Granma"),
-(2188, 1056, "14", "Guantanamo"),
-(2189, 1056, "11", "Holquin"),
-(2190, 1056, "02", "La Habana"),
-(2191, 1056, "10", "Las Tunas"),
-(2192, 1056, "04", "Matanzas"),
-(2193, 1056, "01", "Pinar del Rio"),
-(2194, 1056, "07", "Sancti Spiritus"),
-(2195, 1056, "13", "Santiago de Cuba"),
-(2196, 1056, "05", "Villa Clara"),
-(2197, 1056, "99", "Isla de la Juventud"),
-(2198, 1056, "PR", "Pinar del Roo"),
-(2199, 1056, "CA", "Ciego de Avila"),
-(2200, 1056, "CG", "Camagoey"),
-(2201, 1056, "HO", "Holgun"),
-(2202, 1056, "SS", "Sancti Spritus"),
-(2203, 1056, "IJ", "Municipio Especial Isla de la Juventud"),
-(2204, 1040, "BV", "Boa Vista"),
-(2205, 1040, "BR", "Brava"),
-(2206, 1040, "CS", "Calheta de Sao Miguel"),
-(2207, 1040, "FO", "Fogo"),
-(2208, 1040, "MA", "Maio"),
-(2209, 1040, "MO", "Mosteiros"),
-(2210, 1040, "PA", "Paul"),
-(2211, 1040, "PN", "Porto Novo"),
-(2212, 1040, "PR", "Praia"),
-(2213, 1040, "RG", "Ribeira Grande"),
-(2214, 1040, "SL", "Sal"),
-(2215, 1040, "SD", "Sao Domingos"),
-(2216, 1040, "SF", "Sao Filipe"),
-(2217, 1040, "SN", "Sao Nicolau"),
-(2218, 1040, "SV", "Sao Vicente"),
-(2219, 1040, "TA", "Tarrafal"),
-(2220, 1057, "04", "Ammochostos Magusa"),
-(2221, 1057, "06", "Keryneia"),
-(2222, 1057, "03", "Larnaka"),
-(2223, 1057, "01", "Lefkosia"),
-(2224, 1057, "02", "Lemesos"),
-(2225, 1057, "05", "Pafos"),
-(2226, 1058, "JC", "Jihočeský kraj"),
-(2227, 1058, "JM", "Jihomoravský kraj"),
-(2228, 1058, "KA", "Karlovarský kraj"),
-(2229, 1058, "KR", "Královéhradecký kraj"),
-(2230, 1058, "LI", "Liberecký kraj"),
-(2231, 1058, "MO", "Moravskoslezský kraj"),
-(2232, 1058, "OL", "Olomoucký kraj"),
-(2233, 1058, "PA", "Pardubický kraj"),
-(2234, 1058, "PL", "Plzeňský kraj"),
-(2235, 1058, "PR", "Praha, hlavní město"),
-(2236, 1058, "ST", "Středočeský kraj"),
-(2237, 1058, "US", "Ústecký kraj"),
-(2238, 1058, "VY", "Vysočina"),
-(2239, 1058, "ZL", "Zlínský kraj"),
-(2240, 1082, "BW", "Baden-Württemberg"),
-(2241, 1082, "BY", "Bayern"),
-(2242, 1082, "HB", "Bremen"),
-(2243, 1082, "HH", "Hamburg"),
-(2244, 1082, "HE", "Hessen"),
-(2245, 1082, "NI", "Niedersachsen"),
-(2246, 1082, "NW", "Nordrhein-Westfalen"),
-(2247, 1082, "RP", "Rheinland-Pfalz"),
-(2248, 1082, "SL", "Saarland"),
-(2249, 1082, "SH", "Schleswig-Holstein"),
-(2250, 1082, "BE", "Berlin"),
-(2251, 1082, "BB", "Brandenburg"),
-(2252, 1082, "MV", "Mecklenburg-Vorpommern"),
-(2253, 1082, "SN", "Sachsen"),
-(2254, 1082, "ST", "Sachsen-Anhalt"),
-(2255, 1082, "TH", "Thüringen"),
-(2256, 1060, "AS", "Ali Sabiah"),
-(2257, 1060, "DI", "Dikhil"),
-(2258, 1060, "DJ", "Djibouti"),
-(2259, 1060, "OB", "Obock"),
-(2260, 1060, "TA", "Tadjoura"),
-(2261, 1059, "147", "Frederiksberg"),
-(2262, 1059, "101", "Copenhagen City"),
-(2263, 1059, "015", "Copenhagen"),
-(2264, 1059, "020", "Frederiksborg"),
-(2265, 1059, "025", "Roskilde"),
-(2266, 1059, "030", "Vestsjælland"),
-(2267, 1059, "035", "Storstrøm"),
-(2268, 1059, "040", "Bornholm"),
-(2269, 1059, "042", "Fyn"),
-(2270, 1059, "050", "South Jutland"),
-(2271, 1059, "055", "Ribe"),
-(2272, 1059, "060", "Vejle"),
-(2273, 1059, "065", "Ringkjøbing"),
-(2274, 1059, "070", "Ã…rhus"),
-(2275, 1059, "076", "Viborg"),
-(2276, 1059, "080", "North Jutland"),
-(2277, 1062, "01", "Distrito Nacional (Santo Domingo)"),
-(2278, 1062, "02", "Azua"),
-(2279, 1062, "03", "Bahoruco"),
-(2280, 1062, "04", "Barahona"),
-(2281, 1062, "05", "Dajabón"),
-(2282, 1062, "06", "Duarte"),
-(2283, 1062, "08", "El Seybo [El Seibo]"),
-(2284, 1062, "09", "Espaillat"),
-(2285, 1062, "30", "Hato Mayor"),
-(2286, 1062, "10", "Independencia"),
-(2287, 1062, "11", "La Altagracia"),
-(2288, 1062, "07", "La Estrelleta [Elias Pina]"),
-(2289, 1062, "12", "La Romana"),
-(2290, 1062, "13", "La Vega"),
-(2291, 1062, "14", "Maroia Trinidad Sánchez"),
-(2292, 1062, "28", "Monseñor Nouel"),
-(2293, 1062, "15", "Monte Cristi"),
-(2294, 1062, "29", "Monte Plata"),
-(2295, 1062, "16", "Pedernales"),
-(2296, 1062, "17", "Peravia"),
-(2297, 1062, "18", "Puerto Plata"),
-(2298, 1062, "19", "Salcedo"),
-(2299, 1062, "20", "Samaná"),
-(2300, 1062, "21", "San Cristóbal"),
-(2301, 1062, "23", "San Pedro de Macorís"),
-(2302, 1062, "24", "Sánchez Ramírez"),
-(2303, 1062, "25", "Santiago"),
-(2304, 1062, "26", "Santiago Rodríguez"),
-(2305, 1062, "27", "Valverde"),
-(2306, 1003, "01", "Adrar"),
-(2307, 1003, "44", "Ain Defla"),
-(2308, 1003, "46", "Ain Tmouchent"),
-(2309, 1003, "16", "Alger"),
-(2310, 1003, "23", "Annaba"),
-(2311, 1003, "05", "Batna"),
-(2312, 1003, "08", "Bechar"),
-(2313, 1003, "06", "Bejaia"),
-(2314, 1003, "07", "Biskra"),
-(2315, 1003, "09", "Blida"),
-(2316, 1003, "34", "Bordj Bou Arreridj"),
-(2317, 1003, "10", "Bouira"),
-(2318, 1003, "35", "Boumerdes"),
-(2319, 1003, "02", "Chlef"),
-(2320, 1003, "25", "Constantine"),
-(2321, 1003, "17", "Djelfa"),
-(2322, 1003, "32", "El Bayadh"),
-(2323, 1003, "39", "El Oued"),
-(2324, 1003, "36", "El Tarf"),
-(2325, 1003, "47", "Ghardaia"),
-(2326, 1003, "24", "Guelma"),
-(2327, 1003, "33", "Illizi"),
-(2328, 1003, "18", "Jijel"),
-(2329, 1003, "40", "Khenchela"),
-(2330, 1003, "03", "Laghouat"),
-(2331, 1003, "29", "Mascara"),
-(2332, 1003, "26", "Medea"),
-(2333, 1003, "43", "Mila"),
-(2334, 1003, "27", "Mostaganem"),
-(2335, 1003, "28", "Msila"),
-(2336, 1003, "45", "Naama"),
-(2337, 1003, "31", "Oran"),
-(2338, 1003, "30", "Ouargla"),
-(2339, 1003, "04", "Oum el Bouaghi"),
-(2340, 1003, "48", "Relizane"),
-(2341, 1003, "20", "Saida"),
-(2342, 1003, "19", "Setif"),
-(2343, 1003, "22", "Sidi Bel Abbes"),
-(2344, 1003, "21", "Skikda"),
-(2345, 1003, "41", "Souk Ahras"),
-(2346, 1003, "11", "Tamanghasset"),
-(2347, 1003, "12", "Tebessa"),
-(2348, 1003, "14", "Tiaret"),
-(2349, 1003, "37", "Tindouf"),
-(2350, 1003, "42", "Tipaza"),
-(2351, 1003, "38", "Tissemsilt"),
-(2352, 1003, "15", "Tizi Ouzou"),
-(2353, 1003, "13", "Tlemcen"),
-(2354, 1064, "A", "Azuay"),
-(2355, 1064, "B", "Bolivar"),
-(2356, 1064, "F", "Canar"),
-(2357, 1064, "C", "Carchi"),
-(2358, 1064, "X", "Cotopaxi"),
-(2359, 1064, "H", "Chimborazo"),
-(2360, 1064, "O", "El Oro"),
-(2361, 1064, "E", "Esmeraldas"),
-(2362, 1064, "W", "Galapagos"),
-(2363, 1064, "G", "Guayas"),
-(2364, 1064, "I", "Imbabura"),
-(2365, 1064, "L", "Loja"),
-(2366, 1064, "R", "Los Rios"),
-(2367, 1064, "M", "Manabi"),
-(2368, 1064, "S", "Morona-Santiago"),
-(2369, 1064, "N", "Napo"),
-(2370, 1064, "D", "Orellana"),
-(2371, 1064, "Y", "Pastaza"),
-(2372, 1064, "P", "Pichincha"),
-(2373, 1064, "U", "Sucumbios"),
-(2374, 1064, "T", "Tungurahua"),
-(2375, 1064, "Z", "Zamora-Chinchipe"),
-(2376, 1069, "37", "Harjumaa"),
-(2377, 1069, "39", "Hiiumaa"),
-(2378, 1069, "44", "Ida-Virumaa"),
-(2379, 1069, "49", "Jõgevamaa"),
-(2380, 1069, "51", "Järvamaa"),
-(2381, 1069, "57", "Läänemaa"),
-(2382, 1069, "59", "Lääne-Virumaa"),
-(2383, 1069, "65", "Põlvamaa"),
-(2384, 1069, "67", "Pärnumaa"),
-(2385, 1069, "70", "Raplamaa"),
-(2386, 1069, "74", "Saaremaa"),
-(2387, 1069, "7B", "Tartumaa"),
-(2388, 1069, "82", "Valgamaa"),
-(2389, 1069, "84", "Viljandimaa"),
-(2390, 1069, "86", "Võrumaa"),
-(2391, 1065, "DK", "Ad Daqahllyah"),
-(2392, 1065, "BA", "Al Bahr al Ahmar"),
-(2393, 1065, "BH", "Al Buhayrah"),
-(2394, 1065, "FYM", "Al Fayym"),
-(2395, 1065, "GH", "Al Gharbiyah"),
-(2396, 1065, "ALX", "Al Iskandarlyah"),
-(2397, 1065, "IS", "Al Isma illyah"),
-(2398, 1065, "GZ", "Al Jizah"),
-(2399, 1065, "MNF", "Al Minuflyah"),
-(2400, 1065, "MN", "Al Minya"),
-(2401, 1065, "C", "Al Qahirah"),
-(2402, 1065, "KB", "Al Qalyublyah"),
-(2403, 1065, "WAD", "Al Wadi al Jadid"),
-(2404, 1065, "SHR", "Ash Sharqiyah"),
-(2405, 1065, "SUZ", "As Suways"),
-(2406, 1065, "ASN", "Aswan"),
-(2407, 1065, "AST", "Asyut"),
-(2408, 1065, "BNS", "Bani Suwayf"),
-(2409, 1065, "PTS", "Bur Sa\'id"),
-(2410, 1065, "DT", "Dumyat"),
-(2411, 1065, "JS", "Janub Sina\'"),
-(2412, 1065, "KFS", "Kafr ash Shaykh"),
-(2413, 1065, "MT", "Matruh"),
-(2414, 1065, "KN", "Qina"),
-(2415, 1065, "SIN", "Shamal Sina\'"),
-(2416, 1065, "SHG", "Suhaj"),
-(2417, 1068, "AN", "Anseba"),
-(2418, 1068, "DU", "Debub"),
-(2419, 1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
-(2420, 1068, "GB", "Gash-Barka"),
-(2421, 1068, "MA", "Maakel [Maekel]"),
-(2422, 1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
-(2423, 1198, "VI", "Álava"),
-(2424, 1198, "AB", "Albacete"),
-(2425, 1198, "A", "Alicante"),
-(2426, 1198, "AL", "Almería"),
-(2427, 1198, "O", "Asturias"),
-(2428, 1198, "AV", "Ávila"),
-(2429, 1198, "BA", "Badajoz"),
-(2430, 1198, "PM", "Baleares"),
-(2431, 1198, "B", "Barcelona"),
-(2432, 1198, "BU", "Burgos"),
-(2433, 1198, "CC", "Cáceres"),
-(2434, 1198, "CA", "Cádiz"),
-(2435, 1198, "S", "Cantabria"),
-(2436, 1198, "CS", "Castellón"),
-(2437, 1198, "CR", "Ciudad Real"),
-(2438, 1198, "CU", "Cuenca"),
-(2439, 1198, "GE", "Girona [Gerona]"),
-(2440, 1198, "GR", "Granada"),
-(2441, 1198, "GU", "Guadalajara"),
-(2442, 1198, "SS", "Guipúzcoa"),
-(2443, 1198, "H", "Huelva"),
-(2444, 1198, "HU", "Huesca"),
-(2445, 1198, "J", "Jaén"),
-(2446, 1198, "C", "La Coruña"),
-(2447, 1198, "LO", "La Rioja"),
-(2448, 1198, "GC", "Las Palmas"),
-(2449, 1198, "LE", "León"),
-(2450, 1198, "L", "Lleida [Lérida]"),
-(2451, 1198, "LU", "Lugo"),
-(2452, 1198, "M", "Madrid"),
-(2453, 1198, "MA", "Málaga"),
-(2454, 1198, "MU", "Murcia"),
-(2455, 1198, "NA", "Navarra"),
-(2456, 1198, "OR", "Ourense"),
-(2457, 1198, "P", "Palencia"),
-(2458, 1198, "PO", "Pontevedra"),
-(2459, 1198, "SA", "Salamanca"),
-(2460, 1198, "TF", "Santa Cruz de Tenerife"),
-(2461, 1198, "SG", "Segovia"),
-(2462, 1198, "SE", "Sevilla"),
-(2463, 1198, "SO", "Soria"),
-(2464, 1198, "T", "Tarragona"),
-(2465, 1198, "TE", "Teruel"),
-(2466, 1198, "V", "Valencia"),
-(2467, 1198, "VA", "Valladolid"),
-(2468, 1198, "BI", "Vizcaya"),
-(2469, 1198, "ZA", "Zamora"),
-(2470, 1198, "Z", "Zaragoza"),
-(2471, 1198, "CE", "Ceuta"),
-(2472, 1198, "ML", "Melilla"),
-(2473, 1070, "AA", "Addis Ababa"),
-(2474, 1070, "DD", "Dire Dawa"),
-(2475, 1070, "AF", "Afar"),
-(2476, 1070, "AM", "Amara"),
-(2477, 1070, "BE", "Benshangul-Gumaz"),
-(2478, 1070, "GA", "Gambela Peoples"),
-(2479, 1070, "HA", "Harari People"),
-(2480, 1070, "OR", "Oromia"),
-(2481, 1070, "SO", "Somali"),
-(2482, 1070, "SN", "Southern Nations, Nationalities and Peoples"),
-(2483, 1070, "TI", "Tigrai"),
+(1172, "MZ", "mazowieckie"),
+(1172, "PM", "pomorskie"),
+(1172, "DS", "dolnośląskie"),
+(1172, "KP", "kujawsko-pomorskie"),
+(1172, "LU", "lubelskie"),
+(1172, "LB", "lubuskie"),
+(1172, "LD", "łódzkie"),
+(1172, "MA", "małopolskie"),
+(1172, "OP", "opolskie"),
+(1172, "PK", "podkarpackie"),
+(1172, "PD", "podlaskie"),
+(1172, "SL", "śląskie"),
+(1172, "SK", "świętokrzyskie"),
+(1172, "WN", "warmińsko-mazurskie"),
+(1172, "WP", "wielkopolskie"),
+(1172, "ZP", "zachodniopomorskie"),
+(1225, "AZ", "Abu Zaby"),
+(1225, "AJ", "\'Ajman"),
+(1225, "FU", "Al Fujayrah"),
+(1225, "SH", "Ash Shariqah"),
+(1225, "DU", "Dubayy"),
+(1225, "RK", "Ra\'s al Khaymah"),
+(1233, "33", "Dac Lac"),
+(1225, "UQ", "Umm al Qaywayn"),
+(1001, "BDS", "Badakhshan"),
+(1001, "BDG", "Badghis"),
+(1001, "BGL", "Baghlan"),
+(1001, "BAL", "Balkh"),
+(1001, "BAM", "Bamian"),
+(1001, "FRA", "Farah"),
+(1001, "FYB", "Faryab"),
+(1001, "GHA", "Ghazni"),
+(1001, "GHO", "Ghowr"),
+(1001, "HEL", "Helmand"),
+(1001, "HER", "Herat"),
+(1001, "JOW", "Jowzjan"),
+(1001, "KAB", "Kabul"),
+(1001, "KAN", "Kandahar"),
+(1001, "KAP", "Kapisa"),
+(1001, "KHO", "Khowst"),
+(1001, "KNR", "Konar"),
+(1001, "KDZ", "Kondoz"),
+(1001, "LAG", "Laghman"),
+(1001, "LOW", "Lowgar"),
+(1001, "NAN", "Nangrahar"),
+(1001, "NIM", "Nimruz"),
+(1001, "NUR", "Nurestan"),
+(1001, "ORU", "Oruzgan"),
+(1001, "PIA", "Paktia"),
+(1001, "PKA", "Paktika"),
+(1001, "PAR", "Parwan"),
+(1001, "SAM", "Samangan"),
+(1001, "SAR", "Sar-e Pol"),
+(1001, "TAK", "Takhar"),
+(1001, "WAR", "Wardak"),
+(1001, "ZAB", "Zabol"),
+(1002, "BR", "Berat"),
+(1002, "BU", "Bulqizë"),
+(1002, "DL", "Delvinë"),
+(1002, "DV", "Devoll"),
+(1002, "DI", "Dibër"),
+(1002, "DR", "Durrës"),
+(1002, "EL", "Elbasan"),
+(1002, "FR", "Fier"),
+(1002, "GR", "Gramsh"),
+(1002, "GJ", "Gjirokastër"),
+(1002, "HA", "Has"),
+(1002, "KA", "Kavajë"),
+(1002, "ER", "Kolonjë"),
+(1002, "KO", "Korçë"),
+(1002, "KR", "Krujë"),
+(1002, "KC", "Kuçovë"),
+(1002, "KU", "Kukës"),
+(1002, "KB", "Kurbin"),
+(1002, "LE", "Lezhë"),
+(1002, "LB", "Librazhd"),
+(1002, "LU", "Lushnjë"),
+(1002, "MM", "Malësi e Madhe"),
+(1002, "MK", "Mallakastër"),
+(1002, "MT", "Mat"),
+(1002, "MR", "Mirditë"),
+(1002, "PQ", "Peqin"),
+(1002, "PR", "Përmet"),
+(1002, "PG", "Pogradec"),
+(1002, "PU", "Pukë"),
+(1002, "SR", "Sarandë"),
+(1002, "SK", "Skrapar"),
+(1002, "SH", "Shkodër"),
+(1002, "TE", "Tepelenë"),
+(1002, "TR", "Tiranë"),
+(1002, "TP", "Tropojë"),
+(1002, "VL", "Vlorë"),
+(1011, "ER", "Erevan"),
+(1011, "AG", "Aragacotn"),
+(1011, "AR", "Ararat"),
+(1011, "AV", "Armavir"),
+(1011, "GR", "Gegarkunik\'"),
+(1011, "KT", "Kotayk\'"),
+(1011, "LO", "Lory"),
+(1011, "SH", "Sirak"),
+(1011, "SU", "Syunik\'"),
+(1011, "TV", "Tavus"),
+(1011, "VD", "Vayoc Jor"),
+(1005, "07", "Andorra la Vella"),
+(1005, "02", "Canillo"),
+(1005, "03", "Encamp"),
+(1005, "08", "Escaldes-Engordany"),
+(1005, "04", "La Massana"),
+(1005, "05", "Ordino"),
+(1005, "06", "Sant Julia de Loria"),
+(1006, "BGO", "Bengo"),
+(1006, "BGU", "Benguela"),
+(1006, "BIE", "Bie"),
+(1006, "CAB", "Cabinda"),
+(1006, "CCU", "Cuando-Cubango"),
+(1006, "CNO", "Cuanza Norte"),
+(1006, "CUS", "Cuanza Sul"),
+(1006, "CNN", "Cunene"),
+(1006, "HUA", "Huambo"),
+(1006, "HUI", "Huila"),
+(1006, "LUA", "Luanda"),
+(1006, "LNO", "Lunda Norte"),
+(1006, "LSU", "Lunda Sul"),
+(1006, "MAL", "Malange"),
+(1006, "MOX", "Moxico"),
+(1006, "NAM", "Namibe"),
+(1006, "UIG", "Uige"),
+(1006, "ZAI", "Zaire"),
+(1009, "03", "Saint George"),
+(1009, "04", "Saint John"),
+(1009, "05", "Saint Mary"),
+(1009, "06", "Saint Paul"),
+(1009, "07", "Saint Peter"),
+(1009, "08", "Saint Philip"),
+(1009, "10", "Barbuda"),
+(1009, "11", "Redonda"),
+(1010, "C", "Capital federal"),
+(1010, "B", "Buenos Aires"),
+(1010, "K", "Catamarca"),
+(1010, "X", "Cordoba"),
+(1010, "W", "Corrientes"),
+(1010, "H", "Chaco"),
+(1010, "U", "Chubut"),
+(1010, "E", "Entre Rios"),
+(1010, "P", "Formosa"),
+(1010, "Y", "Jujuy"),
+(1010, "L", "La Pampa"),
+(1010, "M", "Mendoza"),
+(1010, "N", "Misiones"),
+(1010, "Q", "Neuquen"),
+(1010, "R", "Rio Negro"),
+(1010, "A", "Salta"),
+(1010, "J", "San Juan"),
+(1010, "D", "San Luis"),
+(1010, "Z", "Santa Cruz"),
+(1010, "S", "Santa Fe"),
+(1010, "G", "Santiago del Estero"),
+(1010, "V", "Tierra del Fuego"),
+(1010, "T", "Tucuman"),
+(1010, "F", "La Rioja"),
+(1014, "1", "Burgenland"),
+(1014, "2", "Kärnten"),
+(1014, "3", "Niederösterreich"),
+(1014, "4", "Oberösterreich"),
+(1014, "5", "Salzburg"),
+(1014, "6", "Steiermark"),
+(1014, "7", "Tirol"),
+(1014, "8", "Vorarlberg"),
+(1014, "9", "Wien"),
+(1008, "AAT", "Australian Antarctic Territory"),
+(1013, "ACT", "Australian Capital Territory"),
+(1013, "NT", "Northern Territory"),
+(1013, "NSW", "New South Wales"),
+(1013, "QLD", "Queensland"),
+(1013, "SA", "South Australia"),
+(1013, "TAS", "Tasmania"),
+(1013, "VIC", "Victoria"),
+(1013, "WA", "Western Australia"),
+(1015, "NX", "Naxcivan"),
+(1015, "AB", "Ali Bayramli"),
+(1015, "BA", "Baki"),
+(1015, "GA", "Ganca"),
+(1015, "LA", "Lankaran"),
+(1015, "MI", "Mingacevir"),
+(1015, "NA", "Naftalan"),
+(1015, "SA", "Saki"),
+(1015, "SM", "Sumqayit"),
+(1015, "SS", "Susa"),
+(1015, "XA", "Xankandi"),
+(1015, "YE", "Yevlax"),
+(1015, "ABS", "Abseron"),
+(1015, "AGC", "Agcabadi"),
+(1015, "AGM", "Agdam"),
+(1015, "AGS", "Agdas"),
+(1015, "AGA", "Agstafa"),
+(1015, "AGU", "Agsu"),
+(1015, "AST", "Astara"),
+(1015, "BAB", "Babak"),
+(1015, "BAL", "Balakan"),
+(1015, "BAR", "Barda"),
+(1015, "BEY", "Beylagan"),
+(1015, "BIL", "Bilasuvar"),
+(1015, "CAB", "Cabrayll"),
+(1015, "CAL", "Calilabad"),
+(1015, "CUL", "Culfa"),
+(1015, "DAS", "Daskasan"),
+(1015, "DAV", "Davaci"),
+(1015, "FUZ", "Fuzuli"),
+(1015, "GAD", "Gadabay"),
+(1015, "GOR", "Goranboy"),
+(1015, "GOY", "Goycay"),
+(1015, "HAC", "Haciqabul"),
+(1015, "IMI", "Imisli"),
+(1015, "ISM", "Ismayilli"),
+(1015, "KAL", "Kalbacar"),
+(1015, "KUR", "Kurdamir"),
+(1015, "LAC", "Lacin"),
+(1015, "LER", "Lerik"),
+(1015, "MAS", "Masalli"),
+(1015, "NEF", "Neftcala"),
+(1015, "OGU", "Oguz"),
+(1015, "ORD", "Ordubad"),
+(1015, "QAB", "Qabala"),
+(1015, "QAX", "Qax"),
+(1015, "QAZ", "Qazax"),
+(1015, "QOB", "Qobustan"),
+(1015, "QBA", "Quba"),
+(1015, "QBI", "Qubadli"),
+(1015, "QUS", "Qusar"),
+(1015, "SAT", "Saatli"),
+(1015, "SAB", "Sabirabad"),
+(1015, "SAD", "Sadarak"),
+(1015, "SAH", "Sahbuz"),
+(1015, "SAL", "Salyan"),
+(1015, "SMI", "Samaxi"),
+(1015, "SKR", "Samkir"),
+(1015, "SMX", "Samux"),
+(1015, "SAR", "Sarur"),
+(1015, "SIY", "Siyazan"),
+(1015, "TAR", "Tartar"),
+(1015, "TOV", "Tovuz"),
+(1015, "UCA", "Ucar"),
+(1015, "XAC", "Xacmaz"),
+(1015, "XAN", "Xanlar"),
+(1015, "XIZ", "Xizi"),
+(1015, "XCI", "Xocali"),
+(1015, "XVD", "Xocavand"),
+(1015, "YAR", "Yardimli"),
+(1015, "ZAN", "Zangilan"),
+(1015, "ZAQ", "Zaqatala"),
+(1015, "ZAR", "Zardab"),
+(1026, "BIH", "Federacija Bosna i Hercegovina"),
+(1026, "SRP", "Republika Srpska"),
+(1017, "05", "Bagerhat zila"),
+(1017, "01", "Bandarban zila"),
+(1017, "02", "Barguna zila"),
+(1017, "06", "Barisal zila"),
+(1017, "07", "Bhola zila"),
+(1017, "03", "Bogra zila"),
+(1017, "04", "Brahmanbaria zila"),
+(1017, "09", "Chandpur zila"),
+(1017, "10", "Chittagong zila"),
+(1017, "12", "Chuadanga zila"),
+(1017, "08", "Comilla zila"),
+(1017, "11", "Cox\'s Bazar zila"),
+(1017, "13", "Dhaka zila"),
+(1017, "14", "Dinajpur zila"),
+(1017, "15", "Faridpur zila"),
+(1017, "16", "Feni zila"),
+(1017, "19", "Gaibandha zila"),
+(1017, "18", "Gazipur zila"),
+(1017, "17", "Gopalganj zila"),
+(1017, "20", "Habiganj zila"),
+(1017, "24", "Jaipurhat zila"),
+(1017, "21", "Jamalpur zila"),
+(1017, "22", "Jessore zila"),
+(1017, "25", "Jhalakati zila"),
+(1017, "23", "Jhenaidah zila"),
+(1017, "29", "Khagrachari zila"),
+(1017, "27", "Khulna zila"),
+(1017, "26", "Kishorganj zila"),
+(1017, "28", "Kurigram zila"),
+(1017, "30", "Kushtia zila"),
+(1017, "31", "Lakshmipur zila"),
+(1017, "32", "Lalmonirhat zila"),
+(1017, "36", "Madaripur zila"),
+(1017, "37", "Magura zila"),
+(1017, "33", "Manikganj zila"),
+(1017, "39", "Meherpur zila"),
+(1017, "38", "Moulvibazar zila"),
+(1017, "35", "Munshiganj zila"),
+(1017, "34", "Mymensingh zila"),
+(1017, "48", "Naogaon zila"),
+(1017, "43", "Narail zila"),
+(1017, "40", "Narayanganj zila"),
+(1017, "42", "Narsingdi zila"),
+(1017, "44", "Natore zila"),
+(1017, "45", "Nawabganj zila"),
+(1017, "41", "Netrakona zila"),
+(1017, "46", "Nilphamari zila"),
+(1017, "47", "Noakhali zila"),
+(1017, "49", "Pabna zila"),
+(1017, "52", "Panchagarh zila"),
+(1017, "51", "Patuakhali zila"),
+(1017, "50", "Pirojpur zila"),
+(1017, "53", "Rajbari zila"),
+(1017, "54", "Rajshahi zila"),
+(1017, "56", "Rangamati zila"),
+(1017, "55", "Rangpur zila"),
+(1017, "58", "Satkhira zila"),
+(1017, "62", "Shariatpur zila"),
+(1017, "57", "Sherpur zila"),
+(1017, "59", "Sirajganj zila"),
+(1017, "61", "Sunamganj zila"),
+(1017, "60", "Sylhet zila"),
+(1017, "63", "Tangail zila"),
+(1017, "64", "Thakurgaon zila"),
+(1018, "01", "Christ Church"),
+(1018, "02", "Saint Andrew"),
+(1018, "03", "Saint George"),
+(1018, "04", "Saint James"),
+(1018, "05", "Saint John"),
+(1018, "06", "Saint Joseph"),
+(1018, "07", "Saint Lucy"),
+(1018, "08", "Saint Michael"),
+(1018, "09", "Saint Peter"),
+(1018, "10", "Saint Philip"),
+(1018, "11", "Saint Thomas"),
+(1020, "BRU", "Brussels"),
+(1020, "VAN", "Antwerpen"),
+(1020, "WBR", "Brabant Wallon"),
+(1020, "WHT", "Hainaut"),
+(1020, "WLG", "Liege"),
+(1020, "VLI", "Limburg"),
+(1020, "WLX", "Luxembourg"),
+(1020, "WNA", "Namur"),
+(1020, "VOV", "Oost-Vlaanderen"),
+(1020, "VBR", "Vlaams-Brabant"),
+(1020, "VWV", "West-Vlaanderen"),
+(1023, 'DEV', 'Devonshire'),
+(1023, 'HAM', 'Hamilton Parish'),
+(1023, 'HA', 'City of Hamilton'),
+(1023, 'PAG', 'Paget'),
+(1023, 'PEM', 'Pembroke'),
+(1023, 'SG', 'Town of St. George'),
+(1023, 'SGE', 'Saint George\'s'),
+(1023, 'SAN', 'Sandys'),
+(1023, 'SMI', 'Smiths'),
+(1023, 'SOU', 'Southampton'),
+(1023, 'WAR', 'Warwick'),
+(1034, "BAL", "Bale"),
+(1034, "BAM", "Bam"),
+(1034, "BAN", "Banwa"),
+(1034, "BAZ", "Bazega"),
+(1034, "BGR", "Bougouriba"),
+(1034, "BLG", "Boulgou"),
+(1034, "BLK", "Boulkiemde"),
+(1034, "COM", "Comoe"),
+(1034, "GAN", "Ganzourgou"),
+(1034, "GNA", "Gnagna"),
+(1034, "GOU", "Gourma"),
+(1034, "HOU", "Houet"),
+(1034, "IOB", "Ioba"),
+(1034, "KAD", "Kadiogo"),
+(1034, "KEN", "Kenedougou"),
+(1034, "KMD", "Komondjari"),
+(1034, "KMP", "Kompienga"),
+(1034, "KOS", "Kossi"),
+(1034, "KOP", "Koulpulogo"),
+(1034, "KOT", "Kouritenga"),
+(1034, "KOW", "Kourweogo"),
+(1034, "LER", "Leraba"),
+(1034, "LOR", "Loroum"),
+(1034, "MOU", "Mouhoun"),
+(1034, "NAO", "Nahouri"),
+(1034, "NAM", "Namentenga"),
+(1034, "NAY", "Nayala"),
+(1034, "NOU", "Noumbiel"),
+(1034, "OUB", "Oubritenga"),
+(1034, "OUD", "Oudalan"),
+(1034, "PAS", "Passore"),
+(1034, "PON", "Poni"),
+(1034, "SNG", "Sanguie"),
+(1034, "SMT", "Sanmatenga"),
+(1034, "SEN", "Seno"),
+(1034, "SIS", "Siasili"),
+(1034, "SOM", "Soum"),
+(1034, "SOR", "Sourou"),
+(1034, "TAP", "Tapoa"),
+(1034, "TUI", "Tui"),
+(1034, "YAG", "Yagha"),
+(1034, "YAT", "Yatenga"),
+(1034, "ZIR", "Ziro"),
+(1034, "ZON", "Zondoma"),
+(1034, "ZOU", "Zoundweogo"),
+(1033, "01", "Blagoevgrad"),
+(1033, "02", "Burgas"),
+(1033, "08", "Dobrich"),
+(1033, "07", "Gabrovo"),
+(1033, "26", "Haskovo"),
+(1033, "28", "Yambol"),
+(1033, "09", "Kardzhali"),
+(1033, "10", "Kyustendil"),
+(1033, "11", "Lovech"),
+(1033, "12", "Montana"),
+(1033, "13", "Pazardzhik"),
+(1033, "14", "Pernik"),
+(1033, "15", "Pleven"),
+(1033, "16", "Plovdiv"),
+(1033, "17", "Razgrad"),
+(1033, "18", "Ruse"),
+(1033, "19", "Silistra"),
+(1033, "20", "Sliven"),
+(1033, "21", "Smolyan"),
+(1033, "23", "Sofia"),
+(1033, "24", "Stara Zagora"),
+(1033, "27", "Shumen"),
+(1033, "25", "Targovishte"),
+(1033, "03", "Varna"),
+(1033, "04", "Veliko Tarnovo"),
+(1033, "05", "Vidin"),
+(1033, "06", "Vratsa"),
+(1016, "01", "Al Hadd"),
+(1016, "03", "Al Manamah"),
+(1016, "10", "Al Mintaqah al Gharbiyah"),
+(1016, "07", "Al Mintagah al Wusta"),
+(1016, "05", "Al Mintaqah ash Shamaliyah"),
+(1016, "02", "Al Muharraq"),
+(1016, "09", "Ar Rifa"),
+(1016, "04", "Jidd Hafs"),
+(1016, "12", "Madluat Jamad"),
+(1016, "08", "Madluat Isa"),
+(1016, "11", "Mintaqat Juzur tawar"),
+(1016, "06", "Sitrah"),
+(1036, "BB", "Bubanza"),
+(1036, "BJ", "Bujumbura"),
+(1036, "BR", "Bururi"),
+(1036, "CA", "Cankuzo"),
+(1036, "CI", "Cibitoke"),
+(1036, "GI", "Gitega"),
+(1036, "KR", "Karuzi"),
+(1036, "KY", "Kayanza"),
+(1036, "MA", "Makamba"),
+(1036, "MU", "Muramvya"),
+(1036, "MW", "Mwaro"),
+(1036, "NG", "Ngozi"),
+(1036, "RT", "Rutana"),
+(1036, "RY", "Ruyigi"),
+(1022, "AL", "Alibori"),
+(1022, "AK", "Atakora"),
+(1022, "AQ", "Atlantique"),
+(1022, "BO", "Borgou"),
+(1022, "CO", "Collines"),
+(1022, "DO", "Donga"),
+(1022, "KO", "Kouffo"),
+(1022, "LI", "Littoral"),
+(1022, "MO", "Mono"),
+(1022, "OU", "Oueme"),
+(1022, "PL", "Plateau"),
+(1022, "ZO", "Zou"),
+(1032, "BE", "Belait"),
+(1032, "BM", "Brunei-Muara"),
+(1032, "TE", "Temburong"),
+(1032, "TU", "Tutong"),
+(1025, "C", "Cochabamba"),
+(1025, "H", "Chuquisaca"),
+(1025, "B", "El Beni"),
+(1025, "L", "La Paz"),
+(1025, "O", "Oruro"),
+(1025, "N", "Pando"),
+(1025, "P", "Potosi"),
+(1025, "T", "Tarija"),
+(1029, "AC", "Acre"),
+(1029, "AL", "Alagoas"),
+(1029, "AM", "Amazonas"),
+(1029, "AP", "Amapa"),
+(1029, "BA", "Bahia"),
+(1029, "CE", "Ceara"),
+(1029, "DF", "Distrito Federal"),
+(1029, "ES", "Espirito Santo"),
+(1029, "GO", "Goias"),
+(1029, "MA", "Maranhao"),
+(1029, "MG", "Minas Gerais"),
+(1029, "MS", "Mato Grosso do Sul"),
+(1029, "MT", "Mato Grosso"),
+(1029, "PA", "Para"),
+(1029, "PB", "Paraiba"),
+(1029, "PE", "Pernambuco"),
+(1029, "PI", "Piaui"),
+(1029, "PR", "Parana"),
+(1029, "RJ", "Rio de Janeiro"),
+(1029, "RN", "Rio Grande do Norte"),
+(1029, "RO", "Rondonia"),
+(1029, "RR", "Roraima"),
+(1029, "RS", "Rio Grande do Sul"),
+(1029, "SC", "Santa Catarina"),
+(1029, "SE", "Sergipe"),
+(1029, "SP", "Sao Paulo"),
+(1029, "TO", "Tocantins"),
+(1212, "AC", "Acklins and Crooked Islands"),
+(1212, "BI", "Bimini"),
+(1212, "CI", "Cat Island"),
+(1212, "EX", "Exuma"),
+(1212, "IN", "Inagua"),
+(1212, "LI", "Long Island"),
+(1212, "MG", "Mayaguana"),
+(1212, "NP", "New Providence"),
+(1212, "RI", "Ragged Island"),
+(1212, "AB", "Abaco Islands"),
+(1212, "AN", "Andros Island"),
+(1212, "BR", "Berry Islands"),
+(1212, "EL", "Eleuthera"),
+(1212, "GB", "Grand Bahama"),
+(1212, "RC", "Rum Cay"),
+(1212, "SS", "San Salvador Island"),
+(1024, "33", "Bumthang"),
+(1024, "12", "Chhukha"),
+(1024, "22", "Dagana"),
+(1024, "GA", "Gasa"),
+(1024, "13", "Ha"),
+(1024, "44", "Lhuentse"),
+(1024, "42", "Monggar"),
+(1024, "11", "Paro"),
+(1024, "43", "Pemagatshel"),
+(1024, "23", "Punakha"),
+(1024, "45", "Samdrup Jongkha"),
+(1024, "14", "Samtee"),
+(1024, "31", "Sarpang"),
+(1024, "15", "Thimphu"),
+(1024, "41", "Trashigang"),
+(1024, "TY", "Trashi Yangtse"),
+(1024, "32", "Trongsa"),
+(1024, "21", "Tsirang"),
+(1024, "24", "Wangdue Phodrang"),
+(1024, "34", "Zhemgang"),
+(1027, "CE", "Central"),
+(1027, "GH", "Ghanzi"),
+(1027, "KG", "Kgalagadi"),
+(1027, "KL", "Kgatleng"),
+(1027, "KW", "Kweneng"),
+(1027, "NG", "Ngamiland"),
+(1027, "NE", "North-East"),
+(1027, "NW", "North-West"),
+(1027, "SE", "South-East"),
+(1027, "SO", "Southern"),
+(1019, "BR", "Brèsckaja voblasc\'"),
+(1019, "HO", "Homel\'skaja voblasc\'"),
+(1019, "HR", "Hrodzenskaja voblasc\'"),
+(1019, "MA", "Mahilëuskaja voblasc\'"),
+(1019, "MI", "Minskaja voblasc\'"),
+(1019, "VI", "Vicebskaja voblasc\'"),
+(1021, "BZ", "Belize"),
+(1021, "CY", "Cayo"),
+(1021, "CZL", "Corozal"),
+(1021, "OW", "Orange Walk"),
+(1021, "SC", "Stann Creek"),
+(1021, "TOL", "Toledo"),
+(1050, "KN", "Kinshasa"),
+(1050, "EQ", "Equateur"),
+(1050, "KE", "Kasai-Oriental"),
+(1050, "MA", "Maniema"),
+(1050, "NK", "Nord-Kivu"),
+(1050, "SK", "Sud-Kivu"),
+(1042, "BGF", "Bangui"),
+(1042, "BB", "Bamingui-Bangoran"),
+(1042, "BK", "Basse-Kotto"),
+(1042, "HK", "Haute-Kotto"),
+(1042, "HM", "Haut-Mbomou"),
+(1042, "KG", "Kemo"),
+(1042, "LB", "Lobaye"),
+(1042, "HS", "Mambere-Kadei"),
+(1042, "MB", "Mbomou"),
+(1042, "KB", "Nana-Grebizi"),
+(1042, "NM", "Nana-Mambere"),
+(1042, "MP", "Ombella-Mpoko"),
+(1042, "UK", "Ouaka"),
+(1042, "AC", "Ouham"),
+(1042, "OP", "Ouham-Pende"),
+(1042, "SE", "Sangha-Mbaere"),
+(1042, "VR", "Vakaga"),
+(1050, "01", "Kongo central"),
+(1050, "02", "Kwango"),
+(1050, "03", "Kwilu"),
+(1050, "04", "Mai-Ndombe"),
+(1050, "05", "Kasai"),
+(1050, "06", "Lulua"),
+(1050, "07", "Lomami"),
+(1050, "08", "Sankuru"),
+(1050, "09", "Ituri"),
+(1050, "10", "Haut-Uele"),
+(1050, "11", "Tshopo"),
+(1050, "12", "Bas-Uele"),
+(1050, "13", "Nord-Ubangi"),
+(1050, "14", "Mongala"),
+(1050, "15", "Sud-Ubangi"),
+(1050, "16", "Tshuapa"),
+(1050, "17", "Haut-Lomami"),
+(1050, "18", "Lualaba"),
+(1050, "19", "Haut-Katanga"),
+(1050, "20", "Tanganyika"),
+(1051, "BZV", "Brazzaville"),
+(1051, "11", "Bouenza"),
+(1051, "8", "Cuvette"),
+(1051, "15", "Cuvette-Ouest"),
+(1051, "5", "Kouilou"),
+(1051, "2", "Lekoumou"),
+(1051, "7", "Likouala"),
+(1051, "9", "Niari"),
+(1051, "14", "Plateaux"),
+(1051, "12", "Pool"),
+(1051, "13", "Sangha"),
+(1080, "01", "Estuaire"),
+(1080, "02", "Haut-Ogooué"),
+(1080, "03", "Moyen-Ogooué"),
+(1080, "04", "Ngounié"),
+(1080, "05", "Nyanga"),
+(1080, "06", "Ogooué-Ivindo"),
+(1080, "07", "Ogooué-Lolo"),
+(1080, "08", "Ogooué-Maritime"),
+(1080, "09", "Woleu-Ntem"),
+(1205, "AG", "Aargau"),
+(1205, "AI", "Appenzell Innerrhoden"),
+(1205, "AR", "Appenzell Ausserrhoden"),
+(1205, "BE", "Bern"),
+(1205, "BL", "Basel-Landschaft"),
+(1205, "BS", "Basel-Stadt"),
+(1205, "FR", "Fribourg"),
+(1205, "GE", "Geneva"),
+(1205, "GL", "Glarus"),
+(1205, "GR", "Graubunden"),
+(1205, "JU", "Jura"),
+(1205, "LU", "Luzern"),
+(1205, "NE", "Neuchatel"),
+(1205, "NW", "Nidwalden"),
+(1205, "OW", "Obwalden"),
+(1205, "SG", "Sankt Gallen"),
+(1205, "SH", "Schaffhausen"),
+(1205, "SO", "Solothurn"),
+(1205, "SZ", "Schwyz"),
+(1205, "TG", "Thurgau"),
+(1205, "TI", "Ticino"),
+(1205, "UR", "Uri"),
+(1205, "VD", "Vaud"),
+(1205, "VS", "Valais"),
+(1205, "ZG", "Zug"),
+(1205, "ZH", "Zurich"),
+(1054, "06", "18 Montagnes"),
+(1054, "16", "Agnebi"),
+(1054, "09", "Bas-Sassandra"),
+(1054, "10", "Denguele"),
+(1054, "02", "Haut-Sassandra"),
+(1054, "07", "Lacs"),
+(1054, "01", "Lagunes"),
+(1054, "12", "Marahoue"),
+(1054, "05", "Moyen-Comoe"),
+(1054, "11", "Nzi-Comoe"),
+(1054, "03", "Savanes"),
+(1054, "15", "Sud-Bandama"),
+(1054, "13", "Sud-Comoe"),
+(1054, "04", "Vallee du Bandama"),
+(1054, "14", "Worodouqou"),
+(1054, "08", "Zanzan"),
+(1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
+(1044, "AN", "Antofagasta"),
+(1044, "AR", "Araucania"),
+(1044, "AT", "Atacama"),
+(1044, "BI", "Bio-Bio"),
+(1044, "CO", "Coquimbo"),
+(1044, "LI", "Libertador General Bernardo O\'Higgins"),
+(1044, "LL", "Los Lagos"),
+(1044, "MA", "Magallanes"),
+(1044, "ML", "Maule"),
+(1044, "SM", "Santiago Metropolitan"),
+(1044, "TA", "Tarapaca"),
+(1044, "VS", "Valparaiso"),
+(1044, "LR", "Los Rios"),
+(1044, "AP", "Arica y Parinacota"),
+(1038, "AD", "Adamaoua"),
+(1038, "CE", "Centre"),
+(1038, "ES", "East"),
+(1038, "EN", "Far North"),
+(1038, "NO", "North"),
+(1038, "SW", "South"),
+(1038, "SW", "South-West"),
+(1038, "OU", "West"),
+(1038, "LT", "Littoral"),
+(1038, "NW", "Nord-Ouest"),
+(1045, "11", "Beijing"),
+(1045, "50", "Chongqing"),
+(1045, "31", "Shanghai"),
+(1045, "12", "Tianjin"),
+(1045, "34", "Anhui"),
+(1045, "35", "Fujian"),
+(1045, "62", "Gansu"),
+(1045, "44", "Guangdong"),
+(1045, "52", "Guizhou"),
+(1045, "46", "Hainan"),
+(1045, "13", "Hebei"),
+(1045, "23", "Heilongjiang"),
+(1045, "41", "Henan"),
+(1045, "42", "Hubei"),
+(1045, "43", "Hunan"),
+(1045, "32", "Jiangsu"),
+(1045, "36", "Jiangxi"),
+(1045, "22", "Jilin"),
+(1045, "21", "Liaoning"),
+(1045, "63", "Qinghai"),
+(1045, "61", "Shaanxi"),
+(1045, "37", "Shandong"),
+(1045, "14", "Shanxi"),
+(1045, "51", "Sichuan"),
+(1045, "71", "Taiwan"),
+(1045, "53", "Yunnan"),
+(1045, "33", "Zhejiang"),
+(1045, "45", "Guangxi"),
+(1045, "15", "Neia Mongol (mn)"),
+(1045, "65", "Xinjiang"),
+(1045, "54", "Xizang"),
+(1045, "91", "Hong Kong"),
+(1045, "92", "Macau"),
+(1045, "YN", "Yinchuan"),
+(1045, "SZ", "Shizuishan"),
+(1045, "WZ", "Wuzhong"),
+(1045, "GY", "Guyuan"),
+(1045, "ZW", "Zhongwei"),
+(1048, "DC", "Distrito Capital de Bogotá"),
+(1048, "AMA", "Amazonea"),
+(1048, "ANT", "Antioquia"),
+(1048, "ARA", "Arauca"),
+(1048, "ATL", "Atlántico"),
+(1048, "BOL", "Bolívar"),
+(1048, "BOY", "Boyacá"),
+(1048, "CAL", "Caldea"),
+(1048, "CAQ", "Caquetá"),
+(1048, "CAS", "Casanare"),
+(1048, "CAU", "Cauca"),
+(1048, "CES", "Cesar"),
+(1048, "COR", "Córdoba"),
+(1048, "CUN", "Cundinamarca"),
+(1048, "CHO", "Chocó"),
+(1048, "GUA", "Guainía"),
+(1048, "GUV", "Guaviare"),
+(1048, "LAG", "La Guajira"),
+(1048, "MAG", "Magdalena"),
+(1048, "MET", "Meta"),
+(1048, "NAR", "Nariño"),
+(1048, "NSA", "Norte de Santander"),
+(1048, "PUT", "Putumayo"),
+(1048, "QUI", "Quindio"),
+(1048, "RIS", "Risaralda"),
+(1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
+(1048, "SAN", "Santander"),
+(1048, "SUC", "Sucre"),
+(1048, "TOL", "Tolima"),
+(1048, "VAC", "Valle del Cauca"),
+(1048, "VAU", "Vaupés"),
+(1048, "VID", "Vichada"),
+(1048, "HUI", "Huila"),
+(1053, "A", "Alajuela"),
+(1053, "C", "Cartago"),
+(1053, "G", "Guanacaste"),
+(1053, "H", "Heredia"),
+(1053, "L", "Limon"),
+(1053, "P", "Puntarenas"),
+(1053, "SJ", "San Jose"),
+(1056, "09", "Camagey"),
+(1056, "08", "Ciego de `vila"),
+(1056, "06", "Cienfuegos"),
+(1056, "03", "Ciudad de La Habana"),
+(1056, "12", "Granma"),
+(1056, "14", "Guantanamo"),
+(1056, "11", "Holquin"),
+(1056, "02", "La Habana"),
+(1056, "10", "Las Tunas"),
+(1056, "04", "Matanzas"),
+(1056, "01", "Pinar del Rio"),
+(1056, "07", "Sancti Spiritus"),
+(1056, "13", "Santiago de Cuba"),
+(1056, "05", "Villa Clara"),
+(1056, "99", "Isla de la Juventud"),
+(1056, "PR", "Pinar del Roo"),
+(1056, "CA", "Ciego de Avila"),
+(1056, "CG", "Camagoey"),
+(1056, "HO", "Holgun"),
+(1056, "SS", "Sancti Spritus"),
+(1056, "IJ", "Municipio Especial Isla de la Juventud"),
+(1040, "BV", "Boa Vista"),
+(1040, "BR", "Brava"),
+(1040, "CS", "Calheta de Sao Miguel"),
+(1040, "FO", "Fogo"),
+(1040, "MA", "Maio"),
+(1040, "MO", "Mosteiros"),
+(1040, "PA", "Paul"),
+(1040, "PN", "Porto Novo"),
+(1040, "PR", "Praia"),
+(1040, "RG", "Ribeira Grande"),
+(1040, "SL", "Sal"),
+(1040, "SD", "Sao Domingos"),
+(1040, "SF", "Sao Filipe"),
+(1040, "SN", "Sao Nicolau"),
+(1040, "SV", "Sao Vicente"),
+(1040, "TA", "Tarrafal"),
+(1057, "04", "Ammochostos Magusa"),
+(1057, "06", "Keryneia"),
+(1057, "03", "Larnaka"),
+(1057, "01", "Lefkosia"),
+(1057, "02", "Lemesos"),
+(1057, "05", "Pafos"),
+(1058, "JC", "Jihočeský kraj"),
+(1058, "JM", "Jihomoravský kraj"),
+(1058, "KA", "Karlovarský kraj"),
+(1058, "KR", "Královéhradecký kraj"),
+(1058, "LI", "Liberecký kraj"),
+(1058, "MO", "Moravskoslezský kraj"),
+(1058, "OL", "Olomoucký kraj"),
+(1058, "PA", "Pardubický kraj"),
+(1058, "PL", "Plzeňský kraj"),
+(1058, "PR", "Praha, hlavní město"),
+(1058, "ST", "Středočeský kraj"),
+(1058, "US", "Ústecký kraj"),
+(1058, "VY", "Vysočina"),
+(1058, "ZL", "Zlínský kraj"),
+(1081, "AB", "Abkhazia"),
+(1081, "AJ", "Adjara"),
+(1081, "TB", "Tbilisi"),
+(1081, "GU", "Guria"),
+(1081, "IM", "Imereti"),
+(1081, "KA", "Kakheti"),
+(1081, "KK", "Kvemo Kartli"),
+(1081, "MM", "Mtskheta-Mtianeti"),
+(1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
+(1081, "SZ", "Samegrelo-Zemo Svaneti"),
+(1081, "SJ", "Samtskhe-Javakheti"),
+(1081, "SK", "Shida Kartli"),
+(1082, "BW", "Baden-Württemberg"),
+(1082, "BY", "Bayern"),
+(1082, "HB", "Bremen"),
+(1082, "HH", "Hamburg"),
+(1082, "HE", "Hessen"),
+(1082, "NI", "Niedersachsen"),
+(1082, "NW", "Nordrhein-Westfalen"),
+(1082, "RP", "Rheinland-Pfalz"),
+(1082, "SL", "Saarland"),
+(1082, "SH", "Schleswig-Holstein"),
+(1082, "BE", "Berlin"),
+(1082, "BB", "Brandenburg"),
+(1082, "MV", "Mecklenburg-Vorpommern"),
+(1082, "SN", "Sachsen"),
+(1082, "ST", "Sachsen-Anhalt"),
+(1082, "TH", "Thüringen"),
+(1060, "AS", "Ali Sabiah"),
+(1060, "DI", "Dikhil"),
+(1060, "DJ", "Djibouti"),
+(1060, "OB", "Obock"),
+(1060, "TA", "Tadjoura"),
+(1059, "147", "Frederiksberg"),
+(1059, "101", "Copenhagen City"),
+(1059, "015", "Copenhagen"),
+(1059, "020", "Frederiksborg"),
+(1059, "025", "Roskilde"),
+(1059, "030", "Vestsjælland"),
+(1059, "035", "Storstrøm"),
+(1059, "040", "Bornholm"),
+(1059, "042", "Fyn"),
+(1059, "050", "South Jutland"),
+(1059, "055", "Ribe"),
+(1059, "060", "Vejle"),
+(1059, "065", "Ringkjøbing"),
+(1059, "070", "Ã…rhus"),
+(1059, "076", "Viborg"),
+(1059, "080", "North Jutland"),
+(1062, "01", "Distrito Nacional (Santo Domingo)"),
+(1062, "02", "Azua"),
+(1062, "03", "Bahoruco"),
+(1062, "04", "Barahona"),
+(1062, "05", "Dajabón"),
+(1062, "06", "Duarte"),
+(1062, "08", "El Seybo [El Seibo]"),
+(1062, "09", "Espaillat"),
+(1062, "30", "Hato Mayor"),
+(1062, "10", "Independencia"),
+(1062, "11", "La Altagracia"),
+(1062, "07", "La Estrelleta [Elias Pina]"),
+(1062, "12", "La Romana"),
+(1062, "13", "La Vega"),
+(1062, "14", "Maroia Trinidad Sánchez"),
+(1062, "28", "Monseñor Nouel"),
+(1062, "15", "Monte Cristi"),
+(1062, "29", "Monte Plata"),
+(1062, "16", "Pedernales"),
+(1062, "17", "Peravia"),
+(1062, "18", "Puerto Plata"),
+(1062, "19", "Salcedo"),
+(1062, "20", "Samaná"),
+(1062, "21", "San Cristóbal"),
+(1062, "23", "San Pedro de Macorís"),
+(1062, "24", "Sánchez Ramírez"),
+(1062, "25", "Santiago"),
+(1062, "26", "Santiago Rodríguez"),
+(1062, "27", "Valverde"),
+(1003, "01", "Adrar"),
+(1003, "44", "Ain Defla"),
+(1003, "46", "Ain Tmouchent"),
+(1003, "16", "Alger"),
+(1003, "23", "Annaba"),
+(1003, "05", "Batna"),
+(1003, "08", "Bechar"),
+(1003, "06", "Bejaia"),
+(1003, "07", "Biskra"),
+(1003, "09", "Blida"),
+(1003, "34", "Bordj Bou Arreridj"),
+(1003, "10", "Bouira"),
+(1003, "35", "Boumerdes"),
+(1003, "02", "Chlef"),
+(1003, "25", "Constantine"),
+(1003, "17", "Djelfa"),
+(1003, "32", "El Bayadh"),
+(1003, "39", "El Oued"),
+(1003, "36", "El Tarf"),
+(1003, "47", "Ghardaia"),
+(1003, "24", "Guelma"),
+(1003, "33", "Illizi"),
+(1003, "18", "Jijel"),
+(1003, "40", "Khenchela"),
+(1003, "03", "Laghouat"),
+(1003, "29", "Mascara"),
+(1003, "26", "Medea"),
+(1003, "43", "Mila"),
+(1003, "27", "Mostaganem"),
+(1003, "28", "Msila"),
+(1003, "45", "Naama"),
+(1003, "31", "Oran"),
+(1003, "30", "Ouargla"),
+(1003, "04", "Oum el Bouaghi"),
+(1003, "48", "Relizane"),
+(1003, "20", "Saida"),
+(1003, "19", "Setif"),
+(1003, "22", "Sidi Bel Abbes"),
+(1003, "21", "Skikda"),
+(1003, "41", "Souk Ahras"),
+(1003, "11", "Tamanghasset"),
+(1003, "12", "Tebessa"),
+(1003, "14", "Tiaret"),
+(1003, "37", "Tindouf"),
+(1003, "42", "Tipaza"),
+(1003, "38", "Tissemsilt"),
+(1003, "15", "Tizi Ouzou"),
+(1003, "13", "Tlemcen"),
+(1064, "A", "Azuay"),
+(1064, "B", "Bolivar"),
+(1064, "F", "Canar"),
+(1064, "C", "Carchi"),
+(1064, "X", "Cotopaxi"),
+(1064, "H", "Chimborazo"),
+(1064, "O", "El Oro"),
+(1064, "E", "Esmeraldas"),
+(1064, "W", "Galapagos"),
+(1064, "G", "Guayas"),
+(1064, "I", "Imbabura"),
+(1064, "L", "Loja"),
+(1064, "R", "Los Rios"),
+(1064, "M", "Manabi"),
+(1064, "S", "Morona-Santiago"),
+(1064, "N", "Napo"),
+(1064, "D", "Orellana"),
+(1064, "Y", "Pastaza"),
+(1064, "P", "Pichincha"),
+(1064, "U", "Sucumbios"),
+(1064, "T", "Tungurahua"),
+(1064, "Z", "Zamora-Chinchipe"),
+(1069, "37", "Harjumaa"),
+(1069, "39", "Hiiumaa"),
+(1069, "44", "Ida-Virumaa"),
+(1069, "49", "Jõgevamaa"),
+(1069, "51", "Järvamaa"),
+(1069, "57", "Läänemaa"),
+(1069, "59", "Lääne-Virumaa"),
+(1069, "65", "Põlvamaa"),
+(1069, "67", "Pärnumaa"),
+(1069, "70", "Raplamaa"),
+(1069, "74", "Saaremaa"),
+(1069, "7B", "Tartumaa"),
+(1069, "82", "Valgamaa"),
+(1069, "84", "Viljandimaa"),
+(1069, "86", "Võrumaa"),
+(1065, "DK", "Ad Daqahllyah"),
+(1065, "BA", "Al Bahr al Ahmar"),
+(1065, "BH", "Al Buhayrah"),
+(1065, "FYM", "Al Fayym"),
+(1065, "GH", "Al Gharbiyah"),
+(1065, "ALX", "Al Iskandarlyah"),
+(1065, "IS", "Al Isma illyah"),
+(1065, "GZ", "Al Jizah"),
+(1065, "MNF", "Al Minuflyah"),
+(1065, "MN", "Al Minya"),
+(1065, "C", "Al Qahirah"),
+(1065, "KB", "Al Qalyublyah"),
+(1065, "WAD", "Al Wadi al Jadid"),
+(1065, "SHR", "Ash Sharqiyah"),
+(1065, "SUZ", "As Suways"),
+(1065, "ASN", "Aswan"),
+(1065, "AST", "Asyut"),
+(1065, "BNS", "Bani Suwayf"),
+(1065, "PTS", "Bur Sa\'id"),
+(1065, "DT", "Dumyat"),
+(1065, "JS", "Janub Sina\'"),
+(1065, "KFS", "Kafr ash Shaykh"),
+(1065, "MT", "Matruh"),
+(1065, "KN", "Qina"),
+(1065, "SIN", "Shamal Sina\'"),
+(1065, "SHG", "Suhaj"),
+(1068, "AN", "Anseba"),
+(1068, "DU", "Debub"),
+(1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
+(1068, "GB", "Gash-Barka"),
+(1068, "MA", "Maakel [Maekel]"),
+(1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
+(1198, "VI", "Álava"),
+(1198, "AB", "Albacete"),
+(1198, "A", "Alicante"),
+(1198, "AL", "Almería"),
+(1198, "O", "Asturias"),
+(1198, "AV", "Ávila"),
+(1198, "BA", "Badajoz"),
+(1198, "PM", "Baleares"),
+(1198, "B", "Barcelona"),
+(1198, "BU", "Burgos"),
+(1198, "CC", "Cáceres"),
+(1198, "CA", "Cádiz"),
+(1198, "S", "Cantabria"),
+(1198, "CS", "Castellón"),
+(1198, "CR", "Ciudad Real"),
+(1198, "CU", "Cuenca"),
+(1198, "GE", "Girona [Gerona]"),
+(1198, "GR", "Granada"),
+(1198, "GU", "Guadalajara"),
+(1198, "SS", "Guipúzcoa"),
+(1198, "H", "Huelva"),
+(1198, "HU", "Huesca"),
+(1198, "J", "Jaén"),
+(1198, "C", "La Coruña"),
+(1198, "LO", "La Rioja"),
+(1198, "GC", "Las Palmas"),
+(1198, "LE", "León"),
+(1198, "L", "Lleida [Lérida]"),
+(1198, "LU", "Lugo"),
+(1198, "M", "Madrid"),
+(1198, "MA", "Málaga"),
+(1198, "MU", "Murcia"),
+(1198, "NA", "Navarra"),
+(1198, "OR", "Ourense"),
+(1198, "P", "Palencia"),
+(1198, "PO", "Pontevedra"),
+(1198, "SA", "Salamanca"),
+(1198, "TF", "Santa Cruz de Tenerife"),
+(1198, "SG", "Segovia"),
+(1198, "SE", "Sevilla"),
+(1198, "SO", "Soria"),
+(1198, "T", "Tarragona"),
+(1198, "TE", "Teruel"),
+(1198, "V", "Valencia"),
+(1198, "VA", "Valladolid"),
+(1198, "BI", "Vizcaya"),
+(1198, "ZA", "Zamora"),
+(1198, "Z", "Zaragoza"),
+(1198, "CE", "Ceuta"),
+(1198, "ML", "Melilla"),
+(1198, "TO", "Toledo"),
+(1198, "CO", "Córdoba"),
+(1070, "AA", "Addis Ababa"),
+(1070, "DD", "Dire Dawa"),
+(1070, "AF", "Afar"),
+(1070, "AM", "Amara"),
+(1070, "BE", "Benshangul-Gumaz"),
+(1070, "GA", "Gambela Peoples"),
+(1070, "HA", "Harari People"),
+(1070, "OR", "Oromia"),
+(1070, "SO", "Somali"),
+(1070, "SN", "Southern Nations, Nationalities and Peoples"),
+(1070, "TI", "Tigrai"),
 -- (2484, 1075, "AL", "Ahvenanmasn laani"),
 -- (2485, 1075, "ES", "Etela-Suomen laani"),
 -- (2486, 1075, "IS", "Ita-Suomen lasni"),
 -- (2487, 1075, "LL", "Lapin Laani"),
 -- (2488, 1075, "LS", "Lansi-Suomen Laani"),
 -- (2489, 1075, "OL", "Oulun Lasni"),
-(2490, 1074, "E", "Eastern"),
-(2491, 1074, "N", "Northern"),
-(2492, 1074, "W", "Western"),
-(2493, 1074, "R", "Rotuma"),
-(2494, 1141, "TRK", "Chuuk"),
-(2495, 1141, "KSA", "Kosrae"),
-(2496, 1141, "PNI", "Pohnpei"),
-(2497, 1141, "YAP", "Yap"),
-(2498, 1076, "01", "Ain"),
-(2499, 1076, "02", "Aisne"),
-(2500, 1076, "03", "Allier"),
-(2501, 1076, "04", "Alpes-de-Haute-Provence"),
-(2502, 1076, "06", "Alpes-Maritimes"),
-(2503, 1076, "07", "Ardèche"),
-(2504, 1076, "08", "Ardennes"),
-(2505, 1076, "09", "Ariège"),
-(2506, 1076, "10", "Aube"),
-(2507, 1076, "11", "Aude"),
-(2508, 1076, "12", "Aveyron"),
-(2509, 1076, "67", "Bas-Rhin"),
-(2510, 1076, "13", "Bouches-du-Rhône"),
-(2511, 1076, "14", "Calvados"),
-(2512, 1076, "15", "Cantal"),
-(2513, 1076, "16", "Charente"),
-(2514, 1076, "17", "Charente-Maritime"),
-(2515, 1076, "18", "Cher"),
-(2516, 1076, "19", "Corrèze"),
-(2517, 1076, "20A", "Corse-du-Sud"),
-(2518, 1076, "21", "Côte-d\'Or"),
-(2519, 1076, "22", "Côtes-d\'Armor"),
-(2520, 1076, "23", "Creuse"),
-(2521, 1076, "79", "Deux-Sèvres"),
-(2522, 1076, "24", "Dordogne"),
-(2523, 1076, "25", "Doubs"),
-(2524, 1076, "26", "Drôme"),
-(2525, 1076, "91", "Essonne"),
-(2526, 1076, "27", "Eure"),
-(2527, 1076, "28", "Eure-et-Loir"),
-(2528, 1076, "29", "Finistère"),
-(2529, 1076, "30", "Gard"),
-(2530, 1076, "32", "Gers"),
-(2531, 1076, "33", "Gironde"),
-(2532, 1076, "68", "Haut-Rhin"),
-(2533, 1076, "20B", "Haute-Corse"),
-(2534, 1076, "31", "Haute-Garonne"),
-(2535, 1076, "43", "Haute-Loire"),
-(2536, 1076, "70", "Haute-Saône"),
-(2537, 1076, "74", "Haute-Savoie"),
-(2538, 1076, "87", "Haute-Vienne"),
-(2539, 1076, "05", "Hautes-Alpes"),
-(2540, 1076, "65", "Hautes-Pyrénées"),
-(2541, 1076, "92", "Hauts-de-Seine"),
-(2542, 1076, "34", "Hérault"),
-(2543, 1076, "36", "Indre"),
-(2544, 1076, "35", "Ille-et-Vilaine"),
-(2545, 1076, "37", "Indre-et-Loire"),
-(2546, 1076, "38", "Isère"),
-(2547, 1076, "40", "Landes"),
-(2548, 1076, "41", "Loir-et-Cher"),
-(2549, 1076, "42", "Loire"),
-(2550, 1076, "44", "Loire-Atlantique"),
-(2551, 1076, "45", "Loiret"),
-(2552, 1076, "46", "Lot"),
-(2553, 1076, "47", "Lot-et-Garonne"),
-(2554, 1076, "48", "Lozère"),
-(2555, 1076, "49", "Maine-et-Loire"),
-(2556, 1076, "50", "Manche"),
-(2557, 1076, "51", "Marne"),
-(2558, 1076, "53", "Mayenne"),
-(2559, 1076, "54", "Meurthe-et-Moselle"),
-(2560, 1076, "55", "Meuse"),
-(2561, 1076, "56", "Morbihan"),
-(2562, 1076, "57", "Moselle"),
-(2563, 1076, "58", "Nièvre"),
-(2564, 1076, "59", "Nord"),
-(2565, 1076, "60", "Oise"),
-(2566, 1076, "61", "Orne"),
-(2567, 1076, "75", "Paris"),
-(2568, 1076, "62", "Pas-de-Calais"),
-(2569, 1076, "63", "Puy-de-Dôme"),
-(2570, 1076, "64", "Pyrénées-Atlantiques"),
-(2571, 1076, "66", "Pyrénées-Orientales"),
-(2572, 1076, "69", "Rhône"),
-(2573, 1076, "71", "Saône-et-Loire"),
-(2574, 1076, "72", "Sarthe"),
-(2575, 1076, "73", "Savoie"),
-(2576, 1076, "77", "Seine-et-Marne"),
-(2577, 1076, "76", "Seine-Maritime"),
-(2578, 1076, "93", "Seine-Saint-Denis"),
-(2579, 1076, "80", "Somme"),
-(2580, 1076, "81", "Tarn"),
-(2581, 1076, "82", "Tarn-et-Garonne"),
-(2582, 1076, "95", "Val d\'Oise"),
-(2583, 1076, "90", "Territoire de Belfort"),
-(2584, 1076, "94", "Val-de-Marne"),
-(2585, 1076, "83", "Var"),
-(2586, 1076, "84", "Vaucluse"),
-(2587, 1076, "85", "Vendée"),
-(2588, 1076, "86", "Vienne"),
-(2589, 1076, "88", "Vosges"),
-(2590, 1076, "89", "Yonne"),
-(2591, 1076, "78", "Yvelines"),
-(2592, 1226, "ABE", "Aberdeen City"),
-(2593, 1226, "ABD", "Aberdeenshire"),
-(2594, 1226, "ANS", "Angus"),
-(2595, 1226, "ANT", "Co Antrim"),
-(2597, 1226, "AGB", "Argyll and Bute"),
-(2598, 1226, "ARM", "Co Armagh"),
-(2606, 1226, "BDF", "Bedfordshire"),
-(2612, 1226, "BGW", "Blaenau Gwent"),
-(2620, 1226, "BST", "Bristol, City of"),
-(2622, 1226, "BKM", "Buckinghamshire"),
-(2626, 1226, "CAM", "Cambridgeshire"),
-(2634, 1226, "CHS", "Cheshire"),
-(2635, 1226, "CLK", "Clackmannanshire"),
-(2639, 1226, "CON", "Cornwall"),
-(2643, 1226, "CMA", "Cumbria"),
-(2647, 1226, "DBY", "Derbyshire"),
-(2648, 1226, "DRY", "Co Londonderry"),
-(2649, 1226, "DEV", "Devon"),
-(2651, 1226, "DOR", "Dorset"),
-(2652, 1226, "DOW", "Co Down"),
-(2654, 1226, "DGY", "Dumfries and Galloway"),
-(2655, 1226, "DND", "Dundee City"),
-(2657, 1226, "DUR", "County Durham"),
-(2659, 1226, "EAY", "East Ayrshire"),
-(2660, 1226, "EDU", "East Dunbartonshire"),
-(2661, 1226, "ELN", "East Lothian"),
-(2662, 1226, "ERW", "East Renfrewshire"),
-(2663, 1226, "ERY", "East Riding of Yorkshire"),
-(2664, 1226, "ESX", "East Sussex"),
-(2665, 1226, "EDH", "Edinburgh, City of"),
-(2666, 1226, "ELS", "Na h-Eileanan Siar"),
-(2668, 1226, "ESS", "Essex"),
-(2669, 1226, "FAL", "Falkirk"),
-(2670, 1226, "FER", "Co Fermanagh"),
-(2671, 1226, "FIF", "Fife"),
-(2674, 1226, "GLG", "Glasgow City"),
-(2675, 1226, "GLS", "Gloucestershire"),
-(2678, 1226, "GWN", "Gwynedd"),
-(2682, 1226, "HAM", "Hampshire"),
-(2687, 1226, "HEF", "Herefordshire"),
-(2688, 1226, "HRT", "Hertfordshire"),
-(2689, 1226, "HED", "Highland"),
-(2692, 1226, "IVC", "Inverclyde"),
-(2694, 1226, "IOW", "Isle of Wight"),
-(2699, 1226, "KEN", "Kent"),
-(2705, 1226, "LAN", "Lancashire"),
-(2709, 1226, "LEC", "Leicestershire"),
-(2712, 1226, "LIN", "Lincolnshire"),
-(2723, 1226, "MLN", "Midlothian"),
-(2726, 1226, "MRY", "Moray"),
-(2734, 1226, "NFK", "Norfolk"),
-(2735, 1226, "NAY", "North Ayrshire"),
-(2738, 1226, "NLK", "North Lanarkshire"),
-(2742, 1226, "NYK", "North Yorkshire"),
-(2743, 1226, "NTH", "Northamptonshire"),
-(2744, 1226, "NBL", "Northumberland"),
-(2746, 1226, "NTT", "Nottinghamshire"),
-(2747, 1226, "OLD", "Oldham"),
-(2748, 1226, "OMH", "Omagh"),
-(2749, 1226, "ORR", "Orkney Islands"),
-(2750, 1226, "OXF", "Oxfordshire"),
-(2752, 1226, "PKN", "Perth and Kinross"),
-(2757, 1226, "POW", "Powys"),
-(2761, 1226, "RFW", "Renfrewshire"),
-(2766, 1226, "RUT", "Rutland"),
-(2770, 1226, "SCB", "Scottish Borders"),
-(2773, 1226, "ZET", "Shetland Islands"),
-(2774, 1226, "SHR", "Shropshire"),
-(2777, 1226, "SOM", "Somerset"),
-(2778, 1226, "SAY", "South Ayrshire"),
-(2779, 1226, "SGC", "South Gloucestershire"),
-(2780, 1226, "SLK", "South Lanarkshire"),
-(2785, 1226, "STS", "Staffordshire"),
-(2786, 1226, "STG", "Stirling"),
-(2791, 1226, "SFK", "Suffolk"),
-(2793, 1226, "SRY", "Surrey"),
-(2804, 1226, "VGL", "Vale of Glamorgan, The"),
-(2811, 1226, "WAR", "Warwickshire"),
-(2813, 1226, "WDU", "West Dunbartonshire"),
-(2814, 1226, "WLN", "West Lothian"),
-(2815, 1226, "WSX", "West Sussex"),
-(2818, 1226, "WIL", "Wiltshire"),
-(2823, 1226, "WOR", "Worcestershire"),
-(2826, 1083, "AH", "Ashanti"),
-(2827, 1083, "BA", "Brong-Ahafo"),
-(2828, 1083, "AA", "Greater Accra"),
-(2829, 1083, "UE", "Upper East"),
-(2830, 1083, "UW", "Upper West"),
-(2831, 1083, "TV", "Volta"),
-(2832, 1213, "B", "Banjul"),
-(2833, 1213, "L", "Lower River"),
-(2834, 1213, "M", "MacCarthy Island"),
-(2835, 1213, "N", "North Bank"),
-(2836, 1213, "U", "Upper River"),
-(2837, 1091, "BE", "Beyla"),
-(2838, 1091, "BF", "Boffa"),
-(2839, 1091, "BK", "Boke"),
-(2840, 1091, "CO", "Coyah"),
-(2841, 1091, "DB", "Dabola"),
-(2842, 1091, "DL", "Dalaba"),
-(2843, 1091, "DI", "Dinguiraye"),
-(2844, 1091, "DU", "Dubreka"),
-(2845, 1091, "FA", "Faranah"),
-(2846, 1091, "FO", "Forecariah"),
-(2847, 1091, "FR", "Fria"),
-(2848, 1091, "GA", "Gaoual"),
-(2849, 1091, "GU", "Guekedou"),
-(2850, 1091, "KA", "Kankan"),
-(2851, 1091, "KE", "Kerouane"),
-(2852, 1091, "KD", "Kindia"),
-(2853, 1091, "KS", "Kissidougou"),
-(2854, 1091, "KB", "Koubia"),
-(2855, 1091, "KN", "Koundara"),
-(2856, 1091, "KO", "Kouroussa"),
-(2857, 1091, "LA", "Labe"),
-(2858, 1091, "LE", "Lelouma"),
-(2859, 1091, "LO", "Lola"),
-(2860, 1091, "MC", "Macenta"),
-(2861, 1091, "ML", "Mali"),
-(2862, 1091, "MM", "Mamou"),
-(2863, 1091, "MD", "Mandiana"),
-(2864, 1091, "NZ", "Nzerekore"),
-(2865, 1091, "PI", "Pita"),
-(2866, 1091, "SI", "Siguiri"),
-(2867, 1091, "TE", "Telimele"),
-(2868, 1091, "TO", "Tougue"),
-(2869, 1091, "YO", "Yomou"),
-(2870, 1067, "C", "Region Continental"),
-(2871, 1067, "I", "Region Insular"),
-(2872, 1067, "AN", "Annobon"),
-(2873, 1067, "BN", "Bioko Norte"),
-(2874, 1067, "BS", "Bioko Sur"),
-(2875, 1067, "CS", "Centro Sur"),
-(2876, 1067, "KN", "Kie-Ntem"),
-(2877, 1067, "LI", "Litoral"),
-(2878, 1067, "WN", "Wele-Nzas"),
-(2879, 1085, "13", "Achaïa"),
-(2880, 1085, "01", "Aitolia-Akarnania"),
-(2881, 1085, "11", "Argolis"),
-(2882, 1085, "12", "Arkadia"),
-(2883, 1085, "31", "Arta"),
-(2884, 1085, "A1", "Attiki"),
-(2885, 1085, "64", "Chalkidiki"),
-(2886, 1085, "94", "Chania"),
-(2887, 1085, "85", "Chios"),
-(2888, 1085, "81", "Dodekanisos"),
-(2889, 1085, "52", "Drama"),
-(2890, 1085, "71", "Evros"),
-(2891, 1085, "05", "Evrytania"),
-(2892, 1085, "04", "Evvoia"),
-(2893, 1085, "63", "Florina"),
-(2894, 1085, "07", "Fokis"),
-(2895, 1085, "06", "Fthiotis"),
-(2896, 1085, "51", "Grevena"),
-(2897, 1085, "14", "Ileia"),
-(2898, 1085, "53", "Imathia"),
-(2899, 1085, "33", "Ioannina"),
-(2900, 1085, "91", "Irakleion"),
-(2901, 1085, "41", "Karditsa"),
-(2902, 1085, "56", "Kastoria"),
-(2903, 1085, "55", "Kavalla"),
-(2904, 1085, "23", "Kefallinia"),
-(2905, 1085, "22", "Kerkyra"),
-(2906, 1085, "57", "Kilkis"),
-(2907, 1085, "15", "Korinthia"),
-(2908, 1085, "58", "Kozani"),
-(2909, 1085, "82", "Kyklades"),
-(2910, 1085, "16", "Lakonia"),
-(2911, 1085, "42", "Larisa"),
-(2912, 1085, "92", "Lasithion"),
-(2913, 1085, "24", "Lefkas"),
-(2914, 1085, "83", "Lesvos"),
-(2915, 1085, "43", "Magnisia"),
-(2916, 1085, "17", "Messinia"),
-(2917, 1085, "59", "Pella"),
-(2918, 1085, "34", "Preveza"),
-(2919, 1085, "93", "Rethymnon"),
-(2920, 1085, "73", "Rodopi"),
-(2921, 1085, "84", "Samos"),
-(2922, 1085, "62", "Serrai"),
-(2923, 1085, "32", "Thesprotia"),
-(2924, 1085, "54", "Thessaloniki"),
-(2925, 1085, "44", "Trikala"),
-(2926, 1085, "03", "Voiotia"),
-(2927, 1085, "72", "Xanthi"),
-(2928, 1085, "21", "Zakynthos"),
-(2929, 1085, "69", "Agio Oros"),
-(2930, 1090, "AV", "Alta Verapaz"),
-(2931, 1090, "BV", "Baja Verapaz"),
-(2932, 1090, "CM", "Chimaltenango"),
-(2933, 1090, "CQ", "Chiquimula"),
-(2934, 1090, "PR", "El Progreso"),
-(2935, 1090, "ES", "Escuintla"),
-(2936, 1090, "GU", "Guatemala"),
-(2937, 1090, "HU", "Huehuetenango"),
-(2938, 1090, "IZ", "Izabal"),
-(2939, 1090, "JA", "Jalapa"),
-(2940, 1090, "JU", "Jutiapa"),
-(2941, 1090, "PE", "Peten"),
-(2942, 1090, "QZ", "Quetzaltenango"),
-(2943, 1090, "QC", "Quiche"),
-(2944, 1090, "RE", "Retalhuleu"),
-(2945, 1090, "SA", "Sacatepequez"),
-(2946, 1090, "SM", "San Marcos"),
-(2947, 1090, "SR", "Santa Rosa"),
-(2948, 1090, "SO", "Sololá"),
-(2949, 1090, "SU", "Suchitepequez"),
-(2950, 1090, "TO", "Totonicapan"),
-(2951, 1090, "ZA", "Zacapa"),
-(2952, 1092, "BS", "Bissau"),
-(2953, 1092, "BA", "Bafata"),
-(2954, 1092, "BM", "Biombo"),
-(2955, 1092, "BL", "Bolama"),
-(2956, 1092, "CA", "Cacheu"),
-(2957, 1092, "GA", "Gabu"),
-(2958, 1092, "OI", "Oio"),
-(2959, 1092, "QU", "Quloara"),
-(2960, 1092, "TO", "Tombali S"),
-(2961, 1093, "BA", "Barima-Waini"),
-(2962, 1093, "CU", "Cuyuni-Mazaruni"),
-(2963, 1093, "DE", "Demerara-Mahaica"),
-(2964, 1093, "EB", "East Berbice-Corentyne"),
-(2965, 1093, "ES", "Essequibo Islands-West Demerara"),
-(2966, 1093, "MA", "Mahaica-Berbice"),
-(2967, 1093, "PM", "Pomeroon-Supenaam"),
-(2968, 1093, "PT", "Potaro-Siparuni"),
-(2969, 1093, "UD", "Upper Demerara-Berbice"),
-(2970, 1093, "UT", "Upper Takutu-Upper Essequibo"),
-(2971, 1097, "AT", "Atlantida"),
-(2972, 1097, "CL", "Colon"),
-(2973, 1097, "CM", "Comayagua"),
-(2974, 1097, "CP", "Copan"),
-(2975, 1097, "CR", "Cortes"),
-(2976, 1097, "CH", "Choluteca"),
-(2977, 1097, "EP", "El Paraiso"),
-(2978, 1097, "FM", "Francisco Morazan"),
-(2979, 1097, "GD", "Gracias a Dios"),
-(2980, 1097, "IN", "Intibuca"),
-(2981, 1097, "IB", "Islas de la Bahia"),
-(2982, 1097, "LE", "Lempira"),
-(2983, 1097, "OC", "Ocotepeque"),
-(2984, 1097, "OL", "Olancho"),
-(2985, 1097, "SB", "Santa Barbara"),
-(2986, 1097, "VA", "Valle"),
-(2987, 1097, "YO", "Yoro"),
-(2988, 1055, "07", "Bjelovarsko-bilogorska zupanija"),
-(2989, 1055, "12", "Brodsko-posavska zupanija"),
-(2990, 1055, "19", "Dubrovacko-neretvanska zupanija"),
-(2991, 1055, "18", "Istarska zupanija"),
-(2992, 1055, "04", "Karlovacka zupanija"),
-(2993, 1055, "06", "Koprivnickco-krizevacka zupanija"),
-(2994, 1055, "02", "Krapinako-zagorska zupanija"),
-(2995, 1055, "09", "Licko-senjska zupanija"),
-(2996, 1055, "20", "Medimurska zupanija"),
-(2997, 1055, "14", "Osjecko-baranjska zupanija"),
-(2998, 1055, "11", "Pozesko-slavonska zupanija"),
-(2999, 1055, "08", "Primorsko-goranska zupanija"),
-(3000, 1055, "03", "Sisacko-moelavacka Iupanija"),
-(3001, 1055, "17", "Splitako-dalmatinska zupanija"),
-(3002, 1055, "15", "Sibenako-kninska zupanija"),
-(3003, 1055, "05", "Varaidinska zupanija"),
-(3004, 1055, "10", "VirovitiEko-podravska zupanija"),
-(3005, 1055, "16", "VuRovarako-srijemska zupanija"),
-(3006, 1055, "13", "Zadaraka"),
-(3007, 1055, "01", "Zagrebacka zupanija"),
-(3008, 1094, "GA", "Grande-Anse"),
-(3009, 1094, "NE", "Nord-Est"),
-(3010, 1094, "NO", "Nord-Ouest"),
-(3011, 1094, "OU", "Ouest"),
-(3012, 1094, "SD", "Sud"),
-(3013, 1094, "SE", "Sud-Est"),
-(3014, 1099, "BU", "Budapest"),
-(3015, 1099, "BK", "Bács-Kiskun"),
-(3016, 1099, "BA", "Baranya"),
-(3017, 1099, "BE", "Békés"),
-(3018, 1099, "BZ", "Borsod-Abaúj-Zemplén"),
-(3019, 1099, "CS", "Csongrád"),
-(3020, 1099, "FE", "Fejér"),
-(3021, 1099, "GS", "Győr-Moson-Sopron"),
-(3022, 1099, "HB", "Hajdu-Bihar"),
-(3023, 1099, "HE", "Heves"),
-(3024, 1099, "JN", "Jász-Nagykun-Szolnok"),
-(3025, 1099, "KE", "Komárom-Esztergom"),
-(3026, 1099, "NO", "Nográd"),
-(3027, 1099, "PE", "Pest"),
-(3028, 1099, "SO", "Somogy"),
-(3029, 1099, "SZ", "Szabolcs-Szatmár-Bereg"),
-(3030, 1099, "TO", "Tolna"),
-(3031, 1099, "VA", "Vas"),
-(3032, 1099, "VE", "Veszprém"),
-(3033, 1099, "ZA", "Zala"),
-(3034, 1099, "BC", "Békéscsaba"),
-(3035, 1099, "DE", "Debrecen"),
-(3036, 1099, "DU", "Dunaújváros"),
-(3037, 1099, "EG", "Eger"),
-(3038, 1099, "GY", "Győr"),
-(3039, 1099, "HV", "Hódmezővásárhely"),
-(3040, 1099, "KV", "Kaposvár"),
-(3041, 1099, "KM", "Kecskemét"),
-(3042, 1099, "MI", "Miskolc"),
-(3043, 1099, "NK", "Nagykanizsa"),
-(3044, 1099, "NY", "Nyiregyháza"),
-(3045, 1099, "PS", "Pécs"),
-(3046, 1099, "ST", "Salgótarján"),
-(3047, 1099, "SN", "Sopron"),
-(3048, 1099, "SD", "Szeged"),
-(3049, 1099, "SF", "Székesfehérvár"),
-(3050, 1099, "SS", "Szekszárd"),
-(3051, 1099, "SK", "Szolnok"),
-(3052, 1099, "SH", "Szombathely"),
-(3053, 1099, "TB", "Tatabánya"),
-(3054, 1099, "ZE", "Zalaegerszeg"),
-(3055, 1102, "BA", "Bali"),
-(3056, 1102, "BB", "Kepulauan Bangka Belitung"),
-(3057, 1102, "BT", "Banten"),
-(3058, 1102, "BE", "Bengkulu"),
-(3059, 1102, "GO", "Gorontalo"),
-(3060, 1102, "PB", "Papua Barat"),
-(3061, 1102, "JA", "Jambi"),
-(3062, 1102, "JB", "Jawa Barat"),
-(3063, 1102, "JT", "Jawa Tengah"),
-(3064, 1102, "JI", "Jawa Timur"),
-(3065, 1102, "KB", "Kalimantan Barat"),
-(3066, 1102, "KI", "Kalimantan Timur"),
-(3067, 1102, "KS", "Kalimantan Selatan"),
-(3068, 1102, "KR", "Kepulauan Riau"),
-(3069, 1102, "LA", "Lampung"),
-(3070, 1102, "MA", "Maluku"),
-(3071, 1102, "MU", "Maluku Utara"),
-(3072, 1102, "NB", "Nusa Tenggara Barat"),
-(3073, 1102, "NT", "Nusa Tenggara Timur"),
-(3074, 1102, "PA", "Papua"),
-(3075, 1102, "RI", "Riau"),
-(3076, 1102, "SN", "Sulawesi Selatan"),
-(3077, 1102, "ST", "Sulawesi Tengah"),
-(3078, 1102, "SG", "Sulawesi Tenggara"),
-(3079, 1102, "SA", "Sulawesi Utara"),
-(3080, 1102, "SB", "Sumatra Barat"),
-(3081, 1102, "SS", "Sumatra Selatan"),
-(3082, 1102, "SU", "Sumatera Utara"),
-(3083, 1102, "JK", "DKI Jakarta"),
-(3084, 1102, "AC", "Aceh"),
-(3085, 1102, "YO", "DI Yogyakarta"),
-(3086, 1105, "C", "Cork"),
-(3087, 1105, "CE", "Clare"),
-(3088, 1105, "CN", "Cavan"),
-(3089, 1105, "CW", "Carlow"),
-(3090, 1105, "D", "Dublin"),
-(3091, 1105, "DL", "Donegal"),
-(3092, 1105, "G", "Galway"),
-(3093, 1105, "KE", "Kildare"),
-(3094, 1105, "KK", "Kilkenny"),
-(3095, 1105, "KY", "Kerry"),
-(3096, 1105, "LD", "Longford"),
-(3097, 1105, "LH", "Louth"),
-(3098, 1105, "LK", "Limerick"),
-(3099, 1105, "LM", "Leitrim"),
-(3100, 1105, "LS", "Laois"),
-(3101, 1105, "MH", "Meath"),
-(3102, 1105, "MN", "Monaghan"),
-(3103, 1105, "MO", "Mayo"),
-(3104, 1105, "OY", "Offaly"),
-(3105, 1105, "RN", "Roscommon"),
-(3106, 1105, "SO", "Sligo"),
-(3107, 1105, "TA", "Tipperary"),
-(3108, 1105, "WD", "Waterford"),
-(3109, 1105, "WH", "Westmeath"),
-(3110, 1105, "WW", "Wicklow"),
-(3111, 1105, "WX", "Wexford"),
-(3112, 1106, "D", "HaDarom"),
-(3113, 1106, "M", "HaMerkaz"),
-(3114, 1106, "Z", "HaZafon"),
-(3115, 1106, "HA", "Haifa"),
-(3116, 1106, "TA", "Tel-Aviv"),
-(3117, 1106, "JM", "Jerusalem"),
-(3118, 1104, "AN", "Al Anbar"),
-(3119, 1104, "BA", "Al Ba,rah"),
-(3120, 1104, "MU", "Al Muthanna"),
-(3121, 1104, "QA", "Al Qadisiyah"),
-(3122, 1104, "NA", "An Najef"),
-(3123, 1104, "AR", "Arbil"),
-(3124, 1104, "SW", "As Sulaymaniyah"),
-(3125, 1104, "TS", "At Ta\'mim"),
-(3126, 1104, "BB", "Babil"),
-(3127, 1104, "BG", "Baghdad"),
-(3128, 1104, "DA", "Dahuk"),
-(3129, 1104, "DQ", "Dhi Qar"),
-(3130, 1104, "DI", "Diyala"),
-(3131, 1104, "KA", "Karbala\'"),
-(3132, 1104, "MA", "Maysan"),
-(3133, 1104, "NI", "Ninawa"),
-(3134, 1104, "SD", "Salah ad Din"),
-(3135, 1104, "WA", "Wasit"),
-(3136, 1103, "03", "Ardabil"),
-(3137, 1103, "02", "Azarbayjan-e Gharbi"),
-(3138, 1103, "01", "Azarbayjan-e Sharqi"),
-(3139, 1103, "06", "Bushehr"),
-(3140, 1103, "08", "Chahar Mahall va Bakhtiari"),
-(3141, 1103, "04", "Esfahan"),
-(3142, 1103, "14", "Fars"),
-(3143, 1103, "19", "Gilan"),
-(3144, 1103, "27", "Golestan"),
-(3145, 1103, "24", "Hamadan"),
-(3146, 1103, "23", "Hormozgan"),
-(3147, 1103, "05", "Iiam"),
-(3148, 1103, "15", "Kerman"),
-(3149, 1103, "17", "Kermanshah"),
-(3150, 1103, "09", "Khorasan"),
-(3151, 1103, "10", "Khuzestan"),
-(3152, 1103, "18", "Kohjiluyeh va Buyer Ahmad"),
-(3153, 1103, "16", "Kordestan"),
-(3154, 1103, "20", "Lorestan"),
-(3155, 1103, "22", "Markazi"),
-(3156, 1103, "21", "Mazandaran"),
-(3157, 1103, "28", "Qazvin"),
-(3158, 1103, "26", "Qom"),
-(3159, 1103, "12", "Semnan"),
-(3160, 1103, "13", "Sistan va Baluchestan"),
-(3161, 1103, "07", "Tehran"),
-(3162, 1103, "25", "Yazd"),
-(3163, 1103, "11", "Zanjan"),
-(3164, 1100, "7", "Austurland"),
-(3165, 1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
-(3166, 1100, "6", "Norourland eystra"),
-(3167, 1100, "5", "Norourland vestra"),
-(3168, 1100, "0", "Reykjavik"),
-(3169, 1100, "8", "Suourland"),
-(3170, 1100, "2", "Suournes"),
-(3171, 1100, "4", "Vestfirolr"),
-(3172, 1100, "3", "Vesturland"),
-(3173, 1107, "AG", "Agrigento"),
-(3174, 1107, "AL", "Alessandria"),
-(3175, 1107, "AN", "Ancona"),
-(3176, 1107, "AO", "Aosta"),
-(3177, 1107, "AR", "Arezzo"),
-(3178, 1107, "AP", "Ascoli Piceno"),
-(3179, 1107, "AT", "Asti"),
-(3180, 1107, "AV", "Avellino"),
-(3181, 1107, "BA", "Bari"),
-(3182, 1107, "BL", "Belluno"),
-(3183, 1107, "BN", "Benevento"),
-(3184, 1107, "BG", "Bergamo"),
-(3185, 1107, "BI", "Biella"),
-(3186, 1107, "BO", "Bologna"),
-(3187, 1107, "BZ", "Bolzano"),
-(3188, 1107, "BS", "Brescia"),
-(3189, 1107, "BR", "Brindisi"),
-(3190, 1107, "CA", "Cagliari"),
-(3191, 1107, "CL", "Caltanissetta"),
-(3192, 1107, "CB", "Campobasso"),
-(3193, 1107, "CE", "Caserta"),
-(3194, 1107, "CT", "Catania"),
-(3195, 1107, "CZ", "Catanzaro"),
-(3196, 1107, "CH", "Chieti"),
-(3197, 1107, "CO", "Como"),
-(3198, 1107, "CS", "Cosenza"),
-(3199, 1107, "CR", "Cremona"),
-(3200, 1107, "KR", "Crotone"),
-(3201, 1107, "CN", "Cuneo"),
-(3202, 1107, "EN", "Enna"),
-(3203, 1107, "FE", "Ferrara"),
-(3204, 1107, "FI", "Firenze"),
-(3205, 1107, "FG", "Foggia"),
-(3206, 1107, "FC", "Forlì-Cesena"),
-(3207, 1107, "FR", "Frosinone"),
-(3208, 1107, "GE", "Genova"),
-(3209, 1107, "GO", "Gorizia"),
-(3210, 1107, "GR", "Grosseto"),
-(3211, 1107, "IM", "Imperia"),
-(3212, 1107, "IS", "Isernia"),
-(3213, 1107, "AQ", "L\'Aquila"),
-(3214, 1107, "SP", "La Spezia"),
-(3215, 1107, "LT", "Latina"),
-(3216, 1107, "LE", "Lecce"),
-(3217, 1107, "LC", "Lecco"),
-(3218, 1107, "LI", "Livorno"),
-(3219, 1107, "LO", "Lodi"),
-(3220, 1107, "LU", "Lucca"),
-(3221, 1107, "MC", "Macerata"),
-(3222, 1107, "MN", "Mantova"),
-(3223, 1107, "MS", "Massa-Carrara"),
-(3224, 1107, "MT", "Matera"),
-(3225, 1107, "ME", "Messina"),
-(3226, 1107, "MI", "Milano"),
-(3227, 1107, "MO", "Modena"),
-(3228, 1107, "NA", "Napoli"),
-(3229, 1107, "NO", "Novara"),
-(3230, 1107, "NU", "Nuoro"),
-(3231, 1107, "OR", "Oristano"),
-(3232, 1107, "PD", "Padova"),
-(3233, 1107, "PA", "Palermo"),
-(3234, 1107, "PR", "Parma"),
-(3235, 1107, "PV", "Pavia"),
-(3236, 1107, "PG", "Perugia"),
-(3237, 1107, "PU", "Pesaro e Urbino"),
-(3238, 1107, "PE", "Pescara"),
-(3239, 1107, "PC", "Piacenza"),
-(3240, 1107, "PI", "Pisa"),
-(3241, 1107, "PT", "Pistoia"),
-(3242, 1107, "PN", "Pordenone"),
-(3243, 1107, "PZ", "Potenza"),
-(3244, 1107, "PO", "Prato"),
-(3245, 1107, "RG", "Ragusa"),
-(3246, 1107, "RA", "Ravenna"),
-(3247, 1107, "RC", "Reggio Calabria"),
-(3248, 1107, "RE", "Reggio Emilia"),
-(3249, 1107, "RI", "Rieti"),
-(3250, 1107, "RN", "Rimini"),
-(3251, 1107, "RM", "Roma"),
-(3252, 1107, "RO", "Rovigo"),
-(3253, 1107, "SA", "Salerno"),
-(3254, 1107, "SS", "Sassari"),
-(3255, 1107, "SV", "Savona"),
-(3256, 1107, "SI", "Siena"),
-(3257, 1107, "SR", "Siracusa"),
-(3258, 1107, "SO", "Sondrio"),
-(3259, 1107, "TA", "Taranto"),
-(3260, 1107, "TE", "Teramo"),
-(3261, 1107, "TR", "Terni"),
-(3262, 1107, "TO", "Torino"),
-(3263, 1107, "TP", "Trapani"),
-(3264, 1107, "TN", "Trento"),
-(3265, 1107, "TV", "Treviso"),
-(3266, 1107, "TS", "Trieste"),
-(3267, 1107, "UD", "Udine"),
-(3268, 1107, "VA", "Varese"),
-(3269, 1107, "VE", "Venezia"),
-(3270, 1107, "VB", "Verbano-Cusio-Ossola"),
-(3271, 1107, "VC", "Vercelli"),
-(3272, 1107, "VR", "Verona"),
-(3273, 1107, "VV", "Vibo Valentia"),
-(3274, 1107, "VI", "Vicenza"),
-(3275, 1107, "VT", "Viterbo"),
-(3276, 1109, "23", "Aichi"),
-(3277, 1109, "05", "Akita"),
-(3278, 1109, "02", "Aomori"),
-(3279, 1109, "12", "Chiba"),
-(3280, 1109, "38", "Ehime"),
-(3281, 1109, "18", "Fukui"),
-(3282, 1109, "40", "Fukuoka"),
-(3283, 1109, "07", "Fukusima"),
-(3284, 1109, "21", "Gifu"),
-(3285, 1109, "10", "Gunma"),
-(3286, 1109, "34", "Hiroshima"),
-(3287, 1109, "01", "Hokkaido"),
-(3288, 1109, "28", "Hyogo"),
-(3289, 1109, "08", "Ibaraki"),
-(3290, 1109, "17", "Ishikawa"),
-(3291, 1109, "03", "Iwate"),
-(3292, 1109, "37", "Kagawa"),
-(3293, 1109, "46", "Kagoshima"),
-(3294, 1109, "14", "Kanagawa"),
-(3295, 1109, "39", "Kochi"),
-(3296, 1109, "43", "Kumamoto"),
-(3297, 1109, "26", "Kyoto"),
-(3298, 1109, "24", "Mie"),
-(3299, 1109, "04", "Miyagi"),
-(3300, 1109, "45", "Miyazaki"),
-(3301, 1109, "20", "Nagano"),
-(3302, 1109, "42", "Nagasaki"),
-(3303, 1109, "29", "Nara"),
-(3304, 1109, "15", "Niigata"),
-(3305, 1109, "44", "Oita"),
-(3306, 1109, "33", "Okayama"),
-(3307, 1109, "47", "Okinawa"),
-(3308, 1109, "27", "Osaka"),
-(3309, 1109, "41", "Saga"),
-(3310, 1109, "11", "Saitama"),
-(3311, 1109, "25", "Shiga"),
-(3312, 1109, "32", "Shimane"),
-(3313, 1109, "22", "Shizuoka"),
-(3314, 1109, "09", "Tochigi"),
-(3315, 1109, "36", "Tokushima"),
-(3316, 1109, "13", "Tokyo"),
-(3317, 1109, "31", "Tottori"),
-(3318, 1109, "16", "Toyama"),
-(3319, 1109, "30", "Wakayama"),
-(3320, 1109, "06", "Yamagata"),
-(3321, 1109, "35", "Yamaguchi"),
-(3322, 1109, "19", "Yamanashi"),
-(3323, 1108, "CN", "Clarendon"),
-(3324, 1108, "HR", "Hanover"),
-(3325, 1108, "KN", "Kingston"),
-(3326, 1108, "PD", "Portland"),
-(3327, 1108, "AW", "Saint Andrew"),
-(3328, 1108, "AN", "Saint Ann"),
-(3329, 1108, "CE", "Saint Catherine"),
-(3330, 1108, "EH", "Saint Elizabeth"),
-(3331, 1108, "JS", "Saint James"),
-(3332, 1108, "MY", "Saint Mary"),
-(3333, 1108, "TS", "Saint Thomas"),
-(3334, 1108, "TY", "Trelawny"),
-(3335, 1108, "WD", "Westmoreland"),
-(3336, 1110, "AJ", "Ajln"),
-(3337, 1110, "AQ", "Al \'Aqaba"),
-(3338, 1110, "BA", "Al Balqa\'"),
-(3339, 1110, "KA", "Al Karak"),
-(3340, 1110, "MA", "Al Mafraq"),
-(3341, 1110, "AM", "Amman"),
-(3342, 1110, "AT", "At Tafilah"),
-(3343, 1110, "AZ", "Az Zarga"),
-(3344, 1110, "JR", "Irbid"),
-(3345, 1110, "JA", "Jarash"),
-(3346, 1110, "MN", "Ma\'an"),
-(3347, 1110, "MD", "Madaba"),
-
--- CRM-20062 Outdated provinces for Kenya removed .
-
-(3353, 1117, "GB", "Bishkek"),
-(3354, 1117, "B", "Batken"),
-(3355, 1117, "C", "Chu"),
-(3356, 1117, "J", "Jalal-Abad"),
-(3357, 1117, "N", "Naryn"),
-(3358, 1117, "O", "Osh"),
-(3359, 1117, "T", "Talas"),
-(3360, 1117, "Y", "Ysyk-Kol"),
-(3361, 1037, "23", "Krong Kaeb"),
-(3362, 1037, "24", "Krong Pailin"),
-(3363, 1037, "18", "Xrong Preah Sihanouk"),
-(3364, 1037, "12", "Phnom Penh"),
-(3365, 1037, "2", "Baat Dambang"),
-(3366, 1037, "1", "Banteay Mean Chey"),
-(3367, 1037, "3", "Rampong Chaam"),
-(3368, 1037, "4", "Kampong Chhnang"),
-(3369, 1037, "5", "Kampong Spueu"),
-(3370, 1037, "6", "Kampong Thum"),
-(3371, 1037, "7", "Kampot"),
-(3372, 1037, "8", "Kandaal"),
-(3373, 1037, "9", "Kach Kong"),
-(3374, 1037, "10", "Krachoh"),
-(3375, 1037, "11", "Mondol Kiri"),
-(3376, 1037, "22", "Otdar Mean Chey"),
-(3377, 1037, "15", "Pousaat"),
-(3378, 1037, "13", "Preah Vihear"),
-(3379, 1037, "14", "Prey Veaeng"),
-(3380, 1037, "16", "Rotanak Kiri"),
-(3381, 1037, "17", "Siem Reab"),
-(3382, 1037, "19", "Stueng Traeng"),
-(3383, 1037, "20", "Svaay Rieng"),
-(3384, 1037, "21", "Taakaev"),
-(3385, 1113, "G", "Gilbert Islands"),
-(3386, 1113, "L", "Line Islands"),
-(3387, 1113, "P", "Phoenix Islands"),
-(3388, 1049, "A", "Anjouan Ndzouani"),
-(3389, 1049, "G", "Grande Comore Ngazidja"),
-(3390, 1049, "M", "Moheli Moili"),
-(3391, 1114, "KAE", "Kaesong-si"),
-(3392, 1114, "NAM", "Nampo-si"),
-(3393, 1114, "PYO", "Pyongyang-ai"),
-(3394, 1114, "CHA", "Chagang-do"),
-(3395, 1114, "HAB", "Hamgyongbuk-do"),
-(3396, 1114, "HAN", "Hamgyongnam-do"),
-(3397, 1114, "HWB", "Hwanghaebuk-do"),
-(3398, 1114, "HWN", "Hwanghaenam-do"),
-(3399, 1114, "KAN", "Kangwon-do"),
-(3400, 1114, "PYB", "Pyonganbuk-do"),
-(3401, 1114, "PYN", "Pyongannam-do"),
-(3402, 1114, "YAN", "Yanggang-do"),
-(3403, 1114, "NAJ", "Najin Sonbong-si"),
-(3404, 1115, "11", "Seoul Teugbyeolsi"),
-(3405, 1115, "26", "Busan Gwang\'yeogsi"),
-(3406, 1115, "27", "Daegu Gwang\'yeogsi"),
-(3407, 1115, "30", "Daejeon Gwang\'yeogsi"),
-(3408, 1115, "29", "Gwangju Gwang\'yeogsi"),
-(3409, 1115, "28", "Incheon Gwang\'yeogsi"),
-(3410, 1115, "31", "Ulsan Gwang\'yeogsi"),
-(3411, 1115, "43", "Chungcheongbugdo"),
-(3412, 1115, "44", "Chungcheongnamdo"),
-(3413, 1115, "42", "Gang\'weondo"),
-(3414, 1115, "41", "Gyeonggido"),
-(3415, 1115, "47", "Gyeongsangbugdo"),
-(3416, 1115, "48", "Gyeongsangnamdo"),
-(3417, 1115, "49", "Jejudo"),
-(3418, 1115, "45", "Jeonrabugdo"),
-(3419, 1115, "46", "Jeonranamdo"),
-(3420, 1116, "AH", "Al Ahmadi"),
-(3421, 1116, "FA", "Al Farwanlyah"),
-(3422, 1116, "JA", "Al Jahrah"),
-(3423, 1116, "KU", "Al Kuwayt"),
-(3424, 1116, "HA", "Hawalli"),
-(3425, 1111, "ALA", "Almaty"),
-(3426, 1111, "AST", "Astana"),
-(3427, 1111, "ALM", "Almaty oblysy"),
-(3428, 1111, "AKM", "Aqmola oblysy"),
-(3429, 1111, "AKT", "Aqtobe oblysy"),
-(3430, 1111, "ATY", "Atyrau oblyfiy"),
-(3431, 1111, "ZAP", "Batys Quzaqstan oblysy"),
-(3432, 1111, "MAN", "Mangghystau oblysy"),
-(3433, 1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
-(3434, 1111, "PAV", "Pavlodar oblysy"),
-(3435, 1111, "KAR", "Qaraghandy oblysy"),
-(3436, 1111, "KUS", "Qostanay oblysy"),
-(3437, 1111, "KZY", "Qyzylorda oblysy"),
-(3438, 1111, "VOS", "Shyghys Quzaqstan oblysy"),
-(3439, 1111, "SEV", "Soltustik Quzaqstan oblysy"),
-(3440, 1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
-(3441, 1118, "VT", "Vientiane"),
-(3442, 1118, "AT", "Attapu"),
-(3443, 1118, "BK", "Bokeo"),
-(3444, 1118, "BL", "Bolikhamxai"),
-(3445, 1118, "CH", "Champasak"),
-(3446, 1118, "HO", "Houaphan"),
-(3447, 1118, "KH", "Khammouan"),
-(3448, 1118, "LM", "Louang Namtha"),
-(3449, 1118, "LP", "Louangphabang"),
-(3450, 1118, "OU", "Oudomxai"),
-(3451, 1118, "PH", "Phongsali"),
-(3452, 1118, "SL", "Salavan"),
-(3453, 1118, "SV", "Savannakhet"),
-(3454, 1118, "XA", "Xaignabouli"),
-(3455, 1118, "XN", "Xiasomboun"),
-(3456, 1118, "XE", "Xekong"),
-(3457, 1118, "XI", "Xiangkhoang"),
-(3458, 1120, "BA", "Beirut"),
-(3459, 1120, "BI", "Beqaa"),
-(3460, 1120, "JL", "Mount Lebanon"),
-(3461, 1120, "AS", "North Lebanon"),
-(3462, 1120, "JA", "South Lebanon"),
-(3463, 1120, "NA", "Nabatieh"),
-(3464, 1199, "52", "Ampara"),
-(3465, 1199, "71", "Anuradhapura"),
-(3466, 1199, "81", "Badulla"),
-(3467, 1199, "51", "Batticaloa"),
-(3468, 1199, "11", "Colombo"),
-(3469, 1199, "31", "Galle"),
-(3470, 1199, "12", "Gampaha"),
-(3471, 1199, "33", "Hambantota"),
-(3472, 1199, "41", "Jaffna"),
-(3473, 1199, "13", "Kalutara"),
-(3474, 1199, "21", "Kandy"),
-(3475, 1199, "92", "Kegalla"),
-(3476, 1199, "42", "Kilinochchi"),
-(3477, 1199, "61", "Kurunegala"),
-(3478, 1199, "43", "Mannar"),
-(3479, 1199, "22", "Matale"),
-(3480, 1199, "32", "Matara"),
-(3481, 1199, "82", "Monaragala"),
-(3482, 1199, "45", "Mullaittivu"),
-(3483, 1199, "23", "Nuwara Eliya"),
-(3484, 1199, "72", "Polonnaruwa"),
-(3485, 1199, "62", "Puttalum"),
-(3486, 1199, "91", "Ratnapura"),
-(3487, 1199, "53", "Trincomalee"),
-(3488, 1199, "44", "VavunLya"),
-(3489, 1122, "BM", "Bomi"),
-(3490, 1122, "BG", "Bong"),
-(3491, 1122, "GB", "Grand Basaa"),
-(3492, 1122, "CM", "Grand Cape Mount"),
-(3493, 1122, "GG", "Grand Gedeh"),
-(3494, 1122, "GK", "Grand Kru"),
-(3495, 1122, "LO", "Lofa"),
-(3496, 1122, "MG", "Margibi"),
-(3497, 1122, "MY", "Maryland"),
-(3498, 1122, "MO", "Montserrado"),
-(3499, 1122, "NI", "Nimba"),
-(3500, 1122, "RI", "Rivercess"),
-(3501, 1122, "SI", "Sinoe"),
-(3502, 1121, "D", "Berea"),
-(3503, 1121, "B", "Butha-Buthe"),
-(3504, 1121, "C", "Leribe"),
-(3505, 1121, "E", "Mafeteng"),
-(3506, 1121, "A", "Maseru"),
-(3507, 1121, "F", "Mohale\'s Hoek"),
-(3508, 1121, "J", "Mokhotlong"),
-(3509, 1121, "H", "Qacha\'s Nek"),
-(3510, 1121, "G", "Quthing"),
-(3511, 1121, "K", "Thaba-Tseka"),
-(3512, 1125, "AL", "Alytaus Apskritis"),
-(3513, 1125, "KU", "Kauno Apskritis"),
-(3514, 1125, "KL", "KlaipÄ—dos Apskritis"),
-(3515, 1125, "MR", "MarijampolÄ—s Apskritis"),
-(3516, 1125, "PN", "Panevėžio Apskritis"),
-(3517, 1125, "SA", "Šiaulių Apskritis"),
-(3518, 1125, "TA", "TauragÄ—s Apskritis"),
-(3519, 1125, "TE", "Telšių Apskritis"),
-(3520, 1125, "UT", "Utenos Apskritis"),
-(3521, 1125, "VL", "Vilniaus Apskritis"),
-(3522, 1126, "DI", "Diekirch"),
-(3523, 1126, "GR", "Grevenmacher"),
-(3550, 1119, "DGV", "Daugavpils"),
-(3551, 1119, "JEL", "Jelgava"),
-(3552, 1119, "JUR", "JÅ«rmala"),
-(3553, 1119, "LPX", "Liepāja"),
-(3554, 1119, "REZ", "RÄ“zekne"),
-(3555, 1119, "RIX", "RÄ«ga"),
-(3556, 1119, "VEN", "Ventspils"),
-(3557, 1123, "AJ", "Ajdābiyā"),
-(3558, 1123, "BU", "Al Buţnān"),
-(3559, 1123, "HZ", "Al Hizām al Akhdar"),
-(3560, 1123, "JA", "Al Jabal al Akhdar"),
-(3561, 1123, "JI", "Al Jifārah"),
-(3562, 1123, "JU", "Al Jufrah"),
-(3563, 1123, "KF", "Al Kufrah"),
-(3564, 1123, "MJ", "Al Marj"),
-(3565, 1123, "MB", "Al Marqab"),
-(3566, 1123, "QT", "Al Qaţrūn"),
-(3567, 1123, "QB", "Al Qubbah"),
-(3568, 1123, "WA", "Al Wāhah"),
-(3569, 1123, "NQ", "An Nuqaţ al Khams"),
-(3570, 1123, "SH", "Ash Shāţi\'"),
-(3571, 1123, "ZA", "Az Zāwiyah"),
-(3572, 1123, "BA", "Banghāzī"),
-(3573, 1123, "BW", "Banī Walīd"),
-(3574, 1123, "DR", "Darnah"),
-(3575, 1123, "GD", "Ghadāmis"),
-(3576, 1123, "GR", "Gharyān"),
-(3577, 1123, "GT", "Ghāt"),
-(3578, 1123, "JB", "Jaghbūb"),
-(3579, 1123, "MI", "Mişrātah"),
-(3580, 1123, "MZ", "Mizdah"),
-(3581, 1123, "MQ", "Murzuq"),
-(3582, 1123, "NL", "Nālūt"),
-(3583, 1123, "SB", "Sabhā"),
-(3584, 1123, "SS", "Şabrātah Şurmān"),
-(3585, 1123, "SR", "Surt"),
-(3586, 1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
-(3587, 1123, "TB", "Ţarābulus"),
-(3588, 1123, "TM", "Tarhūnah-Masallātah"),
-(3589, 1123, "WD", "Wādī al hayāt"),
-(3590, 1123, "YJ", "Yafran-Jādū"),
-(3591, 1146, "AGD", "Agadir"),
-(3592, 1146, "BAH", "Aït Baha"),
-(3593, 1146, "MEL", "Aït Melloul"),
-(3594, 1146, "HAO", "Al Haouz"),
-(3595, 1146, "HOC", "Al Hoceïma"),
-(3596, 1146, "ASZ", "Assa-Zag"),
-(3597, 1146, "AZI", "Azilal"),
-(3598, 1146, "BEM", "Beni Mellal"),
-(3599, 1146, "BES", "Ben Sllmane"),
-(3600, 1146, "BER", "Berkane"),
-(3601, 1146, "BOD", "Boujdour"),
-(3602, 1146, "BOM", "Boulemane"),
-(3603, 1146, "CAS", "Casablanca  [Dar el Beïda]"),
-(3604, 1146, "CHE", "Chefchaouene"),
-(3605, 1146, "CHI", "Chichaoua"),
-(3606, 1146, "HAJ", "El Hajeb"),
-(3607, 1146, "JDI", "El Jadida"),
-(3608, 1146, "ERR", "Errachidia"),
-(3609, 1146, "ESI", "Essaouira"),
-(3610, 1146, "ESM", "Es Smara"),
-(3611, 1146, "FES", "Fès"),
-(3612, 1146, "FIG", "Figuig"),
-(3613, 1146, "GUE", "Guelmim"),
-(3614, 1146, "IFR", "Ifrane"),
-(3615, 1146, "JRA", "Jerada"),
-(3616, 1146, "KES", "Kelaat Sraghna"),
-(3617, 1146, "KEN", "Kénitra"),
-(3618, 1146, "KHE", "Khemisaet"),
-(3619, 1146, "KHN", "Khenifra"),
-(3620, 1146, "KHO", "Khouribga"),
-(3621, 1146, "LAA", "Laâyoune (EH)"),
-(3622, 1146, "LAP", "Larache"),
-(3623, 1146, "MAR", "Marrakech"),
-(3624, 1146, "MEK", "Meknsès"),
-(3625, 1146, "NAD", "Nador"),
-(3626, 1146, "OUA", "Ouarzazate"),
-(3627, 1146, "OUD", "Oued ed Dahab (EH)"),
-(3628, 1146, "OUJ", "Oujda"),
-(3629, 1146, "RBA", "Rabat-Salé"),
-(3630, 1146, "SAF", "Safi"),
-(3631, 1146, "SEF", "Sefrou"),
-(3632, 1146, "SET", "Settat"),
-(3633, 1146, "SIK", "Sidl Kacem"),
-(3634, 1146, "TNG", "Tanger"),
-(3635, 1146, "TNT", "Tan-Tan"),
-(3636, 1146, "TAO", "Taounate"),
-(3637, 1146, "TAR", "Taroudannt"),
-(3638, 1146, "TAT", "Tata"),
-(3639, 1146, "TAZ", "Taza"),
-(3640, 1146, "TET", "Tétouan"),
-(3641, 1146, "TIZ", "Tiznit"),
-(3642, 1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
-(3643, 1142, "CU", "Chisinau"),
-(3644, 1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
-(3645, 1142, "BA", "Balti"),
-(3646, 1142, "CA", "Cahul"),
-(3647, 1142, "ED", "Edinet"),
-(3648, 1142, "LA", "Lapusna"),
-(3649, 1142, "OR", "Orhei"),
-(3650, 1142, "SO", "Soroca"),
-(3651, 1142, "TA", "Taraclia"),
-(3652, 1142, "TI", "Tighina [Bender]"),
-(3653, 1142, "UN", "Ungheni"),
-(3654, 1129, "T", "Antananarivo"),
-(3655, 1129, "D", "Antsiranana"),
-(3656, 1129, "F", "Fianarantsoa"),
-(3657, 1129, "M", "Mahajanga"),
-(3658, 1129, "A", "Toamasina"),
-(3659, 1129, "U", "Toliara"),
-(3660, 1135, "ALL", "Ailinglapalap"),
-(3661, 1135, "ALK", "Ailuk"),
-(3662, 1135, "ARN", "Arno"),
-(3663, 1135, "AUR", "Aur"),
-(3664, 1135, "EBO", "Ebon"),
-(3665, 1135, "ENI", "Eniwetok"),
-(3666, 1135, "JAL", "Jaluit"),
-(3667, 1135, "KIL", "Kili"),
-(3668, 1135, "KWA", "Kwajalein"),
-(3669, 1135, "LAE", "Lae"),
-(3670, 1135, "LIB", "Lib"),
-(3671, 1135, "LIK", "Likiep"),
-(3672, 1135, "MAJ", "Majuro"),
-(3673, 1135, "MAL", "Maloelap"),
-(3674, 1135, "MEJ", "Mejit"),
-(3675, 1135, "MIL", "Mili"),
-(3676, 1135, "NMK", "Namorik"),
-(3677, 1135, "NMU", "Namu"),
-(3678, 1135, "RON", "Rongelap"),
-(3679, 1135, "UJA", "Ujae"),
-(3680, 1135, "UJL", "Ujelang"),
-(3681, 1135, "UTI", "Utirik"),
-(3682, 1135, "WTN", "Wotho"),
-(3683, 1135, "WTJ", "Wotje"),
-(3684, 1133, "BK0", "Bamako"),
-(3685, 1133, "7", "Gao"),
-(3686, 1133, "1", "Kayes"),
-(3687, 1133, "8", "Kidal"),
-(3688, 1133, "2", "Xoulikoro"),
-(3689, 1133, "5", "Mopti"),
-(3690, 1133, "4", "S69ou"),
-(3691, 1133, "3", "Sikasso"),
-(3692, 1133, "6", "Tombouctou"),
-(3693, 1035, "07", "Ayeyarwady"),
-(3694, 1035, "02", "Bago"),
-(3695, 1035, "03", "Magway"),
-(3696, 1035, "04", "Mandalay"),
-(3697, 1035, "01", "Sagaing"),
-(3698, 1035, "05", "Tanintharyi"),
-(3699, 1035, "06", "Yangon"),
-(3700, 1035, "14", "Chin"),
-(3701, 1035, "11", "Kachin"),
-(3702, 1035, "12", "Kayah"),
-(3703, 1035, "13", "Kayin"),
-(3704, 1035, "15", "Mon"),
-(3705, 1035, "16", "Rakhine"),
-(3706, 1035, "17", "Shan"),
-(3707, 1144, "1", "Ulaanbaatar"),
-(3708, 1144, "073", "Arhangay"),
-(3709, 1144, "069", "Bayanhongor"),
-(3710, 1144, "071", "Bayan-Olgiy"),
-(3711, 1144, "067", "Bulgan"),
-(3712, 1144, "037", "Darhan uul"),
-(3713, 1144, "061", "Dornod"),
-(3714, 1144, "063", "Dornogov,"),
-(3715, 1144, "059", "DundgovL"),
-(3716, 1144, "057", "Dzavhan"),
-(3717, 1144, "065", "Govi-Altay"),
-(3718, 1144, "064", "Govi-Smber"),
-(3719, 1144, "039", "Hentiy"),
-(3720, 1144, "043", "Hovd"),
-(3721, 1144, "041", "Hovsgol"),
-(3722, 1144, "053", "Omnogovi"),
-(3723, 1144, "035", "Orhon"),
-(3724, 1144, "055", "Ovorhangay"),
-(3725, 1144, "049", "Selenge"),
-(3726, 1144, "051", "Shbaatar"),
-(3727, 1144, "047", "Tov"),
-(3728, 1144, "046", "Uvs"),
-(3729, 1137, "NKC", "Nouakchott"),
-(3730, 1137, "03", "Assaba"),
-(3731, 1137, "05", "Brakna"),
-(3732, 1137, "08", "Dakhlet Nouadhibou"),
-(3733, 1137, "04", "Gorgol"),
-(3734, 1137, "10", "Guidimaka"),
-(3735, 1137, "01", "Hodh ech Chargui"),
-(3736, 1137, "02", "Hodh el Charbi"),
-(3737, 1137, "12", "Inchiri"),
-(3738, 1137, "09", "Tagant"),
-(3739, 1137, "11", "Tiris Zemmour"),
-(3740, 1137, "06", "Trarza"),
-(3741, 1138, "BR", "Beau Bassin-Rose Hill"),
-(3742, 1138, "CU", "Curepipe"),
-(3743, 1138, "PU", "Port Louis"),
-(3744, 1138, "QB", "Quatre Bornes"),
-(3745, 1138, "VP", "Vacosa-Phoenix"),
-(3746, 1138, "BL", "Black River"),
-(3747, 1138, "FL", "Flacq"),
-(3748, 1138, "GP", "Grand Port"),
-(3749, 1138, "MO", "Moka"),
-(3750, 1138, "PA", "Pamplemousses"),
-(3751, 1138, "PW", "Plaines Wilhems"),
-(3752, 1138, "RP", "Riviere du Rempart"),
-(3753, 1138, "SA", "Savanne"),
-(3754, 1138, "AG", "Agalega Islands"),
-(3755, 1138, "CC", "Cargados Carajos Shoals"),
-(3756, 1138, "RO", "Rodrigues Island"),
-(3757, 1132, "MLE", "Male"),
-(3758, 1132, "02", "Alif"),
-(3759, 1132, "20", "Baa"),
-(3760, 1132, "17", "Dhaalu"),
-(3761, 1132, "14", "Faafu"),
-(3762, 1132, "27", "Gaaf Alif"),
-(3763, 1132, "28", "Gaefu Dhaalu"),
-(3764, 1132, "29", "Gnaviyani"),
-(3765, 1132, "07", "Haa Alif"),
-(3766, 1132, "23", "Haa Dhaalu"),
-(3767, 1132, "26", "Kaafu"),
-(3768, 1132, "05", "Laamu"),
-(3769, 1132, "03", "Lhaviyani"),
-(3770, 1132, "12", "Meemu"),
-(3771, 1132, "25", "Noonu"),
-(3772, 1132, "13", "Raa"),
-(3773, 1132, "01", "Seenu"),
-(3774, 1132, "24", "Shaviyani"),
-(3775, 1132, "08", "Thaa"),
-(3776, 1132, "04", "Vaavu"),
-(3777, 1130, "BA", "Balaka"),
-(3778, 1130, "BL", "Blantyre"),
-(3779, 1130, "CK", "Chikwawa"),
-(3780, 1130, "CR", "Chiradzulu"),
-(3781, 1130, "CT", "Chitipa"),
-(3782, 1130, "DE", "Dedza"),
-(3783, 1130, "DO", "Dowa"),
-(3784, 1130, "KR", "Karonga"),
-(3785, 1130, "KS", "Kasungu"),
-(3786, 1130, "LK", "Likoma Island"),
-(3787, 1130, "LI", "Lilongwe"),
-(3788, 1130, "MH", "Machinga"),
-(3789, 1130, "MG", "Mangochi"),
-(3790, 1130, "MC", "Mchinji"),
-(3791, 1130, "MU", "Mulanje"),
-(3792, 1130, "MW", "Mwanza"),
-(3793, 1130, "MZ", "Mzimba"),
-(3794, 1130, "NB", "Nkhata Bay"),
-(3795, 1130, "NK", "Nkhotakota"),
-(3796, 1130, "NS", "Nsanje"),
-(3797, 1130, "NU", "Ntcheu"),
-(3798, 1130, "NI", "Ntchisi"),
-(3799, 1130, "PH", "Phalomba"),
-(3800, 1130, "RU", "Rumphi"),
-(3801, 1130, "SA", "Salima"),
-(3802, 1130, "TH", "Thyolo"),
-(3803, 1130, "ZO", "Zomba"),
-(3804, 1140, "AGU", "Aguascalientes"),
-(3805, 1140, "BCN", "Baja California"),
-(3806, 1140, "BCS", "Baja California Sur"),
-(3807, 1140, "CAM", "Campeche"),
-(3808, 1140, "COA", "Coahuila"),
-(3809, 1140, "COL", "Colima"),
-(3810, 1140, "CHP", "Chiapas"),
-(3811, 1140, "CHH", "Chihuahua"),
-(3812, 1140, "DUR", "Durango"),
-(3813, 1140, "GUA", "Guanajuato"),
-(3814, 1140, "GRO", "Guerrero"),
-(3815, 1140, "HID", "Hidalgo"),
-(3816, 1140, "JAL", "Jalisco"),
-(3817, 1140, "MEX", "Mexico"),
-(3818, 1140, "MIC", "Michoacin"),
-(3819, 1140, "MOR", "Morelos"),
-(3820, 1140, "NAY", "Nayarit"),
-(3821, 1140, "NLE", "Nuevo Leon"),
-(3822, 1140, "OAX", "Oaxaca"),
-(3823, 1140, "PUE", "Puebla"),
-(3824, 1140, "QUE", "Queretaro"),
-(3825, 1140, "ROO", "Quintana Roo"),
-(3826, 1140, "SLP", "San Luis Potosi"),
-(3827, 1140, "SIN", "Sinaloa"),
-(3828, 1140, "SON", "Sonora"),
-(3829, 1140, "TAB", "Tabasco"),
-(3830, 1140, "TAM", "Tamaulipas"),
-(3831, 1140, "TLA", "Tlaxcala"),
-(3832, 1140, "VER", "Veracruz"),
-(3833, 1140, "YUC", "Yucatan"),
-(3834, 1140, "ZAC", "Zacatecas"),
-(3835, 1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
-(3836, 1131, "15", "Wilayah Persekutuan Labuan"),
-(3837, 1131, "16", "Wilayah Persekutuan Putrajaya"),
-(3838, 1131, "01", "Johor"),
-(3839, 1131, "02", "Kedah"),
-(3840, 1131, "03", "Kelantan"),
-(3841, 1131, "04", "Melaka"),
-(3842, 1131, "05", "Negeri Sembilan"),
-(3843, 1131, "06", "Pahang"),
-(3844, 1131, "08", "Perak"),
-(3845, 1131, "09", "Perlis"),
-(3846, 1131, "07", "Pulau Pinang"),
-(3847, 1131, "12", "Sabah"),
-(3848, 1131, "13", "Sarawak"),
-(3849, 1131, "10", "Selangor"),
-(3850, 1131, "11", "Terengganu"),
-(3851, 1147, "MPM", "Maputo"),
-(3852, 1147, "P", "Cabo Delgado"),
-(3853, 1147, "G", "Gaza"),
-(3854, 1147, "I", "Inhambane"),
-(3855, 1147, "B", "Manica"),
-(3856, 1147, "N", "Numpula"),
-(3857, 1147, "A", "Niaaea"),
-(3858, 1147, "S", "Sofala"),
-(3859, 1147, "T", "Tete"),
-(3860, 1147, "Q", "Zambezia"),
-(3861, 1148, "CA", "Caprivi"),
-(3862, 1148, "ER", "Erongo"),
-(3863, 1148, "HA", "Hardap"),
-(3864, 1148, "KA", "Karas"),
-(3865, 1148, "KH", "Khomas"),
-(3866, 1148, "KU", "Kunene"),
-(3867, 1148, "OW", "Ohangwena"),
-(3868, 1148, "OK", "Okavango"),
-(3869, 1148, "OH", "Omaheke"),
-(3870, 1148, "OS", "Omusati"),
-(3871, 1148, "ON", "Oshana"),
-(3872, 1148, "OT", "Oshikoto"),
-(3873, 1148, "OD", "Otjozondjupa"),
-(3874, 1156, "8", "Niamey"),
-(3875, 1156, "1", "Agadez"),
-(3876, 1156, "2", "Diffa"),
-(3877, 1156, "3", "Dosso"),
-(3878, 1156, "4", "Maradi"),
-(3879, 1156, "S", "Tahoua"),
-(3880, 1156, "6", "Tillaberi"),
-(3881, 1156, "7", "Zinder"),
-(3882, 1157, "FC", "Abuja Federal Capital Territory"),
-(3883, 1157, "AB", "Abia"),
-(3884, 1157, "AD", "Adamawa"),
-(3885, 1157, "AK", "Akwa Ibom"),
-(3886, 1157, "AN", "Anambra"),
-(3887, 1157, "BA", "Bauchi"),
-(3888, 1157, "BY", "Bayelsa"),
-(3889, 1157, "BE", "Benue"),
-(3890, 1157, "BO", "Borno"),
-(3891, 1157, "CR", "Cross River"),
-(3892, 1157, "DE", "Delta"),
-(3893, 1157, "EB", "Ebonyi"),
-(3894, 1157, "ED", "Edo"),
-(3895, 1157, "EK", "Ekiti"),
-(3896, 1157, "EN", "Enugu"),
-(3897, 1157, "GO", "Gombe"),
-(3898, 1157, "IM", "Imo"),
-(3899, 1157, "JI", "Jigawa"),
-(3900, 1157, "KD", "Kaduna"),
-(3901, 1157, "KN", "Kano"),
-(3902, 1157, "KT", "Katsina"),
-(3903, 1157, "KE", "Kebbi"),
-(3904, 1157, "KO", "Kogi"),
-(3905, 1157, "KW", "Kwara"),
-(3906, 1157, "LA", "Lagos"),
-(3907, 1157, "NA", "Nassarawa"),
-(3908, 1157, "NI", "Niger"),
-(3909, 1157, "OG", "Ogun"),
-(3910, 1157, "ON", "Ondo"),
-(3911, 1157, "OS", "Osun"),
-(3912, 1157, "OY", "Oyo"),
-(3913, 1157, "RI", "Rivers"),
-(3914, 1157, "SO", "Sokoto"),
-(3915, 1157, "TA", "Taraba"),
-(3916, 1157, "YO", "Yobe"),
-(3917, 1157, "ZA", "Zamfara"),
-(3918, 1155, "BO", "Boaco"),
-(3919, 1155, "CA", "Carazo"),
-(3920, 1155, "CI", "Chinandega"),
-(3921, 1155, "CO", "Chontales"),
-(3922, 1155, "ES", "Esteli"),
-(3923, 1155, "JI", "Jinotega"),
-(3924, 1155, "LE", "Leon"),
-(3925, 1155, "MD", "Madriz"),
-(3926, 1155, "MN", "Managua"),
-(3927, 1155, "MS", "Masaya"),
-(3928, 1155, "MT", "Matagalpa"),
-(3929, 1155, "NS", "Nueva Segovia"),
-(3930, 1155, "SJ", "Rio San Juan"),
-(3931, 1155, "RI", "Rivas"),
-(3932, 1155, "AN", "Atlantico Norte"),
-(3933, 1155, "AS", "Atlantico Sur"),
-(3934, 1152, "DR", "Drente"),
-(3935, 1152, "FL", "Flevoland"),
-(3936, 1152, "FR", "Friesland"),
-(3937, 1152, "GL", "Gelderland"),
-(3938, 1152, "GR", "Groningen"),
-(3939, 1152, "NB", "Noord-Brabant"),
-(3940, 1152, "NH", "Noord-Holland"),
-(3941, 1152, "OV", "Overijssel"),
-(3942, 1152, "UT", "Utrecht"),
-(3943, 1152, "ZH", "Zuid-Holland"),
-(3944, 1152, "ZL", "Zeeland"),
-(3945, 1161, "02", "Akershus"),
-(3946, 1161, "09", "Aust-Agder"),
-(3947, 1161, "06", "Buskerud"),
-(3948, 1161, "20", "Finnmark"),
-(3949, 1161, "04", "Hedmark"),
-(3951, 1161, "15", "Møre og Romsdal"),
-(3952, 1161, "18", "Nordland"),
-(3953, 1161, "17", "Nord-Trøndelag"),
-(3954, 1161, "05", "Oppland"),
-(3955, 1161, "03", "Oslo"),
-(3956, 1161, "11", "Rogaland"),
-(3957, 1161, "16", "Sør-Trøndelag"),
-(3958, 1161, "06", "Telemark"),
-(3959, 1161, "19", "Troms"),
-(3960, 1161, "10", "Vest-Agder"),
-(3961, 1161, "07", "Vestfold"),
-(3962, 1161, "46", "Vestland"),
-(3963, 1161, "01", "Østfold"),
-(3964, 1161, "22", "Jan Mayen"),
-(3965, 1161, "21", "Svalbard"),
-(3966, 1154, "AUK", "Auckland"),
-(3967, 1154, "BOP", "Bay of Plenty"),
-(3968, 1154, "CAN", "Canterbury"),
-(3969, 1154, "GIS", "Gisborne"),
-(3970, 1154, "HKB", "Hawkes Bay"),
-(3971, 1154, "MWT", "Manawatu-Wanganui"),
-(3972, 1154, "MBH", "Marlborough"),
-(3973, 1154, "NSN", "Nelson"),
-(3974, 1154, "NTL", "Northland"),
-(3975, 1154, "OTA", "Otago"),
-(3976, 1154, "STL", "Southland"),
-(3977, 1154, "TKI", "Taranaki"),
-(3978, 1154, "TAS", "Tasman"),
-(3979, 1154, "WKO", "Waikato"),
-(3980, 1154, "WGN", "Wellington"),
-(3981, 1154, "WTC", "West Coast"),
-(3982, 1162, "DA", "Ad Dakhillyah"),
-(3983, 1162, "BA", "Al Batinah"),
-(3984, 1162, "JA", "Al Janblyah"),
-(3985, 1162, "WU", "Al Wusta"),
-(3986, 1162, "SH", "Ash Sharqlyah"),
-(3987, 1162, "ZA", "Az Zahirah"),
-(3988, 1162, "MA", "Masqat"),
-(3989, 1162, "MU", "Musandam"),
-(3990, 1166, "1", "Bocas del Toro"),
-(3991, 1166, "2", "Cocle"),
-(3992, 1166, "4", "Chiriqui"),
-(3993, 1166, "5", "Darien"),
-(3994, 1166, "6", "Herrera"),
-(3995, 1166, "7", "Loa Santoa"),
-(3996, 1166, "8", "Panama"),
-(3997, 1166, "9", "Veraguas"),
-(3998, 1166, "Q", "Comarca de San Blas"),
-(3999, 1169, "CAL", "El Callao"),
-(4000, 1169, "ANC", "Ancash"),
-(4001, 1169, "APU", "Apurimac"),
-(4002, 1169, "ARE", "Arequipa"),
-(4003, 1169, "AYA", "Ayacucho"),
-(4004, 1169, "CAJ", "Cajamarca"),
-(4005, 1169, "CUS", "Cuzco"),
-(4006, 1169, "HUV", "Huancavelica"),
-(4007, 1169, "HUC", "Huanuco"),
-(4008, 1169, "ICA", "Ica"),
-(4009, 1169, "JUN", "Junin"),
-(4010, 1169, "LAL", "La Libertad"),
-(4011, 1169, "LAM", "Lambayeque"),
-(4012, 1169, "LIM", "Lima"),
-(4013, 1169, "LOR", "Loreto"),
-(4014, 1169, "MDD", "Madre de Dios"),
-(4015, 1169, "MOQ", "Moquegua"),
-(4016, 1169, "PAS", "Pasco"),
-(4017, 1169, "PIU", "Piura"),
-(4018, 1169, "PUN", "Puno"),
-(4019, 1169, "SAM", "San Martin"),
-(4020, 1169, "TAC", "Tacna"),
-(4021, 1169, "TUM", "Tumbes"),
-(4022, 1169, "UCA", "Ucayali"),
-(4023, 1167, "NCD", "National Capital District (Port Moresby)"),
-(4024, 1167, "CPK", "Chimbu"),
-(4025, 1167, "EHG", "Eastern Highlands"),
-(4026, 1167, "EBR", "East New Britain"),
-(4027, 1167, "ESW", "East Sepik"),
-(4028, 1167, "EPW", "Enga"),
-(4029, 1167, "GPK", "Gulf"),
-(4030, 1167, "MPM", "Madang"),
-(4031, 1167, "MRL", "Manus"),
-(4032, 1167, "MBA", "Milne Bay"),
-(4033, 1167, "MPL", "Morobe"),
-(4034, 1167, "NIK", "New Ireland"),
-(4035, 1167, "NSA", "North Solomons"),
-(4036, 1167, "SAN", "Santaun"),
-(4037, 1167, "SHM", "Southern Highlands"),
-(4038, 1167, "WHM", "Western Highlands"),
-(4039, 1167, "WBK", "West New Britain"),
-(4040, 1170, "ABR", "Abra"),
-(4041, 1170, "AGN", "Agusan del Norte"),
-(4042, 1170, "AGS", "Agusan del Sur"),
-(4043, 1170, "AKL", "Aklan"),
-(4044, 1170, "ALB", "Albay"),
-(4045, 1170, "ANT", "Antique"),
-(4046, 1170, "APA", "Apayao"),
-(4047, 1170, "AUR", "Aurora"),
-(4048, 1170, "BAS", "Basilan"),
-(4049, 1170, "BAN", "Bataan"),
-(4050, 1170, "BTN", "Batanes"),
-(4051, 1170, "BTG", "Batangas"),
-(4052, 1170, "BEN", "Benguet"),
-(4053, 1170, "BIL", "Biliran"),
-(4054, 1170, "BOH", "Bohol"),
-(4055, 1170, "BUK", "Bukidnon"),
-(4056, 1170, "BUL", "Bulacan"),
-(4057, 1170, "CAG", "Cagayan"),
-(4058, 1170, "CAN", "Camarines Norte"),
-(4059, 1170, "CAS", "Camarines Sur"),
-(4060, 1170, "CAM", "Camiguin"),
-(4061, 1170, "CAP", "Capiz"),
-(4062, 1170, "CAT", "Catanduanes"),
-(4063, 1170, "CAV", "Cavite"),
-(4064, 1170, "CEB", "Cebu"),
-(4065, 1170, "COM", "Davao de Oro"),
-(4066, 1170, "DAV", "Davao del Norte"),
-(4067, 1170, "DAS", "Davao del Sur"),
-(4068, 1170, "DAO", "Davao Oriental"),
-(4069, 1170, "EAS", "Eastern Samar"),
-(4070, 1170, "GUI", "Guimaras"),
-(4071, 1170, "IFU", "Ifugao"),
-(4072, 1170, "ILN", "Ilocos Norte"),
-(4073, 1170, "ILS", "Ilocos Sur"),
-(4074, 1170, "ILI", "Iloilo"),
-(4075, 1170, "ISA", "Isabela"),
-(4076, 1170, "KAL", "Kalinga"),
-(4077, 1170, "LAG", "Laguna"),
-(4078, 1170, "LAN", "Lanao del Norte"),
-(4079, 1170, "LAS", "Lanao del Sur"),
-(4080, 1170, "LUN", "La Union"),
-(4081, 1170, "LEY", "Leyte"),
-(4082, 1170, "MAG", "Maguindanao"),
-(4083, 1170, "MAD", "Marinduque"),
-(4084, 1170, "MAS", "Masbate"),
-(4085, 1170, "MDC", "Mindoro Occidental"),
-(4086, 1170, "MDR", "Mindoro Oriental"),
-(4087, 1170, "MSC", "Misamis Occidental"),
-(4088, 1170, "MSR", "Misamis Oriental"),
-(4089, 1170, "MOU", "Mountain Province"),
-(4090, 1170, "NEC", "Negroe Occidental"),
-(4091, 1170, "NER", "Negros Oriental"),
-(4092, 1170, "NCO", "Cotabato"),
-(4093, 1170, "NSA", "Northern Samar"),
-(4094, 1170, "NUE", "Nueva Ecija"),
-(4095, 1170, "NUV", "Nueva Vizcaya"),
-(4096, 1170, "PLW", "Palawan"),
-(4097, 1170, "PAM", "Pampanga"),
-(4098, 1170, "PAN", "Pangasinan"),
-(4099, 1170, "QUE", "Quezon"),
-(4100, 1170, "QUI", "Quirino"),
-(4101, 1170, "RIZ", "Rizal"),
-(4102, 1170, "ROM", "Romblon"),
-(4103, 1170, "SAR", "Sarangani"),
-(4104, 1170, "SIG", "Siquijor"),
-(4105, 1170, "SOR", "Sorsogon"),
-(4106, 1170, "SCO", "South Cotabato"),
-(4107, 1170, "SLE", "Southern Leyte"),
-(4108, 1170, "SUK", "Sultan Kudarat"),
-(4109, 1170, "SLU", "Sulu"),
-(4110, 1170, "SUN", "Surigao del Norte"),
-(4111, 1170, "SUR", "Surigao del Sur"),
-(4112, 1170, "TAR", "Tarlac"),
-(4113, 1170, "TAW", "Tawi-Tawi"),
-(4114, 1170, "WSA", "Western Samar"),
-(4115, 1170, "ZMB", "Zambales"),
-(4116, 1170, "ZAN", "Zamboanga del Norte"),
-(4117, 1170, "ZAS", "Zamboanga del Sur"),
-(4118, 1170, "ZSI", "Zamboanga Sibiguey"),
-(4119, 1163, "IS", "Islamabad Federal Capital Area"),
-(4120, 1163, "BA", "Baluchistan"),
-(4121, 1163, "NW", "Khyber Pakhtun Khawa"),
-(4122, 1163, "SD", "Sindh"),
-(4123, 1163, "TA", "Federally Administered Tribal Areas"),
-(4124, 1163, "JK", "Azad Kashmir"),
-(4125, 1163, "NA", "Gilgit-Baltistan"),
-(4126, 1173, "01", "Aveiro"),
-(4127, 1173, "02", "Beja"),
-(4128, 1173, "03", "Braga"),
-(4129, 1173, "04", "Bragança"),
-(4130, 1173, "05", "Castelo Branco"),
-(4131, 1173, "06", "Coimbra"),
-(4132, 1173, "07", "Évora"),
-(4133, 1173, "08", "Faro"),
-(4134, 1173, "09", "Guarda"),
-(4135, 1173, "10", "Leiria"),
-(4136, 1173, "11", "Lisboa"),
-(4137, 1173, "12", "Portalegre"),
-(4138, 1173, "13", "Porto"),
-(4139, 1173, "14", "Santarém"),
-(4140, 1173, "15", "Setúbal"),
-(4141, 1173, "16", "Viana do Castelo"),
-(4142, 1173, "17", "Vila Real"),
-(4143, 1173, "18", "Viseu"),
-(4144, 1173, "20", "Região Autónoma dos Açores"),
-(4145, 1173, "30", "Região Autónoma da Madeira"),
-(4146, 1168, "ASU", "Asuncion"),
-(4147, 1168, "16", "Alto Paraguay"),
-(4148, 1168, "10", "Alto Parana"),
-(4149, 1168, "13", "Amambay"),
-(4150, 1168, "19", "Boqueron"),
-(4151, 1168, "5", "Caeguazu"),
-(4152, 1168, "6", "Caazapl"),
-(4153, 1168, "14", "Canindeyu"),
-(4154, 1168, "1", "Concepcion"),
-(4155, 1168, "3", "Cordillera"),
-(4156, 1168, "4", "Guaira"),
-(4157, 1168, "7", "Itapua"),
-(4158, 1168, "8", "Miaiones"),
-(4159, 1168, "12", "Neembucu"),
-(4160, 1168, "9", "Paraguari"),
-(4161, 1168, "15", "Presidente Hayes"),
-(4162, 1168, "2", "San Pedro"),
-(4163, 1175, "DA", "Ad Dawhah"),
-(4164, 1175, "GH", "Al Ghuwayriyah"),
-(4165, 1175, "JU", "Al Jumayliyah"),
-(4166, 1175, "KH", "Al Khawr"),
-(4167, 1175, "WA", "Al Wakrah"),
-(4168, 1175, "RA", "Ar Rayyan"),
-(4169, 1175, "JB", "Jariyan al Batnah"),
-(4170, 1175, "MS", "Madinat ash Shamal"),
-(4171, 1175, "US", "Umm Salal"),
-(4172, 1176, "B", "Bucuresti"),
-(4173, 1176, "AB", "Alba"),
-(4174, 1176, "AR", "Arad"),
-(4175, 1176, "AG", "ArgeÈ™"),
-(4176, 1176, "BC", "Bacău"),
-(4177, 1176, "BH", "Bihor"),
-(4178, 1176, "BN", "Bistrița-Năsăud"),
-(4179, 1176, "BT", "Botoșani"),
-(4180, 1176, "BV", "Brașov"),
-(4181, 1176, "BR", "Brăila"),
-(4182, 1176, "BZ", "Buzău"),
-(4183, 1176, "CS", "CaraÈ™-Severin"),
-(4184, 1176, "CL", "Călărași"),
-(4185, 1176, "CJ", "Cluj"),
-(4186, 1176, "CT", "Constanța"),
-(4187, 1176, "CV", "Covasna"),
-(4188, 1176, "DB", "Dâmbovița"),
-(4189, 1176, "DJ", "Dolj"),
-(4190, 1176, "GL", "Galați"),
-(4191, 1176, "GR", "Giurgiu"),
-(4192, 1176, "GJ", "Gorj"),
-(4193, 1176, "HR", "Harghita"),
-(4194, 1176, "HD", "Hunedoara"),
-(4195, 1176, "IL", "Ialomița"),
-(4196, 1176, "IS", "Iași"),
-(4197, 1176, "IF", "Ilfov"),
-(4198, 1176, "MM", "MaramureÈ™"),
-(4199, 1176, "MH", "Mehedinți"),
-(4200, 1176, "MS", "MureÈ™"),
-(4201, 1176, "NT", "NeamÈ›"),
-(4202, 1176, "OT", "Olt"),
-(4203, 1176, "PH", "Prahova"),
-(4204, 1176, "SM", "Satu Mare"),
-(4205, 1176, "SJ", "Sălaj"),
-(4206, 1176, "SB", "Sibiu"),
-(4207, 1176, "SV", "Suceava"),
-(4208, 1176, "TR", "Teleorman"),
-(4209, 1176, "TM", "TimiÈ™"),
-(4210, 1176, "TL", "Tulcea"),
-(4211, 1176, "VS", "Vaslui"),
-(4212, 1176, "VL", "Vâlcea"),
-(4213, 1176, "VN", "Vrancea"),
-(4214, 1177, "AD", "Adygeya, Respublika"),
-(4215, 1177, "AL", "Altay, Respublika"),
-(4216, 1177, "BA", "Bashkortostan, Respublika"),
-(4217, 1177, "BU", "Buryatiya, Respublika"),
-(4218, 1177, "CE", "Chechenskaya Respublika"),
-(4219, 1177, "CU", "Chuvashskaya Respublika"),
-(4220, 1177, "DA", "Dagestan, Respublika"),
-(4221, 1177, "IN", "Ingushskaya Respublika"),
-(4222, 1177, "KB", "Kabardino-Balkarskaya"),
-(4223, 1177, "KL", "Kalmykiya, Respublika"),
-(4224, 1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
-(4225, 1177, "KR", "Kareliya, Respublika"),
-(4226, 1177, "KK", "Khakasiya, Respublika"),
-(4227, 1177, "KO", "Komi, Respublika"),
-(4228, 1177, "ME", "Mariy El, Respublika"),
-(4229, 1177, "MO", "Mordoviya, Respublika"),
-(4230, 1177, "SA", "Sakha, Respublika [Yakutiya]"),
-(4231, 1177, "SE", "Severnaya Osetiya, Respublika"),
-(4232, 1177, "TA", "Tatarstan, Respublika"),
-(4233, 1177, "TY", "Tyva, Respublika [Tuva]"),
-(4234, 1177, "UD", "Udmurtskaya Respublika"),
-(4235, 1177, "ALT", "Altayskiy kray"),
-(4236, 1177, "KHA", "Khabarovskiy kray"),
-(4237, 1177, "KDA", "Krasnodarskiy kray"),
-(4238, 1177, "KYA", "Krasnoyarskiy kray"),
-(4239, 1177, "PRI", "Primorskiy kray"),
-(4240, 1177, "STA", "Stavropol\'skiy kray"),
-(4241, 1177, "AMU", "Amurskaya oblast\'"),
-(4242, 1177, "ARK", "Arkhangel\'skaya oblast\'"),
-(4243, 1177, "AST", "Astrakhanskaya oblast\'"),
-(4244, 1177, "BEL", "Belgorodskaya oblast\'"),
-(4245, 1177, "BRY", "Bryanskaya oblast\'"),
-(4246, 1177, "CHE", "Chelyabinskaya oblast\'"),
-(4247, 1177, "ZSK", "Zabaykalsky Krai\'"),
-(4248, 1177, "IRK", "Irkutskaya oblast\'"),
-(4249, 1177, "IVA", "Ivanovskaya oblast\'"),
-(4250, 1177, "KGD", "Kaliningradskaya oblast\'"),
-(4251, 1177, "KLU", "Kaluzhskaya oblast\'"),
-(4252, 1177, "KAM", "Kamchatka Krai\'"),
-(4253, 1177, "KEM", "Kemerovskaya oblast\'"),
-(4254, 1177, "KIR", "Kirovskaya oblast\'"),
-(4255, 1177, "KOS", "Kostromskaya oblast\'"),
-(4256, 1177, "KGN", "Kurganskaya oblast\'"),
-(4257, 1177, "KRS", "Kurskaya oblast\'"),
-(4258, 1177, "LEN", "Leningradskaya oblast\'"),
-(4259, 1177, "LIP", "Lipetskaya oblast\'"),
-(4260, 1177, "MAG", "Magadanskaya oblast\'"),
-(4261, 1177, "MOS", "Moskovskaya oblast\'"),
-(4262, 1177, "MUR", "Murmanskaya oblast\'"),
-(4263, 1177, "NIZ", "Nizhegorodskaya oblast\'"),
-(4264, 1177, "NGR", "Novgorodskaya oblast\'"),
-(4265, 1177, "NVS", "Novosibirskaya oblast\'"),
-(4266, 1177, "OMS", "Omskaya oblast\'"),
-(4267, 1177, "ORE", "Orenburgskaya oblast\'"),
-(4268, 1177, "ORL", "Orlovskaya oblast\'"),
-(4269, 1177, "PNZ", "Penzenskaya oblast\'"),
-(4270, 1177, "PEK", "Perm krai\'"),
-(4271, 1177, "PSK", "Pskovskaya oblast\'"),
-(4272, 1177, "ROS", "Rostovskaya oblast\'"),
-(4273, 1177, "RYA", "Ryazanskaya oblast\'"),
-(4274, 1177, "SAK", "Sakhalinskaya oblast\'"),
-(4275, 1177, "SAM", "Samarskaya oblast\'"),
-(4276, 1177, "SAR", "Saratovskaya oblast\'"),
-(4277, 1177, "SMO", "Smolenskaya oblast\'"),
-(4278, 1177, "SVE", "Sverdlovskaya oblast\'"),
-(4279, 1177, "TAM", "Tambovskaya oblast\'"),
-(4280, 1177, "TOM", "Tomskaya oblast\'"),
-(4281, 1177, "TUL", "Tul\'skaya oblast\'"),
-(4282, 1177, "TVE", "Tverskaya oblast\'"),
-(4283, 1177, "TYU", "Tyumenskaya oblast\'"),
-(4284, 1177, "ULY", "Ul\'yanovskaya oblast\'"),
-(4285, 1177, "VLA", "Vladimirskaya oblast\'"),
-(4286, 1177, "VGG", "Volgogradskaya oblast\'"),
-(4287, 1177, "VLG", "Vologodskaya oblast\'"),
-(4288, 1177, "VOR", "Voronezhskaya oblast\'"),
-(4289, 1177, "YAR", "Yaroslavskaya oblast\'"),
-(4290, 1177, "MOW", "Moskva"),
-(4291, 1177, "SPE", "Sankt-Peterburg"),
-(4292, 1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
-(4294, 1177, "CHU", "Chukotskiy avtonomnyy okrug"),
-(4296, 1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
-(4299, 1177, "NEN", "Nenetskiy avtonomnyy okrug"),
-(4302, 1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
-(4303, 1178, "C", "Butare"),
-(4304, 1178, "I", "Byumba"),
-(4305, 1178, "E", "Cyangugu"),
-(4306, 1178, "D", "Gikongoro"),
-(4307, 1178, "G", "Gisenyi"),
-(4308, 1178, "B", "Gitarama"),
-(4309, 1178, "J", "Kibungo"),
-(4310, 1178, "F", "Kibuye"),
-(4311, 1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
-(4312, 1178, "L", "Kigali-Ville Kigali Ngari"),
-(4313, 1178, "M", "Mutara"),
-(4314, 1178, "H", "Ruhengeri"),
-(4315, 1187, "11", "Al Bahah"),
-(4316, 1187, "08", "Al Hudud Ash Shamaliyah"),
-(4317, 1187, "12", "Al Jawf"),
-(4318, 1187, "03", "Al Madinah"),
-(4319, 1187, "05", "Al Qasim"),
-(4320, 1187, "01", "Ar Riyad"),
-(4321, 1187, "14", "Asir"),
-(4322, 1187, "06", "Ha\'il"),
-(4323, 1187, "09", "Jlzan"),
-(4324, 1187, "02", "Makkah"),
-(4325, 1187, "10", "Najran"),
-(4326, 1187, "07", "Tabuk"),
-(4327, 1194, "CT", "Capital Territory (Honiara)"),
-(4328, 1194, "GU", "Guadalcanal"),
-(4329, 1194, "IS", "Isabel"),
-(4330, 1194, "MK", "Makira"),
-(4331, 1194, "ML", "Malaita"),
-(4332, 1194, "TE", "Temotu"),
-(4333, 1200, "23", "A\'ali an Nil"),
-(4334, 1200, "26", "Al Bah al Ahmar"),
-(4335, 1200, "18", "Al Buhayrat"),
-(4336, 1200, "07", "Al Jazirah"),
-(4337, 1200, "03", "Al Khartum"),
-(4338, 1200, "06", "Al Qadarif"),
-(4339, 1200, "22", "Al Wahdah"),
-(4340, 1200, "04", "An Nil"),
-(4341, 1200, "08", "An Nil al Abyaq"),
-(4342, 1200, "24", "An Nil al Azraq"),
-(4343, 1200, "01", "Ash Shamallyah"),
-(4344, 1200, "17", "Bahr al Jabal"),
-(4345, 1200, "16", "Gharb al Istiwa\'iyah"),
-(4346, 1200, "14", "Gharb Ba~r al Ghazal"),
-(4347, 1200, "12", "Gharb Darfur"),
-(4348, 1200, "10", "Gharb Kurdufan"),
-(4349, 1200, "11", "Janub Darfur"),
-(4350, 1200, "13", "Janub Rurdufan"),
-(4351, 1200, "20", "Jnqall"),
-(4352, 1200, "05", "Kassala"),
-(4353, 1200, "15", "Shamal Batr al Ghazal"),
-(4354, 1200, "02", "Shamal Darfur"),
-(4355, 1200, "09", "Shamal Kurdufan"),
-(4356, 1200, "19", "Sharq al Istiwa\'iyah"),
-(4357, 1200, "25", "Sinnar"),
-(4358, 1200, "21", "Warab"),
-(4359, 1204, "K", "Blekinge län"),
-(4360, 1204, "W", "Dalarnas län"),
-(4361, 1204, "I", "Gotlands län"),
-(4362, 1204, "X", "Gävleborgs län"),
-(4363, 1204, "N", "Hallands län"),
-(4364, 1204, "Z", "Jämtlands län"),
-(4365, 1204, "F", "Jönkopings län"),
-(4366, 1204, "H", "Kalmar län"),
-(4367, 1204, "G", "Kronobergs län"),
-(4368, 1204, "BD", "Norrbottens län"),
-(4369, 1204, "M", "Skåne län"),
-(4370, 1204, "AB", "Stockholms län"),
-(4371, 1204, "D", "Södermanlands län"),
-(4372, 1204, "C", "Uppsala län"),
-(4373, 1204, "S", "Värmlands län"),
-(4374, 1204, "AC", "Västerbottens län"),
-(4375, 1204, "Y", "Västernorrlands län"),
-(4376, 1204, "U", "Västmanlands län"),
-(4377, 1204, "Q", "Västra Götalands län"),
-(4378, 1204, "T", "Örebro län"),
-(4379, 1204, "E", "Östergötlands län"),
-(4380, 1180, "SH", "Saint Helena"),
-(4381, 1180, "AC", "Ascension"),
-(4382, 1180, "TA", "Tristan da Cunha"),
-(4383, 1193, "001", "Ajdovščina"),
-(4384, 1193, "002", "Beltinci"),
-(4385, 1193, "148", "Benedikt"),
-(4386, 1193, "149", "Bistrica ob Sotli"),
-(4387, 1193, "003", "Bled"),
-(4388, 1193, "150", "Bloke"),
-(4389, 1193, "004", "Bohinj"),
-(4390, 1193, "005", "Borovnica"),
-(4391, 1193, "006", "Bovec"),
-(4392, 1193, "151", "Braslovče"),
-(4393, 1193, "007", "Brda"),
-(4394, 1193, "008", "Brezovica"),
-(4395, 1193, "009", "Brežice"),
-(4396, 1193, "152", "Cankova"),
-(4397, 1193, "011", "Celje"),
-(4398, 1193, "012", "Cerklje na Gorenjskem"),
-(4399, 1193, "013", "Cerknica"),
-(4400, 1193, "014", "Cerkno"),
-(4401, 1193, "153", "Cerkvenjak"),
-(4402, 1193, "015", "Črenšovci"),
-(4403, 1193, "016", "Črna na Koroškem"),
-(4404, 1193, "017", "ÄŒrnomelj"),
-(4405, 1193, "018", "Destrnik"),
-(4406, 1193, "019", "Divača"),
-(4407, 1193, "154", "Dobje"),
-(4408, 1193, "020", "Dobrepolje"),
-(4409, 1193, "155", "Dobrna"),
-(4410, 1193, "021", "Dobrova-Polhov Gradec"),
-(4411, 1193, "156", "Dobrovnik"),
-(4412, 1193, "022", "Dol pri Ljubljani"),
-(4413, 1193, "157", "Dolenjske Toplice"),
-(4414, 1193, "023", "Domžale"),
-(4415, 1193, "024", "Dornava"),
-(4416, 1193, "025", "Dravograd"),
-(4417, 1193, "026", "Duplek"),
-(4418, 1193, "027", "Gorenja vas-Poljane"),
-(4419, 1193, "028", "Gorišnica"),
-(4420, 1193, "029", "Gornja Radgona"),
-(4421, 1193, "030", "Gornji Grad"),
-(4422, 1193, "031", "Gornji Petrovci"),
-(4423, 1193, "158", "Grad"),
-(4424, 1193, "032", "Grosuplje"),
-(4425, 1193, "159", "Hajdina"),
-(4426, 1193, "160", "Hoče-Slivnica"),
-(4427, 1193, "161", "Hodoš"),
-(4428, 1193, "162", "Horjul"),
-(4429, 1193, "034", "Hrastnik"),
-(4430, 1193, "035", "Hrpelje-Kozina"),
-(4431, 1193, "036", "Idrija"),
-(4432, 1193, "037", "Ig"),
-(4433, 1193, "038", "Ilirska Bistrica"),
-(4434, 1193, "039", "Ivančna Gorica"),
-(4435, 1193, "040", "Izola"),
-(4436, 1193, "041", "Jesenice"),
-(4437, 1193, "163", "Jezersko"),
-(4438, 1193, "042", "Juršinci"),
-(4439, 1193, "043", "Kamnik"),
-(4440, 1193, "044", "Kanal"),
-(4441, 1193, "045", "Kidričevo"),
-(4442, 1193, "046", "Kobarid"),
-(4443, 1193, "047", "Kobilje"),
-(4444, 1193, "048", "Kočevje"),
-(4445, 1193, "049", "Komen"),
-(4446, 1193, "164", "Komenda"),
-(4447, 1193, "050", "Koper"),
-(4448, 1193, "165", "Kostel"),
-(4449, 1193, "051", "Kozje"),
-(4450, 1193, "052", "Kranj"),
-(4451, 1193, "053", "Kranjska Gora"),
-(4452, 1193, "166", "Križevci"),
-(4453, 1193, "054", "Krško"),
-(4454, 1193, "055", "Kungota"),
-(4455, 1193, "056", "Kuzma"),
-(4456, 1193, "057", "Laško"),
-(4457, 1193, "058", "Lenart"),
-(4458, 1193, "059", "Lendava"),
-(4459, 1193, "060", "Litija"),
-(4460, 1193, "061", "Ljubljana"),
-(4461, 1193, "062", "Ljubno"),
-(4462, 1193, "063", "Ljutomer"),
-(4463, 1193, "064", "Logatec"),
-(4464, 1193, "065", "Loška dolina"),
-(4465, 1193, "066", "Loški Potok"),
-(4466, 1193, "167", "Lovrenc na Pohorju"),
-(4467, 1193, "067", "Luče"),
-(4468, 1193, "068", "Lukovica"),
-(4469, 1193, "069", "Majšperk"),
-(4470, 1193, "070", "Maribor"),
-(4471, 1193, "168", "Markovci"),
-(4472, 1193, "071", "Medvode"),
-(4473, 1193, "072", "Mengeš"),
-(4474, 1193, "073", "Metlika"),
-(4475, 1193, "074", "Mežica"),
-(4476, 1193, "169", "Miklavž na Dravskem polju"),
-(4477, 1193, "075", "Miren-Kostanjevica"),
-(4478, 1193, "170", "Mirna Peč"),
-(4479, 1193, "076", "Mislinja"),
-(4480, 1193, "077", "Moravče"),
-(4481, 1193, "078", "Moravske Toplice"),
-(4482, 1193, "079", "Mozirje"),
-(4483, 1193, "080", "Murska Sobota"),
-(4484, 1193, "081", "Muta"),
-(4485, 1193, "082", "Naklo"),
-(4486, 1193, "083", "Nazarje"),
-(4487, 1193, "084", "Nova Gorica"),
-(4488, 1193, "085", "Novo mesto"),
-(4489, 1193, "181", "Sveta Ana"),
-(4490, 1193, "182", "Sveti Andraž v Slovenskih goricah"),
-(4491, 1193, "116", "Sveti Jurij"),
-(4492, 1193, "033", "Å alovci"),
-(4493, 1193, "183", "Å empeter-Vrtojba"),
-(4494, 1193, "117", "Šenčur"),
-(4495, 1193, "118", "Å entilj"),
-(4496, 1193, "119", "Å entjernej"),
-(4497, 1193, "120", "Å entjur"),
-(4498, 1193, "121", "Å kocjan"),
-(4499, 1193, "122", "Å kofja Loka"),
-(4500, 1193, "123", "Å kofljica"),
-(4501, 1193, "124", "Šmarje pri Jelšah"),
-(4502, 1193, "125", "Å martno ob Paki"),
-(4503, 1193, "194", "Å martno pri Litiji"),
-(4504, 1193, "126", "Šoštanj"),
-(4505, 1193, "127", "Å tore"),
-(4506, 1193, "184", "Tabor"),
-(4507, 1193, "010", "Tišina"),
-(4508, 1193, "128", "Tolmin"),
-(4509, 1193, "129", "Trbovlje"),
-(4510, 1193, "130", "Trebnje"),
-(4511, 1193, "185", "Trnovska vas"),
-(4512, 1193, "131", "Tržič"),
-(4513, 1193, "186", "Trzin"),
-(4514, 1193, "132", "Turnišče"),
-(4515, 1193, "133", "Velenje"),
-(4516, 1193, "187", "Velika Polana"),
-(4517, 1193, "134", "Velike Lašče"),
-(4518, 1193, "188", "Veržej"),
-(4519, 1193, "135", "Videm"),
-(4520, 1193, "136", "Vipava"),
-(4521, 1193, "137", "Vitanje"),
-(4522, 1193, "138", "Vojnik"),
-(4523, 1193, "189", "Vransko"),
-(4524, 1193, "140", "Vrhnika"),
-(4525, 1193, "141", "Vuzenica"),
-(4526, 1193, "142", "Zagorje ob Savi"),
-(4527, 1193, "143", "Zavrč"),
-(4528, 1193, "144", "Zreče"),
-(4529, 1193, "190", "Žalec"),
-(4530, 1193, "146", "Železniki"),
-(4531, 1193, "191", "Žetale"),
-(4532, 1193, "147", "Žiri"),
-(4533, 1193, "192", "Žirovnica"),
-(4534, 1193, "193", "Žužemberk"),
-(4535, 1192, "BC", "Banskobystrický kraj"),
-(4536, 1192, "BL", "Bratislavský kraj"),
-(4537, 1192, "KI", "Košický kraj"),
-(4538, 1192, "NJ", "Nitriansky kraj"),
-(4539, 1192, "PV", "Prešovský kraj"),
-(4540, 1192, "TC", "Trenčiansky kraj"),
-(4541, 1192, "TA", "Trnavský kraj"),
-(4542, 1192, "ZI", "Žilinský kraj"),
-(4543, 1190, "W", "Western Area (Freetown)"),
-(4544, 1188, "DK", "Dakar"),
-(4545, 1188, "DB", "Diourbel"),
-(4546, 1188, "FK", "Fatick"),
-(4547, 1188, "KL", "Kaolack"),
-(4548, 1188, "KD", "Kolda"),
-(4549, 1188, "LG", "Louga"),
-(4550, 1188, "MT", "Matam"),
-(4551, 1188, "SL", "Saint-Louis"),
-(4552, 1188, "TC", "Tambacounda"),
-(4553, 1188, "TH", "Thies"),
-(4554, 1188, "ZG", "Ziguinchor"),
-(4555, 1195, "AW", "Awdal"),
-(4556, 1195, "BK", "Bakool"),
-(4557, 1195, "BN", "Banaadir"),
-(4558, 1195, "BY", "Bay"),
-(4559, 1195, "GA", "Galguduud"),
-(4560, 1195, "GE", "Gedo"),
-(4561, 1195, "HI", "Hiirsan"),
-(4562, 1195, "JD", "Jubbada Dhexe"),
-(4563, 1195, "JH", "Jubbada Hoose"),
-(4564, 1195, "MU", "Mudug"),
-(4565, 1195, "NU", "Nugaal"),
-(4566, 1195, "SA", "Saneag"),
-(4567, 1195, "SD", "Shabeellaha Dhexe"),
-(4568, 1195, "SH", "Shabeellaha Hoose"),
-(4569, 1195, "SO", "Sool"),
-(4570, 1195, "TO", "Togdheer"),
-(4571, 1195, "WO", "Woqooyi Galbeed"),
-(4572, 1201, "BR", "Brokopondo"),
-(4573, 1201, "CM", "Commewijne"),
-(4574, 1201, "CR", "Coronie"),
-(4575, 1201, "MA", "Marowijne"),
-(4576, 1201, "NI", "Nickerie"),
-(4577, 1201, "PM", "Paramaribo"),
-(4578, 1201, "SA", "Saramacca"),
-(4579, 1201, "SI", "Sipaliwini"),
-(4580, 1201, "WA", "Wanica"),
-(4581, 1207, "P", "Principe"),
-(4582, 1207, "S", "Sao Tome"),
-(4583, 1066, "AH", "Ahuachapan"),
-(4584, 1066, "CA", "Cabanas"),
-(4585, 1066, "CU", "Cuscatlan"),
-(4586, 1066, "CH", "Chalatenango"),
-(4587, 1066, "MO", "Morazan"),
-(4588, 1066, "SM", "San Miguel"),
-(4589, 1066, "SS", "San Salvador"),
-(4590, 1066, "SA", "Santa Ana"),
-(4591, 1066, "SV", "San Vicente"),
-(4592, 1066, "SO", "Sonsonate"),
-(4593, 1066, "US", "Usulutan"),
-(4594, 1206, "HA", "Al Hasakah"),
-(4595, 1206, "LA", "Al Ladhiqiyah"),
-(4596, 1206, "QU", "Al Qunaytirah"),
-(4597, 1206, "RA", "Ar Raqqah"),
-(4598, 1206, "SU", "As Suwayda\'"),
-(4599, 1206, "DR", "Dar\'a"),
-(4600, 1206, "DY", "Dayr az Zawr"),
-(4601, 1206, "DI", "Dimashq"),
-(4602, 1206, "HL", "Halab"),
-(4603, 1206, "HM", "Hamah"),
-(4604, 1206, "HI", "Jim\'"),
-(4605, 1206, "ID", "Idlib"),
-(4606, 1206, "RD", "Rif Dimashq"),
-(4607, 1206, "TA", "Tarts"),
-(4608, 1203, "HH", "Hhohho"),
-(4609, 1203, "LU", "Lubombo"),
-(4610, 1203, "MA", "Manzini"),
-(4611, 1203, "SH", "Shiselweni"),
-(4612, 1043, "BA", "Batha"),
-(4613, 1043, "BI", "Biltine"),
-(4614, 1043, "BET", "Borkou-Ennedi-Tibesti"),
-(4615, 1043, "CB", "Chari-Baguirmi"),
-(4616, 1043, "GR", "Guera"),
-(4617, 1043, "KA", "Kanem"),
-(4618, 1043, "LC", "Lac"),
-(4619, 1043, "LO", "Logone-Occidental"),
-(4620, 1043, "LR", "Logone-Oriental"),
-(4621, 1043, "MK", "Mayo-Kebbi"),
-(4622, 1043, "MC", "Moyen-Chari"),
-(4623, 1043, "OD", "Ouaddai"),
-(4624, 1043, "SA", "Salamat"),
-(4625, 1043, "TA", "Tandjile"),
-(4626, 1214, "K", "Kara"),
-(4627, 1214, "M", "Maritime (Region)"),
-(4628, 1214, "S", "Savannes"),
-(4629, 1211, "10", "Krung Thep Maha Nakhon Bangkok"),
-(4630, 1211, "S", "Phatthaya"),
-(4631, 1211, "37", "Amnat Charoen"),
-(4632, 1211, "15", "Ang Thong"),
-(4633, 1211, "31", "Buri Ram"),
-(4634, 1211, "24", "Chachoengsao"),
-(4635, 1211, "18", "Chai Nat"),
-(4636, 1211, "36", "Chaiyaphum"),
-(4637, 1211, "22", "Chanthaburi"),
-(4638, 1211, "50", "Chiang Mai"),
-(4639, 1211, "57", "Chiang Rai"),
-(4640, 1211, "20", "Chon Buri"),
-(4641, 1211, "86", "Chumphon"),
-(4642, 1211, "46", "Kalasin"),
-(4643, 1211, "62", "Kamphasng Phet"),
-(4644, 1211, "71", "Kanchanaburi"),
-(4645, 1211, "40", "Khon Kaen"),
-(4646, 1211, "81", "Krabi"),
-(4647, 1211, "52", "Lampang"),
-(4648, 1211, "51", "Lamphun"),
-(4649, 1211, "42", "Loei"),
-(4650, 1211, "16", "Lop Buri"),
-(4651, 1211, "58", "Mae Hong Son"),
-(4652, 1211, "44", "Maha Sarakham"),
-(4653, 1211, "49", "Mukdahan"),
-(4654, 1211, "26", "Nakhon Nayok"),
-(4655, 1211, "73", "Nakhon Pathom"),
-(4656, 1211, "48", "Nakhon Phanom"),
-(4657, 1211, "30", "Nakhon Ratchasima"),
-(4658, 1211, "60", "Nakhon Sawan"),
-(4659, 1211, "80", "Nakhon Si Thammarat"),
-(4660, 1211, "55", "Nan"),
-(4661, 1211, "96", "Narathiwat"),
-(4662, 1211, "39", "Nong Bua Lam Phu"),
-(4663, 1211, "43", "Nong Khai"),
-(4664, 1211, "12", "Nonthaburi"),
-(4665, 1211, "13", "Pathum Thani"),
-(4666, 1211, "94", "Pattani"),
-(4667, 1211, "82", "Phangnga"),
-(4668, 1211, "93", "Phatthalung"),
-(4669, 1211, "56", "Phayao"),
-(4670, 1211, "67", "Phetchabun"),
-(4671, 1211, "76", "Phetchaburi"),
-(4672, 1211, "66", "Phichit"),
-(4673, 1211, "65", "Phitsanulok"),
-(4674, 1211, "54", "Phrae"),
-(4675, 1211, "14", "Phra Nakhon Si Ayutthaya"),
-(4676, 1211, "83", "Phuket"),
-(4677, 1211, "25", "Prachin Buri"),
-(4678, 1211, "77", "Prachuap Khiri Khan"),
-(4679, 1211, "85", "Ranong"),
-(4680, 1211, "70", "Ratchaburi"),
-(4681, 1211, "21", "Rayong"),
-(4682, 1211, "45", "Roi Et"),
-(4683, 1211, "27", "Sa Kaeo"),
-(4684, 1211, "47", "Sakon Nakhon"),
-(4685, 1211, "11", "Samut Prakan"),
-(4686, 1211, "74", "Samut Sakhon"),
-(4687, 1211, "75", "Samut Songkhram"),
-(4688, 1211, "19", "Saraburi"),
-(4689, 1211, "91", "Satun"),
-(4690, 1211, "17", "Sing Buri"),
-(4691, 1211, "33", "Si Sa Ket"),
-(4692, 1211, "90", "Songkhla"),
-(4693, 1211, "64", "Sukhothai"),
-(4694, 1211, "72", "Suphan Buri"),
-(4695, 1211, "84", "Surat Thani"),
-(4696, 1211, "32", "Surin"),
-(4697, 1211, "63", "Tak"),
-(4698, 1211, "92", "Trang"),
-(4699, 1211, "23", "Trat"),
-(4700, 1211, "34", "Ubon Ratchathani"),
-(4701, 1211, "41", "Udon Thani"),
-(4702, 1211, "61", "Uthai Thani"),
-(4703, 1211, "53", "Uttaradit"),
-(4704, 1211, "95", "Yala"),
-(4705, 1211, "35", "Yasothon"),
-(4706, 1209, "SU", "Sughd"),
-(4707, 1209, "KT", "Khatlon"),
-(4708, 1209, "GB", "Gorno-Badakhshan"),
-(4709, 1220, "A", "Ahal"),
-(4710, 1220, "B", "Balkan"),
-(4711, 1220, "D", "Dasoguz"),
-(4712, 1220, "L", "Lebap"),
-(4713, 1220, "M", "Mary"),
-(4714, 1218, "31", "Béja"),
-(4715, 1218, "13", "Ben Arous"),
-(4716, 1218, "23", "Bizerte"),
-(4717, 1218, "81", "Gabès"),
-(4718, 1218, "71", "Gafsa"),
-(4719, 1218, "32", "Jendouba"),
-(4720, 1218, "41", "Kairouan"),
-(4721, 1218, "42", "Rasserine"),
-(4722, 1218, "73", "Kebili"),
-(4723, 1218, "12", "L\'Ariana"),
-(4724, 1218, "33", "Le Ref"),
-(4725, 1218, "53", "Mahdia"),
-(4726, 1218, "14", "La Manouba"),
-(4727, 1218, "82", "Medenine"),
-(4728, 1218, "52", "Moneatir"),
-(4729, 1218, "21", "Naboul"),
-(4730, 1218, "61", "Sfax"),
-(4731, 1218, "43", "Sidi Bouxid"),
-(4732, 1218, "34", "Siliana"),
-(4733, 1218, "51", "Sousse"),
-(4734, 1218, "83", "Tataouine"),
-(4735, 1218, "72", "Tozeur"),
-(4736, 1218, "11", "Tunis"),
-(4737, 1218, "22", "Zaghouan"),
-(4738, 1219, "01", "Adana"),
-(4739, 1219, "02", "Ad yaman"),
-(4740, 1219, "03", "Afyon"),
-(4741, 1219, "04", "Ag r"),
-(4742, 1219, "68", "Aksaray"),
-(4743, 1219, "05", "Amasya"),
-(4744, 1219, "06", "Ankara"),
-(4745, 1219, "07", "Antalya"),
-(4746, 1219, "75", "Ardahan"),
-(4747, 1219, "08", "Artvin"),
-(4748, 1219, "09", "Aydin"),
-(4749, 1219, "10", "Bal kesir"),
-(4750, 1219, "74", "Bartin"),
-(4751, 1219, "72", "Batman"),
-(4752, 1219, "69", "Bayburt"),
-(4753, 1219, "11", "Bilecik"),
-(4754, 1219, "12", "Bingol"),
-(4755, 1219, "13", "Bitlis"),
-(4756, 1219, "14", "Bolu"),
-(4757, 1219, "15", "Burdur"),
-(4758, 1219, "16", "Bursa"),
-(4759, 1219, "17", "Canakkale"),
-(4760, 1219, "18", "Cankir"),
-(4761, 1219, "19", "Corum"),
-(4762, 1219, "20", "Denizli"),
-(4763, 1219, "21", "Diyarbakir"),
-(4764, 1219, "81", "Duzce"),
-(4765, 1219, "22", "Edirne"),
-(4766, 1219, "23", "Elazig"),
-(4767, 1219, "24", "Erzincan"),
-(4768, 1219, "25", "Erzurum"),
-(4769, 1219, "26", "Eskis\'ehir"),
-(4770, 1219, "27", "Gaziantep"),
-(4771, 1219, "28", "Giresun"),
-(4772, 1219, "29", "Gms\'hane"),
-(4773, 1219, "30", "Hakkari"),
-(4774, 1219, "31", "Hatay"),
-(4775, 1219, "76", "Igidir"),
-(4776, 1219, "32", "Isparta"),
-(4777, 1219, "33", "Icel"),
-(4778, 1219, "34", "Istanbul"),
-(4779, 1219, "35", "Izmir"),
-(4780, 1219, "46", "Kahramanmaras"),
-(4781, 1219, "78", "Karabk"),
-(4782, 1219, "70", "Karaman"),
-(4783, 1219, "36", "Kars"),
-(4784, 1219, "37", "Kastamonu"),
-(4785, 1219, "38", "Kayseri"),
-(4786, 1219, "71", "Kirikkale"),
-(4787, 1219, "39", "Kirklareli"),
-(4788, 1219, "40", "Kirs\'ehir"),
-(4789, 1219, "79", "Kilis"),
-(4790, 1219, "41", "Kocaeli"),
-(4791, 1219, "42", "Konya"),
-(4792, 1219, "43", "Ktahya"),
-(4793, 1219, "44", "Malatya"),
-(4794, 1219, "45", "Manisa"),
-(4795, 1219, "47", "Mardin"),
-(4796, 1219, "48", "Mugila"),
-(4797, 1219, "49", "Mus"),
-(4798, 1219, "50", "Nevs\'ehir"),
-(4799, 1219, "51", "Nigide"),
-(4800, 1219, "52", "Ordu"),
-(4801, 1219, "80", "Osmaniye"),
-(4802, 1219, "53", "Rize"),
-(4803, 1219, "54", "Sakarya"),
-(4804, 1219, "55", "Samsun"),
-(4805, 1219, "56", "Siirt"),
-(4806, 1219, "57", "Sinop"),
-(4807, 1219, "58", "Sivas"),
-(4808, 1219, "63", "S\'anliurfa"),
-(4809, 1219, "73", "S\'rnak"),
-(4810, 1219, "59", "Tekirdag"),
-(4811, 1219, "60", "Tokat"),
-(4812, 1219, "61", "Trabzon"),
-(4813, 1219, "62", "Tunceli"),
-(4814, 1219, "64", "Us\'ak"),
-(4815, 1219, "65", "Van"),
-(4816, 1219, "77", "Yalova"),
-(4817, 1219, "66", "Yozgat"),
-(4818, 1219, "67", "Zonguldak"),
-(4819, 1217, "CTT", "Couva-Tabaquite-Talparo"),
-(4820, 1217, "DMN", "Diego Martin"),
-(4821, 1217, "ETO", "Eastern Tobago"),
-(4822, 1217, "PED", "Penal-Debe"),
-(4823, 1217, "PRT", "Princes Town"),
-(4824, 1217, "RCM", "Rio Claro-Mayaro"),
-(4825, 1217, "SGE", "Sangre Grande"),
-(4826, 1217, "SJL", "San Juan-Laventille"),
-(4827, 1217, "SIP", "Siparia"),
-(4828, 1217, "TUP", "Tunapuna-Piarco"),
-(4829, 1217, "WTO", "Western Tobago"),
-(4830, 1217, "ARI", "Arima"),
-(4831, 1217, "CHA", "Chaguanas"),
-(4832, 1217, "PTF", "Point Fortin"),
-(4833, 1217, "POS", "Port of Spain"),
-(4834, 1217, "SFO", "San Fernando"),
-(4835, 1063, "AL", "Aileu"),
-(4836, 1063, "AN", "Ainaro"),
-(4837, 1063, "BA", "Bacucau"),
-(4838, 1063, "BO", "Bobonaro"),
-(4839, 1063, "CO", "Cova Lima"),
-(4840, 1063, "DI", "Dili"),
-(4841, 1063, "ER", "Ermera"),
-(4842, 1063, "LA", "Laulem"),
-(4843, 1063, "LI", "Liquica"),
-(4844, 1063, "MT", "Manatuto"),
-(4845, 1063, "MF", "Manafahi"),
-(4846, 1063, "OE", "Oecussi"),
-(4847, 1063, "VI", "Viqueque"),
-(4848, 1208, "CHA", "Changhua County"),
-(4849, 1208, "CYQ", "Chiayi County"),
-(4850, 1208, "HSQ", "Hsinchu County"),
-(4851, 1208, "HUA", "Hualien County"),
-(4852, 1208, "ILA", "Ilan County"),
-(4853, 1208, "KHQ", "Kaohsiung County"),
-(4854, 1208, "MIA", "Miaoli County"),
-(4855, 1208, "NAN", "Nantou County"),
-(4856, 1208, "PEN", "Penghu County"),
-(4857, 1208, "PIF", "Pingtung County"),
-(4858, 1208, "TXQ", "Taichung County"),
-(4859, 1208, "TNQ", "Tainan County"),
-(4860, 1208, "TPQ", "Taipei County"),
-(4861, 1208, "TTT", "Taitung County"),
-(4862, 1208, "TAO", "Taoyuan County"),
-(4863, 1208, "YUN", "Yunlin County"),
-(4864, 1208, "KEE", "Keelung City"),
-(4865, 1210, "01", "Arusha"),
-(4866, 1210, "02", "Dar-es-Salaam"),
-(4867, 1210, "03", "Dodoma"),
-(4868, 1210, "04", "Iringa"),
-(4869, 1210, "05", "Kagera"),
-(4870, 1210, "06", "Kaskazini Pemba"),
-(4871, 1210, "07", "Kaskazini Unguja"),
-(4872, 1210, "08", "Xigoma"),
-(4873, 1210, "09", "Kilimanjaro"),
-(4874, 1210, "10", "Rusini Pemba"),
-(4875, 1210, "11", "Kusini Unguja"),
-(4876, 1210, "12", "Lindi"),
-(4877, 1210, "26", "Manyara"),
-(4878, 1210, "13", "Mara"),
-(4879, 1210, "14", "Mbeya"),
-(4880, 1210, "15", "Mjini Magharibi"),
-(4881, 1210, "16", "Morogoro"),
-(4882, 1210, "17", "Mtwara"),
-(4883, 1210, "19", "Pwani"),
-(4884, 1210, "20", "Rukwa"),
-(4885, 1210, "21", "Ruvuma"),
-(4886, 1210, "22", "Shinyanga"),
-(4887, 1210, "23", "Singida"),
-(4888, 1210, "24", "Tabora"),
-(4889, 1210, "25", "Tanga"),
-(4890, 1224, "71", "Cherkas\'ka Oblast\'"),
-(4891, 1224, "74", "Chernihivs\'ka Oblast\'"),
-(4892, 1224, "77", "Chernivets\'ka Oblast\'"),
-(4893, 1224, "12", "Dnipropetrovs\'ka Oblast\'"),
-(4894, 1224, "14", "Donets\'ka Oblast\'"),
-(4895, 1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
-(4896, 1224, "63", "Kharkivs\'ka Oblast\'"),
-(4897, 1224, "65", "Khersons\'ka Oblast\'"),
-(4898, 1224, "68", "Khmel\'nyts\'ka Oblast\'"),
-(4899, 1224, "35", "Kirovohrads\'ka Oblast\'"),
-(4900, 1224, "32", "Kyivs\'ka Oblast\'"),
-(4901, 1224, "09", "Luhans\'ka Oblast\'"),
-(4902, 1224, "46", "L\'vivs\'ka Oblast\'"),
-(4903, 1224, "48", "Mykolaivs\'ka Oblast\'"),
-(4904, 1224, "51", "Odes \'ka Oblast\'"),
-(4905, 1224, "53", "Poltavs\'ka Oblast\'"),
-(4906, 1224, "56", "Rivnens\'ka Oblast\'"),
-(4907, 1224, "59", "Sums \'ka Oblast\'"),
-(4908, 1224, "61", "Ternopil\'s\'ka Oblast\'"),
-(4909, 1224, "05", "Vinnyts\'ka Oblast\'"),
-(4910, 1224, "07", "Volyos\'ka Oblast\'"),
-(4911, 1224, "21", "Zakarpats\'ka Oblast\'"),
-(4912, 1224, "23", "Zaporiz\'ka Oblast\'"),
-(4913, 1224, "18", "Zhytomyrs\'ka Oblast\'"),
-(4914, 1224, "43", "Respublika Krym"),
-(4915, 1224, "30", "Kyiv"),
-(4916, 1224, "40", "Sevastopol"),
-(4917, 1223, "301", "Adjumani"),
-(4918, 1223, "302", "Apac"),
-(4919, 1223, "303", "Arua"),
-(4920, 1223, "201", "Bugiri"),
-(4921, 1223, "401", "Bundibugyo"),
-(4922, 1223, "402", "Bushenyi"),
-(4923, 1223, "202", "Busia"),
-(4924, 1223, "304", "Gulu"),
-(4925, 1223, "403", "Hoima"),
-(4926, 1223, "203", "Iganga"),
-(4927, 1223, "204", "Jinja"),
-(4928, 1223, "404", "Kabale"),
-(4929, 1223, "405", "Kabarole"),
-(4930, 1223, "213", "Kaberamaido"),
-(4931, 1223, "101", "Kalangala"),
-(4932, 1223, "102", "Kampala"),
-(4933, 1223, "205", "Kamuli"),
-(4934, 1223, "413", "Kamwenge"),
-(4935, 1223, "414", "Kanungu"),
-(4936, 1223, "206", "Kapchorwa"),
-(4937, 1223, "406", "Kasese"),
-(4938, 1223, "207", "Katakwi"),
-(4939, 1223, "112", "Kayunga"),
-(4940, 1223, "407", "Kibaale"),
-(4941, 1223, "103", "Kiboga"),
-(4942, 1223, "408", "Kisoro"),
-(4943, 1223, "305", "Kitgum"),
-(4944, 1223, "306", "Kotido"),
-(4945, 1223, "208", "Kumi"),
-(4946, 1223, "415", "Kyenjojo"),
-(4947, 1223, "307", "Lira"),
-(4948, 1223, "104", "Luwero"),
-(4949, 1223, "105", "Masaka"),
-(4950, 1223, "409", "Masindi"),
-(4951, 1223, "214", "Mayuge"),
-(4952, 1223, "209", "Mbale"),
-(4953, 1223, "410", "Mbarara"),
-(4954, 1223, "308", "Moroto"),
-(4955, 1223, "309", "Moyo"),
-(4956, 1223, "106", "Mpigi"),
-(4957, 1223, "107", "Mubende"),
-(4958, 1223, "108", "Mukono"),
-(4959, 1223, "311", "Nakapiripirit"),
-(4960, 1223, "109", "Nakasongola"),
-(4961, 1223, "310", "Nebbi"),
-(4962, 1223, "411", "Ntungamo"),
-(4963, 1223, "312", "Pader"),
-(4964, 1223, "210", "Pallisa"),
-(4965, 1223, "110", "Rakai"),
-(4966, 1223, "412", "Rukungiri"),
-(4967, 1223, "111", "Sembabule"),
-(4968, 1223, "215", "Sironko"),
-(4969, 1223, "211", "Soroti"),
-(4970, 1223, "212", "Tororo"),
-(4971, 1223, "113", "Wakiso"),
-(4972, 1223, "313", "Yumbe"),
-(4973, 1227, "81", "Baker Island"),
-(4974, 1227, "84", "Howland Island"),
-(4975, 1227, "86", "Jarvis Island"),
-(4976, 1227, "67", "Johnston Atoll"),
-(4977, 1227, "89", "Kingman Reef"),
-(4978, 1227, "71", "Midway Islands"),
-(4979, 1227, "76", "Navassa Island"),
-(4980, 1227, "95", "Palmyra Atoll"),
-(4981, 1227, "79", "Wake Island"),
-(4982, 1229, "AR", "Artigsa"),
-(4983, 1229, "CA", "Canelones"),
-(4984, 1229, "CL", "Cerro Largo"),
-(4985, 1229, "CO", "Colonia"),
-(4986, 1229, "DU", "Durazno"),
-(4987, 1229, "FS", "Flores"),
-(4988, 1229, "LA", "Lavalleja"),
-(4989, 1229, "MA", "Maldonado"),
-(4990, 1229, "MO", "Montevideo"),
-(4991, 1229, "PA", "Paysandu"),
-(4992, 1229, "RV", "Rivera"),
-(4993, 1229, "RO", "Rocha"),
-(4994, 1229, "SA", "Salto"),
-(4995, 1229, "SO", "Soriano"),
-(4996, 1229, "TA", "Tacuarembo"),
-(4997, 1229, "TT", "Treinta y Tres"),
-(4998, 1230, "TK", "Toshkent (city)"),
-(4999, 1230, "QR", "Qoraqalpogiston Respublikasi"),
-(5000, 1230, "AN", "Andijon"),
-(5001, 1230, "BU", "Buxoro"),
-(5002, 1230, "FA", "Farg\'ona"),
-(5003, 1230, "JI", "Jizzax"),
-(5004, 1230, "KH", "Khorazm"),
-(5005, 1230, "NG", "Namangan"),
-(5006, 1230, "NW", "Navoiy"),
-(5007, 1230, "QA", "Qashqadaryo"),
-(5008, 1230, "SA", "Samarqand"),
-(5009, 1230, "SI", "Sirdaryo"),
-(5010, 1230, "SU", "Surxondaryo"),
-(5011, 1230, "TO", "Toshkent"),
-(5012, 1230, "XO", "Xorazm"),
-(5013, 1232, "A", "Distrito Federal"),
-(5014, 1232, "B", "Anzoategui"),
-(5015, 1232, "C", "Apure"),
-(5016, 1232, "D", "Aragua"),
-(5017, 1232, "E", "Barinas"),
-(5018, 1232, "G", "Carabobo"),
-(5019, 1232, "H", "Cojedes"),
-(5020, 1232, "I", "Falcon"),
-(5021, 1232, "J", "Guarico"),
-(5022, 1232, "K", "Lara"),
-(5023, 1232, "L", "Merida"),
-(5024, 1232, "M", "Miranda"),
-(5025, 1232, "N", "Monagas"),
-(5026, 1232, "O", "Nueva Esparta"),
-(5027, 1232, "P", "Portuguesa"),
-(5028, 1232, "S", "Tachira"),
-(5029, 1232, "T", "Trujillo"),
-(5030, 1232, "X", "Vargas"),
-(5031, 1232, "U", "Yaracuy"),
-(5032, 1232, "V", "Zulia"),
-(5033, 1232, "Y", "Delta Amacuro"),
-(5034, 1232, "W", "Dependencias Federales"),
-(5035, 1233, "44", "An Giang"),
-(5036, 1233, "43", "Ba Ria - Vung Tau"),
-(5037, 1233, "53", "Bac Can"),
-(5038, 1233, "54", "Bac Giang"),
-(5039, 1233, "55", "Bac Lieu"),
-(5040, 1233, "56", "Bac Ninh"),
-(5041, 1233, "50", "Ben Tre"),
-(5042, 1233, "31", "Binh Dinh"),
-(5043, 1233, "57", "Binh Duong"),
-(5044, 1233, "58", "Binh Phuoc"),
-(5045, 1233, "40", "Binh Thuan"),
-(5046, 1233, "59", "Ca Mau"),
-(5047, 1233, "48", "Can Tho"),
-(5048, 1233, "04", "Cao Bang"),
-(5049, 1233, "60", "Da Nang, thanh pho"),
-(5050, 1233, "39", "Dong Nai"),
-(5051, 1233, "45", "Dong Thap"),
-(5052, 1233, "30", "Gia Lai"),
-(5053, 1233, "03", "Ha Giang"),
-(5054, 1233, "63", "Ha Nam"),
-(5055, 1233, "64", "Ha Noi, thu do"),
-(5056, 1233, "15", "Ha Tay"),
-(5057, 1233, "23", "Ha Tinh"),
-(5058, 1233, "61", "Hai Duong"),
-(5059, 1233, "62", "Hai Phong, thanh pho"),
-(5060, 1233, "14", "Hoa Binh"),
-(5061, 1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
-(5062, 1233, "66", "Hung Yen"),
-(5063, 1233, "34", "Khanh Hoa"),
-(5064, 1233, "47", "Kien Giang"),
-(5065, 1233, "28", "Kon Tum"),
-(5066, 1233, "01", "Lai Chau"),
-(5067, 1233, "35", "Lam Dong"),
-(5068, 1233, "09", "Lang Son"),
-(5069, 1233, "02", "Lao Cai"),
-(5070, 1233, "41", "Long An"),
-(5071, 1233, "67", "Nam Dinh"),
-(5072, 1233, "22", "Nghe An"),
-(5073, 1233, "18", "Ninh Binh"),
-(5074, 1233, "36", "Ninh Thuan"),
-(5075, 1233, "68", "Phu Tho"),
-(5076, 1233, "32", "Phu Yen"),
-(5077, 1233, "24", "Quang Binh"),
-(5078, 1233, "27", "Quang Nam"),
-(5079, 1233, "29", "Quang Ngai"),
-(5080, 1233, "13", "Quang Ninh"),
-(5081, 1233, "25", "Quang Tri"),
-(5082, 1233, "52", "Soc Trang"),
-(5083, 1233, "05", "Son La"),
-(5084, 1233, "37", "Tay Ninh"),
-(5085, 1233, "20", "Thai Binh"),
-(5086, 1233, "69", "Thai Nguyen"),
-(5087, 1233, "21", "Thanh Hoa"),
-(5088, 1233, "26", "Thua Thien-Hue"),
-(5089, 1233, "46", "Tien Giang"),
-(5090, 1233, "51", "Tra Vinh"),
-(5091, 1233, "07", "Tuyen Quang"),
-(5092, 1233, "49", "Vinh Long"),
-(5093, 1233, "70", "Vinh Phuc"),
-(5094, 1233, "06", "Yen Bai"),
-(5095, 1231, "MAP", "Malampa"),
-(5096, 1231, "PAM", "Penama"),
-(5097, 1231, "SAM", "Sanma"),
-(5098, 1231, "SEE", "Shefa"),
-(5099, 1231, "TAE", "Tafea"),
-(5100, 1231, "TOB", "Torba"),
-(5101, 1185, "AA", "A\'ana"),
-(5102, 1185, "AL", "Aiga-i-le-Tai"),
-(5103, 1185, "AT", "Atua"),
-(5104, 1185, "FA", "Fa\'aaaleleaga"),
-(5105, 1185, "GE", "Gaga\'emauga"),
-(5106, 1185, "GI", "Gagaifomauga"),
-(5107, 1185, "PA", "Palauli"),
-(5108, 1185, "SA", "Satupa\'itea"),
-(5109, 1185, "TU", "Tuamasaga"),
-(5110, 1185, "VF", "Va\'a-o-Fonoti"),
-(5111, 1185, "VS", "Vaisigano"),
-(5112, 1243, "CG", "Crna Gora"),
-(5113, 1242, "SR", "Srbija"),
-(5114, 1242, "KM", "Kosovo-Metohija"),
-(5115, 1242, "VO", "Vojvodina"),
-(5116, 1237, "AB", "Abyan"),
-(5117, 1237, "AD", "Adan"),
-(5118, 1237, "DA", "Ad Dali"),
-(5119, 1237, "BA", "Al Bayda\'"),
-(5120, 1237, "MU", "Al Hudaydah"),
-(5121, 1237, "MR", "Al Mahrah"),
-(5122, 1237, "MW", "Al Mahwit"),
-(5123, 1237, "AM", "Amran"),
-(5124, 1237, "DH", "Dhamar"),
-(5125, 1237, "HD", "Hadramawt"),
-(5126, 1237, "HJ", "Hajjah"),
-(5127, 1237, "IB", "Ibb"),
-(5128, 1237, "LA", "Lahij"),
-(5129, 1237, "MA", "Ma\'rib"),
-(5130, 1237, "SD", "Sa\'dah"),
-(5131, 1237, "SN", "San\'a\'"),
-(5132, 1237, "SH", "Shabwah"),
-(5133, 1237, "TA", "Ta\'izz"),
-(5134, 1196, "EC", "Eastern Cape"),
-(5135, 1196, "FS", "Free State"),
-(5136, 1196, "GT", "Gauteng"),
-(5137, 1196, "NL", "Kwazulu-Natal"),
-(5138, 1196, "MP", "Mpumalanga"),
-(5139, 1196, "NC", "Northern Cape"),
-(5140, 1196, "NP", "Limpopo"),
-(5141, 1196, "WC", "Western Cape"),
-(5142, 1239, "08", "Copperbelt"),
-(5143, 1239, "04", "Luapula"),
-(5144, 1239, "09", "Lusaka"),
-(5145, 1239, "06", "North-Western"),
-(5146, 1240, "BU", "Bulawayo"),
-(5147, 1240, "HA", "Harare"),
-(5148, 1240, "MA", "Manicaland"),
-(5149, 1240, "MC", "Mashonaland Central"),
-(5150, 1240, "ME", "Mashonaland East"),
-(5151, 1240, "MW", "Mashonaland West"),
-(5152, 1240, "MV", "Masvingo"),
-(5153, 1240, "MN", "Matabeleland North"),
-(5154, 1240, "MS", "Matabeleland South"),
-(5155, 1240, "MI", "Midlands"),
-(5156, 1075, "SK", "South Karelia"),
-(5157, 1075, "SO", "South Ostrobothnia"),
-(5158, 1075, "ES", "Etelä-Savo"),
-(5159, 1075, "HH", "Häme"),
-(5160, 1075, "IU", "Itä-Uusimaa"),
-(5161, 1075, "KA", "Kainuu"),
-(5162, 1075, "CO", "Central Ostrobothnia"),
-(5163, 1075, "CF", "Central Finland"),
-(5164, 1075, "KY", "Kymenlaakso"),
-(5165, 1075, "LA", "Lapland"),
-(5166, 1075, "TR", "Tampere Region"),
-(5167, 1075, "OB", "Ostrobothnia"),
-(5168, 1075, "NK", "North Karelia"),
-(5169, 1075, "NO", "Northern Ostrobothnia"),
-(5170, 1075, "NS", "Northern Savo"),
-(5171, 1075, "PH", "Päijät-Häme"),
-(5172, 1075, "SK", "Satakunta"),
-(5173, 1075, "UM", "Uusimaa"),
-(5174, 1075, "SW", "South-West Finland"),
-(5175, 1075, "AL", "Ã…land"),
-(5176, 1152, "LI", "Limburg"),
-(5177, 1098, "CW", "Central and Western"),
-(5178, 1098, "EA", "Eastern"),
-(5179, 1098, "SO", "Southern"),
-(5180, 1098, "WC", "Wan Chai"),
-(5181, 1098, "KC", "Kowloon City"),
-(5182, 1098, "KU", "Kwun Tong"),
-(5183, 1098, "SS", "Sham Shui Po"),
-(5184, 1098, "WT", "Wong Tai Sin"),
-(5185, 1098, "YT", "Yau Tsim Mong"),
-(5186, 1098, "IS", "Islands"),
-(5187, 1098, "KI", "Kwai Tsing"),
-(5188, 1098, "NO", "North"),
-(5189, 1098, "SK", "Sai Kung"),
-(5190, 1098, "ST", "Sha Tin"),
-(5191, 1098, "TP", "Tai Po"),
-(5192, 1098, "TW", "Tsuen Wan"),
-(5193, 1098, "TM", "Tuen Mun"),
-(5194, 1098, "YL", "Yuen Long"),
-(5195, 1108, "MR", "Manchester"),
-(5196, 1016, "13", "Al Manāmah (Al ‘Āşimah)"),
-(5197, 1016, "14", "Al Janūbīyah"),
--- (5198, 1016, "15", "Al Muḩarraq"), -- conflicts with id 1872, Al Muharraq
-(5199, 1016, "16", "Al Wusţá"),
-(5200, 1016, "17", "Ash Shamālīyah"),
-
+(1074, "E", "Eastern"),
+(1074, "N", "Northern"),
+(1074, "W", "Western"),
+(1074, "R", "Rotuma"),
+(1074, "C", "Central"),
+(1141, "TRK", "Chuuk"),
+(1141, "KSA", "Kosrae"),
+(1141, "PNI", "Pohnpei"),
+(1141, "YAP", "Yap"),
+(1076, "01", "Ain"),
+(1076, "02", "Aisne"),
+(1076, "03", "Allier"),
+(1076, "04", "Alpes-de-Haute-Provence"),
+(1076, "06", "Alpes-Maritimes"),
+(1076, "07", "Ardèche"),
+(1076, "08", "Ardennes"),
+(1076, "09", "Ariège"),
+(1076, "10", "Aube"),
+(1076, "11", "Aude"),
+(1076, "12", "Aveyron"),
+(1076, "67", "Bas-Rhin"),
+(1076, "13", "Bouches-du-Rhône"),
+(1076, "14", "Calvados"),
+(1076, "15", "Cantal"),
+(1076, "16", "Charente"),
+(1076, "17", "Charente-Maritime"),
+(1076, "18", "Cher"),
+(1076, "19", "Corrèze"),
+(1076, "20A", "Corse-du-Sud"),
+(1076, "21", "Côte-d\'Or"),
+(1076, "22", "Côtes-d\'Armor"),
+(1076, "23", "Creuse"),
+(1076, "79", "Deux-Sèvres"),
+(1076, "24", "Dordogne"),
+(1076, "25", "Doubs"),
+(1076, "26", "Drôme"),
+(1076, "91", "Essonne"),
+(1076, "27", "Eure"),
+(1076, "28", "Eure-et-Loir"),
+(1076, "29", "Finistère"),
+(1076, "30", "Gard"),
+(1076, "32", "Gers"),
+(1076, "33", "Gironde"),
+(1076, "68", "Haut-Rhin"),
+(1076, "20B", "Haute-Corse"),
+(1076, "31", "Haute-Garonne"),
+(1076, "43", "Haute-Loire"),
+(1076, "70", "Haute-Saône"),
+(1076, "74", "Haute-Savoie"),
+(1076, "87", "Haute-Vienne"),
+(1076, "05", "Hautes-Alpes"),
+(1076, "65", "Hautes-Pyrénées"),
+(1076, "92", "Hauts-de-Seine"),
+(1076, "34", "Hérault"),
+(1076, "36", "Indre"),
+(1076, "35", "Ille-et-Vilaine"),
+(1076, "37", "Indre-et-Loire"),
+(1076, "38", "Isère"),
+(1076, "40", "Landes"),
+(1076, "41", "Loir-et-Cher"),
+(1076, "42", "Loire"),
+(1076, "44", "Loire-Atlantique"),
+(1076, "45", "Loiret"),
+(1076, "46", "Lot"),
+(1076, "47", "Lot-et-Garonne"),
+(1076, "48", "Lozère"),
+(1076, "49", "Maine-et-Loire"),
+(1076, "50", "Manche"),
+(1076, "51", "Marne"),
+(1076, "53", "Mayenne"),
+(1076, "54", "Meurthe-et-Moselle"),
+(1076, "55", "Meuse"),
+(1076, "56", "Morbihan"),
+(1076, "57", "Moselle"),
+(1076, "58", "Nièvre"),
+(1076, "59", "Nord"),
+(1076, "60", "Oise"),
+(1076, "61", "Orne"),
+(1076, "75", "Paris"),
+(1076, "62", "Pas-de-Calais"),
+(1076, "63", "Puy-de-Dôme"),
+(1076, "64", "Pyrénées-Atlantiques"),
+(1076, "66", "Pyrénées-Orientales"),
+(1076, "69", "Rhône"),
+(1076, "71", "Saône-et-Loire"),
+(1076, "72", "Sarthe"),
+(1076, "73", "Savoie"),
+(1076, "77", "Seine-et-Marne"),
+(1076, "76", "Seine-Maritime"),
+(1076, "93", "Seine-Saint-Denis"),
+(1076, "80", "Somme"),
+(1076, "81", "Tarn"),
+(1076, "82", "Tarn-et-Garonne"),
+(1076, "95", "Val d\'Oise"),
+(1076, "90", "Territoire de Belfort"),
+(1076, "94", "Val-de-Marne"),
+(1076, "83", "Var"),
+(1076, "84", "Vaucluse"),
+(1076, "85", "Vendée"),
+(1076, "86", "Vienne"),
+(1076, "88", "Vosges"),
+(1076, "89", "Yonne"),
+(1076, "78", "Yvelines"),
+(1076, "GP", "Guadeloupe"),
+(1076, "MQ", "Martinique"),
+(1076, "GF", "Guyane"),
+(1076, "RE", "La Réunion"),
+(1076, "YT", "Mayotte"),
+(1076, "WF", "Wallis-et-Futuna"),
+(1076, "NC", "Nouvelle-Calédonie"),
+(1076, "52", "Haute-Marne"),
+(1076, "39", "Jura"),
+(1226, "ABE", "Aberdeen City"),
+(1226, "ABD", "Aberdeenshire"),
+(1226, "ANS", "Angus"),
+(1226, "ANT", "Co Antrim"),
+(1226, "AGB", "Argyll and Bute"),
+(1226, "ARM", "Co Armagh"),
+(1226, "BDF", "Bedfordshire"),
+(1226, "BGW", "Blaenau Gwent"),
+(1226, "BST", "Bristol, City of"),
+(1226, "BKM", "Buckinghamshire"),
+(1226, "CAM", "Cambridgeshire"),
+(1226, "CHS", "Cheshire"),
+(1226, "CLK", "Clackmannanshire"),
+(1226, "CON", "Cornwall"),
+(1226, "CMA", "Cumbria"),
+(1226, "DBY", "Derbyshire"),
+(1226, "DRY", "Co Londonderry"),
+(1226, "DEV", "Devon"),
+(1226, "DOR", "Dorset"),
+(1226, "DOW", "Co Down"),
+(1226, "DGY", "Dumfries and Galloway"),
+(1226, "DND", "Dundee City"),
+(1226, "DUR", "County Durham"),
+(1226, "EAY", "East Ayrshire"),
+(1226, "EDU", "East Dunbartonshire"),
+(1226, "ELN", "East Lothian"),
+(1226, "ERW", "East Renfrewshire"),
+(1226, "ERY", "East Riding of Yorkshire"),
+(1226, "ESX", "East Sussex"),
+(1226, "EDH", "Edinburgh, City of"),
+(1226, "ELS", "Na h-Eileanan Siar"),
+(1226, "ESS", "Essex"),
+(1226, "FAL", "Falkirk"),
+(1226, "FER", "Co Fermanagh"),
+(1226, "FIF", "Fife"),
+(1226, "GLG", "Glasgow City"),
+(1226, "GLS", "Gloucestershire"),
+(1226, "GWN", "Gwynedd"),
+(1226, "HAM", "Hampshire"),
+(1226, "HEF", "Herefordshire"),
+(1226, "HRT", "Hertfordshire"),
+(1226, "HED", "Highland"),
+(1226, "IVC", "Inverclyde"),
+(1226, "IOW", "Isle of Wight"),
+(1226, "KEN", "Kent"),
+(1226, "LAN", "Lancashire"),
+(1226, "LEC", "Leicestershire"),
+(1226, "LIN", "Lincolnshire"),
+(1226, "MLN", "Midlothian"),
+(1226, "MRY", "Moray"),
+(1226, "NFK", "Norfolk"),
+(1226, "NAY", "North Ayrshire"),
+(1226, "NLK", "North Lanarkshire"),
+(1226, "NYK", "North Yorkshire"),
+(1226, "NTH", "Northamptonshire"),
+(1226, "NBL", "Northumberland"),
+(1226, "NTT", "Nottinghamshire"),
+(1226, "OLD", "Oldham"),
+(1226, "OMH", "Omagh"),
+(1226, "ORR", "Orkney Islands"),
+(1226, "OXF", "Oxfordshire"),
+(1226, "PKN", "Perth and Kinross"),
+(1226, "POW", "Powys"),
+(1226, "RFW", "Renfrewshire"),
+(1226, "RUT", "Rutland"),
+(1226, "SCB", "Scottish Borders"),
+(1226, "ZET", "Shetland Islands"),
+(1226, "SHR", "Shropshire"),
+(1226, "SOM", "Somerset"),
+(1226, "SAY", "South Ayrshire"),
+(1226, "SGC", "South Gloucestershire"),
+(1226, "SLK", "South Lanarkshire"),
+(1226, "STS", "Staffordshire"),
+(1226, "STG", "Stirling"),
+(1226, "SFK", "Suffolk"),
+(1226, "SRY", "Surrey"),
+(1226, "VGL", "Vale of Glamorgan, The"),
+(1226, "WAR", "Warwickshire"),
+(1226, "WDU", "West Dunbartonshire"),
+(1226, "WLN", "West Lothian"),
+(1226, "WSX", "West Sussex"),
+(1226, "WIL", "Wiltshire"),
+(1226, "WOR", "Worcestershire"),
+(1226, "ANN", "Antrim and Newtownabbey"),
+(1226, "AND", "Ards and North Down"),
+(1226, "ABC", "Armagh City, Banbridge and Craigavon"),
+(1226, "BFS", "Belfast"),
+(1226, "CCG", "Causeway Coast and Glens"),
+(1226, "DRS", "Derry City and Strabane"),
+(1226, "FMO", "Fermanagh and Omagh"),
+(1226, "LBC", "Lisburn and Castlereagh"),
+(1226, "MEA", "Mid and East Antrim"),
+(1226, "MUL", "Mid Ulster"),
+(1226, "NMD", "Newry, Mourne and Down"),
+(1226, "BGE", "Bridgend"),
+(1226, "CAY", "Caerphilly"),
+(1226, "CRF", "Cardiff"),
+(1226, "CMN", "Carmarthenshire"),
+(1226, "CGN", "Ceredigion"),
+(1226, "CWY", "Conwy"),
+(1226, "DEN", "Denbighshire"),
+(1226, "FLN", "Flintshire"),
+(1226, "AGY", "Isle of Anglesey"),
+(1226, "MTY", "Merthyr Tydfil"),
+(1226, "NTL", "Neath Port Talbot"),
+(1226, "NWP", "Newport"),
+(1226, "PEM", "Pembrokeshire"),
+(1226, "RCT", "Rhondda, Cynon, Taff"),
+(1226, "SWA", "Swansea"),
+(1226, "TOF", "Torfaen"),
+(1226, "WRX", "Wrexham"),
+(1226, "MON", "Monmouthshire"),
+(1226, "TWR", "Tyne and Wear"),
+(1226, "GTM", "Greater Manchester"),
+(1226, "TYR", "Co Tyrone"),
+(1226, "WYK", "West Yorkshire"),
+(1226, "SYK", "South Yorkshire"),
+(1226, "MSY", "Merseyside"),
+(1226, "BRK", "Berkshire"),
+(1226, "WMD", "West Midlands"),
+(1226, "WGM", "West Glamorgan"),
+(1226, "LON", "London"),
+(1226, "CWD", "Clwyd"),
+(1226, "SGM", "South Glamorgan"),
+(1083, "AH", "Ashanti"),
+(1083, "BA", "Brong-Ahafo"),
+(1083, "AA", "Greater Accra"),
+(1083, "UE", "Upper East"),
+(1083, "UW", "Upper West"),
+(1083, "TV", "Volta"),
+(1083, "CP", "Central"),
+(1083, "EP", "Eastern"),
+(1083, "NP", "Northern"),
+(1083, "WP", "Western"),
+(1213, "B", "Banjul"),
+(1213, "L", "Lower River"),
+(1213, "M", "MacCarthy Island"),
+(1213, "N", "North Bank"),
+(1213, "U", "Upper River"),
+(1091, "BE", "Beyla"),
+(1091, "BF", "Boffa"),
+(1091, "BK", "Boke"),
+(1091, "CO", "Coyah"),
+(1091, "DB", "Dabola"),
+(1091, "DL", "Dalaba"),
+(1091, "DI", "Dinguiraye"),
+(1091, "DU", "Dubreka"),
+(1091, "FA", "Faranah"),
+(1091, "FO", "Forecariah"),
+(1091, "FR", "Fria"),
+(1091, "GA", "Gaoual"),
+(1091, "GU", "Guekedou"),
+(1091, "KA", "Kankan"),
+(1091, "KE", "Kerouane"),
+(1091, "KD", "Kindia"),
+(1091, "KS", "Kissidougou"),
+(1091, "KB", "Koubia"),
+(1091, "KN", "Koundara"),
+(1091, "KO", "Kouroussa"),
+(1091, "LA", "Labe"),
+(1091, "LE", "Lelouma"),
+(1091, "LO", "Lola"),
+(1091, "MC", "Macenta"),
+(1091, "ML", "Mali"),
+(1091, "MM", "Mamou"),
+(1091, "MD", "Mandiana"),
+(1091, "NZ", "Nzerekore"),
+(1091, "PI", "Pita"),
+(1091, "SI", "Siguiri"),
+(1091, "TE", "Telimele"),
+(1091, "TO", "Tougue"),
+(1091, "YO", "Yomou"),
+(1067, "C", "Region Continental"),
+(1067, "I", "Region Insular"),
+(1067, "AN", "Annobon"),
+(1067, "BN", "Bioko Norte"),
+(1067, "BS", "Bioko Sur"),
+(1067, "CS", "Centro Sur"),
+(1067, "KN", "Kie-Ntem"),
+(1067, "LI", "Litoral"),
+(1067, "WN", "Wele-Nzas"),
+(1085, "13", "Achaïa"),
+(1085, "01", "Aitolia-Akarnania"),
+(1085, "11", "Argolis"),
+(1085, "12", "Arkadia"),
+(1085, "31", "Arta"),
+(1085, "A1", "Attiki"),
+(1085, "64", "Chalkidiki"),
+(1085, "94", "Chania"),
+(1085, "85", "Chios"),
+(1085, "81", "Dodekanisos"),
+(1085, "52", "Drama"),
+(1085, "71", "Evros"),
+(1085, "05", "Evrytania"),
+(1085, "04", "Evvoia"),
+(1085, "63", "Florina"),
+(1085, "07", "Fokis"),
+(1085, "06", "Fthiotis"),
+(1085, "51", "Grevena"),
+(1085, "14", "Ileia"),
+(1085, "53", "Imathia"),
+(1085, "33", "Ioannina"),
+(1085, "91", "Irakleion"),
+(1085, "41", "Karditsa"),
+(1085, "56", "Kastoria"),
+(1085, "55", "Kavalla"),
+(1085, "23", "Kefallinia"),
+(1085, "22", "Kerkyra"),
+(1085, "57", "Kilkis"),
+(1085, "15", "Korinthia"),
+(1085, "58", "Kozani"),
+(1085, "82", "Kyklades"),
+(1085, "16", "Lakonia"),
+(1085, "42", "Larisa"),
+(1085, "92", "Lasithion"),
+(1085, "24", "Lefkas"),
+(1085, "83", "Lesvos"),
+(1085, "43", "Magnisia"),
+(1085, "17", "Messinia"),
+(1085, "59", "Pella"),
+(1085, "34", "Preveza"),
+(1085, "93", "Rethymnon"),
+(1085, "73", "Rodopi"),
+(1085, "84", "Samos"),
+(1085, "62", "Serrai"),
+(1085, "32", "Thesprotia"),
+(1085, "54", "Thessaloniki"),
+(1085, "44", "Trikala"),
+(1085, "03", "Voiotia"),
+(1085, "72", "Xanthi"),
+(1085, "21", "Zakynthos"),
+(1085, "69", "Agio Oros"),
+(1085, "61", "Pieria"),
+(1090, "AV", "Alta Verapaz"),
+(1090, "BV", "Baja Verapaz"),
+(1090, "CM", "Chimaltenango"),
+(1090, "CQ", "Chiquimula"),
+(1090, "PR", "El Progreso"),
+(1090, "ES", "Escuintla"),
+(1090, "GU", "Guatemala"),
+(1090, "HU", "Huehuetenango"),
+(1090, "IZ", "Izabal"),
+(1090, "JA", "Jalapa"),
+(1090, "JU", "Jutiapa"),
+(1090, "PE", "Peten"),
+(1090, "QZ", "Quetzaltenango"),
+(1090, "QC", "Quiche"),
+(1090, "RE", "Retalhuleu"),
+(1090, "SA", "Sacatepequez"),
+(1090, "SM", "San Marcos"),
+(1090, "SR", "Santa Rosa"),
+(1090, "SO", "Sololá"),
+(1090, "SU", "Suchitepequez"),
+(1090, "TO", "Totonicapan"),
+(1090, "ZA", "Zacapa"),
+(1092, "BS", "Bissau"),
+(1092, "BA", "Bafata"),
+(1092, "BM", "Biombo"),
+(1092, "BL", "Bolama"),
+(1092, "CA", "Cacheu"),
+(1092, "GA", "Gabu"),
+(1092, "OI", "Oio"),
+(1092, "QU", "Quloara"),
+(1092, "TO", "Tombali S"),
+(1093, "BA", "Barima-Waini"),
+(1093, "CU", "Cuyuni-Mazaruni"),
+(1093, "DE", "Demerara-Mahaica"),
+(1093, "EB", "East Berbice-Corentyne"),
+(1093, "ES", "Essequibo Islands-West Demerara"),
+(1093, "MA", "Mahaica-Berbice"),
+(1093, "PM", "Pomeroon-Supenaam"),
+(1093, "PT", "Potaro-Siparuni"),
+(1093, "UD", "Upper Demerara-Berbice"),
+(1093, "UT", "Upper Takutu-Upper Essequibo"),
+(1097, "AT", "Atlantida"),
+(1097, "CL", "Colon"),
+(1097, "CM", "Comayagua"),
+(1097, "CP", "Copan"),
+(1097, "CR", "Cortes"),
+(1097, "CH", "Choluteca"),
+(1097, "EP", "El Paraiso"),
+(1097, "FM", "Francisco Morazan"),
+(1097, "GD", "Gracias a Dios"),
+(1097, "IN", "Intibuca"),
+(1097, "IB", "Islas de la Bahia"),
+(1097, "LE", "Lempira"),
+(1097, "OC", "Ocotepeque"),
+(1097, "OL", "Olancho"),
+(1097, "SB", "Santa Barbara"),
+(1097, "VA", "Valle"),
+(1097, "YO", "Yoro"),
+(1097, "LP", "La Paz"),
+(1055, "07", "Bjelovarsko-bilogorska zupanija"),
+(1055, "12", "Brodsko-posavska zupanija"),
+(1055, "19", "Dubrovacko-neretvanska zupanija"),
+(1055, "18", "Istarska zupanija"),
+(1055, "04", "Karlovacka zupanija"),
+(1055, "06", "Koprivnickco-krizevacka zupanija"),
+(1055, "02", "Krapinako-zagorska zupanija"),
+(1055, "09", "Licko-senjska zupanija"),
+(1055, "20", "Medimurska zupanija"),
+(1055, "14", "Osjecko-baranjska zupanija"),
+(1055, "11", "Pozesko-slavonska zupanija"),
+(1055, "08", "Primorsko-goranska zupanija"),
+(1055, "03", "Sisacko-moelavacka Iupanija"),
+(1055, "17", "Splitako-dalmatinska zupanija"),
+(1055, "15", "Sibenako-kninska zupanija"),
+(1055, "05", "Varaidinska zupanija"),
+(1055, "10", "VirovitiEko-podravska zupanija"),
+(1055, "16", "VuRovarako-srijemska zupanija"),
+(1055, "13", "Zadaraka"),
+(1055, "01", "Zagrebacka zupanija"),
+(1094, "GA", "Grande-Anse"),
+(1094, "NE", "Nord-Est"),
+(1094, "NO", "Nord-Ouest"),
+(1094, "OU", "Ouest"),
+(1094, "SD", "Sud"),
+(1094, "SE", "Sud-Est"),
+(1094, "AR", "Artibonite"),
+(1094, "CE", "Centre"),
+(1094, "NI", "Nippes"),
+(1094, "ND", "Nord"),
+(1099, "BU", "Budapest"),
+(1099, "BK", "Bács-Kiskun"),
+(1099, "BA", "Baranya"),
+(1099, "BE", "Békés"),
+(1099, "BZ", "Borsod-Abaúj-Zemplén"),
+(1099, "CS", "Csongrád"),
+(1099, "FE", "Fejér"),
+(1099, "GS", "Győr-Moson-Sopron"),
+(1099, "HB", "Hajdu-Bihar"),
+(1099, "HE", "Heves"),
+(1099, "JN", "Jász-Nagykun-Szolnok"),
+(1099, "KE", "Komárom-Esztergom"),
+(1099, "NO", "Nográd"),
+(1099, "PE", "Pest"),
+(1099, "SO", "Somogy"),
+(1099, "SZ", "Szabolcs-Szatmár-Bereg"),
+(1099, "TO", "Tolna"),
+(1099, "VA", "Vas"),
+(1099, "VE", "Veszprém"),
+(1099, "ZA", "Zala"),
+(1099, "BC", "Békéscsaba"),
+(1099, "DE", "Debrecen"),
+(1099, "DU", "Dunaújváros"),
+(1099, "EG", "Eger"),
+(1099, "GY", "Győr"),
+(1099, "HV", "Hódmezővásárhely"),
+(1099, "KV", "Kaposvár"),
+(1099, "KM", "Kecskemét"),
+(1099, "MI", "Miskolc"),
+(1099, "NK", "Nagykanizsa"),
+(1099, "NY", "Nyiregyháza"),
+(1099, "PS", "Pécs"),
+(1099, "ST", "Salgótarján"),
+(1099, "SN", "Sopron"),
+(1099, "SD", "Szeged"),
+(1099, "SF", "Székesfehérvár"),
+(1099, "SS", "Szekszárd"),
+(1099, "SK", "Szolnok"),
+(1099, "SH", "Szombathely"),
+(1099, "TB", "Tatabánya"),
+(1099, "ZE", "Zalaegerszeg"),
+(1102, "BA", "Bali"),
+(1102, "BB", "Kepulauan Bangka Belitung"),
+(1102, "BT", "Banten"),
+(1102, "BE", "Bengkulu"),
+(1102, "GO", "Gorontalo"),
+(1102, "PB", "Papua Barat"),
+(1102, "JA", "Jambi"),
+(1102, "JB", "Jawa Barat"),
+(1102, "JT", "Jawa Tengah"),
+(1102, "JI", "Jawa Timur"),
+(1102, "KB", "Kalimantan Barat"),
+(1102, "KI", "Kalimantan Timur"),
+(1102, "KS", "Kalimantan Selatan"),
+(1102, "KR", "Kepulauan Riau"),
+(1102, "LA", "Lampung"),
+(1102, "MA", "Maluku"),
+(1102, "MU", "Maluku Utara"),
+(1102, "NB", "Nusa Tenggara Barat"),
+(1102, "NT", "Nusa Tenggara Timur"),
+(1102, "PA", "Papua"),
+(1102, "RI", "Riau"),
+(1102, "SN", "Sulawesi Selatan"),
+(1102, "ST", "Sulawesi Tengah"),
+(1102, "SG", "Sulawesi Tenggara"),
+(1102, "SA", "Sulawesi Utara"),
+(1102, "SB", "Sumatra Barat"),
+(1102, "SS", "Sumatra Selatan"),
+(1102, "SU", "Sumatera Utara"),
+(1102, "JK", "DKI Jakarta"),
+(1102, "AC", "Aceh"),
+(1102, "YO", "DI Yogyakarta"),
+(1102, "KT", "Kalimantan Tengah"),
+(1102, "SR", "Sulawesi Barat"),
+(1102, "KU", "Kalimantan Utara"),
+(1105, "C", "Cork"),
+(1105, "CE", "Clare"),
+(1105, "CN", "Cavan"),
+(1105, "CW", "Carlow"),
+(1105, "D", "Dublin"),
+(1105, "DL", "Donegal"),
+(1105, "G", "Galway"),
+(1105, "KE", "Kildare"),
+(1105, "KK", "Kilkenny"),
+(1105, "KY", "Kerry"),
+(1105, "LD", "Longford"),
+(1105, "LH", "Louth"),
+(1105, "LK", "Limerick"),
+(1105, "LM", "Leitrim"),
+(1105, "LS", "Laois"),
+(1105, "MH", "Meath"),
+(1105, "MN", "Monaghan"),
+(1105, "MO", "Mayo"),
+(1105, "OY", "Offaly"),
+(1105, "RN", "Roscommon"),
+(1105, "SO", "Sligo"),
+(1105, "TA", "Tipperary"),
+(1105, "WD", "Waterford"),
+(1105, "WH", "Westmeath"),
+(1105, "WW", "Wicklow"),
+(1105, "WX", "Wexford"),
+(1106, "D", "HaDarom"),
+(1106, "M", "HaMerkaz"),
+(1106, "Z", "HaZafon"),
+(1106, "HA", "Haifa"),
+(1106, "TA", "Tel-Aviv"),
+(1106, "JM", "Jerusalem"),
+(1104, "AN", "Al Anbar"),
+(1104, "BA", "Al Ba,rah"),
+(1104, "MU", "Al Muthanna"),
+(1104, "QA", "Al Qadisiyah"),
+(1104, "NA", "An Najef"),
+(1104, "AR", "Arbil"),
+(1104, "SW", "As Sulaymaniyah"),
+(1104, "TS", "At Ta\'mim"),
+(1104, "BB", "Babil"),
+(1104, "BG", "Baghdad"),
+(1104, "DA", "Dahuk"),
+(1104, "DQ", "Dhi Qar"),
+(1104, "DI", "Diyala"),
+(1104, "KA", "Karbala\'"),
+(1104, "MA", "Maysan"),
+(1104, "NI", "Ninawa"),
+(1104, "SD", "Salah ad Din"),
+(1104, "WA", "Wasit"),
+(1103, "03", "Ardabil"),
+(1103, "02", "Azarbayjan-e Gharbi"),
+(1103, "01", "Azarbayjan-e Sharqi"),
+(1103, "06", "Bushehr"),
+(1103, "08", "Chahar Mahall va Bakhtiari"),
+(1103, "04", "Esfahan"),
+(1103, "14", "Fars"),
+(1103, "19", "Gilan"),
+(1103, "27", "Golestan"),
+(1103, "24", "Hamadan"),
+(1103, "23", "Hormozgan"),
+(1103, "05", "Iiam"),
+(1103, "15", "Kerman"),
+(1103, "17", "Kermanshah"),
+(1103, "09", "Khorasan"),
+(1103, "10", "Khuzestan"),
+(1103, "18", "Kohjiluyeh va Buyer Ahmad"),
+(1103, "16", "Kordestan"),
+(1103, "20", "Lorestan"),
+(1103, "22", "Markazi"),
+(1103, "21", "Mazandaran"),
+(1103, "28", "Qazvin"),
+(1103, "26", "Qom"),
+(1103, "12", "Semnan"),
+(1103, "13", "Sistan va Baluchestan"),
+(1103, "07", "Tehran"),
+(1103, "25", "Yazd"),
+(1103, "11", "Zanjan"),
+(1100, "7", "Austurland"),
+(1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
+(1100, "6", "Norourland eystra"),
+(1100, "5", "Norourland vestra"),
+(1100, "0", "Reykjavik"),
+(1100, "8", "Suourland"),
+(1100, "2", "Suournes"),
+(1100, "4", "Vestfirolr"),
+(1100, "3", "Vesturland"),
+(1107, "AG", "Agrigento"),
+(1107, "AL", "Alessandria"),
+(1107, "AN", "Ancona"),
+(1107, "AO", "Aosta"),
+(1107, "AR", "Arezzo"),
+(1107, "AP", "Ascoli Piceno"),
+(1107, "AT", "Asti"),
+(1107, "AV", "Avellino"),
+(1107, "BA", "Bari"),
+(1107, "BL", "Belluno"),
+(1107, "BN", "Benevento"),
+(1107, "BG", "Bergamo"),
+(1107, "BI", "Biella"),
+(1107, "BO", "Bologna"),
+(1107, "BZ", "Bolzano"),
+(1107, "BS", "Brescia"),
+(1107, "BR", "Brindisi"),
+(1107, "CA", "Cagliari"),
+(1107, "CL", "Caltanissetta"),
+(1107, "CB", "Campobasso"),
+(1107, "CE", "Caserta"),
+(1107, "CT", "Catania"),
+(1107, "CZ", "Catanzaro"),
+(1107, "CH", "Chieti"),
+(1107, "CO", "Como"),
+(1107, "CS", "Cosenza"),
+(1107, "CR", "Cremona"),
+(1107, "KR", "Crotone"),
+(1107, "CN", "Cuneo"),
+(1107, "EN", "Enna"),
+(1107, "FE", "Ferrara"),
+(1107, "FI", "Firenze"),
+(1107, "FG", "Foggia"),
+(1107, "FC", "Forlì-Cesena"),
+(1107, "FR", "Frosinone"),
+(1107, "GE", "Genova"),
+(1107, "GO", "Gorizia"),
+(1107, "GR", "Grosseto"),
+(1107, "IM", "Imperia"),
+(1107, "IS", "Isernia"),
+(1107, "AQ", "L\'Aquila"),
+(1107, "SP", "La Spezia"),
+(1107, "LT", "Latina"),
+(1107, "LE", "Lecce"),
+(1107, "LC", "Lecco"),
+(1107, "LI", "Livorno"),
+(1107, "LO", "Lodi"),
+(1107, "LU", "Lucca"),
+(1107, "MC", "Macerata"),
+(1107, "MN", "Mantova"),
+(1107, "MS", "Massa-Carrara"),
+(1107, "MT", "Matera"),
+(1107, "ME", "Messina"),
+(1107, "MI", "Milano"),
+(1107, "MO", "Modena"),
+(1107, "NA", "Napoli"),
+(1107, "NO", "Novara"),
+(1107, "NU", "Nuoro"),
+(1107, "OR", "Oristano"),
+(1107, "PD", "Padova"),
+(1107, "PA", "Palermo"),
+(1107, "PR", "Parma"),
+(1107, "PV", "Pavia"),
+(1107, "PG", "Perugia"),
+(1107, "PU", "Pesaro e Urbino"),
+(1107, "PE", "Pescara"),
+(1107, "PC", "Piacenza"),
+(1107, "PI", "Pisa"),
+(1107, "PT", "Pistoia"),
+(1107, "PN", "Pordenone"),
+(1107, "PZ", "Potenza"),
+(1107, "PO", "Prato"),
+(1107, "RG", "Ragusa"),
+(1107, "RA", "Ravenna"),
+(1107, "RC", "Reggio Calabria"),
+(1107, "RE", "Reggio Emilia"),
+(1107, "RI", "Rieti"),
+(1107, "RN", "Rimini"),
+(1107, "RM", "Roma"),
+(1107, "RO", "Rovigo"),
+(1107, "SA", "Salerno"),
+(1107, "SS", "Sassari"),
+(1107, "SV", "Savona"),
+(1107, "SI", "Siena"),
+(1107, "SR", "Siracusa"),
+(1107, "SO", "Sondrio"),
+(1107, "TA", "Taranto"),
+(1107, "TE", "Teramo"),
+(1107, "TR", "Terni"),
+(1107, "TO", "Torino"),
+(1107, "TP", "Trapani"),
+(1107, "TN", "Trento"),
+(1107, "TV", "Treviso"),
+(1107, "TS", "Trieste"),
+(1107, "UD", "Udine"),
+(1107, "VA", "Varese"),
+(1107, "VE", "Venezia"),
+(1107, "VB", "Verbano-Cusio-Ossola"),
+(1107, "VC", "Vercelli"),
+(1107, "VR", "Verona"),
+(1107, "VV", "Vibo Valentia"),
+(1107, "VI", "Vicenza"),
+(1107, "VT", "Viterbo"),
+(1107, "BT", "Barletta-Andria-Trani"),
+(1107, "FM", "Fermo"),
+(1107, "MB", "Monza e Brianza"),
+(1107, "CI", "Carbonia-Iglesias"),
+(1107, "OT", "Olbia-Tempio"),
+(1107, "VS", "Medio Campidano"),
+(1107, "OG", "Ogliastra"),
+(1109, "23", "Aichi"),
+(1109, "05", "Akita"),
+(1109, "02", "Aomori"),
+(1109, "12", "Chiba"),
+(1109, "38", "Ehime"),
+(1109, "18", "Fukui"),
+(1109, "40", "Fukuoka"),
+(1109, "07", "Fukusima"),
+(1109, "21", "Gifu"),
+(1109, "10", "Gunma"),
+(1109, "34", "Hiroshima"),
+(1109, "01", "Hokkaido"),
+(1109, "28", "Hyogo"),
+(1109, "08", "Ibaraki"),
+(1109, "17", "Ishikawa"),
+(1109, "03", "Iwate"),
+(1109, "37", "Kagawa"),
+(1109, "46", "Kagoshima"),
+(1109, "14", "Kanagawa"),
+(1109, "39", "Kochi"),
+(1109, "43", "Kumamoto"),
+(1109, "26", "Kyoto"),
+(1109, "24", "Mie"),
+(1109, "04", "Miyagi"),
+(1109, "45", "Miyazaki"),
+(1109, "20", "Nagano"),
+(1109, "42", "Nagasaki"),
+(1109, "29", "Nara"),
+(1109, "15", "Niigata"),
+(1109, "44", "Oita"),
+(1109, "33", "Okayama"),
+(1109, "47", "Okinawa"),
+(1109, "27", "Osaka"),
+(1109, "41", "Saga"),
+(1109, "11", "Saitama"),
+(1109, "25", "Shiga"),
+(1109, "32", "Shimane"),
+(1109, "22", "Shizuoka"),
+(1109, "09", "Tochigi"),
+(1109, "36", "Tokushima"),
+(1109, "13", "Tokyo"),
+(1109, "31", "Tottori"),
+(1109, "16", "Toyama"),
+(1109, "30", "Wakayama"),
+(1109, "06", "Yamagata"),
+(1109, "35", "Yamaguchi"),
+(1109, "19", "Yamanashi"),
+(1108, "CN", "Clarendon"),
+(1108, "HR", "Hanover"),
+(1108, "KN", "Kingston"),
+(1108, "PD", "Portland"),
+(1108, "AW", "Saint Andrew"),
+(1108, "AN", "Saint Ann"),
+(1108, "CE", "Saint Catherine"),
+(1108, "EH", "Saint Elizabeth"),
+(1108, "JS", "Saint James"),
+(1108, "MY", "Saint Mary"),
+(1108, "TS", "Saint Thomas"),
+(1108, "TY", "Trelawny"),
+(1108, "WD", "Westmoreland"),
+(1110, "AJ", "Ajln"),
+(1110, "AQ", "Al \'Aqaba"),
+(1110, "BA", "Al Balqa\'"),
+(1110, "KA", "Al Karak"),
+(1110, "MA", "Al Mafraq"),
+(1110, "AM", "Amman"),
+(1110, "AT", "At Tafilah"),
+(1110, "AZ", "Az Zarga"),
+(1110, "JR", "Irbid"),
+(1110, "JA", "Jarash"),
+(1110, "MN", "Ma\'an"),
+(1110, "MD", "Madaba"),
+(1112, "01", "Baringo"),
+(1112, "02", "Bomet"),
+(1112, "03", "Bungoma"),
+(1112, "04", "Busia"),
+(1112, "05", "Elgeyo/Marakwet"),
+(1112, "06", "Embu"),
+(1112, "07", "Garissa"),
+(1112, "08", "Homa Bay"),
+(1112, "09", "Isiolo"),
+(1112, "10", "Kajiado"),
+(1112, "11", "Kakamega"),
+(1112, "12", "Kericho"),
+(1112, "13", "Kiambu"),
+(1112, "14", "Kilifi"),
+(1112, "15", "Kirinyaga"),
+(1112, "16", "Kisii"),
+(1112, "17", "Kisumu"),
+(1112, "18", "Kitui"),
+(1112, "19", "Kwale"),
+(1112, "20", "Laikipia"),
+(1112, "21", "Lamu"),
+(1112, "22", "Machakos"),
+(1112, "23", "Makueni"),
+(1112, "24", "Mandera"),
+(1112, "25", "Marsabit"),
+(1112, "26", "Meru"),
+(1112, "27", "Migori"),
+(1112, "28", "Mombasa"),
+(1112, "29", "Murang'a"),
+(1112, "30", "Nairobi City"),
+(1112, "31", "Nakuru"),
+(1112, "32", "Nandi"),
+(1112, "33", "Narok"),
+(1112, "34", "Nyamira"),
+(1112, "35", "Nyandarua"),
+(1112, "36", "Nyeri"),
+(1112, "37", "Samburu"),
+(1112, "38", "Siaya"),
+(1112, "39", "Taita/Taveta"),
+(1112, "40", "Tana River"),
+(1112, "41", "Tharaka-Nithi"),
+(1112, "42", "Trans Nzoia"),
+(1112, "43", "Turkana"),
+(1112, "44", "Uasin Gishu"),
+(1112, "45", "Vihiga"),
+(1112, "46", "Wajir"),
+(1112, "47", "West Pokot"),
+(1117, "GB", "Bishkek"),
+(1117, "B", "Batken"),
+(1117, "C", "Chu"),
+(1117, "J", "Jalal-Abad"),
+(1117, "N", "Naryn"),
+(1117, "O", "Osh"),
+(1117, "T", "Talas"),
+(1117, "Y", "Ysyk-Kol"),
+(1037, "23", "Krong Kaeb"),
+(1037, "24", "Krong Pailin"),
+(1037, "18", "Xrong Preah Sihanouk"),
+(1037, "12", "Phnom Penh"),
+(1037, "2", "Baat Dambang"),
+(1037, "1", "Banteay Mean Chey"),
+(1037, "3", "Rampong Chaam"),
+(1037, "4", "Kampong Chhnang"),
+(1037, "5", "Kampong Spueu"),
+(1037, "6", "Kampong Thum"),
+(1037, "7", "Kampot"),
+(1037, "8", "Kandaal"),
+(1037, "9", "Kach Kong"),
+(1037, "10", "Krachoh"),
+(1037, "11", "Mondol Kiri"),
+(1037, "22", "Otdar Mean Chey"),
+(1037, "15", "Pousaat"),
+(1037, "13", "Preah Vihear"),
+(1037, "14", "Prey Veaeng"),
+(1037, "16", "Rotanak Kiri"),
+(1037, "17", "Siem Reab"),
+(1037, "19", "Stueng Traeng"),
+(1037, "20", "Svaay Rieng"),
+(1037, "21", "Taakaev"),
+(1113, "G", "Gilbert Islands"),
+(1113, "L", "Line Islands"),
+(1113, "P", "Phoenix Islands"),
+(1049, "A", "Anjouan Ndzouani"),
+(1049, "G", "Grande Comore Ngazidja"),
+(1049, "M", "Moheli Moili"),
+(1114, "KAE", "Kaesong-si"),
+(1114, "NAM", "Nampo-si"),
+(1114, "PYO", "Pyongyang-ai"),
+(1114, "CHA", "Chagang-do"),
+(1114, "HAB", "Hamgyongbuk-do"),
+(1114, "HAN", "Hamgyongnam-do"),
+(1114, "HWB", "Hwanghaebuk-do"),
+(1114, "HWN", "Hwanghaenam-do"),
+(1114, "KAN", "Kangwon-do"),
+(1114, "PYB", "Pyonganbuk-do"),
+(1114, "PYN", "Pyongannam-do"),
+(1114, "YAN", "Yanggang-do"),
+(1114, "NAJ", "Najin Sonbong-si"),
+(1115, "11", "Seoul Teugbyeolsi"),
+(1115, "26", "Busan Gwang\'yeogsi"),
+(1115, "27", "Daegu Gwang\'yeogsi"),
+(1115, "30", "Daejeon Gwang\'yeogsi"),
+(1115, "29", "Gwangju Gwang\'yeogsi"),
+(1115, "28", "Incheon Gwang\'yeogsi"),
+(1115, "31", "Ulsan Gwang\'yeogsi"),
+(1115, "43", "Chungcheongbugdo"),
+(1115, "44", "Chungcheongnamdo"),
+(1115, "42", "Gang\'weondo"),
+(1115, "41", "Gyeonggido"),
+(1115, "47", "Gyeongsangbugdo"),
+(1115, "48", "Gyeongsangnamdo"),
+(1115, "49", "Jejudo"),
+(1115, "45", "Jeonrabugdo"),
+(1115, "46", "Jeonranamdo"),
+(1115, "50", "Sejong"),
+(1116, "AH", "Al Ahmadi"),
+(1116, "FA", "Al Farwanlyah"),
+(1116, "JA", "Al Jahrah"),
+(1116, "KU", "Al Kuwayt"),
+(1116, "HA", "Hawalli"),
+(1111, "ALA", "Almaty"),
+(1111, "AST", "Astana"),
+(1111, "ALM", "Almaty oblysy"),
+(1111, "AKM", "Aqmola oblysy"),
+(1111, "AKT", "Aqtobe oblysy"),
+(1111, "ATY", "Atyrau oblyfiy"),
+(1111, "ZAP", "Batys Quzaqstan oblysy"),
+(1111, "MAN", "Mangghystau oblysy"),
+(1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
+(1111, "PAV", "Pavlodar oblysy"),
+(1111, "KAR", "Qaraghandy oblysy"),
+(1111, "KUS", "Qostanay oblysy"),
+(1111, "KZY", "Qyzylorda oblysy"),
+(1111, "VOS", "Shyghys Quzaqstan oblysy"),
+(1111, "SEV", "Soltustik Quzaqstan oblysy"),
+(1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
+(1118, "VT", "Vientiane"),
+(1118, "AT", "Attapu"),
+(1118, "BK", "Bokeo"),
+(1118, "BL", "Bolikhamxai"),
+(1118, "CH", "Champasak"),
+(1118, "HO", "Houaphan"),
+(1118, "KH", "Khammouan"),
+(1118, "LM", "Louang Namtha"),
+(1118, "LP", "Louangphabang"),
+(1118, "OU", "Oudomxai"),
+(1118, "PH", "Phongsali"),
+(1118, "SL", "Salavan"),
+(1118, "SV", "Savannakhet"),
+(1118, "XA", "Xaignabouli"),
+(1118, "XN", "Xiasomboun"),
+(1118, "XE", "Xekong"),
+(1118, "XI", "Xiangkhoang"),
+(1120, "BA", "Beirut"),
+(1120, "BI", "Beqaa"),
+(1120, "JL", "Mount Lebanon"),
+(1120, "AS", "North Lebanon"),
+(1120, "JA", "South Lebanon"),
+(1120, "NA", "Nabatieh"),
+(1199, "52", "Ampara"),
+(1199, "71", "Anuradhapura"),
+(1199, "81", "Badulla"),
+(1199, "51", "Batticaloa"),
+(1199, "11", "Colombo"),
+(1199, "31", "Galle"),
+(1199, "12", "Gampaha"),
+(1199, "33", "Hambantota"),
+(1199, "41", "Jaffna"),
+(1199, "13", "Kalutara"),
+(1199, "21", "Kandy"),
+(1199, "92", "Kegalla"),
+(1199, "42", "Kilinochchi"),
+(1199, "61", "Kurunegala"),
+(1199, "43", "Mannar"),
+(1199, "22", "Matale"),
+(1199, "32", "Matara"),
+(1199, "82", "Monaragala"),
+(1199, "45", "Mullaittivu"),
+(1199, "23", "Nuwara Eliya"),
+(1199, "72", "Polonnaruwa"),
+(1199, "62", "Puttalum"),
+(1199, "91", "Ratnapura"),
+(1199, "53", "Trincomalee"),
+(1199, "44", "VavunLya"),
+(1122, "BM", "Bomi"),
+(1122, "BG", "Bong"),
+(1122, "GB", "Grand Basaa"),
+(1122, "CM", "Grand Cape Mount"),
+(1122, "GG", "Grand Gedeh"),
+(1122, "GK", "Grand Kru"),
+(1122, "LO", "Lofa"),
+(1122, "MG", "Margibi"),
+(1122, "MY", "Maryland"),
+(1122, "MO", "Montserrado"),
+(1122, "NI", "Nimba"),
+(1122, "RI", "Rivercess"),
+(1122, "SI", "Sinoe"),
+(1121, "D", "Berea"),
+(1121, "B", "Butha-Buthe"),
+(1121, "C", "Leribe"),
+(1121, "E", "Mafeteng"),
+(1121, "A", "Maseru"),
+(1121, "F", "Mohale\'s Hoek"),
+(1121, "J", "Mokhotlong"),
+(1121, "H", "Qacha\'s Nek"),
+(1121, "G", "Quthing"),
+(1121, "K", "Thaba-Tseka"),
+(1125, "AL", "Alytaus Apskritis"),
+(1125, "KU", "Kauno Apskritis"),
+(1125, "KL", "KlaipÄ—dos Apskritis"),
+(1125, "MR", "MarijampolÄ—s Apskritis"),
+(1125, "PN", "Panevėžio Apskritis"),
+(1125, "SA", "Šiaulių Apskritis"),
+(1125, "TA", "TauragÄ—s Apskritis"),
+(1125, "TE", "Telšių Apskritis"),
+(1125, "UT", "Utenos Apskritis"),
+(1125, "VL", "Vilniaus Apskritis"),
+(1126, "LU", "Luxembourg"),
+(1126, "DI", "Diekirch"),
+(1126, "GR", "Grevenmacher"),
+(1126, 'CA', 'Capellen'),
+(1126, 'CL', 'Clervaux'),
+(1126, 'EC', 'Echternach'),
+(1126, 'ES', 'Esch-sur-Alzette'),
+(1126, 'ME', 'Mersch'),
+(1126, 'RD', 'Redange-sur-Attert'),
+(1126, 'RM', 'Remich'),
+(1126, 'VD', 'Vianden'),
+(1126, 'WI', 'Wiltz'),
+(1119, "DGV", "Daugavpils"),
+(1119, "JEL", "Jelgava"),
+(1119, "JUR", "JÅ«rmala"),
+(1119, "LPX", "Liepāja"),
+(1119, "REZ", "RÄ“zekne"),
+(1119, "RIX", "RÄ«ga"),
+(1119, "VEN", "Ventspils"),
+(1119, "002", "Aizkraukles novads"),
+(1119, "038", "Jaunjelgavas novads"),
+(1119, "072", "Pļaviņu novads"),
+(1119, "046", "Kokneses novads"),
+(1119, "065", "Neretas novads"),
+(1119, "092", "Skrīveru novads"),
+(1119, "007", "Alūksnes novads"),
+(1119, "009", "Apes novads"),
+(1119, "015", "Balvu novads"),
+(1119, "108", "Viļakas novads"),
+(1119, "014", "Baltinavas novads"),
+(1119, "082", "Rugāju novads"),
+(1119, "016", "Bauskas novads"),
+(1119, "034", "Iecavas novads"),
+(1119, "083", "Rundāles novads"),
+(1119, "105", "Vecumnieku novads"),
+(1119, "022", "CÄ“su novads"),
+(1119, "055", "LÄ«gatnes novads"),
+(1119, "008", "Amatas novads"),
+(1119, "039", "Jaunpiebalgas novads"),
+(1119, "075", "Priekuļu novads"),
+(1119, "070", "Pārgaujas novads"),
+(1119, "076", "Raunas novads"),
+(1119, "104", "Vecpiebalgas novads"),
+(1119, "025", "Daugavpils novads"),
+(1119, "036", "Ilūkstes novads"),
+(1119, "026", "Dobeles novads"),
+(1119, "010", "Auces novads"),
+(1119, "098", "TÄ“rvetes novads"),
+(1119, "033", "Gulbenes novads"),
+(1119, "041", "Jelgavas novads"),
+(1119, "069", "Ozolnieku novads"),
+(1119, "042", "JÄ“kabpils novads"),
+(1119, "004", "Aknīstes novads"),
+(1119, "107", "Viesītes novads"),
+(1119, "049", "Krustpils novads"),
+(1119, "085", "Salas novads"),
+(1119, "047", "Krāslavas novads"),
+(1119, "024", "Dagdas novads"),
+(1119, "001", "Aglonas novads"),
+(1119, "050", "Kuldīgas novads"),
+(1119, "093", "Skrundas novads"),
+(1119, "006", "Alsungas novads"),
+(1119, "003", "Aizputes novads"),
+(1119, "028", "Durbes novads"),
+(1119, "032", "Grobiņas novads"),
+(1119, "071", "Pāvilostas novads"),
+(1119, "074", "Priekules novads"),
+(1119, "066", "NÄ«cas novads"),
+(1119, "081", "Rucavas novads"),
+(1119, "100", "Vaiņodes novads"),
+(1119, "054", "Limbažu novads"),
+(1119, "005", "Alojas novads"),
+(1119, "086", "Salacgrīvas novads"),
+(1119, "058", "Ludzas novads"),
+(1119, "044", "Kārsavas novads"),
+(1119, "110", "Zilupes novads"),
+(1119, "023", "Ciblas novads"),
+(1119, "059", "Madonas novads"),
+(1119, "021", "Cesvaines novads"),
+(1119, "057", "Lubānas novads"),
+(1119, "102", "Varakļānu novads"),
+(1119, "030", "Ērgļu novads"),
+(1119, "067", "Ogres novads"),
+(1119, "035", "Ikšķiles novads"),
+(1119, "051", "Ķeguma novads"),
+(1119, "053", "Lielvārdes novads"),
+(1119, "073", "Preiļu novads"),
+(1119, "056", "Līvānu novads"),
+(1119, "078", "Riebiņu novads"),
+(1119, "103", "Vārkavas novads"),
+(1119, "077", "RÄ“zeknes novads"),
+(1119, "109", "Viļānu novads"),
+(1119, "013", "Baldones novads"),
+(1119, "052", "Ķekavas novads"),
+(1119, "068", "Olaines novads"),
+(1119, "087", "Salaspils novads"),
+(1119, "089", "Saulkrastu novads"),
+(1119, "091", "Siguldas novads"),
+(1119, "037", "Inčukalna novads"),
+(1119, "011", "Ādažu novads"),
+(1119, "012", "Babītes novads"),
+(1119, "020", "Carnikavas novads"),
+(1119, "031", "Garkalnes novads"),
+(1119, "048", "Krimuldas novads"),
+(1119, "061", "Mālpils novads"),
+(1119, "062", "Mārupes novads"),
+(1119, "080", "Ropažu novads"),
+(1119, "090", "SÄ“jas novads"),
+(1119, "095", "Stopiņu novads"),
+(1119, "088", "Saldus novads"),
+(1119, "018", "Brocēnu novads"),
+(1119, "097", "Talsu novads"),
+(1119, "027", "Dundagas novads"),
+(1119, "063", "MÄ“rsraga novads"),
+(1119, "079", "Rojas novads"),
+(1119, "099", "Tukuma novads"),
+(1119, "043", "Kandavas novads"),
+(1119, "029", "Engures novads"),
+(1119, "040", "Jaunpils novads"),
+(1119, "101", "Valkas novads"),
+(1119, "094", "Smiltenes novads"),
+(1119, "096", "Strenču novads"),
+(1119, "045", "Kocēnu novads"),
+(1119, "060", "Mazsalacas novads"),
+(1119, "084", "RÅ«jienas novads"),
+(1119, "017", "Beverīnas novads"),
+(1119, "019", "Burtnieku novads"),
+(1119, "064", "Naukšēnu novads"),
+(1119, "106", "Ventspils novads"),
+(1119, "JKB", "JÄ“kabpils"),
+(1119, "VMR", "Valmiera"),
+(1123, "AJ", "Ajdābiyā"),
+(1123, "BU", "Al Buţnān"),
+(1123, "HZ", "Al Hizām al Akhdar"),
+(1123, "JA", "Al Jabal al Akhdar"),
+(1123, "JI", "Al Jifārah"),
+(1123, "JU", "Al Jufrah"),
+(1123, "KF", "Al Kufrah"),
+(1123, "MJ", "Al Marj"),
+(1123, "MB", "Al Marqab"),
+(1123, "QT", "Al Qaţrūn"),
+(1123, "QB", "Al Qubbah"),
+(1123, "WA", "Al Wāhah"),
+(1123, "NQ", "An Nuqaţ al Khams"),
+(1123, "SH", "Ash Shāţi\'"),
+(1123, "ZA", "Az Zāwiyah"),
+(1123, "BA", "Banghāzī"),
+(1123, "BW", "Banī Walīd"),
+(1123, "DR", "Darnah"),
+(1123, "GD", "Ghadāmis"),
+(1123, "GR", "Gharyān"),
+(1123, "GT", "Ghāt"),
+(1123, "JB", "Jaghbūb"),
+(1123, "MI", "Mişrātah"),
+(1123, "MZ", "Mizdah"),
+(1123, "MQ", "Murzuq"),
+(1123, "NL", "Nālūt"),
+(1123, "SB", "Sabhā"),
+(1123, "SS", "Şabrātah Şurmān"),
+(1123, "SR", "Surt"),
+(1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
+(1123, "TB", "Ţarābulus"),
+(1123, "TM", "Tarhūnah-Masallātah"),
+(1123, "WD", "Wādī al hayāt"),
+(1123, "YJ", "Yafran-Jādū"),
+(1146, "AGD", "Agadir"),
+(1146, "BAH", "Aït Baha"),
+(1146, "MEL", "Aït Melloul"),
+(1146, "HAO", "Al Haouz"),
+(1146, "HOC", "Al Hoceïma"),
+(1146, "ASZ", "Assa-Zag"),
+(1146, "AZI", "Azilal"),
+(1146, "BEM", "Beni Mellal"),
+(1146, "BES", "Ben Sllmane"),
+(1146, "BER", "Berkane"),
+(1146, "BOD", "Boujdour"),
+(1146, "BOM", "Boulemane"),
+(1146, "CAS", "Casablanca  [Dar el Beïda]"),
+(1146, "CHE", "Chefchaouene"),
+(1146, "CHI", "Chichaoua"),
+(1146, "HAJ", "El Hajeb"),
+(1146, "JDI", "El Jadida"),
+(1146, "ERR", "Errachidia"),
+(1146, "ESI", "Essaouira"),
+(1146, "ESM", "Es Smara"),
+(1146, "FES", "Fès"),
+(1146, "FIG", "Figuig"),
+(1146, "GUE", "Guelmim"),
+(1146, "IFR", "Ifrane"),
+(1146, "JRA", "Jerada"),
+(1146, "KES", "Kelaat Sraghna"),
+(1146, "KEN", "Kénitra"),
+(1146, "KHE", "Khemisaet"),
+(1146, "KHN", "Khenifra"),
+(1146, "KHO", "Khouribga"),
+(1146, "LAA", "Laâyoune (EH)"),
+(1146, "LAP", "Larache"),
+(1146, "MAR", "Marrakech"),
+(1146, "MEK", "Meknsès"),
+(1146, "NAD", "Nador"),
+(1146, "OUA", "Ouarzazate"),
+(1146, "OUD", "Oued ed Dahab (EH)"),
+(1146, "OUJ", "Oujda"),
+(1146, "RBA", "Rabat-Salé"),
+(1146, "SAF", "Safi"),
+(1146, "SEF", "Sefrou"),
+(1146, "SET", "Settat"),
+(1146, "SIK", "Sidl Kacem"),
+(1146, "TNG", "Tanger"),
+(1146, "TNT", "Tan-Tan"),
+(1146, "TAO", "Taounate"),
+(1146, "TAR", "Taroudannt"),
+(1146, "TAT", "Tata"),
+(1146, "TAZ", "Taza"),
+(1146, "TET", "Tétouan"),
+(1146, "TIZ", "Tiznit"),
+(1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
+(1142, "CU", "Chisinau"),
+(1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
+(1142, "BA", "Balti"),
+(1142, "CA", "Cahul"),
+(1142, "ED", "Edinet"),
+(1142, "LA", "Lapusna"),
+(1142, "OR", "Orhei"),
+(1142, "SO", "Soroca"),
+(1142, "TA", "Taraclia"),
+(1142, "TI", "Tighina [Bender]"),
+(1142, "UN", "Ungheni"),
+(1129, "T", "Antananarivo"),
+(1129, "D", "Antsiranana"),
+(1129, "F", "Fianarantsoa"),
+(1129, "M", "Mahajanga"),
+(1129, "A", "Toamasina"),
+(1129, "U", "Toliara"),
+(1135, "ALL", "Ailinglapalap"),
+(1135, "ALK", "Ailuk"),
+(1135, "ARN", "Arno"),
+(1135, "AUR", "Aur"),
+(1135, "EBO", "Ebon"),
+(1135, "ENI", "Eniwetok"),
+(1135, "JAL", "Jaluit"),
+(1135, "KIL", "Kili"),
+(1135, "KWA", "Kwajalein"),
+(1135, "LAE", "Lae"),
+(1135, "LIB", "Lib"),
+(1135, "LIK", "Likiep"),
+(1135, "MAJ", "Majuro"),
+(1135, "MAL", "Maloelap"),
+(1135, "MEJ", "Mejit"),
+(1135, "MIL", "Mili"),
+(1135, "NMK", "Namorik"),
+(1135, "NMU", "Namu"),
+(1135, "RON", "Rongelap"),
+(1135, "UJA", "Ujae"),
+(1135, "UJL", "Ujelang"),
+(1135, "UTI", "Utirik"),
+(1135, "WTN", "Wotho"),
+(1135, "WTJ", "Wotje"),
+(1133, "BK0", "Bamako"),
+(1133, "7", "Gao"),
+(1133, "1", "Kayes"),
+(1133, "8", "Kidal"),
+(1133, "2", "Xoulikoro"),
+(1133, "5", "Mopti"),
+(1133, "4", "S69ou"),
+(1133, "3", "Sikasso"),
+(1133, "6", "Tombouctou"),
+(1035, "07", "Ayeyarwady"),
+(1035, "02", "Bago"),
+(1035, "03", "Magway"),
+(1035, "04", "Mandalay"),
+(1035, "01", "Sagaing"),
+(1035, "05", "Tanintharyi"),
+(1035, "06", "Yangon"),
+(1035, "14", "Chin"),
+(1035, "11", "Kachin"),
+(1035, "12", "Kayah"),
+(1035, "13", "Kayin"),
+(1035, "15", "Mon"),
+(1035, "16", "Rakhine"),
+(1035, "17", "Shan"),
+(1144, "1", "Ulaanbaatar"),
+(1144, "073", "Arhangay"),
+(1144, "069", "Bayanhongor"),
+(1144, "071", "Bayan-Olgiy"),
+(1144, "067", "Bulgan"),
+(1144, "037", "Darhan uul"),
+(1144, "061", "Dornod"),
+(1144, "063", "Dornogov,"),
+(1144, "059", "DundgovL"),
+(1144, "057", "Dzavhan"),
+(1144, "065", "Govi-Altay"),
+(1144, "064", "Govi-Smber"),
+(1144, "039", "Hentiy"),
+(1144, "043", "Hovd"),
+(1144, "041", "Hovsgol"),
+(1144, "053", "Omnogovi"),
+(1144, "035", "Orhon"),
+(1144, "055", "Ovorhangay"),
+(1144, "049", "Selenge"),
+(1144, "051", "Shbaatar"),
+(1144, "047", "Tov"),
+(1144, "046", "Uvs"),
+(1137, "NKC", "Nouakchott"),
+(1137, "03", "Assaba"),
+(1137, "05", "Brakna"),
+(1137, "08", "Dakhlet Nouadhibou"),
+(1137, "04", "Gorgol"),
+(1137, "10", "Guidimaka"),
+(1137, "01", "Hodh ech Chargui"),
+(1137, "02", "Hodh el Charbi"),
+(1137, "12", "Inchiri"),
+(1137, "09", "Tagant"),
+(1137, "11", "Tiris Zemmour"),
+(1137, "06", "Trarza"),
+(1138, "BR", "Beau Bassin-Rose Hill"),
+(1138, "CU", "Curepipe"),
+(1138, "PU", "Port Louis"),
+(1138, "QB", "Quatre Bornes"),
+(1138, "VP", "Vacosa-Phoenix"),
+(1138, "BL", "Black River"),
+(1138, "FL", "Flacq"),
+(1138, "GP", "Grand Port"),
+(1138, "MO", "Moka"),
+(1138, "PA", "Pamplemousses"),
+(1138, "PW", "Plaines Wilhems"),
+(1138, "RP", "Riviere du Rempart"),
+(1138, "SA", "Savanne"),
+(1138, "AG", "Agalega Islands"),
+(1138, "CC", "Cargados Carajos Shoals"),
+(1138, "RO", "Rodrigues Island"),
+(1132, "MLE", "Male"),
+(1132, "02", "Alif"),
+(1132, "20", "Baa"),
+(1132, "17", "Dhaalu"),
+(1132, "14", "Faafu"),
+(1132, "27", "Gaaf Alif"),
+(1132, "28", "Gaefu Dhaalu"),
+(1132, "29", "Gnaviyani"),
+(1132, "07", "Haa Alif"),
+(1132, "23", "Haa Dhaalu"),
+(1132, "26", "Kaafu"),
+(1132, "05", "Laamu"),
+(1132, "03", "Lhaviyani"),
+(1132, "12", "Meemu"),
+(1132, "25", "Noonu"),
+(1132, "13", "Raa"),
+(1132, "01", "Seenu"),
+(1132, "24", "Shaviyani"),
+(1132, "08", "Thaa"),
+(1132, "04", "Vaavu"),
+(1130, "BA", "Balaka"),
+(1130, "BL", "Blantyre"),
+(1130, "CK", "Chikwawa"),
+(1130, "CR", "Chiradzulu"),
+(1130, "CT", "Chitipa"),
+(1130, "DE", "Dedza"),
+(1130, "DO", "Dowa"),
+(1130, "KR", "Karonga"),
+(1130, "KS", "Kasungu"),
+(1130, "LK", "Likoma Island"),
+(1130, "LI", "Lilongwe"),
+(1130, "MH", "Machinga"),
+(1130, "MG", "Mangochi"),
+(1130, "MC", "Mchinji"),
+(1130, "MU", "Mulanje"),
+(1130, "MW", "Mwanza"),
+(1130, "MZ", "Mzimba"),
+(1130, "NB", "Nkhata Bay"),
+(1130, "NK", "Nkhotakota"),
+(1130, "NS", "Nsanje"),
+(1130, "NU", "Ntcheu"),
+(1130, "NI", "Ntchisi"),
+(1130, "PH", "Phalomba"),
+(1130, "RU", "Rumphi"),
+(1130, "SA", "Salima"),
+(1130, "TH", "Thyolo"),
+(1130, "ZO", "Zomba"),
+(1140, "AGU", "Aguascalientes"),
+(1140, "BCN", "Baja California"),
+(1140, "BCS", "Baja California Sur"),
+(1140, "CAM", "Campeche"),
+(1140, "COA", "Coahuila"),
+(1140, "COL", "Colima"),
+(1140, "CHP", "Chiapas"),
+(1140, "CHH", "Chihuahua"),
+(1140, "DUR", "Durango"),
+(1140, "GUA", "Guanajuato"),
+(1140, "GRO", "Guerrero"),
+(1140, "HID", "Hidalgo"),
+(1140, "JAL", "Jalisco"),
+(1140, "MEX", "Mexico"),
+(1140, "MIC", "Michoacin"),
+(1140, "MOR", "Morelos"),
+(1140, "NAY", "Nayarit"),
+(1140, "NLE", "Nuevo Leon"),
+(1140, "OAX", "Oaxaca"),
+(1140, "PUE", "Puebla"),
+(1140, "QUE", "Queretaro"),
+(1140, "ROO", "Quintana Roo"),
+(1140, "SLP", "San Luis Potosi"),
+(1140, "SIN", "Sinaloa"),
+(1140, "SON", "Sonora"),
+(1140, "TAB", "Tabasco"),
+(1140, "TAM", "Tamaulipas"),
+(1140, "TLA", "Tlaxcala"),
+(1140, "VER", "Veracruz"),
+(1140, "YUC", "Yucatan"),
+(1140, "ZAC", "Zacatecas"),
+(1140, "DIF", "Distrito Federal"),
+(1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
+(1131, "15", "Wilayah Persekutuan Labuan"),
+(1131, "16", "Wilayah Persekutuan Putrajaya"),
+(1131, "01", "Johor"),
+(1131, "02", "Kedah"),
+(1131, "03", "Kelantan"),
+(1131, "04", "Melaka"),
+(1131, "05", "Negeri Sembilan"),
+(1131, "06", "Pahang"),
+(1131, "08", "Perak"),
+(1131, "09", "Perlis"),
+(1131, "07", "Pulau Pinang"),
+(1131, "12", "Sabah"),
+(1131, "13", "Sarawak"),
+(1131, "10", "Selangor"),
+(1131, "11", "Terengganu"),
+(1147, "MPM", "Maputo"),
+(1147, "P", "Cabo Delgado"),
+(1147, "G", "Gaza"),
+(1147, "I", "Inhambane"),
+(1147, "B", "Manica"),
+(1147, "N", "Numpula"),
+(1147, "A", "Niaaea"),
+(1147, "S", "Sofala"),
+(1147, "T", "Tete"),
+(1147, "Q", "Zambezia"),
+(1148, "CA", "Caprivi"),
+(1148, "ER", "Erongo"),
+(1148, "HA", "Hardap"),
+(1148, "KA", "Karas"),
+(1148, "KH", "Khomas"),
+(1148, "KU", "Kunene"),
+(1148, "OW", "Ohangwena"),
+(1148, "OK", "Okavango"),
+(1148, "OH", "Omaheke"),
+(1148, "OS", "Omusati"),
+(1148, "ON", "Oshana"),
+(1148, "OT", "Oshikoto"),
+(1148, "OD", "Otjozondjupa"),
+(1156, "8", "Niamey"),
+(1156, "1", "Agadez"),
+(1156, "2", "Diffa"),
+(1156, "3", "Dosso"),
+(1156, "4", "Maradi"),
+(1156, "S", "Tahoua"),
+(1156, "6", "Tillaberi"),
+(1156, "7", "Zinder"),
+(1157, "FC", "Abuja Federal Capital Territory"),
+(1157, "AB", "Abia"),
+(1157, "AD", "Adamawa"),
+(1157, "AK", "Akwa Ibom"),
+(1157, "AN", "Anambra"),
+(1157, "BA", "Bauchi"),
+(1157, "BY", "Bayelsa"),
+(1157, "BE", "Benue"),
+(1157, "BO", "Borno"),
+(1157, "CR", "Cross River"),
+(1157, "DE", "Delta"),
+(1157, "EB", "Ebonyi"),
+(1157, "ED", "Edo"),
+(1157, "EK", "Ekiti"),
+(1157, "EN", "Enugu"),
+(1157, "GO", "Gombe"),
+(1157, "IM", "Imo"),
+(1157, "JI", "Jigawa"),
+(1157, "KD", "Kaduna"),
+(1157, "KN", "Kano"),
+(1157, "KT", "Katsina"),
+(1157, "KE", "Kebbi"),
+(1157, "KO", "Kogi"),
+(1157, "KW", "Kwara"),
+(1157, "LA", "Lagos"),
+(1157, "NA", "Nassarawa"),
+(1157, "NI", "Niger"),
+(1157, "OG", "Ogun"),
+(1157, "ON", "Ondo"),
+(1157, "OS", "Osun"),
+(1157, "OY", "Oyo"),
+(1157, "RI", "Rivers"),
+(1157, "SO", "Sokoto"),
+(1157, "TA", "Taraba"),
+(1157, "YO", "Yobe"),
+(1157, "ZA", "Zamfara"),
+(1157, "PL", "Plateau"),
+(1155, "BO", "Boaco"),
+(1155, "CA", "Carazo"),
+(1155, "CI", "Chinandega"),
+(1155, "CO", "Chontales"),
+(1155, "ES", "Esteli"),
+(1155, "JI", "Jinotega"),
+(1155, "LE", "Leon"),
+(1155, "MD", "Madriz"),
+(1155, "MN", "Managua"),
+(1155, "MS", "Masaya"),
+(1155, "MT", "Matagalpa"),
+(1155, "NS", "Nueva Segovia"),
+(1155, "SJ", "Rio San Juan"),
+(1155, "RI", "Rivas"),
+(1155, "AN", "Atlantico Norte"),
+(1155, "AS", "Atlantico Sur"),
+(1152, "DR", "Drente"),
+(1152, "FL", "Flevoland"),
+(1152, "FR", "Friesland"),
+(1152, "GL", "Gelderland"),
+(1152, "GR", "Groningen"),
+(1152, "NB", "Noord-Brabant"),
+(1152, "NH", "Noord-Holland"),
+(1152, "OV", "Overijssel"),
+(1152, "UT", "Utrecht"),
+(1152, "ZH", "Zuid-Holland"),
+(1152, "ZL", "Zeeland"),
+(1161, "02", "Akershus"),
+(1161, "09", "Aust-Agder"),
+(1161, "06", "Buskerud"),
+(1161, "20", "Finnmark"),
+(1161, "04", "Hedmark"),
+(1161, "15", "Møre og Romsdal"),
+(1161, "18", "Nordland"),
+(1161, "17", "Nord-Trøndelag"),
+(1161, "05", "Oppland"),
+(1161, "03", "Oslo"),
+(1161, "11", "Rogaland"),
+(1161, "16", "Sør-Trøndelag"),
+(1161, "06", "Telemark"),
+(1161, "19", "Troms"),
+(1161, "10", "Vest-Agder"),
+(1161, "07", "Vestfold"),
+(1161, "46", "Vestland"),
+(1161, "01", "Østfold"),
+(1161, "22", "Jan Mayen"),
+(1161, "21", "Svalbard"),
+(1154, "AUK", "Auckland"),
+(1154, "BOP", "Bay of Plenty"),
+(1154, "CAN", "Canterbury"),
+(1154, "GIS", "Gisborne"),
+(1154, "HKB", "Hawkes Bay"),
+(1154, "MWT", "Manawatu-Wanganui"),
+(1154, "MBH", "Marlborough"),
+(1154, "NSN", "Nelson"),
+(1154, "NTL", "Northland"),
+(1154, "OTA", "Otago"),
+(1154, "STL", "Southland"),
+(1154, "TKI", "Taranaki"),
+(1154, "TAS", "Tasman"),
+(1154, "WKO", "Waikato"),
+(1154, "WGN", "Wellington"),
+(1154, "WTC", "West Coast"),
+(1162, "DA", "Ad Dakhillyah"),
+(1162, "BA", "Al Batinah"),
+(1162, "JA", "Al Janblyah"),
+(1162, "WU", "Al Wusta"),
+(1162, "SH", "Ash Sharqlyah"),
+(1162, "ZA", "Az Zahirah"),
+(1162, "MA", "Masqat"),
+(1162, "MU", "Musandam"),
 -- Palestinian governorates from http://en.wikipedia.org/wiki/Governorates_of_the_Palestinian_National_Authority (no ISO 3166-2 entries yet, hence temporary codes)
-(5201, 1165, "_A", "Jenin"),
-(5202, 1165, "_B", "Tubas"),
-(5203, 1165, "_C", "Tulkarm"),
-(5204, 1165, "_D", "Nablus"),
-(5205, 1165, "_E", "Qalqilya"),
-(5206, 1165, "_F", "Salfit"),
-(5207, 1165, "_G", "Ramallah and Al-Bireh"),
-(5208, 1165, "_H", "Jericho"),
-(5209, 1165, "_I", "Jerusalem"),
-(5210, 1165, "_J", "Bethlehem"),
-(5211, 1165, "_K", "Hebron"),
-(5212, 1165, "_L", "North Gaza"),
-(5213, 1165, "_M", "Gaza"),
-(5214, 1165, "_N", "Deir el-Balah"),
-(5215, 1165, "_O", "Khan Yunis"),
-(5216, 1165, "_P", "Rafah"),
-
-(5217, 1020, "BRU", "Brussels"),
-
-(5218, 1140, "DIF", "Distrito Federal"),
-(5219, 1208, "TXG", "Taichung City"),
-(5220, 1208, "KHH", "Kaohsiung City"),
-(5221, 1208, "TPE", "Taipei City"),
-(5222, 1208, "CYI", "Chiayi City"),
-(5223, 1208, "HSZ", "Hsinchu City"),
-(5224, 1208, "TNN", "Tainan City"),
-(9000, 1196, "NW", "North West"),
-
-(9986, 1226, "TWR", "Tyne and Wear"),
-(9988, 1226, "GTM", "Greater Manchester"),
-(9989, 1226, "TYR", "Co Tyrone"),
-(9990, 1226, "WYK", "West Yorkshire"),
-(9991, 1226, "SYK", "South Yorkshire"),
-(9992, 1226, "MSY", "Merseyside"),
-(9993, 1226, "BRK", "Berkshire"),
-(9994, 1226, "WMD", "West Midlands"),
-(9998, 1226, "WGM", "West Glamorgan"),
-(9999, 1226, "LON", "London"),
-
-(10000, 1107, "CI", "Carbonia-Iglesias"),
-(10001, 1107, "OT", "Olbia-Tempio"),
-(10002, 1107, "VS", "Medio Campidano"),
-(10003, 1107, "OG", "Ogliastra"),
-
--- department of France (CRM-4769)
-(10009, 1076, "39", "Jura"),
-
--- new Italian provinces (CRM-5048)
-(10010, 1107, "BT", "Barletta-Andria-Trani"),
-(10011, 1107, "FM", "Fermo"),
-(10012, 1107, "MB", "Monza e Brianza"),
-
--- new UK provinces (CRM-5224)
-(10013, 1226, "CWD", "Clwyd"),
-(10015, 1226, "SGM", "South Glamorgan"),
-
--- Haiti (CRM-5628)
-(10016, 1094, "AR", "Artibonite"),
-(10017, 1094, "CE", "Centre"),
-(10018, 1094, "NI", "Nippes"),
-(10019, 1094, "ND", "Nord"),
-
--- CRM-6002 - Argentinian provinces suplemented
-(10020, 1010, "F", "La Rioja"),
-
--- CRM-6063 - Added states for Andorra
-(10021, 1005, "07", "Andorra la Vella"),
-(10022, 1005, "02", "Canillo"),
-(10023, 1005, "03", "Encamp"),
-(10024, 1005, "08", "Escaldes-Engordany"),
-(10025, 1005, "04", "La Massana"),
-(10026, 1005, "05", "Ordino"),
-(10027, 1005, "06", "Sant Julia de Loria"),
-
--- CRM-6198 - Added provinces of Bahamas
-(NULL, 1212, "AB", "Abaco Islands"),
-(NULL, 1212, "AN", "Andros Island"),
-(NULL, 1212, "BR", "Berry Islands"),
-(NULL, 1212, "EL", "Eleuthera"),
-(NULL, 1212, "GB", "Grand Bahama"),
-(NULL, 1212, "RC", "Rum Cay"),
-(NULL, 1212, "SS", "San Salvador Island"),
-
--- Added provinces of The Democratic Republic of the Congo
-
-(NULL, 1050, "01", "Kongo central"),
-(NULL, 1050, "02", "Kwango"),
-(NULL, 1050, "03", "Kwilu"),
-(NULL, 1050, "04", "Mai-Ndombe"),
-(NULL, 1050, "05", "Kasai"),
-(NULL, 1050, "06", "Lulua"),
-(NULL, 1050, "07", "Lomami"),
-(NULL, 1050, "08", "Sankuru"),
-(NULL, 1050, "09", "Ituri"),
-(NULL, 1050, "10", "Haut-Uele"),
-(NULL, 1050, "11", "Tshopo"),
-(NULL, 1050, "12", "Bas-Uele"),
-(NULL, 1050, "13", "Nord-Ubangi"),
-(NULL, 1050, "14", "Mongala"),
-(NULL, 1050, "15", "Sud-Ubangi"),
-(NULL, 1050, "16", "Tshuapa"),
-(NULL, 1050, "17", "Haut-Lomami"),
-(NULL, 1050, "18", "Lualaba"),
-(NULL, 1050, "19", "Haut-Katanga"),
-(NULL, 1050, "20", "Tanganyika"),
-
--- CRM-8009 Added Missing Provinces for Spain
-(NULL, 1198, "TO", "Toledo" ),
-(NULL, 1198, "CO", "Córdoba" ),
-
--- CRM-8769 Added Missing Province for Philippines
-(NULL, 1170, "MNL", "Metropolitan Manila" ),
-
--- CRM-9686 Added Missing Province for Honduras
-(NULL, 1097, "LP", "La Paz"),
-
--- CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China
-(NULL, 1045, "YN", "Yinchuan"),
-(NULL, 1045, "SZ", "Shizuishan"),
-(NULL, 1045, "WZ", "Wuzhong"),
-(NULL, 1045, "GY", "Guyuan"),
-(NULL, 1045, "ZW", "Zhongwei"),
-
--- CRM-10863 Added Missing Province for Luxembourg
-(NULL, 1126, "LU", "Luxembourg"),
-
--- CRM-11367 Latvian regions
-(NULL, 1119, "002", "Aizkraukles novads"),
-(NULL, 1119, "038", "Jaunjelgavas novads"),
-(NULL, 1119, "072", "Pļaviņu novads"),
-(NULL, 1119, "046", "Kokneses novads"),
-(NULL, 1119, "065", "Neretas novads"),
-(NULL, 1119, "092", "Skrīveru novads"),
-(NULL, 1119, "007", "Alūksnes novads"),
-(NULL, 1119, "009", "Apes novads"),
-(NULL, 1119, "015", "Balvu novads"),
-(NULL, 1119, "108", "Viļakas novads"),
-(NULL, 1119, "014", "Baltinavas novads"),
-(NULL, 1119, "082", "Rugāju novads"),
-(NULL, 1119, "016", "Bauskas novads"),
-(NULL, 1119, "034", "Iecavas novads"),
-(NULL, 1119, "083", "Rundāles novads"),
-(NULL, 1119, "105", "Vecumnieku novads"),
-(NULL, 1119, "022", "CÄ“su novads"),
-(NULL, 1119, "055", "LÄ«gatnes novads"),
-(NULL, 1119, "008", "Amatas novads"),
-(NULL, 1119, "039", "Jaunpiebalgas novads"),
-(NULL, 1119, "075", "Priekuļu novads"),
-(NULL, 1119, "070", "Pārgaujas novads"),
-(NULL, 1119, "076", "Raunas novads"),
-(NULL, 1119, "104", "Vecpiebalgas novads"),
-(NULL, 1119, "025", "Daugavpils novads"),
-(NULL, 1119, "036", "Ilūkstes novads"),
-(NULL, 1119, "026", "Dobeles novads"),
-(NULL, 1119, "010", "Auces novads"),
-(NULL, 1119, "098", "TÄ“rvetes novads"),
-(NULL, 1119, "033", "Gulbenes novads"),
-(NULL, 1119, "041", "Jelgavas novads"),
-(NULL, 1119, "069", "Ozolnieku novads"),
-(NULL, 1119, "042", "JÄ“kabpils novads"),
-(NULL, 1119, "004", "Aknīstes novads"),
-(NULL, 1119, "107", "Viesītes novads"),
-(NULL, 1119, "049", "Krustpils novads"),
-(NULL, 1119, "085", "Salas novads"),
-(NULL, 1119, "047", "Krāslavas novads"),
-(NULL, 1119, "024", "Dagdas novads"),
-(NULL, 1119, "001", "Aglonas novads"),
-(NULL, 1119, "050", "Kuldīgas novads"),
-(NULL, 1119, "093", "Skrundas novads"),
-(NULL, 1119, "006", "Alsungas novads"),
-(NULL, 1119, "003", "Aizputes novads"),
-(NULL, 1119, "028", "Durbes novads"),
-(NULL, 1119, "032", "Grobiņas novads"),
-(NULL, 1119, "071", "Pāvilostas novads"),
-(NULL, 1119, "074", "Priekules novads"),
-(NULL, 1119, "066", "NÄ«cas novads"),
-(NULL, 1119, "081", "Rucavas novads"),
-(NULL, 1119, "100", "Vaiņodes novads"),
-(NULL, 1119, "054", "Limbažu novads"),
-(NULL, 1119, "005", "Alojas novads"),
-(NULL, 1119, "086", "Salacgrīvas novads"),
-(NULL, 1119, "058", "Ludzas novads"),
-(NULL, 1119, "044", "Kārsavas novads"),
-(NULL, 1119, "110", "Zilupes novads"),
-(NULL, 1119, "023", "Ciblas novads"),
-(NULL, 1119, "059", "Madonas novads"),
-(NULL, 1119, "021", "Cesvaines novads"),
-(NULL, 1119, "057", "Lubānas novads"),
-(NULL, 1119, "102", "Varakļānu novads"),
-(NULL, 1119, "030", "Ērgļu novads"),
-(NULL, 1119, "067", "Ogres novads"),
-(NULL, 1119, "035", "Ikšķiles novads"),
-(NULL, 1119, "051", "Ķeguma novads"),
-(NULL, 1119, "053", "Lielvārdes novads"),
-(NULL, 1119, "073", "Preiļu novads"),
-(NULL, 1119, "056", "Līvānu novads"),
-(NULL, 1119, "078", "Riebiņu novads"),
-(NULL, 1119, "103", "Vārkavas novads"),
-(NULL, 1119, "077", "RÄ“zeknes novads"),
-(NULL, 1119, "109", "Viļānu novads"),
-(NULL, 1119, "013", "Baldones novads"),
-(NULL, 1119, "052", "Ķekavas novads"),
-(NULL, 1119, "068", "Olaines novads"),
-(NULL, 1119, "087", "Salaspils novads"),
-(NULL, 1119, "089", "Saulkrastu novads"),
-(NULL, 1119, "091", "Siguldas novads"),
-(NULL, 1119, "037", "Inčukalna novads"),
-(NULL, 1119, "011", "Ādažu novads"),
-(NULL, 1119, "012", "Babītes novads"),
-(NULL, 1119, "020", "Carnikavas novads"),
-(NULL, 1119, "031", "Garkalnes novads"),
-(NULL, 1119, "048", "Krimuldas novads"),
-(NULL, 1119, "061", "Mālpils novads"),
-(NULL, 1119, "062", "Mārupes novads"),
-(NULL, 1119, "080", "Ropažu novads"),
-(NULL, 1119, "090", "SÄ“jas novads"),
-(NULL, 1119, "095", "Stopiņu novads"),
-(NULL, 1119, "088", "Saldus novads"),
-(NULL, 1119, "018", "Brocēnu novads"),
-(NULL, 1119, "097", "Talsu novads"),
-(NULL, 1119, "027", "Dundagas novads"),
-(NULL, 1119, "063", "MÄ“rsraga novads"),
-(NULL, 1119, "079", "Rojas novads"),
-(NULL, 1119, "099", "Tukuma novads"),
-(NULL, 1119, "043", "Kandavas novads"),
-(NULL, 1119, "029", "Engures novads"),
-(NULL, 1119, "040", "Jaunpils novads"),
-(NULL, 1119, "101", "Valkas novads"),
-(NULL, 1119, "094", "Smiltenes novads"),
-(NULL, 1119, "096", "Strenču novads"),
-(NULL, 1119, "045", "Kocēnu novads"),
-(NULL, 1119, "060", "Mazsalacas novads"),
-(NULL, 1119, "084", "RÅ«jienas novads"),
-(NULL, 1119, "017", "Beverīnas novads"),
-(NULL, 1119, "019", "Burtnieku novads"),
-(NULL, 1119, "064", "Naukšēnu novads"),
-(NULL, 1119, "106", "Ventspils novads"),
-(NULL, 1119, "JKB", "JÄ“kabpils"),
-(NULL, 1119, "VMR", "Valmiera"),
-
--- CRM-13314 Added States for Uruguay
-(NULL, 1229, "FL", "Florida"),
-(NULL, 1229, "RN", "Rio Negro"),
-(NULL, 1229, "SJ", "San Jose"),
-
--- Added Nigeria States(CRM-14183)
-(NULL, 1157, "PL", "Plateau"),
-
-
--- CRM-14493 Added State for Greece
-(NULL, 1085, "61", "Pieria"),
-
--- CRM-14843 Added States for Chile and Modify Santiago Metropolitan for consistency
-(NULL, 1044, "LR", "Los Rios"),
-(NULL, 1044, "AP", "Arica y Parinacota"),
-
--- Add missing Peruvian State (Amazonas)
-(NULL, 1169, "AMA", "Amazonas"),
-
--- Add missing Indonesian provinces (Kalimantan Tengah, Sulawesi Barat, Kalimantan Utara) and revised outdated names in code above
-(NULL, 1102, "KT", "Kalimantan Tengah"),
-(NULL, 1102, "SR", "Sulawesi Barat"),
-(NULL, 1102, "KU", "Kalimantan Utara"),
-
--- Add missing Slovenian municipalities
-(NULL, 1193, "86", "Ankaran"),
-(NULL, 1193, "87", "Apače"),
-(NULL, 1193, "88", "Cirkulane"),
-(NULL, 1193, "89", "Gorje"),
-(NULL, 1193, "90", "Kostanjevica na Krki"),
-(NULL, 1193, "91", "Log-Dragomer"),
-(NULL, 1193, "92", "Makole"),
-(NULL, 1193, "93", "Mirna"),
-(NULL, 1193, "94", "Mokronog-Trebelno"),
-(NULL, 1193, "95", "Odranci"),
-(NULL, 1193, "96", "Oplotnica"),
-(NULL, 1193, "97", "Ormož"),
-(NULL, 1193, "98", "Osilnica"),
-(NULL, 1193, "99", "Pesnica"),
-(NULL, 1193, "100", "Piran"),
-(NULL, 1193, "101", "Pivka"),
-(NULL, 1193, "102", "Podčetrtek"),
-(NULL, 1193, "103", "Podlehnik"),
-(NULL, 1193, "104", "Podvelka"),
-(NULL, 1193, "105", "Poljčane"),
-(NULL, 1193, "106", "Polzela"),
-(NULL, 1193, "107", "Postojna"),
-(NULL, 1193, "108", "Prebold"),
-(NULL, 1193, "109", "Preddvor"),
-(NULL, 1193, "110", "Prevalje"),
-(NULL, 1193, "111", "Ptuj"),
-(NULL, 1193, "112", "Puconci"),
-(NULL, 1193, "113", "Rače-Fram"),
-(NULL, 1193, "114", "Radeče"),
-(NULL, 1193, "115", "Radenci"),
-(NULL, 1193, "139", "Radlje ob Dravi"),
-(NULL, 1193, "145", "Radovljica"),
-(NULL, 1193, "171", "Ravne na Koroškem"),
-(NULL, 1193, "172", "Razkrižje"),
-(NULL, 1193, "173", "Rečica ob Savinji"),
-(NULL, 1193, "174", "Renče-Vogrsko"),
-(NULL, 1193, "175", "Ribnica"),
-(NULL, 1193, "176", "Ribnica na Pohorju"),
-(NULL, 1193, "177", "Rogaška Slatina"),
-(NULL, 1193, "178", "Rogašovci"),
-(NULL, 1193, "179", "Rogatec"),
-(NULL, 1193, "180", "Ruše"),
-(NULL, 1193, "195", "Selnica ob Dravi"),
-(NULL, 1193, "196", "Semič"),
-(NULL, 1193, "197", "Å entrupert"),
-(NULL, 1193, "198", "Sevnica"),
-(NULL, 1193, "199", "Sežana"),
-(NULL, 1193, "200", "Slovenj Gradec"),
-(NULL, 1193, "201", "Slovenska Bistrica"),
-(NULL, 1193, "202", "Slovenske Konjice"),
-(NULL, 1193, "203", "Šmarješke Toplice"),
-(NULL, 1193, "204", "Sodražica"),
-(NULL, 1193, "205", "Solčava"),
-(NULL, 1193, "206", "Središče ob Dravi"),
-(NULL, 1193, "207", "Starše"),
-(NULL, 1193, "208", "Straža"),
-(NULL, 1193, "209", "Sveta Trojica v Slovenskih goricah"),
-(NULL, 1193, "210", "Sveti Jurij v Slovenskih goricah"),
-(NULL, 1193, "211", "Sveti Tomaž"),
-(NULL, 1193, "212", "Vodice"),
-
--- CRM-16452 Missing administrative divisions for Georgia
-(NULL, 1081, "AB", "Abkhazia"),
-(NULL, 1081, "AJ", "Adjara"),
-(NULL, 1081, "TB", "Tbilisi"),
-(NULL, 1081, "GU", "Guria"),
-(NULL, 1081, "IM", "Imereti"),
-(NULL, 1081, "KA", "Kakheti"),
-(NULL, 1081, "KK", "Kvemo Kartli"),
-(NULL, 1081, "MM", "Mtskheta-Mtianeti"),
-(NULL, 1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
-(NULL, 1081, "SZ", "Samegrelo-Zemo Svaneti"),
-(NULL, 1081, "SJ", "Samtskhe-Javakheti"),
-(NULL, 1081, "SK", "Shida Kartli"),
-(NULL, 1074, "C", "Central"),
-
--- CRM-17136 Add missing Pakistani Province (Punjab)
-(NULL, 1163, "PB", "Punjab"),
-
--- CRM-17184
-(NULL, 1066, "LI", "La Libertad"),
-(NULL, 1066, "PA", "La Paz"),
-(NULL, 1066, "UN", "La Union"),
-
--- CRM-17660 Add missing Cameroon Provinces
-(NULL, 1038, "LT", "Littoral"),
-(NULL, 1038, "NW", "Nord-Ouest"),
-
--- Add Indian province of Telangana
-(NULL, 1101, "TG", "Telangana"),
-
--- CRM-17800
-(NULL, 1187, "04", "Ash Sharqiyah"),
-
--- CRM-19134 Missing French overseas departments.
-(NULL, 1076, "GP", "Guadeloupe"),
-(NULL, 1076, "MQ", "Martinique"),
-(NULL, 1076, "GF", "Guyane"),
-(NULL, 1076, "RE", "La Réunion"),
-(NULL, 1076, "YT", "Mayotte"),
-
--- CRM-20062 New counties of Kenya.
-(NULL, 1112, "01", "Baringo"),
-(NULL, 1112, "02", "Bomet"),
-(NULL, 1112, "03", "Bungoma"),
-(NULL, 1112, "04", "Busia"),
-(NULL, 1112, "05", "Elgeyo/Marakwet"),
-(NULL, 1112, "06", "Embu"),
-(NULL, 1112, "07", "Garissa"),
-(NULL, 1112, "08", "Homa Bay"),
-(NULL, 1112, "09", "Isiolo"),
-(NULL, 1112, "10", "Kajiado"),
-(NULL, 1112, "11", "Kakamega"),
-(NULL, 1112, "12", "Kericho"),
-(NULL, 1112, "13", "Kiambu"),
-(NULL, 1112, "14", "Kilifi"),
-(NULL, 1112, "15", "Kirinyaga"),
-(NULL, 1112, "16", "Kisii"),
-(NULL, 1112, "17", "Kisumu"),
-(NULL, 1112, "18", "Kitui"),
-(NULL, 1112, "19", "Kwale"),
-(NULL, 1112, "20", "Laikipia"),
-(NULL, 1112, "21", "Lamu"),
-(NULL, 1112, "22", "Machakos"),
-(NULL, 1112, "23", "Makueni"),
-(NULL, 1112, "24", "Mandera"),
-(NULL, 1112, "25", "Marsabit"),
-(NULL, 1112, "26", "Meru"),
-(NULL, 1112, "27", "Migori"),
-(NULL, 1112, "28", "Mombasa"),
-(NULL, 1112, "29", "Murang'a"),
-(NULL, 1112, "30", "Nairobi City"),
-(NULL, 1112, "31", "Nakuru"),
-(NULL, 1112, "32", "Nandi"),
-(NULL, 1112, "33", "Narok"),
-(NULL, 1112, "34", "Nyamira"),
-(NULL, 1112, "35", "Nyandarua"),
-(NULL, 1112, "36", "Nyeri"),
-(NULL, 1112, "37", "Samburu"),
-(NULL, 1112, "38", "Siaya"),
-(NULL, 1112, "39", "Taita/Taveta"),
-(NULL, 1112, "40", "Tana River"),
-(NULL, 1112, "41", "Tharaka-Nithi"),
-(NULL, 1112, "42", "Trans Nzoia"),
-(NULL, 1112, "43", "Turkana"),
-(NULL, 1112, "44", "Uasin Gishu"),
-(NULL, 1112, "45", "Vihiga"),
-(NULL, 1112, "46", "Wajir"),
-(NULL, 1112, "47", "West Pokot"),
-
--- CRM-19993 Fixes for ISO compliance with countries and counties
--- Add states for: India, Ghana, Sierra Leone, Saint Kitts & Nevis
-(NULL, 1101, "CH", "Chandigarh"),
-(NULL, 1083, "CP", "Central"),
-(NULL, 1083, "EP", "Eastern"),
-(NULL, 1083, "NP", "Northern"),
-(NULL, 1083, "WP", "Western"),
-(NULL, 1181, "K", "Saint Kitts"),
-(NULL, 1181, "N", "Nevis"),
-(NULL, 1190, "E", "Eastern"),
-(NULL, 1190, "N", "Northern"),
-(NULL, 1190, "S", "Southern"),
-
--- CRM-21234 Missing subdivisions of Tajikistan.
-(NULL, 1209, "DU", "Dushanbe"),
-(NULL, 1209, "RA", "Nohiyahoi Tobei Jumhurí"),
-
--- CRM-21268 Missing French overseas departments.
-(NULL, 1076, "WF", "Wallis-et-Futuna"),
-(NULL, 1076, "NC", "Nouvelle-Calédonie"),
-
--- CRM-21532 Add French state/departments
-(NULL, 1076, "52", "Haute-Marne"),
-
--- Add states for: Barbados and Antigua and Barbuda
-(NULL, 1009, "03", "Saint George"),
-(NULL, 1009, "04", "Saint John"),
-(NULL, 1009, "05", "Saint Mary"),
-(NULL, 1009, "06", "Saint Paul"),
-(NULL, 1009, "07", "Saint Peter"),
-(NULL, 1009, "08", "Saint Philip"),
-(NULL, 1009, "10", "Barbuda"),
-(NULL, 1009, "11", "Redonda"),
-(NULL, 1018, "01", "Christ Church"),
-(NULL, 1018, "02", "Saint Andrew"),
-(NULL, 1018, "03", "Saint George"),
-(NULL, 1018, "04", "Saint James"),
-(NULL, 1018, "05", "Saint John"),
-(NULL, 1018, "06", "Saint Joseph"),
-(NULL, 1018, "07", "Saint Lucy"),
-(NULL, 1018, "08", "Saint Michael"),
-(NULL, 1018, "09", "Saint Peter"),
-(NULL, 1018, "10", "Saint Philip"),
-(NULL, 1018, "11", "Saint Thomas"),
-
--- CRM-21837 - Missing states for Gabon
-(NULL, 1080, "01", "Estuaire"),
-(NULL, 1080, "02", "Haut-Ogooué"),
-(NULL, 1080, "03", "Moyen-Ogooué"),
-(NULL, 1080, "04", "Ngounié"),
-(NULL, 1080, "05", "Nyanga"),
-(NULL, 1080, "06", "Ogooué-Ivindo"),
-(NULL, 1080, "07", "Ogooué-Lolo"),
-(NULL, 1080, "08", "Ogooué-Maritime"),
-(NULL, 1080, "09", "Woleu-Ntem"),
-
--- dev/Core#131 Missing UK State
-(NULL, 1226, "MON", "Monmouthshire"),
-
--- dev/core#2027 Missing subdivisions for Northern Ireland and Wales
-(NULL, 1226, "ANN", "Antrim and Newtownabbey"),
-(NULL, 1226, "AND", "Ards and North Down"),
-(NULL, 1226, "ABC", "Armagh City, Banbridge and Craigavon"),
-(NULL, 1226, "BFS", "Belfast"),
-(NULL, 1226, "CCG", "Causeway Coast and Glens"),
-(NULL, 1226, "DRS", "Derry City and Strabane"),
-(NULL, 1226, "FMO", "Fermanagh and Omagh"),
-(NULL, 1226, "LBC", "Lisburn and Castlereagh"),
-(NULL, 1226, "MEA", "Mid and East Antrim"),
-(NULL, 1226, "MUL", "Mid Ulster"),
-(NULL, 1226, "NMD", "Newry, Mourne and Down"),
-
-(NULL, 1226, "BGE", "Bridgend"),
-(NULL, 1226, "CAY", "Caerphilly"),
-(NULL, 1226, "CRF", "Cardiff"),
-(NULL, 1226, "CMN", "Carmarthenshire"),
-(NULL, 1226, "CGN", "Ceredigion"),
-(NULL, 1226, "CWY", "Conwy"),
-(NULL, 1226, "DEN", "Denbighshire"),
-(NULL, 1226, "FLN", "Flintshire"),
-(NULL, 1226, "AGY", "Isle of Anglesey"),
-(NULL, 1226, "MTY", "Merthyr Tydfil"),
-(NULL, 1226, "NTL", "Neath Port Talbot"),
-(NULL, 1226, "NWP", "Newport"),
-(NULL, 1226, "PEM", "Pembrokeshire"),
-(NULL, 1226, "RCT", "Rhondda, Cynon, Taff"),
-(NULL, 1226, "SWA", "Swansea"),
-(NULL, 1226, "TOF", "Torfaen"),
-(NULL, 1226, "WRX", "Wrexham"),
-
--- Add missing state for South Korea
-(NULL, 1115, "50", "Sejong"),
-
--- Add missing province for Philippines
-(NULL, 1170, "DIN", "Dinagat Islands"),
-
--- Add missing state for Colombia
-(NULL, 1048, "HUI", "Huila"),
-
--- Add missing parishes for Bermuda
- (NULL, 1023, 'DEV', 'Devonshire'),
- (NULL, 1023, 'HAM', 'Hamilton Parish'),
- (NULL, 1023, 'HA', 'City of Hamilton'),
- (NULL, 1023, 'PAG', 'Paget'),
- (NULL, 1023, 'PEM', 'Pembroke'),
- (NULL, 1023, 'SG', 'Town of St. George'),
- (NULL, 1023, 'SGE', 'Saint George\'s'),
- (NULL, 1023, 'SAN', 'Sandys'),
- (NULL, 1023, 'SMI', 'Smiths'),
- (NULL, 1023, 'SOU', 'Southampton'),
- (NULL, 1023, 'WAR', 'Warwick'),
-
--- Add in missing Indian State provinces
-
-(NULL, 1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
-(NULL, 1101, "LA", "Ladākh"),
-
- -- end of statement:
-
--- Add missing provinces for Luxembourg
-(NULL, 1126, 'CA', 'Capellen'),
-(NULL, 1126, 'CL', 'Clervaux'),
-(NULL, 1126, 'EC', 'Echternach'),
-(NULL, 1126, 'ES', 'Esch-sur-Alzette'),
-(NULL, 1126, 'ME', 'Mersch'),
-(NULL, 1126, 'RD', 'Redange-sur-Attert'),
-(NULL, 1126, 'RM', 'Remich'),
-(NULL, 1126, 'VD', 'Vianden'),
-(NULL, 1126, 'WI', 'Wiltz')
-
--- end of statement:
- ;
+(1165, "_A", "Jenin"),
+(1165, "_B", "Tubas"),
+(1165, "_C", "Tulkarm"),
+(1165, "_D", "Nablus"),
+(1165, "_E", "Qalqilya"),
+(1165, "_F", "Salfit"),
+(1165, "_G", "Ramallah and Al-Bireh"),
+(1165, "_H", "Jericho"),
+(1165, "_I", "Jerusalem"),
+(1165, "_J", "Bethlehem"),
+(1165, "_K", "Hebron"),
+(1165, "_L", "North Gaza"),
+(1165, "_M", "Gaza"),
+(1165, "_N", "Deir el-Balah"),
+(1165, "_O", "Khan Yunis"),
+(1165, "_P", "Rafah"),
+(1166, "1", "Bocas del Toro"),
+(1166, "2", "Cocle"),
+(1166, "4", "Chiriqui"),
+(1166, "5", "Darien"),
+(1166, "6", "Herrera"),
+(1166, "7", "Loa Santoa"),
+(1166, "8", "Panama"),
+(1166, "9", "Veraguas"),
+(1166, "Q", "Comarca de San Blas"),
+(1169, "CAL", "El Callao"),
+(1169, "ANC", "Ancash"),
+(1169, "APU", "Apurimac"),
+(1169, "ARE", "Arequipa"),
+(1169, "AYA", "Ayacucho"),
+(1169, "CAJ", "Cajamarca"),
+(1169, "CUS", "Cuzco"),
+(1169, "HUV", "Huancavelica"),
+(1169, "HUC", "Huanuco"),
+(1169, "ICA", "Ica"),
+(1169, "JUN", "Junin"),
+(1169, "LAL", "La Libertad"),
+(1169, "LAM", "Lambayeque"),
+(1169, "LIM", "Lima"),
+(1169, "LOR", "Loreto"),
+(1169, "MDD", "Madre de Dios"),
+(1169, "MOQ", "Moquegua"),
+(1169, "PAS", "Pasco"),
+(1169, "PIU", "Piura"),
+(1169, "PUN", "Puno"),
+(1169, "SAM", "San Martin"),
+(1169, "TAC", "Tacna"),
+(1169, "TUM", "Tumbes"),
+(1169, "UCA", "Ucayali"),
+(1169, "AMA", "Amazonas"),
+(1167, "NCD", "National Capital District (Port Moresby)"),
+(1167, "CPK", "Chimbu"),
+(1167, "EHG", "Eastern Highlands"),
+(1167, "EBR", "East New Britain"),
+(1167, "ESW", "East Sepik"),
+(1167, "EPW", "Enga"),
+(1167, "GPK", "Gulf"),
+(1167, "MPM", "Madang"),
+(1167, "MRL", "Manus"),
+(1167, "MBA", "Milne Bay"),
+(1167, "MPL", "Morobe"),
+(1167, "NIK", "New Ireland"),
+(1167, "NSA", "North Solomons"),
+(1167, "SAN", "Santaun"),
+(1167, "SHM", "Southern Highlands"),
+(1167, "WHM", "Western Highlands"),
+(1167, "WBK", "West New Britain"),
+(1170, "ABR", "Abra"),
+(1170, "AGN", "Agusan del Norte"),
+(1170, "AGS", "Agusan del Sur"),
+(1170, "AKL", "Aklan"),
+(1170, "ALB", "Albay"),
+(1170, "ANT", "Antique"),
+(1170, "APA", "Apayao"),
+(1170, "AUR", "Aurora"),
+(1170, "BAS", "Basilan"),
+(1170, "BAN", "Bataan"),
+(1170, "BTN", "Batanes"),
+(1170, "BTG", "Batangas"),
+(1170, "BEN", "Benguet"),
+(1170, "BIL", "Biliran"),
+(1170, "BOH", "Bohol"),
+(1170, "BUK", "Bukidnon"),
+(1170, "BUL", "Bulacan"),
+(1170, "CAG", "Cagayan"),
+(1170, "CAN", "Camarines Norte"),
+(1170, "CAS", "Camarines Sur"),
+(1170, "CAM", "Camiguin"),
+(1170, "CAP", "Capiz"),
+(1170, "CAT", "Catanduanes"),
+(1170, "CAV", "Cavite"),
+(1170, "CEB", "Cebu"),
+(1170, "COM", "Davao de Oro"),
+(1170, "DAV", "Davao del Norte"),
+(1170, "DAS", "Davao del Sur"),
+(1170, "DAO", "Davao Oriental"),
+(1170, "EAS", "Eastern Samar"),
+(1170, "GUI", "Guimaras"),
+(1170, "IFU", "Ifugao"),
+(1170, "ILN", "Ilocos Norte"),
+(1170, "ILS", "Ilocos Sur"),
+(1170, "ILI", "Iloilo"),
+(1170, "ISA", "Isabela"),
+(1170, "KAL", "Kalinga"),
+(1170, "LAG", "Laguna"),
+(1170, "LAN", "Lanao del Norte"),
+(1170, "LAS", "Lanao del Sur"),
+(1170, "LUN", "La Union"),
+(1170, "LEY", "Leyte"),
+(1170, "MAG", "Maguindanao"),
+(1170, "MAD", "Marinduque"),
+(1170, "MAS", "Masbate"),
+(1170, "MDC", "Mindoro Occidental"),
+(1170, "MDR", "Mindoro Oriental"),
+(1170, "MSC", "Misamis Occidental"),
+(1170, "MSR", "Misamis Oriental"),
+(1170, "MOU", "Mountain Province"),
+(1170, "NEC", "Negroe Occidental"),
+(1170, "NER", "Negros Oriental"),
+(1170, "NCO", "Cotabato"),
+(1170, "NSA", "Northern Samar"),
+(1170, "NUE", "Nueva Ecija"),
+(1170, "NUV", "Nueva Vizcaya"),
+(1170, "PLW", "Palawan"),
+(1170, "PAM", "Pampanga"),
+(1170, "PAN", "Pangasinan"),
+(1170, "QUE", "Quezon"),
+(1170, "QUI", "Quirino"),
+(1170, "RIZ", "Rizal"),
+(1170, "ROM", "Romblon"),
+(1170, "SAR", "Sarangani"),
+(1170, "SIG", "Siquijor"),
+(1170, "SOR", "Sorsogon"),
+(1170, "SCO", "South Cotabato"),
+(1170, "SLE", "Southern Leyte"),
+(1170, "SUK", "Sultan Kudarat"),
+(1170, "SLU", "Sulu"),
+(1170, "SUN", "Surigao del Norte"),
+(1170, "SUR", "Surigao del Sur"),
+(1170, "TAR", "Tarlac"),
+(1170, "TAW", "Tawi-Tawi"),
+(1170, "WSA", "Western Samar"),
+(1170, "ZMB", "Zambales"),
+(1170, "ZAN", "Zamboanga del Norte"),
+(1170, "ZAS", "Zamboanga del Sur"),
+(1170, "ZSI", "Zamboanga Sibiguey"),
+(1170, "DIN", "Dinagat Islands"),
+(1170, "MNL", "Metropolitan Manila"),
+(1163, "IS", "Islamabad Federal Capital Area"),
+(1163, "BA", "Baluchistan"),
+(1163, "NW", "Khyber Pakhtun Khawa"),
+(1163, "SD", "Sindh"),
+(1163, "TA", "Federally Administered Tribal Areas"),
+(1163, "JK", "Azad Kashmir"),
+(1163, "NA", "Gilgit-Baltistan"),
+(1163, "PB", "Punjab"),
+(1173, "01", "Aveiro"),
+(1173, "02", "Beja"),
+(1173, "03", "Braga"),
+(1173, "04", "Bragança"),
+(1173, "05", "Castelo Branco"),
+(1173, "06", "Coimbra"),
+(1173, "07", "Évora"),
+(1173, "08", "Faro"),
+(1173, "09", "Guarda"),
+(1173, "10", "Leiria"),
+(1173, "11", "Lisboa"),
+(1173, "12", "Portalegre"),
+(1173, "13", "Porto"),
+(1173, "14", "Santarém"),
+(1173, "15", "Setúbal"),
+(1173, "16", "Viana do Castelo"),
+(1173, "17", "Vila Real"),
+(1173, "18", "Viseu"),
+(1173, "20", "Região Autónoma dos Açores"),
+(1173, "30", "Região Autónoma da Madeira"),
+(1168, "ASU", "Asuncion"),
+(1168, "16", "Alto Paraguay"),
+(1168, "10", "Alto Parana"),
+(1168, "13", "Amambay"),
+(1168, "19", "Boqueron"),
+(1168, "5", "Caeguazu"),
+(1168, "6", "Caazapl"),
+(1168, "14", "Canindeyu"),
+(1168, "1", "Concepcion"),
+(1168, "3", "Cordillera"),
+(1168, "4", "Guaira"),
+(1168, "7", "Itapua"),
+(1168, "8", "Miaiones"),
+(1168, "12", "Neembucu"),
+(1168, "9", "Paraguari"),
+(1168, "15", "Presidente Hayes"),
+(1168, "2", "San Pedro"),
+(1175, "DA", "Ad Dawhah"),
+(1175, "GH", "Al Ghuwayriyah"),
+(1175, "JU", "Al Jumayliyah"),
+(1175, "KH", "Al Khawr"),
+(1175, "WA", "Al Wakrah"),
+(1175, "RA", "Ar Rayyan"),
+(1175, "JB", "Jariyan al Batnah"),
+(1175, "MS", "Madinat ash Shamal"),
+(1175, "US", "Umm Salal"),
+(1176, "B", "Bucuresti"),
+(1176, "AB", "Alba"),
+(1176, "AR", "Arad"),
+(1176, "AG", "ArgeÈ™"),
+(1176, "BC", "Bacău"),
+(1176, "BH", "Bihor"),
+(1176, "BN", "Bistrița-Năsăud"),
+(1176, "BT", "Botoșani"),
+(1176, "BV", "Brașov"),
+(1176, "BR", "Brăila"),
+(1176, "BZ", "Buzău"),
+(1176, "CS", "CaraÈ™-Severin"),
+(1176, "CL", "Călărași"),
+(1176, "CJ", "Cluj"),
+(1176, "CT", "Constanța"),
+(1176, "CV", "Covasna"),
+(1176, "DB", "Dâmbovița"),
+(1176, "DJ", "Dolj"),
+(1176, "GL", "Galați"),
+(1176, "GR", "Giurgiu"),
+(1176, "GJ", "Gorj"),
+(1176, "HR", "Harghita"),
+(1176, "HD", "Hunedoara"),
+(1176, "IL", "Ialomița"),
+(1176, "IS", "Iași"),
+(1176, "IF", "Ilfov"),
+(1176, "MM", "MaramureÈ™"),
+(1176, "MH", "Mehedinți"),
+(1176, "MS", "MureÈ™"),
+(1176, "NT", "NeamÈ›"),
+(1176, "OT", "Olt"),
+(1176, "PH", "Prahova"),
+(1176, "SM", "Satu Mare"),
+(1176, "SJ", "Sălaj"),
+(1176, "SB", "Sibiu"),
+(1176, "SV", "Suceava"),
+(1176, "TR", "Teleorman"),
+(1176, "TM", "TimiÈ™"),
+(1176, "TL", "Tulcea"),
+(1176, "VS", "Vaslui"),
+(1176, "VL", "Vâlcea"),
+(1176, "VN", "Vrancea"),
+(1177, "AD", "Adygeya, Respublika"),
+(1177, "AL", "Altay, Respublika"),
+(1177, "BA", "Bashkortostan, Respublika"),
+(1177, "BU", "Buryatiya, Respublika"),
+(1177, "CE", "Chechenskaya Respublika"),
+(1177, "CU", "Chuvashskaya Respublika"),
+(1177, "DA", "Dagestan, Respublika"),
+(1177, "IN", "Ingushskaya Respublika"),
+(1177, "KB", "Kabardino-Balkarskaya"),
+(1177, "KL", "Kalmykiya, Respublika"),
+(1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
+(1177, "KR", "Kareliya, Respublika"),
+(1177, "KK", "Khakasiya, Respublika"),
+(1177, "KO", "Komi, Respublika"),
+(1177, "ME", "Mariy El, Respublika"),
+(1177, "MO", "Mordoviya, Respublika"),
+(1177, "SA", "Sakha, Respublika [Yakutiya]"),
+(1177, "SE", "Severnaya Osetiya, Respublika"),
+(1177, "TA", "Tatarstan, Respublika"),
+(1177, "TY", "Tyva, Respublika [Tuva]"),
+(1177, "UD", "Udmurtskaya Respublika"),
+(1177, "ALT", "Altayskiy kray"),
+(1177, "KHA", "Khabarovskiy kray"),
+(1177, "KDA", "Krasnodarskiy kray"),
+(1177, "KYA", "Krasnoyarskiy kray"),
+(1177, "PRI", "Primorskiy kray"),
+(1177, "STA", "Stavropol\'skiy kray"),
+(1177, "AMU", "Amurskaya oblast\'"),
+(1177, "ARK", "Arkhangel\'skaya oblast\'"),
+(1177, "AST", "Astrakhanskaya oblast\'"),
+(1177, "BEL", "Belgorodskaya oblast\'"),
+(1177, "BRY", "Bryanskaya oblast\'"),
+(1177, "CHE", "Chelyabinskaya oblast\'"),
+(1177, "ZSK", "Zabaykalsky Krai\'"),
+(1177, "IRK", "Irkutskaya oblast\'"),
+(1177, "IVA", "Ivanovskaya oblast\'"),
+(1177, "KGD", "Kaliningradskaya oblast\'"),
+(1177, "KLU", "Kaluzhskaya oblast\'"),
+(1177, "KAM", "Kamchatka Krai\'"),
+(1177, "KEM", "Kemerovskaya oblast\'"),
+(1177, "KIR", "Kirovskaya oblast\'"),
+(1177, "KOS", "Kostromskaya oblast\'"),
+(1177, "KGN", "Kurganskaya oblast\'"),
+(1177, "KRS", "Kurskaya oblast\'"),
+(1177, "LEN", "Leningradskaya oblast\'"),
+(1177, "LIP", "Lipetskaya oblast\'"),
+(1177, "MAG", "Magadanskaya oblast\'"),
+(1177, "MOS", "Moskovskaya oblast\'"),
+(1177, "MUR", "Murmanskaya oblast\'"),
+(1177, "NIZ", "Nizhegorodskaya oblast\'"),
+(1177, "NGR", "Novgorodskaya oblast\'"),
+(1177, "NVS", "Novosibirskaya oblast\'"),
+(1177, "OMS", "Omskaya oblast\'"),
+(1177, "ORE", "Orenburgskaya oblast\'"),
+(1177, "ORL", "Orlovskaya oblast\'"),
+(1177, "PNZ", "Penzenskaya oblast\'"),
+(1177, "PEK", "Perm krai\'"),
+(1177, "PSK", "Pskovskaya oblast\'"),
+(1177, "ROS", "Rostovskaya oblast\'"),
+(1177, "RYA", "Ryazanskaya oblast\'"),
+(1177, "SAK", "Sakhalinskaya oblast\'"),
+(1177, "SAM", "Samarskaya oblast\'"),
+(1177, "SAR", "Saratovskaya oblast\'"),
+(1177, "SMO", "Smolenskaya oblast\'"),
+(1177, "SVE", "Sverdlovskaya oblast\'"),
+(1177, "TAM", "Tambovskaya oblast\'"),
+(1177, "TOM", "Tomskaya oblast\'"),
+(1177, "TUL", "Tul\'skaya oblast\'"),
+(1177, "TVE", "Tverskaya oblast\'"),
+(1177, "TYU", "Tyumenskaya oblast\'"),
+(1177, "ULY", "Ul\'yanovskaya oblast\'"),
+(1177, "VLA", "Vladimirskaya oblast\'"),
+(1177, "VGG", "Volgogradskaya oblast\'"),
+(1177, "VLG", "Vologodskaya oblast\'"),
+(1177, "VOR", "Voronezhskaya oblast\'"),
+(1177, "YAR", "Yaroslavskaya oblast\'"),
+(1177, "MOW", "Moskva"),
+(1177, "SPE", "Sankt-Peterburg"),
+(1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
+(1177, "CHU", "Chukotskiy avtonomnyy okrug"),
+(1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
+(1177, "NEN", "Nenetskiy avtonomnyy okrug"),
+(1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
+(1178, "C", "Butare"),
+(1178, "I", "Byumba"),
+(1178, "E", "Cyangugu"),
+(1178, "D", "Gikongoro"),
+(1178, "G", "Gisenyi"),
+(1178, "B", "Gitarama"),
+(1178, "J", "Kibungo"),
+(1178, "F", "Kibuye"),
+(1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
+(1178, "L", "Kigali-Ville Kigali Ngari"),
+(1178, "M", "Mutara"),
+(1178, "H", "Ruhengeri"),
+(1181, "K", "Saint Kitts"),
+(1181, "N", "Nevis"),
+(1187, "11", "Al Bahah"),
+(1187, "08", "Al Hudud Ash Shamaliyah"),
+(1187, "12", "Al Jawf"),
+(1187, "03", "Al Madinah"),
+(1187, "05", "Al Qasim"),
+(1187, "01", "Ar Riyad"),
+(1187, "14", "Asir"),
+(1187, "06", "Ha\'il"),
+(1187, "09", "Jlzan"),
+(1187, "02", "Makkah"),
+(1187, "10", "Najran"),
+(1187, "07", "Tabuk"),
+(1187, "04", "Ash Sharqiyah"),
+(1194, "CT", "Capital Territory (Honiara)"),
+(1194, "GU", "Guadalcanal"),
+(1194, "IS", "Isabel"),
+(1194, "MK", "Makira"),
+(1194, "ML", "Malaita"),
+(1194, "TE", "Temotu"),
+(1200, "23", "A\'ali an Nil"),
+(1200, "26", "Al Bah al Ahmar"),
+(1200, "18", "Al Buhayrat"),
+(1200, "07", "Al Jazirah"),
+(1200, "03", "Al Khartum"),
+(1200, "06", "Al Qadarif"),
+(1200, "22", "Al Wahdah"),
+(1200, "04", "An Nil"),
+(1200, "08", "An Nil al Abyaq"),
+(1200, "24", "An Nil al Azraq"),
+(1200, "01", "Ash Shamallyah"),
+(1200, "17", "Bahr al Jabal"),
+(1200, "16", "Gharb al Istiwa\'iyah"),
+(1200, "14", "Gharb Ba~r al Ghazal"),
+(1200, "12", "Gharb Darfur"),
+(1200, "10", "Gharb Kurdufan"),
+(1200, "11", "Janub Darfur"),
+(1200, "13", "Janub Rurdufan"),
+(1200, "20", "Jnqall"),
+(1200, "05", "Kassala"),
+(1200, "15", "Shamal Batr al Ghazal"),
+(1200, "02", "Shamal Darfur"),
+(1200, "09", "Shamal Kurdufan"),
+(1200, "19", "Sharq al Istiwa\'iyah"),
+(1200, "25", "Sinnar"),
+(1200, "21", "Warab"),
+(1204, "K", "Blekinge län"),
+(1204, "W", "Dalarnas län"),
+(1204, "I", "Gotlands län"),
+(1204, "X", "Gävleborgs län"),
+(1204, "N", "Hallands län"),
+(1204, "Z", "Jämtlands län"),
+(1204, "F", "Jönkopings län"),
+(1204, "H", "Kalmar län"),
+(1204, "G", "Kronobergs län"),
+(1204, "BD", "Norrbottens län"),
+(1204, "M", "Skåne län"),
+(1204, "AB", "Stockholms län"),
+(1204, "D", "Södermanlands län"),
+(1204, "C", "Uppsala län"),
+(1204, "S", "Värmlands län"),
+(1204, "AC", "Västerbottens län"),
+(1204, "Y", "Västernorrlands län"),
+(1204, "U", "Västmanlands län"),
+(1204, "Q", "Västra Götalands län"),
+(1204, "T", "Örebro län"),
+(1204, "E", "Östergötlands län"),
+(1180, "SH", "Saint Helena"),
+(1180, "AC", "Ascension"),
+(1180, "TA", "Tristan da Cunha"),
+(1193, "001", "Ajdovščina"),
+(1193, "002", "Beltinci"),
+(1193, "148", "Benedikt"),
+(1193, "149", "Bistrica ob Sotli"),
+(1193, "003", "Bled"),
+(1193, "150", "Bloke"),
+(1193, "004", "Bohinj"),
+(1193, "005", "Borovnica"),
+(1193, "006", "Bovec"),
+(1193, "151", "Braslovče"),
+(1193, "007", "Brda"),
+(1193, "008", "Brezovica"),
+(1193, "009", "Brežice"),
+(1193, "152", "Cankova"),
+(1193, "011", "Celje"),
+(1193, "012", "Cerklje na Gorenjskem"),
+(1193, "013", "Cerknica"),
+(1193, "014", "Cerkno"),
+(1193, "153", "Cerkvenjak"),
+(1193, "015", "Črenšovci"),
+(1193, "016", "Črna na Koroškem"),
+(1193, "017", "ÄŒrnomelj"),
+(1193, "018", "Destrnik"),
+(1193, "019", "Divača"),
+(1193, "154", "Dobje"),
+(1193, "020", "Dobrepolje"),
+(1193, "155", "Dobrna"),
+(1193, "021", "Dobrova-Polhov Gradec"),
+(1193, "156", "Dobrovnik"),
+(1193, "022", "Dol pri Ljubljani"),
+(1193, "157", "Dolenjske Toplice"),
+(1193, "023", "Domžale"),
+(1193, "024", "Dornava"),
+(1193, "025", "Dravograd"),
+(1193, "026", "Duplek"),
+(1193, "027", "Gorenja vas-Poljane"),
+(1193, "028", "Gorišnica"),
+(1193, "029", "Gornja Radgona"),
+(1193, "030", "Gornji Grad"),
+(1193, "031", "Gornji Petrovci"),
+(1193, "158", "Grad"),
+(1193, "032", "Grosuplje"),
+(1193, "159", "Hajdina"),
+(1193, "160", "Hoče-Slivnica"),
+(1193, "161", "Hodoš"),
+(1193, "162", "Horjul"),
+(1193, "034", "Hrastnik"),
+(1193, "035", "Hrpelje-Kozina"),
+(1193, "036", "Idrija"),
+(1193, "037", "Ig"),
+(1193, "038", "Ilirska Bistrica"),
+(1193, "039", "Ivančna Gorica"),
+(1193, "040", "Izola"),
+(1193, "041", "Jesenice"),
+(1193, "163", "Jezersko"),
+(1193, "042", "Juršinci"),
+(1193, "043", "Kamnik"),
+(1193, "044", "Kanal"),
+(1193, "045", "Kidričevo"),
+(1193, "046", "Kobarid"),
+(1193, "047", "Kobilje"),
+(1193, "048", "Kočevje"),
+(1193, "049", "Komen"),
+(1193, "164", "Komenda"),
+(1193, "050", "Koper"),
+(1193, "165", "Kostel"),
+(1193, "051", "Kozje"),
+(1193, "052", "Kranj"),
+(1193, "053", "Kranjska Gora"),
+(1193, "166", "Križevci"),
+(1193, "054", "Krško"),
+(1193, "055", "Kungota"),
+(1193, "056", "Kuzma"),
+(1193, "057", "Laško"),
+(1193, "058", "Lenart"),
+(1193, "059", "Lendava"),
+(1193, "060", "Litija"),
+(1193, "061", "Ljubljana"),
+(1193, "062", "Ljubno"),
+(1193, "063", "Ljutomer"),
+(1193, "064", "Logatec"),
+(1193, "065", "Loška dolina"),
+(1193, "066", "Loški Potok"),
+(1193, "167", "Lovrenc na Pohorju"),
+(1193, "067", "Luče"),
+(1193, "068", "Lukovica"),
+(1193, "069", "Majšperk"),
+(1193, "070", "Maribor"),
+(1193, "168", "Markovci"),
+(1193, "071", "Medvode"),
+(1193, "072", "Mengeš"),
+(1193, "073", "Metlika"),
+(1193, "074", "Mežica"),
+(1193, "169", "Miklavž na Dravskem polju"),
+(1193, "075", "Miren-Kostanjevica"),
+(1193, "170", "Mirna Peč"),
+(1193, "076", "Mislinja"),
+(1193, "077", "Moravče"),
+(1193, "078", "Moravske Toplice"),
+(1193, "079", "Mozirje"),
+(1193, "080", "Murska Sobota"),
+(1193, "081", "Muta"),
+(1193, "082", "Naklo"),
+(1193, "083", "Nazarje"),
+(1193, "084", "Nova Gorica"),
+(1193, "085", "Novo mesto"),
+(1193, "181", "Sveta Ana"),
+(1193, "182", "Sveti Andraž v Slovenskih goricah"),
+(1193, "116", "Sveti Jurij"),
+(1193, "033", "Å alovci"),
+(1193, "183", "Å empeter-Vrtojba"),
+(1193, "117", "Šenčur"),
+(1193, "118", "Å entilj"),
+(1193, "119", "Å entjernej"),
+(1193, "120", "Å entjur"),
+(1193, "121", "Å kocjan"),
+(1193, "122", "Å kofja Loka"),
+(1193, "123", "Å kofljica"),
+(1193, "124", "Šmarje pri Jelšah"),
+(1193, "125", "Å martno ob Paki"),
+(1193, "194", "Å martno pri Litiji"),
+(1193, "126", "Šoštanj"),
+(1193, "127", "Å tore"),
+(1193, "184", "Tabor"),
+(1193, "010", "Tišina"),
+(1193, "128", "Tolmin"),
+(1193, "129", "Trbovlje"),
+(1193, "130", "Trebnje"),
+(1193, "185", "Trnovska vas"),
+(1193, "131", "Tržič"),
+(1193, "186", "Trzin"),
+(1193, "132", "Turnišče"),
+(1193, "133", "Velenje"),
+(1193, "187", "Velika Polana"),
+(1193, "134", "Velike Lašče"),
+(1193, "188", "Veržej"),
+(1193, "135", "Videm"),
+(1193, "136", "Vipava"),
+(1193, "137", "Vitanje"),
+(1193, "138", "Vojnik"),
+(1193, "189", "Vransko"),
+(1193, "140", "Vrhnika"),
+(1193, "141", "Vuzenica"),
+(1193, "142", "Zagorje ob Savi"),
+(1193, "143", "Zavrč"),
+(1193, "144", "Zreče"),
+(1193, "190", "Žalec"),
+(1193, "146", "Železniki"),
+(1193, "191", "Žetale"),
+(1193, "147", "Žiri"),
+(1193, "192", "Žirovnica"),
+(1193, "193", "Žužemberk"),
+(1193, "86", "Ankaran"),
+(1193, "87", "Apače"),
+(1193, "88", "Cirkulane"),
+(1193, "89", "Gorje"),
+(1193, "90", "Kostanjevica na Krki"),
+(1193, "91", "Log-Dragomer"),
+(1193, "92", "Makole"),
+(1193, "93", "Mirna"),
+(1193, "94", "Mokronog-Trebelno"),
+(1193, "95", "Odranci"),
+(1193, "96", "Oplotnica"),
+(1193, "97", "Ormož"),
+(1193, "98", "Osilnica"),
+(1193, "99", "Pesnica"),
+(1193, "100", "Piran"),
+(1193, "101", "Pivka"),
+(1193, "102", "Podčetrtek"),
+(1193, "103", "Podlehnik"),
+(1193, "104", "Podvelka"),
+(1193, "105", "Poljčane"),
+(1193, "106", "Polzela"),
+(1193, "107", "Postojna"),
+(1193, "108", "Prebold"),
+(1193, "109", "Preddvor"),
+(1193, "110", "Prevalje"),
+(1193, "111", "Ptuj"),
+(1193, "112", "Puconci"),
+(1193, "113", "Rače-Fram"),
+(1193, "114", "Radeče"),
+(1193, "115", "Radenci"),
+(1193, "139", "Radlje ob Dravi"),
+(1193, "145", "Radovljica"),
+(1193, "171", "Ravne na Koroškem"),
+(1193, "172", "Razkrižje"),
+(1193, "173", "Rečica ob Savinji"),
+(1193, "174", "Renče-Vogrsko"),
+(1193, "175", "Ribnica"),
+(1193, "176", "Ribnica na Pohorju"),
+(1193, "177", "Rogaška Slatina"),
+(1193, "178", "Rogašovci"),
+(1193, "179", "Rogatec"),
+(1193, "180", "Ruše"),
+(1193, "195", "Selnica ob Dravi"),
+(1193, "196", "Semič"),
+(1193, "197", "Å entrupert"),
+(1193, "198", "Sevnica"),
+(1193, "199", "Sežana"),
+(1193, "200", "Slovenj Gradec"),
+(1193, "201", "Slovenska Bistrica"),
+(1193, "202", "Slovenske Konjice"),
+(1193, "203", "Šmarješke Toplice"),
+(1193, "204", "Sodražica"),
+(1193, "205", "Solčava"),
+(1193, "206", "Središče ob Dravi"),
+(1193, "207", "Starše"),
+(1193, "208", "Straža"),
+(1193, "209", "Sveta Trojica v Slovenskih goricah"),
+(1193, "210", "Sveti Jurij v Slovenskih goricah"),
+(1193, "211", "Sveti Tomaž"),
+(1193, "212", "Vodice"),
+(1192, "BC", "Banskobystrický kraj"),
+(1192, "BL", "Bratislavský kraj"),
+(1192, "KI", "Košický kraj"),
+(1192, "NJ", "Nitriansky kraj"),
+(1192, "PV", "Prešovský kraj"),
+(1192, "TC", "Trenčiansky kraj"),
+(1192, "TA", "Trnavský kraj"),
+(1192, "ZI", "Žilinský kraj"),
+(1190, "W", "Western Area (Freetown)"),
+(1190, "E", "Eastern"),
+(1190, "N", "Northern"),
+(1190, "S", "Southern"),
+(1188, "DK", "Dakar"),
+(1188, "DB", "Diourbel"),
+(1188, "FK", "Fatick"),
+(1188, "KL", "Kaolack"),
+(1188, "KD", "Kolda"),
+(1188, "LG", "Louga"),
+(1188, "MT", "Matam"),
+(1188, "SL", "Saint-Louis"),
+(1188, "TC", "Tambacounda"),
+(1188, "TH", "Thies"),
+(1188, "ZG", "Ziguinchor"),
+(1195, "AW", "Awdal"),
+(1195, "BK", "Bakool"),
+(1195, "BN", "Banaadir"),
+(1195, "BY", "Bay"),
+(1195, "GA", "Galguduud"),
+(1195, "GE", "Gedo"),
+(1195, "HI", "Hiirsan"),
+(1195, "JD", "Jubbada Dhexe"),
+(1195, "JH", "Jubbada Hoose"),
+(1195, "MU", "Mudug"),
+(1195, "NU", "Nugaal"),
+(1195, "SA", "Saneag"),
+(1195, "SD", "Shabeellaha Dhexe"),
+(1195, "SH", "Shabeellaha Hoose"),
+(1195, "SO", "Sool"),
+(1195, "TO", "Togdheer"),
+(1195, "WO", "Woqooyi Galbeed"),
+(1201, "BR", "Brokopondo"),
+(1201, "CM", "Commewijne"),
+(1201, "CR", "Coronie"),
+(1201, "MA", "Marowijne"),
+(1201, "NI", "Nickerie"),
+(1201, "PM", "Paramaribo"),
+(1201, "SA", "Saramacca"),
+(1201, "SI", "Sipaliwini"),
+(1201, "WA", "Wanica"),
+(1207, "P", "Principe"),
+(1207, "S", "Sao Tome"),
+(1066, "AH", "Ahuachapan"),
+(1066, "CA", "Cabanas"),
+(1066, "CU", "Cuscatlan"),
+(1066, "CH", "Chalatenango"),
+(1066, "MO", "Morazan"),
+(1066, "SM", "San Miguel"),
+(1066, "SS", "San Salvador"),
+(1066, "SA", "Santa Ana"),
+(1066, "SV", "San Vicente"),
+(1066, "SO", "Sonsonate"),
+(1066, "US", "Usulutan"),
+(1066, "LI", "La Libertad"),
+(1066, "PA", "La Paz"),
+(1066, "UN", "La Union"),
+(1206, "HA", "Al Hasakah"),
+(1206, "LA", "Al Ladhiqiyah"),
+(1206, "QU", "Al Qunaytirah"),
+(1206, "RA", "Ar Raqqah"),
+(1206, "SU", "As Suwayda\'"),
+(1206, "DR", "Dar\'a"),
+(1206, "DY", "Dayr az Zawr"),
+(1206, "DI", "Dimashq"),
+(1206, "HL", "Halab"),
+(1206, "HM", "Hamah"),
+(1206, "HI", "Jim\'"),
+(1206, "ID", "Idlib"),
+(1206, "RD", "Rif Dimashq"),
+(1206, "TA", "Tarts"),
+(1203, "HH", "Hhohho"),
+(1203, "LU", "Lubombo"),
+(1203, "MA", "Manzini"),
+(1203, "SH", "Shiselweni"),
+(1043, "BA", "Batha"),
+(1043, "BI", "Biltine"),
+(1043, "BET", "Borkou-Ennedi-Tibesti"),
+(1043, "CB", "Chari-Baguirmi"),
+(1043, "GR", "Guera"),
+(1043, "KA", "Kanem"),
+(1043, "LC", "Lac"),
+(1043, "LO", "Logone-Occidental"),
+(1043, "LR", "Logone-Oriental"),
+(1043, "MK", "Mayo-Kebbi"),
+(1043, "MC", "Moyen-Chari"),
+(1043, "OD", "Ouaddai"),
+(1043, "SA", "Salamat"),
+(1043, "TA", "Tandjile"),
+(1214, "K", "Kara"),
+(1214, "M", "Maritime (Region)"),
+(1214, "S", "Savannes"),
+(1211, "10", "Krung Thep Maha Nakhon Bangkok"),
+(1211, "S", "Phatthaya"),
+(1211, "37", "Amnat Charoen"),
+(1211, "15", "Ang Thong"),
+(1211, "31", "Buri Ram"),
+(1211, "24", "Chachoengsao"),
+(1211, "18", "Chai Nat"),
+(1211, "36", "Chaiyaphum"),
+(1211, "22", "Chanthaburi"),
+(1211, "50", "Chiang Mai"),
+(1211, "57", "Chiang Rai"),
+(1211, "20", "Chon Buri"),
+(1211, "86", "Chumphon"),
+(1211, "46", "Kalasin"),
+(1211, "62", "Kamphasng Phet"),
+(1211, "71", "Kanchanaburi"),
+(1211, "40", "Khon Kaen"),
+(1211, "81", "Krabi"),
+(1211, "52", "Lampang"),
+(1211, "51", "Lamphun"),
+(1211, "42", "Loei"),
+(1211, "16", "Lop Buri"),
+(1211, "58", "Mae Hong Son"),
+(1211, "44", "Maha Sarakham"),
+(1211, "49", "Mukdahan"),
+(1211, "26", "Nakhon Nayok"),
+(1211, "73", "Nakhon Pathom"),
+(1211, "48", "Nakhon Phanom"),
+(1211, "30", "Nakhon Ratchasima"),
+(1211, "60", "Nakhon Sawan"),
+(1211, "80", "Nakhon Si Thammarat"),
+(1211, "55", "Nan"),
+(1211, "96", "Narathiwat"),
+(1211, "39", "Nong Bua Lam Phu"),
+(1211, "43", "Nong Khai"),
+(1211, "12", "Nonthaburi"),
+(1211, "13", "Pathum Thani"),
+(1211, "94", "Pattani"),
+(1211, "82", "Phangnga"),
+(1211, "93", "Phatthalung"),
+(1211, "56", "Phayao"),
+(1211, "67", "Phetchabun"),
+(1211, "76", "Phetchaburi"),
+(1211, "66", "Phichit"),
+(1211, "65", "Phitsanulok"),
+(1211, "54", "Phrae"),
+(1211, "14", "Phra Nakhon Si Ayutthaya"),
+(1211, "83", "Phuket"),
+(1211, "25", "Prachin Buri"),
+(1211, "77", "Prachuap Khiri Khan"),
+(1211, "85", "Ranong"),
+(1211, "70", "Ratchaburi"),
+(1211, "21", "Rayong"),
+(1211, "45", "Roi Et"),
+(1211, "27", "Sa Kaeo"),
+(1211, "47", "Sakon Nakhon"),
+(1211, "11", "Samut Prakan"),
+(1211, "74", "Samut Sakhon"),
+(1211, "75", "Samut Songkhram"),
+(1211, "19", "Saraburi"),
+(1211, "91", "Satun"),
+(1211, "17", "Sing Buri"),
+(1211, "33", "Si Sa Ket"),
+(1211, "90", "Songkhla"),
+(1211, "64", "Sukhothai"),
+(1211, "72", "Suphan Buri"),
+(1211, "84", "Surat Thani"),
+(1211, "32", "Surin"),
+(1211, "63", "Tak"),
+(1211, "92", "Trang"),
+(1211, "23", "Trat"),
+(1211, "34", "Ubon Ratchathani"),
+(1211, "41", "Udon Thani"),
+(1211, "61", "Uthai Thani"),
+(1211, "53", "Uttaradit"),
+(1211, "95", "Yala"),
+(1211, "35", "Yasothon"),
+(1209, "SU", "Sughd"),
+(1209, "KT", "Khatlon"),
+(1209, "GB", "Gorno-Badakhshan"),
+(1209, "DU", "Dushanbe"),
+(1209, "RA", "Nohiyahoi Tobei Jumhurí"),
+(1220, "A", "Ahal"),
+(1220, "B", "Balkan"),
+(1220, "D", "Dasoguz"),
+(1220, "L", "Lebap"),
+(1220, "M", "Mary"),
+(1218, "31", "Béja"),
+(1218, "13", "Ben Arous"),
+(1218, "23", "Bizerte"),
+(1218, "81", "Gabès"),
+(1218, "71", "Gafsa"),
+(1218, "32", "Jendouba"),
+(1218, "41", "Kairouan"),
+(1218, "42", "Rasserine"),
+(1218, "73", "Kebili"),
+(1218, "12", "L\'Ariana"),
+(1218, "33", "Le Ref"),
+(1218, "53", "Mahdia"),
+(1218, "14", "La Manouba"),
+(1218, "82", "Medenine"),
+(1218, "52", "Moneatir"),
+(1218, "21", "Naboul"),
+(1218, "61", "Sfax"),
+(1218, "43", "Sidi Bouxid"),
+(1218, "34", "Siliana"),
+(1218, "51", "Sousse"),
+(1218, "83", "Tataouine"),
+(1218, "72", "Tozeur"),
+(1218, "11", "Tunis"),
+(1218, "22", "Zaghouan"),
+(1219, "01", "Adana"),
+(1219, "02", "Ad yaman"),
+(1219, "03", "Afyon"),
+(1219, "04", "Ag r"),
+(1219, "68", "Aksaray"),
+(1219, "05", "Amasya"),
+(1219, "06", "Ankara"),
+(1219, "07", "Antalya"),
+(1219, "75", "Ardahan"),
+(1219, "08", "Artvin"),
+(1219, "09", "Aydin"),
+(1219, "10", "Bal kesir"),
+(1219, "74", "Bartin"),
+(1219, "72", "Batman"),
+(1219, "69", "Bayburt"),
+(1219, "11", "Bilecik"),
+(1219, "12", "Bingol"),
+(1219, "13", "Bitlis"),
+(1219, "14", "Bolu"),
+(1219, "15", "Burdur"),
+(1219, "16", "Bursa"),
+(1219, "17", "Canakkale"),
+(1219, "18", "Cankir"),
+(1219, "19", "Corum"),
+(1219, "20", "Denizli"),
+(1219, "21", "Diyarbakir"),
+(1219, "81", "Duzce"),
+(1219, "22", "Edirne"),
+(1219, "23", "Elazig"),
+(1219, "24", "Erzincan"),
+(1219, "25", "Erzurum"),
+(1219, "26", "Eskis\'ehir"),
+(1219, "27", "Gaziantep"),
+(1219, "28", "Giresun"),
+(1219, "29", "Gms\'hane"),
+(1219, "30", "Hakkari"),
+(1219, "31", "Hatay"),
+(1219, "76", "Igidir"),
+(1219, "32", "Isparta"),
+(1219, "33", "Icel"),
+(1219, "34", "Istanbul"),
+(1219, "35", "Izmir"),
+(1219, "46", "Kahramanmaras"),
+(1219, "78", "Karabk"),
+(1219, "70", "Karaman"),
+(1219, "36", "Kars"),
+(1219, "37", "Kastamonu"),
+(1219, "38", "Kayseri"),
+(1219, "71", "Kirikkale"),
+(1219, "39", "Kirklareli"),
+(1219, "40", "Kirs\'ehir"),
+(1219, "79", "Kilis"),
+(1219, "41", "Kocaeli"),
+(1219, "42", "Konya"),
+(1219, "43", "Ktahya"),
+(1219, "44", "Malatya"),
+(1219, "45", "Manisa"),
+(1219, "47", "Mardin"),
+(1219, "48", "Mugila"),
+(1219, "49", "Mus"),
+(1219, "50", "Nevs\'ehir"),
+(1219, "51", "Nigide"),
+(1219, "52", "Ordu"),
+(1219, "80", "Osmaniye"),
+(1219, "53", "Rize"),
+(1219, "54", "Sakarya"),
+(1219, "55", "Samsun"),
+(1219, "56", "Siirt"),
+(1219, "57", "Sinop"),
+(1219, "58", "Sivas"),
+(1219, "63", "S\'anliurfa"),
+(1219, "73", "S\'rnak"),
+(1219, "59", "Tekirdag"),
+(1219, "60", "Tokat"),
+(1219, "61", "Trabzon"),
+(1219, "62", "Tunceli"),
+(1219, "64", "Us\'ak"),
+(1219, "65", "Van"),
+(1219, "77", "Yalova"),
+(1219, "66", "Yozgat"),
+(1219, "67", "Zonguldak"),
+(1217, "CTT", "Couva-Tabaquite-Talparo"),
+(1217, "DMN", "Diego Martin"),
+(1217, "ETO", "Eastern Tobago"),
+(1217, "PED", "Penal-Debe"),
+(1217, "PRT", "Princes Town"),
+(1217, "RCM", "Rio Claro-Mayaro"),
+(1217, "SGE", "Sangre Grande"),
+(1217, "SJL", "San Juan-Laventille"),
+(1217, "SIP", "Siparia"),
+(1217, "TUP", "Tunapuna-Piarco"),
+(1217, "WTO", "Western Tobago"),
+(1217, "ARI", "Arima"),
+(1217, "CHA", "Chaguanas"),
+(1217, "PTF", "Point Fortin"),
+(1217, "POS", "Port of Spain"),
+(1217, "SFO", "San Fernando"),
+(1063, "AL", "Aileu"),
+(1063, "AN", "Ainaro"),
+(1063, "BA", "Bacucau"),
+(1063, "BO", "Bobonaro"),
+(1063, "CO", "Cova Lima"),
+(1063, "DI", "Dili"),
+(1063, "ER", "Ermera"),
+(1063, "LA", "Laulem"),
+(1063, "LI", "Liquica"),
+(1063, "MT", "Manatuto"),
+(1063, "MF", "Manafahi"),
+(1063, "OE", "Oecussi"),
+(1063, "VI", "Viqueque"),
+(1208, "CHA", "Changhua County"),
+(1208, "CYQ", "Chiayi County"),
+(1208, "HSQ", "Hsinchu County"),
+(1208, "HUA", "Hualien County"),
+(1208, "ILA", "Ilan County"),
+(1208, "KHQ", "Kaohsiung County"),
+(1208, "MIA", "Miaoli County"),
+(1208, "NAN", "Nantou County"),
+(1208, "PEN", "Penghu County"),
+(1208, "PIF", "Pingtung County"),
+(1208, "TXQ", "Taichung County"),
+(1208, "TNQ", "Tainan County"),
+(1208, "TPQ", "Taipei County"),
+(1208, "TTT", "Taitung County"),
+(1208, "TAO", "Taoyuan County"),
+(1208, "YUN", "Yunlin County"),
+(1208, "KEE", "Keelung City"),
+(1208, "TXG", "Taichung City"),
+(1208, "KHH", "Kaohsiung City"),
+(1208, "TPE", "Taipei City"),
+(1208, "CYI", "Chiayi City"),
+(1208, "HSZ", "Hsinchu City"),
+(1208, "TNN", "Tainan City"),
+(1210, "01", "Arusha"),
+(1210, "02", "Dar-es-Salaam"),
+(1210, "03", "Dodoma"),
+(1210, "04", "Iringa"),
+(1210, "05", "Kagera"),
+(1210, "06", "Kaskazini Pemba"),
+(1210, "07", "Kaskazini Unguja"),
+(1210, "08", "Xigoma"),
+(1210, "09", "Kilimanjaro"),
+(1210, "10", "Rusini Pemba"),
+(1210, "11", "Kusini Unguja"),
+(1210, "12", "Lindi"),
+(1210, "26", "Manyara"),
+(1210, "13", "Mara"),
+(1210, "14", "Mbeya"),
+(1210, "15", "Mjini Magharibi"),
+(1210, "16", "Morogoro"),
+(1210, "17", "Mtwara"),
+(1210, "19", "Pwani"),
+(1210, "20", "Rukwa"),
+(1210, "21", "Ruvuma"),
+(1210, "22", "Shinyanga"),
+(1210, "23", "Singida"),
+(1210, "24", "Tabora"),
+(1210, "25", "Tanga"),
+(1224, "71", "Cherkas\'ka Oblast\'"),
+(1224, "74", "Chernihivs\'ka Oblast\'"),
+(1224, "77", "Chernivets\'ka Oblast\'"),
+(1224, "12", "Dnipropetrovs\'ka Oblast\'"),
+(1224, "14", "Donets\'ka Oblast\'"),
+(1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
+(1224, "63", "Kharkivs\'ka Oblast\'"),
+(1224, "65", "Khersons\'ka Oblast\'"),
+(1224, "68", "Khmel\'nyts\'ka Oblast\'"),
+(1224, "35", "Kirovohrads\'ka Oblast\'"),
+(1224, "32", "Kyivs\'ka Oblast\'"),
+(1224, "09", "Luhans\'ka Oblast\'"),
+(1224, "46", "L\'vivs\'ka Oblast\'"),
+(1224, "48", "Mykolaivs\'ka Oblast\'"),
+(1224, "51", "Odes \'ka Oblast\'"),
+(1224, "53", "Poltavs\'ka Oblast\'"),
+(1224, "56", "Rivnens\'ka Oblast\'"),
+(1224, "59", "Sums \'ka Oblast\'"),
+(1224, "61", "Ternopil\'s\'ka Oblast\'"),
+(1224, "05", "Vinnyts\'ka Oblast\'"),
+(1224, "07", "Volyos\'ka Oblast\'"),
+(1224, "21", "Zakarpats\'ka Oblast\'"),
+(1224, "23", "Zaporiz\'ka Oblast\'"),
+(1224, "18", "Zhytomyrs\'ka Oblast\'"),
+(1224, "43", "Respublika Krym"),
+(1224, "30", "Kyiv"),
+(1224, "40", "Sevastopol"),
+(1223, "301", "Adjumani"),
+(1223, "302", "Apac"),
+(1223, "303", "Arua"),
+(1223, "201", "Bugiri"),
+(1223, "401", "Bundibugyo"),
+(1223, "402", "Bushenyi"),
+(1223, "202", "Busia"),
+(1223, "304", "Gulu"),
+(1223, "403", "Hoima"),
+(1223, "203", "Iganga"),
+(1223, "204", "Jinja"),
+(1223, "404", "Kabale"),
+(1223, "405", "Kabarole"),
+(1223, "213", "Kaberamaido"),
+(1223, "101", "Kalangala"),
+(1223, "102", "Kampala"),
+(1223, "205", "Kamuli"),
+(1223, "413", "Kamwenge"),
+(1223, "414", "Kanungu"),
+(1223, "206", "Kapchorwa"),
+(1223, "406", "Kasese"),
+(1223, "207", "Katakwi"),
+(1223, "112", "Kayunga"),
+(1223, "407", "Kibaale"),
+(1223, "103", "Kiboga"),
+(1223, "408", "Kisoro"),
+(1223, "305", "Kitgum"),
+(1223, "306", "Kotido"),
+(1223, "208", "Kumi"),
+(1223, "415", "Kyenjojo"),
+(1223, "307", "Lira"),
+(1223, "104", "Luwero"),
+(1223, "105", "Masaka"),
+(1223, "409", "Masindi"),
+(1223, "214", "Mayuge"),
+(1223, "209", "Mbale"),
+(1223, "410", "Mbarara"),
+(1223, "308", "Moroto"),
+(1223, "309", "Moyo"),
+(1223, "106", "Mpigi"),
+(1223, "107", "Mubende"),
+(1223, "108", "Mukono"),
+(1223, "311", "Nakapiripirit"),
+(1223, "109", "Nakasongola"),
+(1223, "310", "Nebbi"),
+(1223, "411", "Ntungamo"),
+(1223, "312", "Pader"),
+(1223, "210", "Pallisa"),
+(1223, "110", "Rakai"),
+(1223, "412", "Rukungiri"),
+(1223, "111", "Sembabule"),
+(1223, "215", "Sironko"),
+(1223, "211", "Soroti"),
+(1223, "212", "Tororo"),
+(1223, "113", "Wakiso"),
+(1223, "313", "Yumbe"),
+(1227, "81", "Baker Island"),
+(1227, "84", "Howland Island"),
+(1227, "86", "Jarvis Island"),
+(1227, "67", "Johnston Atoll"),
+(1227, "89", "Kingman Reef"),
+(1227, "71", "Midway Islands"),
+(1227, "76", "Navassa Island"),
+(1227, "95", "Palmyra Atoll"),
+(1227, "79", "Wake Island"),
+(1229, "AR", "Artigsa"),
+(1229, "CA", "Canelones"),
+(1229, "CL", "Cerro Largo"),
+(1229, "CO", "Colonia"),
+(1229, "DU", "Durazno"),
+(1229, "FS", "Flores"),
+(1229, "LA", "Lavalleja"),
+(1229, "MA", "Maldonado"),
+(1229, "MO", "Montevideo"),
+(1229, "PA", "Paysandu"),
+(1229, "RV", "Rivera"),
+(1229, "RO", "Rocha"),
+(1229, "SA", "Salto"),
+(1229, "SO", "Soriano"),
+(1229, "TA", "Tacuarembo"),
+(1229, "TT", "Treinta y Tres"),
+(1229, "FL", "Florida"),
+(1229, "RN", "Rio Negro"),
+(1229, "SJ", "San Jose"),
+(1230, "TK", "Toshkent (city)"),
+(1230, "QR", "Qoraqalpogiston Respublikasi"),
+(1230, "AN", "Andijon"),
+(1230, "BU", "Buxoro"),
+(1230, "FA", "Farg\'ona"),
+(1230, "JI", "Jizzax"),
+(1230, "KH", "Khorazm"),
+(1230, "NG", "Namangan"),
+(1230, "NW", "Navoiy"),
+(1230, "QA", "Qashqadaryo"),
+(1230, "SA", "Samarqand"),
+(1230, "SI", "Sirdaryo"),
+(1230, "SU", "Surxondaryo"),
+(1230, "TO", "Toshkent"),
+(1230, "XO", "Xorazm"),
+(1232, "A", "Distrito Federal"),
+(1232, "B", "Anzoategui"),
+(1232, "C", "Apure"),
+(1232, "D", "Aragua"),
+(1232, "E", "Barinas"),
+(1232, "G", "Carabobo"),
+(1232, "H", "Cojedes"),
+(1232, "I", "Falcon"),
+(1232, "J", "Guarico"),
+(1232, "K", "Lara"),
+(1232, "L", "Merida"),
+(1232, "M", "Miranda"),
+(1232, "N", "Monagas"),
+(1232, "O", "Nueva Esparta"),
+(1232, "P", "Portuguesa"),
+(1232, "S", "Tachira"),
+(1232, "T", "Trujillo"),
+(1232, "X", "Vargas"),
+(1232, "U", "Yaracuy"),
+(1232, "V", "Zulia"),
+(1232, "Y", "Delta Amacuro"),
+(1232, "W", "Dependencias Federales"),
+(1233, "44", "An Giang"),
+(1233, "43", "Ba Ria - Vung Tau"),
+(1233, "53", "Bac Can"),
+(1233, "54", "Bac Giang"),
+(1233, "55", "Bac Lieu"),
+(1233, "56", "Bac Ninh"),
+(1233, "50", "Ben Tre"),
+(1233, "31", "Binh Dinh"),
+(1233, "57", "Binh Duong"),
+(1233, "58", "Binh Phuoc"),
+(1233, "40", "Binh Thuan"),
+(1233, "59", "Ca Mau"),
+(1233, "48", "Can Tho"),
+(1233, "04", "Cao Bang"),
+(1233, "60", "Da Nang, thanh pho"),
+(1233, "39", "Dong Nai"),
+(1233, "45", "Dong Thap"),
+(1233, "30", "Gia Lai"),
+(1233, "03", "Ha Giang"),
+(1233, "63", "Ha Nam"),
+(1233, "64", "Ha Noi, thu do"),
+(1233, "15", "Ha Tay"),
+(1233, "23", "Ha Tinh"),
+(1233, "61", "Hai Duong"),
+(1233, "62", "Hai Phong, thanh pho"),
+(1233, "14", "Hoa Binh"),
+(1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
+(1233, "66", "Hung Yen"),
+(1233, "34", "Khanh Hoa"),
+(1233, "47", "Kien Giang"),
+(1233, "28", "Kon Tum"),
+(1233, "01", "Lai Chau"),
+(1233, "35", "Lam Dong"),
+(1233, "09", "Lang Son"),
+(1233, "02", "Lao Cai"),
+(1233, "41", "Long An"),
+(1233, "67", "Nam Dinh"),
+(1233, "22", "Nghe An"),
+(1233, "18", "Ninh Binh"),
+(1233, "36", "Ninh Thuan"),
+(1233, "68", "Phu Tho"),
+(1233, "32", "Phu Yen"),
+(1233, "24", "Quang Binh"),
+(1233, "27", "Quang Nam"),
+(1233, "29", "Quang Ngai"),
+(1233, "13", "Quang Ninh"),
+(1233, "25", "Quang Tri"),
+(1233, "52", "Soc Trang"),
+(1233, "05", "Son La"),
+(1233, "37", "Tay Ninh"),
+(1233, "20", "Thai Binh"),
+(1233, "69", "Thai Nguyen"),
+(1233, "21", "Thanh Hoa"),
+(1233, "26", "Thua Thien-Hue"),
+(1233, "46", "Tien Giang"),
+(1233, "51", "Tra Vinh"),
+(1233, "07", "Tuyen Quang"),
+(1233, "49", "Vinh Long"),
+(1233, "70", "Vinh Phuc"),
+(1233, "06", "Yen Bai"),
+(1231, "MAP", "Malampa"),
+(1231, "PAM", "Penama"),
+(1231, "SAM", "Sanma"),
+(1231, "SEE", "Shefa"),
+(1231, "TAE", "Tafea"),
+(1231, "TOB", "Torba"),
+(1185, "AA", "A\'ana"),
+(1185, "AL", "Aiga-i-le-Tai"),
+(1185, "AT", "Atua"),
+(1185, "FA", "Fa\'aaaleleaga"),
+(1185, "GE", "Gaga\'emauga"),
+(1185, "GI", "Gagaifomauga"),
+(1185, "PA", "Palauli"),
+(1185, "SA", "Satupa\'itea"),
+(1185, "TU", "Tuamasaga"),
+(1185, "VF", "Va\'a-o-Fonoti"),
+(1185, "VS", "Vaisigano"),
+(1243, "CG", "Crna Gora"),
+(1242, "SR", "Srbija"),
+(1242, "KM", "Kosovo-Metohija"),
+(1242, "VO", "Vojvodina"),
+(1237, "AB", "Abyan"),
+(1237, "AD", "Adan"),
+(1237, "DA", "Ad Dali"),
+(1237, "BA", "Al Bayda\'"),
+(1237, "MU", "Al Hudaydah"),
+(1237, "MR", "Al Mahrah"),
+(1237, "MW", "Al Mahwit"),
+(1237, "AM", "Amran"),
+(1237, "DH", "Dhamar"),
+(1237, "HD", "Hadramawt"),
+(1237, "HJ", "Hajjah"),
+(1237, "IB", "Ibb"),
+(1237, "LA", "Lahij"),
+(1237, "MA", "Ma\'rib"),
+(1237, "SD", "Sa\'dah"),
+(1237, "SN", "San\'a\'"),
+(1237, "SH", "Shabwah"),
+(1237, "TA", "Ta\'izz"),
+(1196, "EC", "Eastern Cape"),
+(1196, "FS", "Free State"),
+(1196, "GT", "Gauteng"),
+(1196, "NL", "Kwazulu-Natal"),
+(1196, "MP", "Mpumalanga"),
+(1196, "NC", "Northern Cape"),
+(1196, "NP", "Limpopo"),
+(1196, "WC", "Western Cape"),
+(1196, "NW", "North West"),
+(1239, "08", "Copperbelt"),
+(1239, "04", "Luapula"),
+(1239, "09", "Lusaka"),
+(1239, "06", "North-Western"),
+(1239, 'C', 'Central'),
+(1239, 'E', 'Eastern'),
+(1239, 'M', 'Muchinga'),
+(1239, 'N', 'Northern'),
+(1239, 'S', 'Southern'),
+(1239, 'W', 'Western'),
+(1240, "BU", "Bulawayo"),
+(1240, "HA", "Harare"),
+(1240, "MA", "Manicaland"),
+(1240, "MC", "Mashonaland Central"),
+(1240, "ME", "Mashonaland East"),
+(1240, "MW", "Mashonaland West"),
+(1240, "MV", "Masvingo"),
+(1240, "MN", "Matabeleland North"),
+(1240, "MS", "Matabeleland South"),
+(1240, "MI", "Midlands"),
+(1075, "SK", "South Karelia"),
+(1075, "SO", "South Ostrobothnia"),
+(1075, "ES", "Etelä-Savo"),
+(1075, "HH", "Häme"),
+(1075, "IU", "Itä-Uusimaa"),
+(1075, "KA", "Kainuu"),
+(1075, "CO", "Central Ostrobothnia"),
+(1075, "CF", "Central Finland"),
+(1075, "KY", "Kymenlaakso"),
+(1075, "LA", "Lapland"),
+(1075, "TR", "Tampere Region"),
+(1075, "OB", "Ostrobothnia"),
+(1075, "NK", "North Karelia"),
+(1075, "NO", "Northern Ostrobothnia"),
+(1075, "NS", "Northern Savo"),
+(1075, "PH", "Päijät-Häme"),
+(1075, "SK", "Satakunta"),
+(1075, "UM", "Uusimaa"),
+(1075, "SW", "South-West Finland"),
+(1075, "AL", "Ã…land"),
+(1152, "LI", "Limburg"),
+(1098, "CW", "Central and Western"),
+(1098, "EA", "Eastern"),
+(1098, "SO", "Southern"),
+(1098, "WC", "Wan Chai"),
+(1098, "KC", "Kowloon City"),
+(1098, "KU", "Kwun Tong"),
+(1098, "SS", "Sham Shui Po"),
+(1098, "WT", "Wong Tai Sin"),
+(1098, "YT", "Yau Tsim Mong"),
+(1098, "IS", "Islands"),
+(1098, "KI", "Kwai Tsing"),
+(1098, "NO", "North"),
+(1098, "SK", "Sai Kung"),
+(1098, "ST", "Sha Tin"),
+(1098, "TP", "Tai Po"),
+(1098, "TW", "Tsuen Wan"),
+(1098, "TM", "Tuen Mun"),
+(1098, "YL", "Yuen Long"),
+(1108, "MR", "Manchester"),
+(1016, "13", "Al Manāmah (Al ‘Āşimah)"),
+(1016, "14", "Al Janūbīyah"),
+(1016, "16", "Al Wusţá"),
+(1016, "17", "Ash Shamālīyah");
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
@@ -4721,7 +4632,7 @@ INSERT INTO civicrm_tag (`color`,`description`,`label`,`name`,`parent_id`,`used_
 
 INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`,`is_active`,`is_default`,`name`,`subject`) VALUES
 ("Sample Header for HTML formatted content.","Sample Header for TEXT formatted content.","Header","1","1","Mailing Header","Descriptive Title for this Header"),
-("Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a>  <br/> {domain.address}","to unsubscribe: {action.optOutUrl}\n{domain.address}","Footer","1","1","Mailing Footer","Descriptive Title for this Footer."),
+("Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Opt out of any future emails</a>  <br/> {domain.address}","Opt out of any future emails: {action.optOutUrl}\n{domain.address}","Footer","1","1","Mailing Footer","Descriptive Title for this Footer."),
 ("You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.","You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}","Subscribe","1","1","Subscribe Message","Subscription Confirmation Request"),
 ("Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.","Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.","Welcome","1","1","Welcome Message","Your Subscription has been Activated"),
 ("You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.","You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}","Unsubscribe","1","1","Unsubscribe Message","Un-subscribe Confirmation"),
@@ -7443,7 +7354,7 @@ INSERT INTO civicrm_msg_template
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
 {/foreach}
 {/if}
 
@@ -7613,7 +7524,7 @@ INSERT INTO civicrm_msg_template
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                {$line.line_total|crmMoney:\'{contribution.currency}\'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
@@ -7877,7 +7788,7 @@ INSERT INTO civicrm_msg_template
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
 {/foreach}
 {/if}
 
@@ -8047,7 +7958,7 @@ INSERT INTO civicrm_msg_template
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                {$line.line_total|crmMoney:\'{contribution.currency}\'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
@@ -8284,210 +8195,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{if $isShowLineItems}
-
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-  {/foreach}
-{/if}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
-
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
-
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -8550,7 +8258,7 @@ INSERT INTO civicrm_msg_template
                 <td>{$line.qty}</td>
                 <td>{$line.unit_price|crmMoney:$currency}</td>
                 {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  <td>{$line.line_total|crmMoney:$currency}</td>
                   {if $line.tax_rate || $line.tax_amount != ""}
                     <td>{$line.tax_rate|string_format:"%.2f"}%</td>
                     <td>{$line.tax_amount|crmMoney:$currency}</td>
@@ -8574,7 +8282,7 @@ INSERT INTO civicrm_msg_template
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
@@ -8931,289 +8639,86 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 1,          0),
       ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-===========================================================
-{if $isShowLineItems}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-  {/foreach}
-{/if}
+  <!-- BEGIN HEADER -->
+  <!-- You can add table row(s) here with logo or other header elements -->
+  <!-- END HEADER -->
 
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
+  <!-- BEGIN CONTENT -->
 
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
+  <tr>
+   <td>
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {if !empty($receipt_text)}
+     <p>{$receipt_text|htmlize}</p>
+    {/if}
 
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
+    {if $is_pay_later}
+     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {/if}
 
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
+   </td>
+  </tr>
+</table>
+<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
+  {if {contribution.total_amount|boolean}}
+    <tr>
+      <th {$headerStyle}>
+        {ts}Contribution Information{/ts}
+      </th>
+    </tr>
 
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-
-<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
-
-  <!-- BEGIN HEADER -->
-  <!-- You can add table row(s) here with logo or other header elements -->
-  <!-- END HEADER -->
-
-  <!-- BEGIN CONTENT -->
-
-  <tr>
-   <td>
-     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
-    {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
-    {/if}
-
-   </td>
-  </tr>
-</table>
-<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-  {if {contribution.total_amount|boolean}}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Contribution Information{/ts}
-      </th>
-    </tr>
-
-    {if $isShowLineItems}
-      <tr>
-        <td colspan="2" {$valueStyle}>
-          <table>
-            <tr>
-              <th>{ts}Item{/ts}</th>
-              <th>{ts}Qty{/ts}</th>
-              <th>{ts}Each{/ts}</th>
-              {if $isShowTax && {contribution.tax_amount|boolean}}
-                <th>{ts}Subtotal{/ts}</th>
-                <th>{ts}Tax Rate{/ts}</th>
-                <th>{ts}Tax Amount{/ts}</th>
-              {/if}
-              <th>{ts}Total{/ts}</th>
-            </tr>
-            {foreach from=$lineItems item=line}
-              <tr>
-                <td>{$line.title}</td>
-                <td>{$line.qty}</td>
-                <td>{$line.unit_price|crmMoney:$currency}</td>
-                {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
-                  {if $line.tax_rate || $line.tax_amount != ""}
-                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
-                    <td>{$line.tax_amount|crmMoney:$currency}</td>
-                  {else}
-                    <td></td>
-                    <td></td>
-                  {/if}
-                {/if}
-                <td>
-                  {$line.line_total_inclusive|crmMoney:$currency}
-                </td>
-              </tr>
-            {/foreach}
-          </table>
-        </td>
-      </tr>
+    {if $isShowLineItems}
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          <table>
+            <tr>
+              <th>{ts}Item{/ts}</th>
+              <th>{ts}Qty{/ts}</th>
+              <th>{ts}Each{/ts}</th>
+              {if $isShowTax && {contribution.tax_amount|boolean}}
+                <th>{ts}Subtotal{/ts}</th>
+                <th>{ts}Tax Rate{/ts}</th>
+                <th>{ts}Tax Amount{/ts}</th>
+              {/if}
+              <th>{ts}Total{/ts}</th>
+            </tr>
+            {foreach from=$lineItems item=line}
+              <tr>
+                <td>{$line.title}</td>
+                <td>{$line.qty}</td>
+                <td>{$line.unit_price|crmMoney:$currency}</td>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <td>{$line.line_total|crmMoney:$currency}</td>
+                  {if $line.tax_rate || $line.tax_amount != ""}
+                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
+                    <td>{$line.tax_amount|crmMoney:$currency}</td>
+                  {else}
+                    <td></td>
+                    <td></td>
+                  {/if}
+                {/if}
+                <td>
+                  {$line.line_total_inclusive|crmMoney:$currency}
+                </td>
+              </tr>
+            {/foreach}
+          </table>
+        </td>
+      </tr>
 
       {if $isShowTax && {contribution.tax_amount|boolean}}
         <tr>
@@ -9221,7 +8726,7 @@ INSERT INTO civicrm_msg_template
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
@@ -9608,9 +9113,9 @@ INSERT INTO civicrm_msg_template
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
@@ -9997,9 +9502,9 @@ INSERT INTO civicrm_msg_template
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
@@ -11963,124 +11468,276 @@ INSERT INTO civicrm_msg_template
 ', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0,          1) ,                        
       
       
-      ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}
-', '{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if $component eq \'event\'}
-===============================================================================
+      ('Additional Payment Receipt or Refund Notification', '{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-{ts}Event Information and Location{/ts}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
+{capture assign=emptyBlockStyle}style="padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;"{/capture}
+{capture assign=emptyBlockValueStyle}style="padding: 10px; border-bottom: 1px solid #999;"{/capture}
 
-===============================================================================
+ <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+  <!-- BEGIN HEADER -->
+  <!-- You can add table row(s) here with logo or other header elements -->
+  <!-- END HEADER -->
 
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
+  <!-- BEGIN CONTENT -->
+  <tr>
+    <td>
+      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+      {if {financial_trxn.total_amount|raw} < 0}
+        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
+      {else}
+        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
+        {if !{contribution.balance_amount|boolean}}
+          <p>{ts}Thank you for completing this contribution.{/ts}</p>
+        {/if}
+      {/if}
+    </td>
+  </tr>
+  <tr>
+   <td>
+    <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
+      {if {financial_trxn.total_amount|raw} < 0}
+      <tr>
+        <th {$headerStyle}>{ts}Refund Details{/ts}</th>
+      </tr>
+      <tr>
+        <td {$labelStyle}>
+        {ts}This Refund Amount{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.total_amount}
+        </td>
+      </tr>
+    {else}
+      <tr>
+        <th {$headerStyle}>{ts}Payment Details{/ts}</th>
+      </tr>
+      <tr>
+        <td {$labelStyle}>
+        {ts}This Payment Amount{/ts}
+        </td>
+        <td {$valueStyle}>
+        {financial_trxn.total_amount}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.trxn_date|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Transaction Date{/ts}
+        </td>
+        <td {$valueStyle}>
+         {financial_trxn.trxn_date}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.trxn_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Transaction #{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.trxn_id}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.payment_instrument_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Paid By{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.payment_instrument_id:label}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.check_number|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Check Number{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.check_number}
+        </td>
+      </tr>
+    {/if}
 
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
+  <tr>
+    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
+  </tr>
+  {if {contribution.total_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Total Fee{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.total_amount}
+    </td>
+  </tr>
+  {/if}
+  {if {contribution.paid_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Total Paid{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.paid_amount}
+    </td>
+  </tr>
+  {/if}
+  {if {contribution.balance_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Balance Owed{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.balance_amount}
+    </td>
+  </tr>
+  {/if}
+  </table>
+
+  </td>
+  </tr>
+    <tr>
+      <td>
+  <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
+    {if !empty($billingName) || !empty($address)}
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+        {if !empty($billingName)}{$billingName}{/if}<br />
+        {if !empty($address)}{$address|nl2br}{/if}
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
+    {/if}
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
 
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
+      </td>
+    </tr>
+  </table>
+ </body>
+</html>
+', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 1,          0),
+      ('Additional Payment Receipt or Refund Notification', '{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -12104,11 +11761,11 @@ INSERT INTO civicrm_msg_template
   <tr>
     <td>
       {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
         <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
+        {if !{contribution.balance_amount|boolean}}
           <p>{ts}Thank you for completing this contribution.{/ts}</p>
         {/if}
       {/if}
@@ -12117,7 +11774,7 @@ INSERT INTO civicrm_msg_template
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
       <tr>
         <th {$headerStyle}>{ts}Refund Details{/ts}</th>
       </tr>
@@ -12126,7 +11783,7 @@ INSERT INTO civicrm_msg_template
         {ts}This Refund Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
+          {financial_trxn.total_amount}
         </td>
       </tr>
     {else}
@@ -12138,47 +11795,47 @@ INSERT INTO civicrm_msg_template
         {ts}This Payment Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
+        {financial_trxn.total_amount}
         </td>
       </tr>
     {/if}
-    {if $receive_date}
+    {if {financial_trxn.trxn_date|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction Date{/ts}
         </td>
         <td {$valueStyle}>
-        {$receive_date|crmDate}
+         {financial_trxn.trxn_date}
         </td>
       </tr>
     {/if}
-    {if !empty($trxn_id)}
+    {if {financial_trxn.trxn_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction #{/ts}
         </td>
         <td {$valueStyle}>
-        {$trxn_id}
+          {financial_trxn.trxn_id}
         </td>
       </tr>
     {/if}
-    {if !empty($paidBy)}
+    {if {financial_trxn.payment_instrument_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Paid By{/ts}
         </td>
         <td {$valueStyle}>
-        {$paidBy}
+          {financial_trxn.payment_instrument_id:label}
         </td>
       </tr>
     {/if}
-    {if !empty($checkNumber)}
+    {if {financial_trxn.check_number|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Check Number{/ts}
         </td>
         <td {$valueStyle}>
-        {$checkNumber}
+          {financial_trxn.check_number}
         </td>
       </tr>
     {/if}
@@ -12186,34 +11843,34 @@ INSERT INTO civicrm_msg_template
   <tr>
     <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
   </tr>
-  {if $totalAmount}
+  {if {contribution.total_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Fee{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
+      {contribution.total_amount}
     </td>
   </tr>
   {/if}
-  {if $totalPaid}
+  {if {contribution.paid_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Paid{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
+      {contribution.paid_amount}
     </td>
   </tr>
   {/if}
-  {if $amountOwed}
+  {if {contribution.balance_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Balance Owed{/ts}
     </td>
     <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
+      {contribution.balance_amount}
+    </td>
   </tr>
   {/if}
   </table>
@@ -12224,535 +11881,191 @@ INSERT INTO civicrm_msg_template
       <td>
   <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
     {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
         {if !empty($billingName)}{$billingName}{/if}<br />
         {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-            </td>
-          </tr>
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
     {/if}
-    {if $component eq \'event\'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
       </td>
     </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
   </table>
-      </td>
-    </tr>
-
-    </table>
-
  </body>
 </html>
-', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 1,          0),
-      ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}
-', '{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if $component eq \'event\'}
-===============================================================================
-
-{ts}Event Information and Location{/ts}
-
-===============================================================================
-
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
-
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
-
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
-
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
-
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0,          1) ,                        
+      
+      
+      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  <title></title>
 </head>
 <body>
 
 {capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
 {capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-{capture assign=emptyBlockStyle}style="padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;"{/capture}
-{capture assign=emptyBlockValueStyle}style="padding: 10px; border-bottom: 1px solid #999;"{/capture}
+{capture assign=tdfirstStyle}style="width: 180px; padding-bottom: 15px;"{/capture}
+{capture assign=tdStyle}style="width: 100px;"{/capture}
+{capture assign=participantTotalStyle}style="margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;"{/capture}
 
- <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
   <!-- END HEADER -->
 
   <!-- BEGIN CONTENT -->
+
   <tr>
-    <td>
-      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
-        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
-      {else}
-        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
-          <p>{ts}Thank you for completing this contribution.{/ts}</p>
-        {/if}
-      {/if}
-    </td>
+   <td>
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+
+    {if $userText}
+     <p>{$userText}</p>
+    {/if}
+
+    {if !empty($isOnWaitlist)}
+      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>
+      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>
+    {elseif !empty($isRequireApproval)}
+      <p>{ts}Your registration has been submitted.{/ts}</p>
+      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>
+    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}
+     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {/if}
+
+   </td>
   </tr>
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
-      <tr>
-        <th {$headerStyle}>{ts}Refund Details{/ts}</th>
-      </tr>
-      <tr>
-        <td {$labelStyle}>
-        {ts}This Refund Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
-        </td>
-      </tr>
-    {else}
-      <tr>
-        <th {$headerStyle}>{ts}Payment Details{/ts}</th>
-      </tr>
-      <tr>
-        <td {$labelStyle}>
-        {ts}This Payment Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
-        </td>
-      </tr>
-    {/if}
-    {if $receive_date}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Transaction Date{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$receive_date|crmDate}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($trxn_id)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Transaction #{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$trxn_id}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($paidBy)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Paid By{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$paidBy}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($checkNumber)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Check Number{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$checkNumber}
-        </td>
-      </tr>
-    {/if}
-
-  <tr>
-    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
-  </tr>
-  {if $totalAmount}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Total Fee{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
-    </td>
-  </tr>
-  {/if}
-  {if $totalPaid}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Total Paid{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
-    </td>
-  </tr>
-  {/if}
-  {if $amountOwed}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Balance Owed{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
-  </tr>
-  {/if}
-  </table>
-
-  </td>
-  </tr>
-    <tr>
-      <td>
-  <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {if !empty($billingName)}{$billingName}{/if}<br />
-        {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-            </td>
-          </tr>
-    {/if}
-    {if $component eq \'event\'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
-
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
-
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
-
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
-      </td>
-    </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
-  </table>
-      </td>
-    </tr>
-
-    </table>
-
- </body>
-</html>
-', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0,          1) ,                        
-      
-      
-      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
-', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-  <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-{capture assign=tdfirstStyle}style="width: 180px; padding-bottom: 15px;"{/capture}
-{capture assign=tdStyle}style="width: 100px;"{/capture}
-{capture assign=participantTotalStyle}style="margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;"{/capture}
-
-<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
-
-  <!-- BEGIN HEADER -->
-  <!-- You can add table row(s) here with logo or other header elements -->
-  <!-- END HEADER -->
-
-  <!-- BEGIN CONTENT -->
-
-  <tr>
-   <td>
-    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
-    {/if}
-
-    {if !empty($isOnWaitlist)}
-      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>
-      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>
-    {elseif !empty($isRequireApproval)}
-      <p>{ts}Your registration has been submitted.{/ts}</p>
-      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>
-    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}
-     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
-    {/if}
-
-   </td>
-  </tr>
-  <tr>
-   <td>
-    <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-     <tr>
-      <th {$headerStyle}>
-       {ts}Event Information and Location{/ts}
-      </th>
-     </tr>
-     <tr>
-      <td colspan="2" {$valueStyle}>
-       {event.title}<br />
-       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
-      </td>
-     </tr>
-
-     {if "{participant.role_id:label}" neq \'Attendee\'}
+     <tr>
+      <th {$headerStyle}>
+       {ts}Event Information and Location{/ts}
+      </th>
+     </tr>
+     <tr>
+      <td colspan="2" {$valueStyle}>
+       {event.title}<br />
+       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+      </td>
+     </tr>
+
+     {if "{participant.role_id:label}" neq \'Attendee\'}
       <tr>
        <td {$labelStyle}>
         {ts}Participant Role{/ts}
@@ -12830,7 +12143,7 @@ INSERT INTO civicrm_msg_template
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13164,8 +12477,8 @@ INSERT INTO civicrm_msg_template
    <td>
     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
 
     {if !empty($isOnWaitlist)}
@@ -13273,7 +12586,7 @@ INSERT INTO civicrm_msg_template
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13654,7 +12967,7 @@ INSERT INTO civicrm_msg_template
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13697,7 +13010,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
@@ -13992,7 +13305,7 @@ You were registered by: {$payer.name}
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14056,7 +13369,7 @@ You were registered by: {$payer.name}
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -14078,7 +13391,7 @@ You were registered by: {$payer.name}
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -14150,25 +13463,12 @@ You were registered by: {$payer.name}
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq \'skip\'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
@@ -14408,7 +13708,7 @@ You were registered by: {$payer.name}
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14451,7 +13751,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
@@ -14746,7 +14046,7 @@ You were registered by: {$payer.name}
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14810,7 +14110,7 @@ You were registered by: {$payer.name}
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -14832,7 +14132,7 @@ You were registered by: {$payer.name}
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -14904,25 +14204,12 @@ You were registered by: {$payer.name}
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq \'skip\'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
@@ -17276,8 +16563,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {/if} - {contact.display_name}
 ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -17316,7 +16603,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
@@ -17402,8 +16689,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -17487,7 +16774,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                                {$line.line_total|crmMoney:\'{contribution.currency}\'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
@@ -17669,8 +16956,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {/if} - {contact.display_name}
 ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -17709,7 +16996,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
@@ -17795,8 +17082,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -17880,7 +17167,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                                {$line.line_total|crmMoney:\'{contribution.currency}\'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
@@ -18057,257 +17344,20 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 ', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0,          1) ,                        
       
       
-      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
+      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-
-  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
@@ -18318,20 +17368,18 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -18342,366 +17390,256 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
+            </td>
+            <td {$valueStyle}>
+              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
+        </tr>
 
-       <tr>
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+            <tr>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
+            </tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$membership_amount|crmMoney}
+            {contribution.total_amount}
         </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
-            </td>
-            <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
+      </tr>
+    {/if}
 
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       <tr>
+    {if {contribution.receive_date|boolean}}
+      <tr>
         <td {$labelStyle}>
-         {ts}Total Amount{/ts}
+          {ts}Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney}
+          {contribution.receive_date}
         </td>
-       </tr>
+      </tr>
+    {/if}
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
-        </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
-      </tr>
-
-
-     {/if}
-
-     {if !empty($receive_date)}
-      <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
-      </tr>
-     {/if}
-
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -18709,379 +17647,142 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
-      <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
-       </td>
-      </tr>
-     {/if}
-
-     {if !empty($selectPremium)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
-      </tr>
-      {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
-      {/if}
-      {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
-      {/if}
-      {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
-      {/if}
-      {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
-      {/if}
-      {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
         <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
         </td>
-       </tr>
-      {/if}
-      {if $is_deductible AND !empty($price)}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
-         </td>
-        </tr>
-      {/if}
-     {/if}
-
-     {if !empty($customPre)}
-      <tr>
-       <th {$headerStyle}>
-        {$customPre_grouptitle}
-       </th>
       </tr>
-      {foreach from=$customPre item=customValue key=customName}
-        <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
-        </tr>
-      {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
-      </tr>
-      {foreach from=$customPost item=customValue key=customName}
-        <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
-        </tr>
-      {/foreach}
-     {/if}
-
-  </table>
-
-</body>
-</html>
-', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 1,          0),
-      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
+      </tr>
+      {if $option}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
+      {/if}
+      {if $sku}
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
+      {/if}
+      {if $start_date}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
+      {/if}
+      {if $end_date}
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
+      {/if}
+      {if !empty($contact_email) OR !empty($contact_phone)}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
+      {/if}
+      {if $is_deductible AND !empty($price)}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+         </td>
+        </tr>
+      {/if}
+    {/if}
 
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
+    {if !empty($customPre)}
+      <tr>
+       <th {$headerStyle}>
+         {$customPre_grouptitle}
+       </th>
+      </tr>
+      {foreach from=$customPre item=customValue key=customName}
+        <tr>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
+        </tr>
+      {/foreach}
+    {/if}
 
+    {if !empty($customPost)}
+      <tr>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
+      </tr>
+      {foreach from=$customPost item=customValue key=customName}
+        <tr>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
+        </tr>
+      {/foreach}
+    {/if}
 
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
+  </table>
 
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+</body>
+</html>
+', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 1,          0),
+      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -19104,20 +17805,18 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -19128,366 +17827,256 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
-
-       <tr>
-        <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$membership_amount|crmMoney}
-        </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
             </td>
             <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
-
-       {foreach from=$lineItem item=value key=priceset}
+              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
         </tr>
-       {/foreach}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Total Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney}
-        </td>
-       </tr>
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
             <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
             </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Amount{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
+            {contribution.total_amount}
         </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
       </tr>
-
-
-     {/if}
-
-     {if !empty($receive_date)}
-      <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
+    {/if}
+
+    {if {contribution.receive_date|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Date{/ts}
+        </td>
+        <td {$valueStyle}>
+          {contribution.receive_date}
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -19495,134 +18084,134 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
-       </td>
+        <td colspan="2" {$valueStyle}>
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($selectPremium)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
       </tr>
       {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
       {/if}
       {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
       {/if}
       {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
-        <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
-        </td>
-       </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
       {/if}
       {if $is_deductible AND !empty($price)}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
          </td>
         </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($customPre)}
+    {if !empty($customPre)}
       <tr>
        <th {$headerStyle}>
-        {$customPre_grouptitle}
+         {$customPre_grouptitle}
        </th>
       </tr>
       {foreach from=$customPre item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($customPost)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
       </tr>
       {foreach from=$customPost item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
   </table>
 
@@ -22181,23 +20770,27 @@ INSERT INTO civicrm_msg_template
 ' ,NULL, 1, 0);
 
 INSERT INTO civicrm_job (`api_action`,`api_entity`,`description`,`domain_id`,`is_active`,`last_run`,`name`,`parameters`,`run_frequency`) VALUES
-("version_check","Job","Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.",@domainID,"1",NULL,"CiviCRM Update Check",NULL,"Daily"),
-("process_mailing","Job","Sends out scheduled CiviMail mailings",@domainID,"0",NULL,"Send Scheduled Mailings",NULL,"Always"),
-("fetch_bounces","Job","Fetches bounces from mailings and writes them to mailing statistics",@domainID,"0",NULL,"Fetch Bounces",NULL,"Hourly"),
-("fetch_activities","Job","Inserts activity for a contact or a case by retrieving inbound emails from a mail directory",@domainID,"0",NULL,"Process Inbound Emails",NULL,"Hourly"),
-("process_pledge","Job","Updates pledge records and sends out reminders",@domainID,"0",NULL,"Process Pledges","send_reminders=[1 or 0] optional- 1 to send payment reminders","Daily"),
-("geocode","Job","Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)",@domainID,"0",NULL,"Geocode and Parse Addresses","geocoding=[1 or 0] required\nparse=[1 or 0] required\nstart=[contact ID] optional-begin with this contact ID\nend=[contact ID] optional-process contacts with IDs less than this\nthrottle=[1 or 0] optional-1 adds five second sleep","Daily"),
-("update_greeting","Job","Goes through contact records and updates email and postal greetings, or addressee value",@domainID,"0",NULL,"Update Greetings and Addressees","ct=[Individual or Household or Organization] required\ngt=[email_greeting or postal_greeting or addressee] required\nforce=[0 or 1] optional-0 update contacts with null value, 1 update all\nlimit=Number optional-Limit the number of contacts to update","Daily"),
-("mail_report","Job","Generates and sends out reports via email",@domainID,"0",NULL,"Mail Reports","instanceId=[ID of report instance] required\nformat=[csv or print] optional-output CSV or print-friendly HTML, else PDF","Daily"),
-("send_reminder","Job","Sends out scheduled reminders via email",@domainID,"0",NULL,"Send Scheduled Reminders",NULL,"Hourly"),
-("process_participant","Job","Updates pending event participant statuses based on time",@domainID,"0",NULL,"Update Participant Statuses",NULL,"Always"),
-("process_membership","Job","Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.",@domainID,"0",NULL,"Update Membership Statuses",NULL,"Daily"),
-("process_respondent","Job","Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.",@domainID,"0",NULL,"Process Survey Respondents",NULL,"Always"),
-("cleanup","Job","Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.",@domainID,"0",NULL,"Clean-up Temporary Data and Files",NULL,"Hourly"),
-("process_sms","Job","Sends out scheduled SMS",@domainID,"0",NULL,"Send Scheduled SMS",NULL,"Always"),
-("group_rebuild","Job","Rebuilds the smart group cache.",@domainID,"0",NULL,"Rebuild Smart Group Cache","limit=Number optional-Limit the number of smart groups rebuild","Always"),
-("disable_expired_relationships","Job","Disables relationships that have expired (ie. those relationships whose end date is in the past).",@domainID,"0",NULL,"Disable expired relationships",NULL,"Daily"),
-("update_email_resetdate","Mailing","Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.",@domainID,"0",NULL,"Validate Email Address from Mailings.","minDays, maxDays=Consider mailings that have completed between minDays and maxDays","Daily")
+("version_check","Job","Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check",@domainID,"1",NULL,"CiviCRM Update Check",NULL,"Daily"),
+("process_mailing","Job","Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing",@domainID,"0",NULL,"Send Scheduled Mailings",NULL,"Always"),
+("fetch_bounces","Job","Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces",@domainID,"0",NULL,"Fetch Bounces","is_create_activities=0","Hourly"),
+("fetch_activities","Job","Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities",@domainID,"0",NULL,"Process Inbound Emails",NULL,"Hourly"),
+("process_pledge","Job","Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge",@domainID,"0",NULL,"Process Pledges","send_reminders=0","Daily"),
+("geocode","Job","Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode",@domainID,"0",NULL,"Geocode and Parse Addresses","geocoding=1\n      parse=0\n      throttle=0","Daily"),
+("update_greeting","Job","Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Email Greeting","ct=Individual\ngt=email_greeting","Daily"),
+("update_greeting","Job","Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Postal Greeting","ct=Individual\ngt=postal_greeting","Daily"),
+("update_greeting","Job","Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Addressee","ct=Individual\ngt=addressee","Daily"),
+("mail_report","Job","Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report",@domainID,"0",NULL,"Mail Reports","","Daily"),
+("send_reminder","Job","Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder",@domainID,"0",NULL,"Send Scheduled Reminders",NULL,"Hourly"),
+("process_participant","Job","Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant",@domainID,"0",NULL,"Update Participant Statuses",NULL,"Always"),
+("process_membership","Job","Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership",@domainID,"0",NULL,"Update Membership Statuses",NULL,"Daily"),
+("process_respondent","Job","Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent",@domainID,"0",NULL,"Process Survey Respondents",NULL,"Always"),
+("cleanup","Job","Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup",@domainID,"0",NULL,"Clean-up Temporary Data and Files","session=0","Monthly"),
+("process_sms","Job","Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms",@domainID,"0",NULL,"Send Scheduled SMS",NULL,"Always"),
+("group_rebuild","Job","Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild",@domainID,"0",NULL,"Rebuild Smart Group Cache","limit=0","Hourly"),
+("group_cache_flush","Job","Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush",@domainID,"0",NULL,"Group Cache Flush","","Hourly"),
+("disable_expired_relationships","Job","Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships",@domainID,"0",NULL,"Disable expired relationships",NULL,"Daily"),
+("update_email_resetdate","Mailing","Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate",@domainID,"0",NULL,"Validate Email Address from Mailings.","minDays=5\n      maxDays=60","Daily"),
+("process_batch_merge","Job","Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge",@domainID,"0",NULL,"Dedupe Contacts",NULL,"Daily")
 ;
 
 
@@ -22312,6 +20905,8 @@ INSERT IGNORE INTO civicrm_extension (`file`,`full_name`,`is_active`,`label`,`na
 ("recaptcha","recaptcha","1","reCAPTCHA","reCAPTCHA","module"),
 ("ckeditor4","ckeditor4","1","CKEditor4","CKEditor4","module"),
 ("flexmailer","org.civicrm.flexmailer","1","FlexMailer","FlexMailer","module"),
+("civi_campaign","civi_campaign","1","CiviCampaign","CiviCampaign","module"),
+("civi_case","civi_case","1","CiviCase","CiviCase","module"),
 ("civi_contribute","civi_contribute","1","CiviContribute","CiviContribute","module"),
 ("civi_event","civi_event","1","CiviEvent","CiviEvent","module"),
 ("civi_mail","civi_mail","1","CiviMail","CiviMail","module"),
@@ -23108,4 +21703,4 @@ INSERT INTO `civicrm_report_instance`
     ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
 VALUES
     (  @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}');
-UPDATE civicrm_domain SET version = '5.68.1';
+UPDATE civicrm_domain SET version = '5.69.0';
diff --git a/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php b/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
index 90b3c23668..641ea25309 100644
--- a/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
@@ -37,8 +37,14 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_extension', 'INSERT IGNORE INTO
       'name' => 'FlexMailer',
       'file' => 'flexmailer',
     ],
-
-    // The following should be kept in sync with the *default* list of components (`enable_components`).
+    [
+      'full_name' => 'civi_campaign',
+      'name' => 'CiviCampaign',
+    ],
+    [
+      'full_name' => 'civi_case',
+      'name' => 'CiviCase',
+    ],
     [
       'full_name' => 'civi_contribute',
       'name' => 'CiviContribute',
diff --git a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
index f3af14cddc..435096b8c8 100644
--- a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
@@ -11,8 +11,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job')
     [
       'run_frequency' => 'Daily',
       'name' => 'CiviCRM Update Check',
-      'description' => 'Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.',
-      // FIXME: "to to"
+      'description' => 'Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check',
       'api_entity' => 'Job',
       'api_action' => 'version_check',
       'is_active' => 1,
@@ -20,127 +19,158 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job')
     [
       'run_frequency' => 'Always',
       'name' => 'Send Scheduled Mailings',
-      'description' => 'Sends out scheduled CiviMail mailings',
+      'description' => 'Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing',
       'api_entity' => 'Job',
       'api_action' => 'process_mailing',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Fetch Bounces',
-      'description' => 'Fetches bounces from mailings and writes them to mailing statistics',
+      'description' => 'Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces',
       'api_entity' => 'Job',
       'api_action' => 'fetch_bounces',
+      'parameters' => 'is_create_activities=0',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Process Inbound Emails',
-      'description' => 'Inserts activity for a contact or a case by retrieving inbound emails from a mail directory',
+      'description' => 'Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities',
       'api_entity' => 'Job',
       'api_action' => 'fetch_activities',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Process Pledges',
-      'description' => 'Updates pledge records and sends out reminders',
+      'description' => 'Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge',
       'api_entity' => 'Job',
       'api_action' => 'process_pledge',
-      'parameters' => 'send_reminders=[1 or 0] optional- 1 to send payment reminders',
+      'parameters' => 'send_reminders=0',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Geocode and Parse Addresses',
-      'description' => 'Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)',
+      'description' => 'Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode',
       'api_entity' => 'Job',
       'api_action' => 'geocode',
-      'parameters' => 'geocoding=[1 or 0] required
-parse=[1 or 0] required
-start=[contact ID] optional-begin with this contact ID
-end=[contact ID] optional-process contacts with IDs less than this
-throttle=[1 or 0] optional-1 adds five second sleep',
+      'parameters' => 'geocoding=1
+      parse=0
+      throttle=0',
     ],
     [
       'run_frequency' => 'Daily',
-      'name' => 'Update Greetings and Addressees',
-      'description' => 'Goes through contact records and updates email and postal greetings, or addressee value',
+      'name' => 'Update Individual Email Greeting',
+      'description' => 'Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
       'api_entity' => 'Job',
       'api_action' => 'update_greeting',
-      'parameters' => 'ct=[Individual or Household or Organization] required
-gt=[email_greeting or postal_greeting or addressee] required
-force=[0 or 1] optional-0 update contacts with null value, 1 update all
-limit=Number optional-Limit the number of contacts to update',
+      'parameters' => 'ct=Individual
+gt=email_greeting',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Update Individual Postal Greeting',
+      'description' => 'Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
+      'api_entity' => 'Job',
+      'api_action' => 'update_greeting',
+      'parameters' => 'ct=Individual
+gt=postal_greeting',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Update Individual Addressee',
+      'description' => 'Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
+      'api_entity' => 'Job',
+      'api_action' => 'update_greeting',
+      'parameters' => 'ct=Individual
+gt=addressee',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Mail Reports',
-      'description' => 'Generates and sends out reports via email',
+      'description' => 'Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report',
       'api_entity' => 'Job',
       'api_action' => 'mail_report',
-      'parameters' => 'instanceId=[ID of report instance] required
-format=[csv or print] optional-output CSV or print-friendly HTML, else PDF',
+      'parameters' => '',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Send Scheduled Reminders',
-      'description' => 'Sends out scheduled reminders via email',
+      'description' => 'Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder',
       'api_entity' => 'Job',
       'api_action' => 'send_reminder',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Update Participant Statuses',
-      'description' => 'Updates pending event participant statuses based on time',
+      'description' => 'Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant',
       'api_entity' => 'Job',
       'api_action' => 'process_participant',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Update Membership Statuses',
-      'description' => 'Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.',
+      'description' => 'Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership',
       'api_entity' => 'Job',
       'api_action' => 'process_membership',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Process Survey Respondents',
-      'description' => 'Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.',
+      'description' => 'Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent',
       'api_entity' => 'Job',
       'api_action' => 'process_respondent',
     ],
     [
-      'run_frequency' => 'Hourly',
+      'run_frequency' => 'Monthly',
       'name' => 'Clean-up Temporary Data and Files',
-      'description' => 'Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.',
+      'description' => 'Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup',
       'api_entity' => 'Job',
       'api_action' => 'cleanup',
+      'parameters' => 'session=0',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Send Scheduled SMS',
-      'description' => 'Sends out scheduled SMS',
+      'description' => 'Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms',
       'api_entity' => 'Job',
       'api_action' => 'process_sms',
     ],
     [
-      'run_frequency' => 'Always',
+      'run_frequency' => 'Hourly',
       'name' => 'Rebuild Smart Group Cache',
-      'description' => 'Rebuilds the smart group cache.',
+      'description' => 'Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild',
       'api_entity' => 'Job',
       'api_action' => 'group_rebuild',
-      'parameters' => 'limit=Number optional-Limit the number of smart groups rebuild',
+      'parameters' => 'limit=0',
+    ],
+    [
+      'run_frequency' => 'Hourly',
+      'name' => 'Group Cache Flush',
+      'description' => 'Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush',
+      'api_entity' => 'Job',
+      'api_action' => 'group_cache_flush',
+      'parameters' => '',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Disable expired relationships',
-      'description' => 'Disables relationships that have expired (ie. those relationships whose end date is in the past).',
+      'description' => 'Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships',
       'api_entity' => 'Job',
       'api_action' => 'disable_expired_relationships',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Validate Email Address from Mailings.',
-      'description' => 'Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.',
+      'description' => 'Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate',
       'api_entity' => 'Mailing',
       'api_action' => 'update_email_resetdate',
-      'parameters' => 'minDays, maxDays=Consider mailings that have completed between minDays and maxDays',
+      'parameters' => 'minDays=5
+      maxDays=60',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Dedupe Contacts',
+      'description' => 'Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge',
+      'api_entity' => 'Job',
+      'api_action' => 'process_batch_merge',
     ],
   ]);
diff --git a/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php b/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
index 7c9d2ee5dd..4bc340c09a 100644
--- a/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
@@ -24,8 +24,8 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_mailing_component')
       'name' => ts("Mailing Footer"),
       "component_type" => "Footer",
       'subject' => ts("Descriptive Title for this Footer."),
-      'body_html' => ts('Sample Footer for HTML formatted content<br/><a href="{action.optOutUrl}">Unsubscribe</a>  <br/> {domain.address}'),
-      'body_text' => ts("to unsubscribe: {action.optOutUrl}\n{domain.address}"),
+      'body_html' => ts('Sample Footer for HTML formatted content<br/><a href="{action.optOutUrl}">Opt out of any future emails</a>  <br/> {domain.address}'),
+      'body_text' => ts("Opt out of any future emails: {action.optOutUrl}\n{domain.address}"),
     ],
     [
       'name' => ts('Subscribe Message'),
diff --git a/civicrm/sql/civicrm_drop.mysql b/civicrm/sql/civicrm_drop.mysql
index a4219b207f..43dd062fde 100644
--- a/civicrm/sql/civicrm_drop.mysql
+++ b/civicrm/sql/civicrm_drop.mysql
@@ -8,9 +8,11 @@
 --
 -- Generated from drop.tpl
 -- DO NOT EDIT.  Generated by CRM_Core_CodeGen
----- /*******************************************************
+--
+-- /*******************************************************
+-- *
+-- * Clean up the existing tables
 -- *
--- * Clean up the existing tables-- *
 -- *******************************************************/
 
 SET FOREIGN_KEY_CHECKS=0;
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index 2345a0a1c1..a969cd1f84 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -1,13 +1,13 @@
--- MySQL dump 10.13  Distrib 5.7.37, for Linux (x86_64)
+-- MySQL dump 10.13  Distrib 8.0.35, for Linux (x86_64)
 --
--- Host: 127.0.0.1    Database: dmastercivi_ssc8b
+-- Host: 127.0.0.1    Database: db
 -- ------------------------------------------------------
--- Server version	5.7.37
+-- Server version	8.0.35
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
 /*!40103 SET TIME_ZONE='+00:00' */;
 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
@@ -82,647 +82,647 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_activity` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */;
 INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES
- (1,NULL,56,'Subject for Interview','2023-01-28 07:18:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (2,NULL,2,'Subject for Phone Call','2022-11-20 11:02:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (3,NULL,56,'Subject for Interview','2023-08-12 12:22:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (4,NULL,9,'Subject for Tell a Friend','2023-04-08 21:35:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (5,NULL,56,'Subject for Interview','2023-02-10 15:32:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (6,NULL,22,'Subject for Print/Merge Document','2023-08-18 18:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (7,NULL,2,'Subject for Phone Call','2023-07-04 18:36:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (8,NULL,1,'Subject for Meeting','2023-01-10 01:20:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (9,NULL,56,'Subject for Interview','2023-07-13 16:12:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (10,NULL,9,'Subject for Tell a Friend','2023-01-03 03:32:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (11,NULL,56,'Subject for Interview','2023-09-24 11:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (12,NULL,22,'Subject for Print/Merge Document','2023-04-05 10:50:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (13,NULL,2,'Subject for Phone Call','2023-01-11 06:46:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (14,NULL,2,'Subject for Phone Call','2023-04-24 05:54:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (15,NULL,9,'Subject for Tell a Friend','2023-01-27 11:35:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (16,NULL,22,'Subject for Print/Merge Document','2023-05-11 06:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (17,NULL,56,'Subject for Interview','2023-01-07 04:56:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (18,NULL,9,'Subject for Tell a Friend','2023-07-25 18:23:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (19,NULL,22,'Subject for Print/Merge Document','2023-08-11 13:34:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (20,NULL,56,'Subject for Interview','2023-07-18 06:51:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (21,NULL,9,'Subject for Tell a Friend','2023-05-13 21:41:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (22,NULL,2,'Subject for Phone Call','2023-02-01 08:50:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (23,NULL,22,'Subject for Print/Merge Document','2022-11-10 01:22:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (24,NULL,2,'Subject for Phone Call','2022-12-25 06:38:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (25,NULL,22,'Subject for Print/Merge Document','2022-11-17 02:00:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (26,NULL,1,'Subject for Meeting','2023-04-18 02:08:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (27,NULL,1,'Subject for Meeting','2022-12-24 01:00:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (28,NULL,56,'Subject for Interview','2022-10-25 16:52:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (29,NULL,1,'Subject for Meeting','2023-03-28 07:38:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (30,NULL,1,'Subject for Meeting','2023-02-02 08:32:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (31,NULL,22,'Subject for Print/Merge Document','2023-04-10 19:32:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (32,NULL,2,'Subject for Phone Call','2023-06-04 02:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (33,NULL,56,'Subject for Interview','2023-08-05 07:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (34,NULL,56,'Subject for Interview','2023-08-15 07:38:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (35,NULL,9,'Subject for Tell a Friend','2022-12-10 19:32:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (36,NULL,1,'Subject for Meeting','2023-04-27 05:55:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (37,NULL,56,'Subject for Interview','2023-05-20 09:05:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (38,NULL,56,'Subject for Interview','2023-08-18 15:55:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (39,NULL,1,'Subject for Meeting','2023-07-11 19:34:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (40,NULL,56,'Subject for Interview','2023-06-02 18:40:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (41,NULL,1,'Subject for Meeting','2023-04-13 14:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (42,NULL,56,'Subject for Interview','2023-03-28 17:34:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (43,NULL,1,'Subject for Meeting','2023-04-05 05:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (44,NULL,9,'Subject for Tell a Friend','2023-07-06 13:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (45,NULL,9,'Subject for Tell a Friend','2023-01-31 09:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (46,NULL,9,'Subject for Tell a Friend','2023-04-25 16:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (47,NULL,9,'Subject for Tell a Friend','2023-05-30 05:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (48,NULL,56,'Subject for Interview','2023-10-10 17:41:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (49,NULL,9,'Subject for Tell a Friend','2023-07-17 21:39:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (50,NULL,56,'Subject for Interview','2022-11-25 16:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (51,NULL,2,'Subject for Phone Call','2023-03-11 04:03:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (52,NULL,2,'Subject for Phone Call','2023-04-05 07:44:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (53,NULL,56,'Subject for Interview','2022-11-18 19:31:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (54,NULL,2,'Subject for Phone Call','2023-09-24 16:24:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (55,NULL,56,'Subject for Interview','2023-03-19 13:52:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (56,NULL,2,'Subject for Phone Call','2023-08-05 08:56:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (57,NULL,1,'Subject for Meeting','2022-11-24 17:31:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (58,NULL,1,'Subject for Meeting','2023-06-19 05:08:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (59,NULL,9,'Subject for Tell a Friend','2023-04-30 14:26:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (60,NULL,9,'Subject for Tell a Friend','2023-01-06 06:12:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (61,NULL,22,'Subject for Print/Merge Document','2023-07-06 00:30:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (62,NULL,22,'Subject for Print/Merge Document','2023-04-15 07:38:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (63,NULL,1,'Subject for Meeting','2023-10-05 10:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (64,NULL,56,'Subject for Interview','2022-12-05 10:31:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (65,NULL,22,'Subject for Print/Merge Document','2023-07-24 15:11:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (66,NULL,9,'Subject for Tell a Friend','2023-03-18 19:51:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (67,NULL,56,'Subject for Interview','2022-11-02 04:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (68,NULL,1,'Subject for Meeting','2023-03-30 17:13:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (69,NULL,9,'Subject for Tell a Friend','2022-10-29 01:38:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (70,NULL,9,'Subject for Tell a Friend','2023-06-16 20:18:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (71,NULL,56,'Subject for Interview','2023-07-07 21:11:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (72,NULL,2,'Subject for Phone Call','2023-07-20 12:28:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (73,NULL,1,'Subject for Meeting','2022-11-20 11:28:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (74,NULL,1,'Subject for Meeting','2023-08-22 10:20:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (75,NULL,56,'Subject for Interview','2023-05-30 15:20:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (76,NULL,9,'Subject for Tell a Friend','2023-01-20 20:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (77,NULL,22,'Subject for Print/Merge Document','2023-02-22 22:30:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (78,NULL,2,'Subject for Phone Call','2023-04-27 15:51:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (79,NULL,22,'Subject for Print/Merge Document','2023-04-12 11:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (80,NULL,2,'Subject for Phone Call','2023-01-13 18:53:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (81,NULL,9,'Subject for Tell a Friend','2022-12-06 12:21:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (82,NULL,2,'Subject for Phone Call','2023-07-11 09:11:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (83,NULL,1,'Subject for Meeting','2023-01-10 18:04:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (84,NULL,9,'Subject for Tell a Friend','2023-02-23 03:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (85,NULL,1,'Subject for Meeting','2022-10-20 07:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (86,NULL,22,'Subject for Print/Merge Document','2023-09-20 09:49:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (87,NULL,9,'Subject for Tell a Friend','2023-07-02 01:53:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (88,NULL,1,'Subject for Meeting','2023-02-23 15:55:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (89,NULL,9,'Subject for Tell a Friend','2023-09-30 05:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (90,NULL,2,'Subject for Phone Call','2023-06-21 10:13:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (91,NULL,9,'Subject for Tell a Friend','2023-06-07 10:29:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (92,NULL,56,'Subject for Interview','2023-04-13 12:15:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (93,NULL,2,'Subject for Phone Call','2023-08-06 10:00:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (94,NULL,1,'Subject for Meeting','2023-09-02 20:56:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (95,NULL,22,'Subject for Print/Merge Document','2023-09-22 17:25:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (96,NULL,22,'Subject for Print/Merge Document','2023-06-20 22:56:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (97,NULL,9,'Subject for Tell a Friend','2023-04-07 04:20:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (98,NULL,9,'Subject for Tell a Friend','2022-12-28 20:40:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (99,NULL,22,'Subject for Print/Merge Document','2023-05-22 12:18:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (100,NULL,9,'Subject for Tell a Friend','2023-04-22 12:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (101,NULL,9,'Subject for Tell a Friend','2023-07-30 02:38:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (102,NULL,1,'Subject for Meeting','2023-02-05 15:02:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (103,NULL,2,'Subject for Phone Call','2023-10-05 19:01:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (104,NULL,22,'Subject for Print/Merge Document','2022-12-15 14:17:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (105,NULL,56,'Subject for Interview','2023-08-06 05:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (106,NULL,1,'Subject for Meeting','2023-06-28 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (107,NULL,9,'Subject for Tell a Friend','2023-06-18 05:01:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (108,NULL,2,'Subject for Phone Call','2023-01-17 20:31:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (109,NULL,2,'Subject for Phone Call','2023-02-22 07:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (110,NULL,1,'Subject for Meeting','2023-01-12 22:14:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (111,NULL,2,'Subject for Phone Call','2022-10-27 21:05:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (112,NULL,9,'Subject for Tell a Friend','2022-11-24 01:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (113,NULL,22,'Subject for Print/Merge Document','2023-08-23 04:50:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (114,NULL,22,'Subject for Print/Merge Document','2023-06-10 11:07:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (115,NULL,1,'Subject for Meeting','2022-12-29 18:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (116,NULL,56,'Subject for Interview','2023-07-09 19:12:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (117,NULL,2,'Subject for Phone Call','2023-03-31 20:50:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (118,NULL,22,'Subject for Print/Merge Document','2023-06-11 15:03:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (119,NULL,2,'Subject for Phone Call','2023-09-15 06:13:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (120,NULL,56,'Subject for Interview','2022-11-22 03:03:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (121,NULL,9,'Subject for Tell a Friend','2023-04-12 15:52:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (122,NULL,9,'Subject for Tell a Friend','2023-09-15 22:56:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (123,NULL,1,'Subject for Meeting','2022-11-13 13:46:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (124,NULL,9,'Subject for Tell a Friend','2022-11-28 15:24:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (125,NULL,22,'Subject for Print/Merge Document','2022-10-29 13:57:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (126,NULL,1,'Subject for Meeting','2023-01-18 09:48:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (127,NULL,9,'Subject for Tell a Friend','2023-08-10 19:20:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (128,NULL,22,'Subject for Print/Merge Document','2023-01-17 11:26:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (129,NULL,56,'Subject for Interview','2023-06-23 12:17:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (130,NULL,2,'Subject for Phone Call','2022-12-02 03:08:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (131,NULL,2,'Subject for Phone Call','2022-12-29 13:20:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (132,NULL,9,'Subject for Tell a Friend','2023-08-02 20:11:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (133,NULL,1,'Subject for Meeting','2023-03-22 16:57:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (134,NULL,9,'Subject for Tell a Friend','2023-04-17 15:37:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (135,NULL,1,'Subject for Meeting','2023-03-08 17:15:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (136,NULL,22,'Subject for Print/Merge Document','2023-10-11 21:48:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (137,NULL,1,'Subject for Meeting','2022-11-17 22:03:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (138,NULL,1,'Subject for Meeting','2022-11-04 12:09:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (139,NULL,9,'Subject for Tell a Friend','2023-09-14 02:11:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (140,NULL,9,'Subject for Tell a Friend','2023-06-28 15:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (141,NULL,9,'Subject for Tell a Friend','2023-04-16 14:15:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (142,NULL,2,'Subject for Phone Call','2023-01-16 19:23:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (143,NULL,2,'Subject for Phone Call','2023-04-28 06:08:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (144,NULL,22,'Subject for Print/Merge Document','2023-04-13 21:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (145,NULL,22,'Subject for Print/Merge Document','2023-02-03 15:37:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (146,NULL,56,'Subject for Interview','2023-10-13 19:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (147,NULL,2,'Subject for Phone Call','2022-10-31 05:23:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (148,NULL,1,'Subject for Meeting','2022-12-25 10:29:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (149,NULL,9,'Subject for Tell a Friend','2023-05-05 12:11:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (150,NULL,56,'Subject for Interview','2023-02-05 16:40:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (151,NULL,22,'Subject for Print/Merge Document','2023-04-30 21:22:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (152,NULL,9,'Subject for Tell a Friend','2022-11-27 00:25:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (153,NULL,9,'Subject for Tell a Friend','2023-03-15 12:18:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (154,NULL,56,'Subject for Interview','2023-08-09 21:15:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (155,NULL,56,'Subject for Interview','2023-06-11 02:19:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (156,NULL,1,'Subject for Meeting','2023-08-12 20:43:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (157,NULL,9,'Subject for Tell a Friend','2023-04-18 10:13:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (158,NULL,22,'Subject for Print/Merge Document','2023-10-11 14:43:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (159,NULL,22,'Subject for Print/Merge Document','2022-12-18 18:44:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (160,NULL,56,'Subject for Interview','2023-01-29 07:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (161,NULL,1,'Subject for Meeting','2023-03-28 17:25:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (162,NULL,56,'Subject for Interview','2023-06-06 05:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (163,NULL,56,'Subject for Interview','2023-05-31 15:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (164,NULL,1,'Subject for Meeting','2023-09-09 23:05:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (165,NULL,2,'Subject for Phone Call','2023-01-18 21:13:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (166,NULL,9,'Subject for Tell a Friend','2022-11-07 03:35:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (167,NULL,1,'Subject for Meeting','2023-09-27 21:37:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (168,NULL,22,'Subject for Print/Merge Document','2023-03-20 19:33:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (169,NULL,1,'Subject for Meeting','2023-05-22 07:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (170,NULL,1,'Subject for Meeting','2023-01-31 20:37:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (171,NULL,56,'Subject for Interview','2023-03-27 22:15:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (172,NULL,56,'Subject for Interview','2023-09-10 00:35:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (173,NULL,2,'Subject for Phone Call','2023-01-18 10:22:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (174,NULL,2,'Subject for Phone Call','2023-09-30 10:05:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (175,NULL,22,'Subject for Print/Merge Document','2023-08-04 09:39:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (176,NULL,2,'Subject for Phone Call','2023-10-04 22:34:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (177,NULL,9,'Subject for Tell a Friend','2023-01-18 01:38:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (178,NULL,1,'Subject for Meeting','2023-01-13 03:05:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (179,NULL,1,'Subject for Meeting','2023-02-27 08:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (180,NULL,22,'Subject for Print/Merge Document','2023-03-22 06:23:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (181,NULL,22,'Subject for Print/Merge Document','2023-05-28 17:07:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (182,NULL,9,'Subject for Tell a Friend','2023-06-29 04:23:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (183,NULL,9,'Subject for Tell a Friend','2023-03-10 17:42:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (184,NULL,1,'Subject for Meeting','2023-07-21 14:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (185,NULL,2,'Subject for Phone Call','2023-08-25 09:42:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (186,NULL,22,'Subject for Print/Merge Document','2023-06-09 21:22:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (187,NULL,2,'Subject for Phone Call','2023-02-17 05:11:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (188,NULL,22,'Subject for Print/Merge Document','2023-01-20 14:56:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (189,NULL,2,'Subject for Phone Call','2023-02-18 04:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (190,NULL,56,'Subject for Interview','2023-09-15 04:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (191,NULL,56,'Subject for Interview','2023-05-18 10:15:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (192,NULL,2,'Subject for Phone Call','2023-08-24 14:18:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (193,NULL,56,'Subject for Interview','2023-07-24 17:06:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (194,NULL,22,'Subject for Print/Merge Document','2023-01-11 22:31:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (195,NULL,1,'Subject for Meeting','2023-07-20 21:50:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (196,NULL,2,'Subject for Phone Call','2022-12-23 09:49:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (197,NULL,1,'Subject for Meeting','2023-04-03 03:48:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (198,NULL,22,'Subject for Print/Merge Document','2023-10-05 00:47:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (199,NULL,2,'Subject for Phone Call','2022-12-21 22:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (200,NULL,1,'Subject for Meeting','2023-03-18 18:10:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (201,NULL,22,'Subject for Print/Merge Document','2022-11-03 12:41:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (202,NULL,1,'Subject for Meeting','2023-04-12 11:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (203,NULL,9,'Subject for Tell a Friend','2022-12-11 19:13:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (204,NULL,2,'Subject for Phone Call','2023-08-30 16:45:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (205,NULL,1,'Subject for Meeting','2022-12-09 17:17:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (206,NULL,56,'Subject for Interview','2023-04-19 10:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (207,NULL,1,'Subject for Meeting','2023-10-11 04:54:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (208,NULL,2,'Subject for Phone Call','2023-03-21 08:37:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (209,NULL,22,'Subject for Print/Merge Document','2023-10-19 11:38:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (210,NULL,9,'Subject for Tell a Friend','2023-09-04 13:22:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (211,NULL,56,'Subject for Interview','2022-11-27 20:44:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (212,NULL,9,'Subject for Tell a Friend','2023-07-18 23:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (213,NULL,9,'Subject for Tell a Friend','2023-03-09 01:27:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (214,NULL,22,'Subject for Print/Merge Document','2023-07-14 10:44:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (215,NULL,56,'Subject for Interview','2023-02-14 13:52:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (216,NULL,2,'Subject for Phone Call','2023-05-14 01:19:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (217,NULL,9,'Subject for Tell a Friend','2023-08-20 00:24:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (218,NULL,2,'Subject for Phone Call','2023-10-08 12:40:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (219,NULL,22,'Subject for Print/Merge Document','2023-09-27 08:07:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (220,NULL,22,'Subject for Print/Merge Document','2023-06-15 22:18:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (221,NULL,2,'Subject for Phone Call','2023-07-26 10:30:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (222,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:47:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (223,NULL,56,'Subject for Interview','2023-06-06 11:19:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (224,NULL,2,'Subject for Phone Call','2023-09-28 21:58:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (225,NULL,2,'Subject for Phone Call','2023-05-01 14:42:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (226,NULL,2,'Subject for Phone Call','2023-04-27 15:47:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (227,NULL,2,'Subject for Phone Call','2023-07-15 16:21:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (228,NULL,22,'Subject for Print/Merge Document','2022-12-18 21:57:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (229,NULL,2,'Subject for Phone Call','2023-03-30 16:21:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (230,NULL,56,'Subject for Interview','2023-05-17 20:25:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (231,NULL,2,'Subject for Phone Call','2023-07-01 09:12:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (232,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:23:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (233,NULL,2,'Subject for Phone Call','2023-03-13 01:16:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (234,NULL,2,'Subject for Phone Call','2023-03-14 01:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (235,NULL,22,'Subject for Print/Merge Document','2022-11-23 06:12:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (236,NULL,22,'Subject for Print/Merge Document','2022-12-07 23:01:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (237,NULL,2,'Subject for Phone Call','2023-01-15 06:14:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (238,NULL,56,'Subject for Interview','2023-01-16 08:23:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (239,NULL,9,'Subject for Tell a Friend','2022-12-07 10:43:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (240,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:39:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (241,NULL,2,'Subject for Phone Call','2023-10-10 02:46:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (242,NULL,2,'Subject for Phone Call','2023-05-18 21:32:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (243,NULL,56,'Subject for Interview','2023-10-13 02:52:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (244,NULL,9,'Subject for Tell a Friend','2023-06-27 21:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (245,NULL,22,'Subject for Print/Merge Document','2023-04-12 21:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (246,NULL,9,'Subject for Tell a Friend','2023-10-14 10:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (247,NULL,1,'Subject for Meeting','2023-04-03 17:03:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (248,NULL,56,'Subject for Interview','2023-01-22 22:01:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (249,NULL,1,'Subject for Meeting','2023-04-26 08:05:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (250,NULL,56,'Subject for Interview','2023-08-11 04:25:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (251,NULL,1,'Subject for Meeting','2022-12-30 21:51:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (252,NULL,1,'Subject for Meeting','2023-01-25 10:14:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (253,NULL,2,'Subject for Phone Call','2022-11-01 18:09:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (254,NULL,56,'Subject for Interview','2023-06-12 16:29:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (255,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:19:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (256,NULL,2,'Subject for Phone Call','2022-10-21 00:42:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (257,NULL,56,'Subject for Interview','2023-07-14 18:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (258,NULL,1,'Subject for Meeting','2022-10-25 15:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (259,NULL,2,'Subject for Phone Call','2023-02-26 01:39:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (260,NULL,22,'Subject for Print/Merge Document','2023-09-17 11:38:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (261,NULL,56,'Subject for Interview','2023-04-16 00:07:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (262,NULL,9,'Subject for Tell a Friend','2023-08-28 14:11:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (263,NULL,2,'Subject for Phone Call','2022-12-27 01:04:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (264,NULL,1,'Subject for Meeting','2023-02-27 01:06:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (265,NULL,22,'Subject for Print/Merge Document','2023-09-12 12:49:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (266,NULL,1,'Subject for Meeting','2023-08-30 05:46:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (267,NULL,1,'Subject for Meeting','2023-01-01 15:56:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (268,NULL,56,'Subject for Interview','2023-06-08 03:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (269,NULL,22,'Subject for Print/Merge Document','2023-01-31 08:43:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (270,NULL,2,'Subject for Phone Call','2023-08-19 09:42:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (271,NULL,1,'Subject for Meeting','2023-04-12 17:16:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (272,NULL,1,'Subject for Meeting','2023-03-17 07:33:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (273,NULL,22,'Subject for Print/Merge Document','2023-08-05 04:42:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (274,NULL,2,'Subject for Phone Call','2023-02-05 15:55:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (275,NULL,56,'Subject for Interview','2023-06-27 05:26:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (276,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:00:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (277,NULL,56,'Subject for Interview','2022-12-22 19:24:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (278,NULL,9,'Subject for Tell a Friend','2023-02-25 12:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (279,NULL,56,'Subject for Interview','2023-03-01 22:20:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (280,NULL,56,'Subject for Interview','2023-03-23 11:08:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (281,NULL,22,'Subject for Print/Merge Document','2023-03-19 15:41:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (282,NULL,2,'Subject for Phone Call','2023-06-02 15:40:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (283,NULL,56,'Subject for Interview','2023-09-06 16:30:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (284,NULL,22,'Subject for Print/Merge Document','2023-10-10 16:32:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (285,NULL,9,'Subject for Tell a Friend','2023-02-28 19:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (286,NULL,22,'Subject for Print/Merge Document','2022-12-26 02:09:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (287,NULL,22,'Subject for Print/Merge Document','2023-07-13 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (288,NULL,9,'Subject for Tell a Friend','2023-07-16 01:07:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (289,NULL,1,'Subject for Meeting','2023-08-13 21:27:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (290,NULL,22,'Subject for Print/Merge Document','2023-03-02 19:56:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (291,NULL,2,'Subject for Phone Call','2023-01-01 14:09:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (292,NULL,22,'Subject for Print/Merge Document','2023-10-16 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (293,NULL,9,'Subject for Tell a Friend','2023-05-05 13:31:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (294,NULL,2,'Subject for Phone Call','2023-10-03 22:00:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (295,NULL,9,'Subject for Tell a Friend','2023-01-11 13:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (296,NULL,56,'Subject for Interview','2023-01-16 19:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (297,NULL,22,'Subject for Print/Merge Document','2023-06-15 12:50:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (298,NULL,2,'Subject for Phone Call','2023-04-29 20:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (299,NULL,2,'Subject for Phone Call','2023-10-15 18:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (300,NULL,56,'Subject for Interview','2023-10-13 22:52:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (301,NULL,9,'Subject for Tell a Friend','2023-09-27 00:31:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (302,NULL,9,'Subject for Tell a Friend','2023-07-15 16:34:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (303,NULL,1,'Subject for Meeting','2023-04-28 02:22:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (304,NULL,1,'Subject for Meeting','2023-10-03 04:09:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (305,NULL,22,'Subject for Print/Merge Document','2023-09-21 21:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (306,NULL,2,'Subject for Phone Call','2023-06-28 08:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (307,NULL,2,'Subject for Phone Call','2023-08-14 03:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (308,NULL,1,'Subject for Meeting','2023-08-24 07:35:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (309,NULL,1,'Subject for Meeting','2023-03-31 17:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (310,NULL,9,'Subject for Tell a Friend','2023-03-18 03:05:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (311,NULL,56,'Subject for Interview','2023-09-14 11:25:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (312,NULL,1,'Subject for Meeting','2022-12-03 09:06:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (313,NULL,2,'Subject for Phone Call','2022-11-10 18:33:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (314,NULL,1,'Subject for Meeting','2023-06-24 17:25:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (315,NULL,9,'Subject for Tell a Friend','2023-04-16 13:23:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (316,NULL,1,'Subject for Meeting','2023-01-08 21:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (317,NULL,22,'Subject for Print/Merge Document','2023-09-15 04:05:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (318,NULL,22,'Subject for Print/Merge Document','2022-11-05 22:37:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (319,NULL,56,'Subject for Interview','2023-02-18 23:04:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (320,NULL,2,'Subject for Phone Call','2023-04-13 05:04:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (321,NULL,1,'Subject for Meeting','2022-12-23 14:36:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (322,NULL,2,'Subject for Phone Call','2023-03-27 13:06:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (323,NULL,22,'Subject for Print/Merge Document','2023-10-13 13:41:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (324,NULL,1,'Subject for Meeting','2022-12-18 06:44:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (325,NULL,9,'Subject for Tell a Friend','2023-09-27 09:17:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (326,NULL,2,'Subject for Phone Call','2022-11-25 00:12:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (327,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (328,NULL,22,'Subject for Print/Merge Document','2023-03-04 08:35:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (329,NULL,2,'Subject for Phone Call','2023-07-17 20:37:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (330,NULL,2,'Subject for Phone Call','2023-05-18 15:25:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (331,NULL,1,'Subject for Meeting','2023-08-28 20:59:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (332,NULL,56,'Subject for Interview','2023-02-02 10:27:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (333,NULL,2,'Subject for Phone Call','2023-05-08 12:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (334,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (335,NULL,9,'Subject for Tell a Friend','2023-04-22 00:38:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (336,NULL,22,'Subject for Print/Merge Document','2023-09-18 03:30:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (337,NULL,1,'Subject for Meeting','2023-05-27 13:34:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (338,NULL,1,'Subject for Meeting','2023-10-07 12:37:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (339,NULL,56,'Subject for Interview','2023-08-19 11:51:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (340,NULL,22,'Subject for Print/Merge Document','2022-12-07 15:32:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (341,NULL,56,'Subject for Interview','2022-12-26 16:49:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (342,NULL,1,'Subject for Meeting','2023-10-17 16:01:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (343,NULL,1,'Subject for Meeting','2023-03-08 02:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (344,NULL,1,'Subject for Meeting','2022-12-03 10:41:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (345,NULL,56,'Subject for Interview','2023-07-17 02:33:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (346,NULL,9,'Subject for Tell a Friend','2023-08-09 00:03:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (347,NULL,22,'Subject for Print/Merge Document','2022-12-23 20:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (348,NULL,2,'Subject for Phone Call','2022-11-26 17:02:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (349,NULL,1,'Subject for Meeting','2023-01-06 13:45:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (350,NULL,9,'Subject for Tell a Friend','2023-01-07 04:38:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (351,NULL,9,'Subject for Tell a Friend','2022-11-17 20:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (352,NULL,1,'Subject for Meeting','2023-06-13 01:46:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (353,NULL,9,'Subject for Tell a Friend','2023-07-15 01:01:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (354,NULL,22,'Subject for Print/Merge Document','2022-11-26 12:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (355,NULL,56,'Subject for Interview','2023-09-24 01:51:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (356,NULL,56,'Subject for Interview','2023-03-09 21:25:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (357,NULL,56,'Subject for Interview','2023-08-31 17:13:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (358,NULL,9,'Subject for Tell a Friend','2023-01-25 06:43:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (359,NULL,9,'Subject for Tell a Friend','2023-07-09 15:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (360,NULL,2,'Subject for Phone Call','2023-03-24 13:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (361,NULL,2,'Subject for Phone Call','2023-01-06 00:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (362,NULL,22,'Subject for Print/Merge Document','2023-02-28 14:22:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (363,NULL,1,'Subject for Meeting','2023-07-16 22:37:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (364,NULL,2,'Subject for Phone Call','2023-02-27 03:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (365,NULL,9,'Subject for Tell a Friend','2023-03-09 07:05:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (366,NULL,9,'Subject for Tell a Friend','2022-11-25 06:45:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (367,NULL,56,'Subject for Interview','2022-10-23 21:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (368,NULL,56,'Subject for Interview','2023-02-15 20:58:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (369,NULL,2,'Subject for Phone Call','2023-07-05 12:36:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (370,NULL,56,'Subject for Interview','2023-01-30 04:14:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (371,NULL,56,'Subject for Interview','2023-02-04 00:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (372,NULL,2,'Subject for Phone Call','2023-01-22 17:08:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (373,NULL,56,'Subject for Interview','2023-09-08 17:44:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (374,NULL,2,'Subject for Phone Call','2023-06-08 10:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (375,NULL,9,'Subject for Tell a Friend','2023-05-22 12:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (376,NULL,1,'Subject for Meeting','2023-06-26 15:56:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (377,NULL,56,'Subject for Interview','2023-04-09 02:38:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (378,NULL,1,'Subject for Meeting','2023-06-13 08:39:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (379,NULL,9,'Subject for Tell a Friend','2023-10-04 01:52:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (380,NULL,2,'Subject for Phone Call','2023-04-22 17:07:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (381,NULL,1,'Subject for Meeting','2023-04-11 06:02:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (382,NULL,9,'Subject for Tell a Friend','2023-08-31 12:23:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (383,NULL,1,'Subject for Meeting','2023-05-13 06:14:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (384,NULL,56,'Subject for Interview','2022-11-18 20:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (385,NULL,1,'Subject for Meeting','2022-11-25 17:43:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (386,NULL,56,'Subject for Interview','2023-03-11 23:21:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (387,NULL,22,'Subject for Print/Merge Document','2023-08-14 20:54:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (388,NULL,9,'Subject for Tell a Friend','2023-04-29 19:20:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (389,NULL,56,'Subject for Interview','2022-11-08 09:06:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (390,NULL,56,'Subject for Interview','2022-11-06 00:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (391,NULL,1,'Subject for Meeting','2023-06-22 20:01:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (392,NULL,2,'Subject for Phone Call','2022-11-11 00:49:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (393,NULL,56,'Subject for Interview','2023-01-13 17:40:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (394,NULL,9,'Subject for Tell a Friend','2022-10-24 14:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (395,NULL,56,'Subject for Interview','2023-04-13 12:59:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (396,NULL,9,'Subject for Tell a Friend','2022-11-08 09:12:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (397,NULL,9,'Subject for Tell a Friend','2023-09-11 05:18:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (398,NULL,2,'Subject for Phone Call','2023-01-01 21:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (399,NULL,1,'Subject for Meeting','2023-08-14 15:06:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (400,NULL,1,'Subject for Meeting','2023-08-27 23:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (401,NULL,22,'Subject for Print/Merge Document','2023-08-01 13:19:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (402,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:21:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (403,NULL,2,'Subject for Phone Call','2023-10-06 13:00:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (404,NULL,9,'Subject for Tell a Friend','2023-09-26 09:13:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (405,NULL,2,'Subject for Phone Call','2022-11-15 13:35:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (406,NULL,56,'Subject for Interview','2023-08-25 03:26:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (407,NULL,2,'Subject for Phone Call','2022-12-08 23:34:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (408,NULL,2,'Subject for Phone Call','2023-05-06 20:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (409,NULL,2,'Subject for Phone Call','2023-09-24 15:02:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (410,NULL,56,'Subject for Interview','2023-04-21 22:45:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (411,NULL,2,'Subject for Phone Call','2022-11-01 08:39:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (412,NULL,2,'Subject for Phone Call','2022-12-07 11:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (413,NULL,2,'Subject for Phone Call','2023-04-15 21:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (414,NULL,9,'Subject for Tell a Friend','2023-07-27 13:46:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (415,NULL,9,'Subject for Tell a Friend','2022-12-12 21:57:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (416,NULL,1,'Subject for Meeting','2023-03-20 22:51:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (417,NULL,2,'Subject for Phone Call','2023-01-05 11:13:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (418,NULL,1,'Subject for Meeting','2023-02-26 07:15:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (419,NULL,9,'Subject for Tell a Friend','2023-09-06 21:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (420,NULL,56,'Subject for Interview','2023-08-04 14:49:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (421,NULL,22,'Subject for Print/Merge Document','2022-12-18 22:31:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (422,NULL,9,'Subject for Tell a Friend','2023-05-05 15:54:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (423,NULL,22,'Subject for Print/Merge Document','2023-10-06 16:01:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (424,NULL,22,'Subject for Print/Merge Document','2023-09-17 17:41:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (425,NULL,1,'Subject for Meeting','2023-07-27 15:31:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (426,NULL,2,'Subject for Phone Call','2022-12-29 04:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (427,NULL,2,'Subject for Phone Call','2023-03-18 03:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (428,NULL,1,'Subject for Meeting','2023-01-07 19:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (429,NULL,9,'Subject for Tell a Friend','2023-02-09 06:51:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (430,NULL,1,'Subject for Meeting','2023-03-21 08:02:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (431,NULL,9,'Subject for Tell a Friend','2023-08-26 02:15:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (432,NULL,22,'Subject for Print/Merge Document','2023-01-24 03:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (433,NULL,56,'Subject for Interview','2023-06-28 04:52:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (434,NULL,22,'Subject for Print/Merge Document','2023-07-01 19:22:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (435,NULL,1,'Subject for Meeting','2022-12-22 01:36:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (436,NULL,56,'Subject for Interview','2023-09-05 08:47:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (437,NULL,22,'Subject for Print/Merge Document','2023-04-26 21:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (438,NULL,9,'Subject for Tell a Friend','2023-04-27 17:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (439,NULL,22,'Subject for Print/Merge Document','2022-12-15 06:05:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (440,NULL,1,'Subject for Meeting','2023-08-09 02:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (441,NULL,2,'Subject for Phone Call','2023-08-29 10:06:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (442,NULL,1,'Subject for Meeting','2023-09-28 05:02:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (443,NULL,9,'Subject for Tell a Friend','2023-02-04 21:14:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (444,NULL,56,'Subject for Interview','2023-09-05 14:01:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (445,NULL,1,'Subject for Meeting','2023-09-19 00:06:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (446,NULL,1,'Subject for Meeting','2023-01-14 07:13:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (447,NULL,2,'Subject for Phone Call','2022-12-15 22:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (448,NULL,9,'Subject for Tell a Friend','2023-06-25 08:38:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (449,NULL,56,'Subject for Interview','2023-05-30 00:30:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (450,NULL,22,'Subject for Print/Merge Document','2023-02-23 12:29:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (451,1,6,'$ 125 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (452,2,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (453,3,6,'£ 25 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (454,4,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (455,5,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (456,6,6,'$ 500 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (458,8,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (461,11,6,'Â¥ 500 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (462,12,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (463,13,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (464,14,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (465,15,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (466,16,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (467,17,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (468,18,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (469,19,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (470,20,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (471,21,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (472,22,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (473,23,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (474,24,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (475,25,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (476,26,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (477,27,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (478,28,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (479,29,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (480,30,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (481,31,6,'€ 5 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (482,1,7,'General','2023-10-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (483,2,7,'Student','2023-10-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (484,3,7,'General','2023-10-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (485,4,7,'Student','2023-10-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (486,5,7,'Student','2022-10-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (487,6,7,'Student','2023-10-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (488,7,7,'General','2023-10-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (489,8,7,'Student','2023-10-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (490,9,7,'General','2023-10-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (491,10,7,'Student','2022-10-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (492,11,7,'Lifetime','2023-10-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (493,12,7,'Student','2023-10-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (494,13,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (495,14,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (496,15,7,'General','2021-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (497,16,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (498,17,7,'General','2023-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (499,18,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (500,19,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (501,20,7,'General','2021-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (502,21,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (503,22,7,'Lifetime','2023-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (504,23,7,'General','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (505,24,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (506,25,7,'General','2021-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (507,26,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (508,27,7,'General','2023-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (509,28,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (510,29,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (511,30,7,'General','2021-03-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (513,33,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (515,35,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (517,37,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (519,39,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (522,42,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (523,43,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (525,45,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (528,48,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (530,50,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (532,52,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (533,53,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (534,54,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (538,58,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (540,60,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (541,61,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (626,96,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (631,101,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30');
+ (1,NULL,22,'Subject for Print/Merge Document','2023-10-08 02:56:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (2,NULL,56,'Subject for Interview','2023-06-10 05:36:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (3,NULL,1,'Subject for Meeting','2023-05-01 21:21:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (4,NULL,9,'Subject for Tell a Friend','2023-08-02 04:54:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (5,NULL,9,'Subject for Tell a Friend','2023-03-20 05:19:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (6,NULL,9,'Subject for Tell a Friend','2023-08-08 05:44:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (7,NULL,56,'Subject for Interview','2023-06-17 01:16:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (8,NULL,1,'Subject for Meeting','2023-09-08 10:23:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (9,NULL,9,'Subject for Tell a Friend','2023-12-15 10:58:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (10,NULL,56,'Subject for Interview','2023-02-02 02:15:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (11,NULL,56,'Subject for Interview','2023-07-01 06:57:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (12,NULL,56,'Subject for Interview','2023-02-06 22:00:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (13,NULL,1,'Subject for Meeting','2023-05-02 09:47:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (14,NULL,22,'Subject for Print/Merge Document','2023-01-23 12:58:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (15,NULL,56,'Subject for Interview','2023-11-10 07:07:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (16,NULL,22,'Subject for Print/Merge Document','2023-07-01 17:41:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (17,NULL,56,'Subject for Interview','2022-12-27 16:58:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (18,NULL,9,'Subject for Tell a Friend','2023-04-01 09:36:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (19,NULL,2,'Subject for Phone Call','2023-03-16 06:37:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (20,NULL,2,'Subject for Phone Call','2023-04-04 13:49:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (21,NULL,9,'Subject for Tell a Friend','2023-04-01 23:33:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (22,NULL,56,'Subject for Interview','2023-06-09 22:15:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (23,NULL,2,'Subject for Phone Call','2023-07-08 12:22:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (24,NULL,22,'Subject for Print/Merge Document','2023-04-05 11:24:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (25,NULL,2,'Subject for Phone Call','2023-08-09 03:20:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (26,NULL,2,'Subject for Phone Call','2023-10-26 01:05:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (27,NULL,9,'Subject for Tell a Friend','2023-09-29 14:35:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (28,NULL,9,'Subject for Tell a Friend','2023-02-14 06:08:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (29,NULL,1,'Subject for Meeting','2023-03-01 14:08:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (30,NULL,56,'Subject for Interview','2023-09-16 23:16:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (31,NULL,2,'Subject for Phone Call','2023-01-27 20:22:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (32,NULL,2,'Subject for Phone Call','2023-01-30 05:56:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (33,NULL,56,'Subject for Interview','2023-09-16 18:31:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (34,NULL,9,'Subject for Tell a Friend','2023-10-20 04:30:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (35,NULL,1,'Subject for Meeting','2023-03-09 01:09:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (36,NULL,2,'Subject for Phone Call','2023-06-26 00:14:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (37,NULL,9,'Subject for Tell a Friend','2023-02-20 18:36:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (38,NULL,2,'Subject for Phone Call','2023-04-09 08:39:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (39,NULL,1,'Subject for Meeting','2023-11-09 08:03:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (40,NULL,22,'Subject for Print/Merge Document','2023-01-22 00:32:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (41,NULL,56,'Subject for Interview','2023-01-02 19:39:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (42,NULL,2,'Subject for Phone Call','2023-03-05 21:27:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (43,NULL,1,'Subject for Meeting','2023-07-11 05:07:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (44,NULL,9,'Subject for Tell a Friend','2023-11-24 00:54:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (45,NULL,56,'Subject for Interview','2023-04-08 07:43:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (46,NULL,56,'Subject for Interview','2023-03-14 03:06:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (47,NULL,22,'Subject for Print/Merge Document','2023-07-06 22:03:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (48,NULL,22,'Subject for Print/Merge Document','2023-03-21 15:50:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (49,NULL,56,'Subject for Interview','2023-07-15 11:03:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (50,NULL,22,'Subject for Print/Merge Document','2023-10-11 13:09:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (51,NULL,2,'Subject for Phone Call','2023-09-15 03:49:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (52,NULL,9,'Subject for Tell a Friend','2023-02-23 20:39:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (53,NULL,9,'Subject for Tell a Friend','2023-03-16 06:28:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (54,NULL,2,'Subject for Phone Call','2023-05-28 02:55:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (55,NULL,1,'Subject for Meeting','2023-05-23 14:45:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (56,NULL,56,'Subject for Interview','2023-07-23 01:45:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (57,NULL,1,'Subject for Meeting','2023-03-21 05:44:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (58,NULL,1,'Subject for Meeting','2023-06-19 04:45:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (59,NULL,9,'Subject for Tell a Friend','2023-11-06 03:35:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (60,NULL,22,'Subject for Print/Merge Document','2023-05-19 10:17:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (61,NULL,56,'Subject for Interview','2023-04-05 05:04:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (62,NULL,56,'Subject for Interview','2023-04-28 06:26:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (63,NULL,9,'Subject for Tell a Friend','2023-05-06 01:19:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (64,NULL,56,'Subject for Interview','2023-08-23 19:12:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (65,NULL,22,'Subject for Print/Merge Document','2023-11-30 13:53:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (66,NULL,9,'Subject for Tell a Friend','2023-11-09 19:37:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (67,NULL,1,'Subject for Meeting','2023-05-28 14:31:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (68,NULL,22,'Subject for Print/Merge Document','2023-09-05 09:47:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (69,NULL,56,'Subject for Interview','2023-04-27 02:48:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (70,NULL,2,'Subject for Phone Call','2023-04-22 17:53:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (71,NULL,22,'Subject for Print/Merge Document','2023-07-03 16:20:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (72,NULL,1,'Subject for Meeting','2023-03-30 22:26:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (73,NULL,22,'Subject for Print/Merge Document','2023-04-05 13:06:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (74,NULL,2,'Subject for Phone Call','2023-02-03 16:41:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (75,NULL,1,'Subject for Meeting','2023-05-28 11:55:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (76,NULL,56,'Subject for Interview','2023-04-28 11:57:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (77,NULL,1,'Subject for Meeting','2023-03-01 19:51:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (78,NULL,2,'Subject for Phone Call','2023-03-13 06:48:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (79,NULL,2,'Subject for Phone Call','2023-03-08 13:39:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (80,NULL,1,'Subject for Meeting','2023-07-07 11:05:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (81,NULL,2,'Subject for Phone Call','2023-09-28 04:07:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (82,NULL,22,'Subject for Print/Merge Document','2023-05-22 22:14:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (83,NULL,2,'Subject for Phone Call','2023-07-01 21:32:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (84,NULL,56,'Subject for Interview','2023-04-16 09:48:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (85,NULL,9,'Subject for Tell a Friend','2023-04-10 11:30:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (86,NULL,1,'Subject for Meeting','2023-04-16 11:16:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (87,NULL,2,'Subject for Phone Call','2023-09-19 22:01:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (88,NULL,56,'Subject for Interview','2023-11-16 15:42:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (89,NULL,1,'Subject for Meeting','2023-07-23 21:59:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (90,NULL,1,'Subject for Meeting','2023-01-06 08:13:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (91,NULL,2,'Subject for Phone Call','2023-08-28 01:55:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (92,NULL,9,'Subject for Tell a Friend','2023-12-14 22:42:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (93,NULL,9,'Subject for Tell a Friend','2023-04-01 06:34:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (94,NULL,9,'Subject for Tell a Friend','2023-06-19 15:27:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (95,NULL,2,'Subject for Phone Call','2023-08-25 21:25:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (96,NULL,22,'Subject for Print/Merge Document','2023-11-08 04:31:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (97,NULL,1,'Subject for Meeting','2023-04-24 14:09:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (98,NULL,9,'Subject for Tell a Friend','2023-02-08 07:00:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (99,NULL,9,'Subject for Tell a Friend','2022-12-30 16:02:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (100,NULL,1,'Subject for Meeting','2023-10-14 18:29:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (101,NULL,1,'Subject for Meeting','2023-10-24 01:33:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (102,NULL,56,'Subject for Interview','2023-11-06 15:52:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (103,NULL,56,'Subject for Interview','2023-07-11 14:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (104,NULL,2,'Subject for Phone Call','2023-05-08 02:50:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (105,NULL,56,'Subject for Interview','2023-10-22 12:38:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (106,NULL,1,'Subject for Meeting','2023-05-23 00:30:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (107,NULL,1,'Subject for Meeting','2023-02-19 22:36:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (108,NULL,22,'Subject for Print/Merge Document','2023-11-15 16:08:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (109,NULL,1,'Subject for Meeting','2023-10-06 14:47:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (110,NULL,56,'Subject for Interview','2023-11-05 20:03:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (111,NULL,22,'Subject for Print/Merge Document','2023-09-27 16:39:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (112,NULL,22,'Subject for Print/Merge Document','2023-07-20 21:27:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (113,NULL,1,'Subject for Meeting','2023-05-23 05:11:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (114,NULL,56,'Subject for Interview','2023-04-19 07:53:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (115,NULL,9,'Subject for Tell a Friend','2023-10-20 02:45:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (116,NULL,1,'Subject for Meeting','2023-02-10 19:14:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (117,NULL,56,'Subject for Interview','2023-01-13 17:31:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (118,NULL,9,'Subject for Tell a Friend','2023-06-25 17:19:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (119,NULL,9,'Subject for Tell a Friend','2023-06-21 15:56:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (120,NULL,9,'Subject for Tell a Friend','2023-06-10 17:20:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (121,NULL,1,'Subject for Meeting','2022-12-25 15:01:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (122,NULL,1,'Subject for Meeting','2023-04-13 13:55:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (123,NULL,1,'Subject for Meeting','2022-12-22 11:01:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (124,NULL,1,'Subject for Meeting','2023-10-11 09:40:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (125,NULL,22,'Subject for Print/Merge Document','2023-08-07 00:26:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (126,NULL,56,'Subject for Interview','2023-11-12 10:19:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (127,NULL,1,'Subject for Meeting','2023-09-02 06:50:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (128,NULL,9,'Subject for Tell a Friend','2023-12-15 23:03:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (129,NULL,1,'Subject for Meeting','2023-04-24 05:32:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (130,NULL,1,'Subject for Meeting','2023-02-12 12:43:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (131,NULL,56,'Subject for Interview','2022-12-28 04:32:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (132,NULL,56,'Subject for Interview','2023-07-06 00:51:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (133,NULL,9,'Subject for Tell a Friend','2023-12-03 16:13:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (134,NULL,22,'Subject for Print/Merge Document','2023-09-11 09:28:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (135,NULL,1,'Subject for Meeting','2023-03-23 11:31:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (136,NULL,56,'Subject for Interview','2023-07-19 14:21:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (137,NULL,1,'Subject for Meeting','2023-09-30 22:09:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (138,NULL,22,'Subject for Print/Merge Document','2023-01-05 03:07:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (139,NULL,2,'Subject for Phone Call','2023-10-01 00:33:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (140,NULL,22,'Subject for Print/Merge Document','2023-11-19 06:40:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (141,NULL,9,'Subject for Tell a Friend','2023-10-25 11:31:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (142,NULL,9,'Subject for Tell a Friend','2023-08-15 10:35:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (143,NULL,22,'Subject for Print/Merge Document','2023-02-06 17:48:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (144,NULL,56,'Subject for Interview','2023-10-05 18:18:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (145,NULL,9,'Subject for Tell a Friend','2023-12-07 01:18:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (146,NULL,56,'Subject for Interview','2023-03-04 16:41:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (147,NULL,1,'Subject for Meeting','2022-12-23 16:07:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (148,NULL,1,'Subject for Meeting','2023-08-12 04:54:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (149,NULL,22,'Subject for Print/Merge Document','2023-07-30 02:18:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (150,NULL,2,'Subject for Phone Call','2023-01-18 03:38:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (151,NULL,1,'Subject for Meeting','2023-09-21 06:01:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (152,NULL,2,'Subject for Phone Call','2023-01-01 16:47:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (153,NULL,56,'Subject for Interview','2023-06-17 01:08:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (154,NULL,56,'Subject for Interview','2023-03-25 09:41:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (155,NULL,22,'Subject for Print/Merge Document','2023-07-22 01:37:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (156,NULL,9,'Subject for Tell a Friend','2023-06-22 21:38:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (157,NULL,22,'Subject for Print/Merge Document','2023-08-07 06:26:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (158,NULL,56,'Subject for Interview','2023-06-26 16:02:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (159,NULL,56,'Subject for Interview','2023-07-12 15:13:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (160,NULL,2,'Subject for Phone Call','2023-08-17 09:52:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (161,NULL,56,'Subject for Interview','2023-08-15 05:59:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (162,NULL,22,'Subject for Print/Merge Document','2023-05-04 10:30:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (163,NULL,9,'Subject for Tell a Friend','2023-03-16 22:56:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (164,NULL,2,'Subject for Phone Call','2023-03-28 06:59:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (165,NULL,2,'Subject for Phone Call','2023-02-08 15:09:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (166,NULL,9,'Subject for Tell a Friend','2023-04-17 20:37:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (167,NULL,9,'Subject for Tell a Friend','2023-01-22 02:06:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (168,NULL,1,'Subject for Meeting','2023-03-31 22:05:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (169,NULL,9,'Subject for Tell a Friend','2023-12-05 10:35:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (170,NULL,56,'Subject for Interview','2023-07-08 20:21:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (171,NULL,22,'Subject for Print/Merge Document','2023-11-06 18:53:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (172,NULL,9,'Subject for Tell a Friend','2023-12-01 05:54:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (173,NULL,56,'Subject for Interview','2023-11-24 13:19:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (174,NULL,2,'Subject for Phone Call','2023-09-30 02:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (175,NULL,9,'Subject for Tell a Friend','2022-12-29 13:02:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (176,NULL,1,'Subject for Meeting','2023-10-24 18:05:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (177,NULL,9,'Subject for Tell a Friend','2023-04-30 10:34:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (178,NULL,22,'Subject for Print/Merge Document','2023-11-16 08:30:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (179,NULL,2,'Subject for Phone Call','2023-05-13 15:18:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (180,NULL,9,'Subject for Tell a Friend','2023-02-19 00:39:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (181,NULL,9,'Subject for Tell a Friend','2023-09-18 02:46:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (182,NULL,2,'Subject for Phone Call','2023-08-01 04:51:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (183,NULL,22,'Subject for Print/Merge Document','2023-08-19 07:09:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (184,NULL,1,'Subject for Meeting','2023-03-03 04:51:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (185,NULL,56,'Subject for Interview','2023-02-16 14:10:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (186,NULL,9,'Subject for Tell a Friend','2023-11-24 02:36:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (187,NULL,1,'Subject for Meeting','2023-05-09 04:54:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (188,NULL,9,'Subject for Tell a Friend','2023-08-08 01:27:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (189,NULL,9,'Subject for Tell a Friend','2023-11-19 14:13:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (190,NULL,22,'Subject for Print/Merge Document','2023-03-29 21:53:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (191,NULL,9,'Subject for Tell a Friend','2023-03-03 15:58:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (192,NULL,56,'Subject for Interview','2023-10-26 14:22:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (193,NULL,56,'Subject for Interview','2023-01-20 01:06:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (194,NULL,1,'Subject for Meeting','2023-08-01 17:34:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (195,NULL,1,'Subject for Meeting','2023-11-27 21:42:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (196,NULL,2,'Subject for Phone Call','2023-12-06 21:28:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (197,NULL,2,'Subject for Phone Call','2022-12-28 14:03:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (198,NULL,9,'Subject for Tell a Friend','2022-12-26 01:35:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (199,NULL,56,'Subject for Interview','2023-03-26 22:18:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (200,NULL,56,'Subject for Interview','2023-06-05 02:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (201,NULL,1,'Subject for Meeting','2023-03-30 05:40:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (202,NULL,1,'Subject for Meeting','2023-07-03 03:49:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (203,NULL,2,'Subject for Phone Call','2022-12-31 14:28:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (204,NULL,56,'Subject for Interview','2023-12-17 14:18:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (205,NULL,22,'Subject for Print/Merge Document','2023-08-05 01:54:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (206,NULL,9,'Subject for Tell a Friend','2023-08-15 19:25:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (207,NULL,9,'Subject for Tell a Friend','2023-07-08 20:00:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (208,NULL,56,'Subject for Interview','2023-06-21 21:29:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (209,NULL,1,'Subject for Meeting','2023-06-06 22:03:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (210,NULL,9,'Subject for Tell a Friend','2022-12-24 22:49:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (211,NULL,1,'Subject for Meeting','2023-01-23 20:10:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (212,NULL,9,'Subject for Tell a Friend','2023-02-10 08:17:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (213,NULL,22,'Subject for Print/Merge Document','2023-10-19 07:11:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (214,NULL,9,'Subject for Tell a Friend','2023-11-11 11:56:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (215,NULL,9,'Subject for Tell a Friend','2023-02-26 21:49:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (216,NULL,1,'Subject for Meeting','2023-11-18 08:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (217,NULL,9,'Subject for Tell a Friend','2023-10-22 01:28:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (218,NULL,22,'Subject for Print/Merge Document','2023-01-09 15:46:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (219,NULL,9,'Subject for Tell a Friend','2023-03-12 07:33:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (220,NULL,22,'Subject for Print/Merge Document','2023-10-19 07:19:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (221,NULL,22,'Subject for Print/Merge Document','2023-09-06 03:56:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (222,NULL,1,'Subject for Meeting','2023-04-06 11:42:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (223,NULL,1,'Subject for Meeting','2023-04-10 14:31:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (224,NULL,9,'Subject for Tell a Friend','2023-07-05 10:50:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (225,NULL,9,'Subject for Tell a Friend','2023-07-23 05:33:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (226,NULL,1,'Subject for Meeting','2023-07-03 22:30:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (227,NULL,1,'Subject for Meeting','2023-06-19 06:57:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (228,NULL,22,'Subject for Print/Merge Document','2023-01-24 23:42:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (229,NULL,9,'Subject for Tell a Friend','2023-09-14 13:20:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (230,NULL,22,'Subject for Print/Merge Document','2023-01-21 15:03:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (231,NULL,56,'Subject for Interview','2023-01-29 07:27:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (232,NULL,9,'Subject for Tell a Friend','2023-08-24 02:15:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (233,NULL,2,'Subject for Phone Call','2023-04-15 11:44:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (234,NULL,56,'Subject for Interview','2023-07-03 15:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (235,NULL,1,'Subject for Meeting','2022-12-26 02:09:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (236,NULL,2,'Subject for Phone Call','2022-12-20 08:21:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (237,NULL,9,'Subject for Tell a Friend','2023-01-25 09:09:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (238,NULL,2,'Subject for Phone Call','2023-12-06 13:22:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (239,NULL,9,'Subject for Tell a Friend','2022-12-21 15:25:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (240,NULL,22,'Subject for Print/Merge Document','2023-07-08 05:12:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (241,NULL,1,'Subject for Meeting','2023-07-28 16:16:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (242,NULL,56,'Subject for Interview','2023-03-09 01:48:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (243,NULL,9,'Subject for Tell a Friend','2023-01-16 00:37:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (244,NULL,9,'Subject for Tell a Friend','2023-08-01 19:33:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (245,NULL,22,'Subject for Print/Merge Document','2023-01-01 04:23:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (246,NULL,56,'Subject for Interview','2023-08-23 05:45:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (247,NULL,9,'Subject for Tell a Friend','2023-04-29 11:52:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (248,NULL,2,'Subject for Phone Call','2023-06-12 19:25:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (249,NULL,56,'Subject for Interview','2023-06-10 14:13:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (250,NULL,22,'Subject for Print/Merge Document','2023-02-06 21:48:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (251,NULL,9,'Subject for Tell a Friend','2023-02-08 21:32:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (252,NULL,9,'Subject for Tell a Friend','2023-01-08 23:08:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (253,NULL,22,'Subject for Print/Merge Document','2023-04-07 14:41:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (254,NULL,22,'Subject for Print/Merge Document','2023-04-24 10:07:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (255,NULL,9,'Subject for Tell a Friend','2023-11-03 20:55:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (256,NULL,56,'Subject for Interview','2023-10-03 11:05:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (257,NULL,22,'Subject for Print/Merge Document','2023-04-24 18:13:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (258,NULL,2,'Subject for Phone Call','2023-10-05 00:12:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (259,NULL,56,'Subject for Interview','2023-01-28 16:36:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (260,NULL,56,'Subject for Interview','2023-03-08 03:46:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (261,NULL,9,'Subject for Tell a Friend','2023-12-05 09:40:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (262,NULL,2,'Subject for Phone Call','2023-09-22 00:38:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (263,NULL,1,'Subject for Meeting','2023-02-06 02:10:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (264,NULL,2,'Subject for Phone Call','2023-03-26 23:21:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (265,NULL,1,'Subject for Meeting','2023-09-03 14:57:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (266,NULL,9,'Subject for Tell a Friend','2022-12-18 19:59:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (267,NULL,2,'Subject for Phone Call','2023-07-27 03:07:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (268,NULL,22,'Subject for Print/Merge Document','2023-08-03 15:09:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (269,NULL,2,'Subject for Phone Call','2023-09-20 08:11:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (270,NULL,22,'Subject for Print/Merge Document','2023-04-18 04:12:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (271,NULL,9,'Subject for Tell a Friend','2022-12-18 18:14:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (272,NULL,1,'Subject for Meeting','2023-05-14 17:33:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (273,NULL,1,'Subject for Meeting','2023-10-17 10:37:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (274,NULL,1,'Subject for Meeting','2023-09-29 02:05:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (275,NULL,9,'Subject for Tell a Friend','2023-04-24 23:30:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (276,NULL,1,'Subject for Meeting','2023-02-01 20:39:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (277,NULL,2,'Subject for Phone Call','2023-02-01 21:09:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (278,NULL,1,'Subject for Meeting','2023-08-25 14:47:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (279,NULL,56,'Subject for Interview','2023-06-25 08:11:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (280,NULL,56,'Subject for Interview','2023-05-04 22:18:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (281,NULL,2,'Subject for Phone Call','2023-02-16 15:05:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (282,NULL,56,'Subject for Interview','2023-03-06 02:50:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (283,NULL,1,'Subject for Meeting','2023-11-11 01:32:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (284,NULL,9,'Subject for Tell a Friend','2023-08-15 07:08:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (285,NULL,1,'Subject for Meeting','2023-04-27 15:50:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (286,NULL,2,'Subject for Phone Call','2023-11-27 07:46:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (287,NULL,1,'Subject for Meeting','2023-11-09 09:55:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (288,NULL,2,'Subject for Phone Call','2023-03-19 11:37:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (289,NULL,22,'Subject for Print/Merge Document','2023-06-12 07:31:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (290,NULL,56,'Subject for Interview','2023-07-29 16:41:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (291,NULL,9,'Subject for Tell a Friend','2023-09-17 20:19:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (292,NULL,9,'Subject for Tell a Friend','2023-04-10 04:38:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (293,NULL,22,'Subject for Print/Merge Document','2023-10-08 08:01:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (294,NULL,9,'Subject for Tell a Friend','2023-03-27 15:38:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (295,NULL,56,'Subject for Interview','2023-12-17 15:43:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (296,NULL,56,'Subject for Interview','2023-09-30 23:32:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (297,NULL,9,'Subject for Tell a Friend','2023-06-22 09:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (298,NULL,9,'Subject for Tell a Friend','2023-03-05 21:04:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (299,NULL,56,'Subject for Interview','2023-07-23 08:01:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (300,NULL,9,'Subject for Tell a Friend','2023-07-28 14:36:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (301,NULL,9,'Subject for Tell a Friend','2023-01-20 06:35:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (302,NULL,9,'Subject for Tell a Friend','2023-04-10 18:17:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (303,NULL,56,'Subject for Interview','2023-11-25 09:55:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (304,NULL,56,'Subject for Interview','2023-08-31 11:15:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (305,NULL,22,'Subject for Print/Merge Document','2023-09-22 07:11:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (306,NULL,22,'Subject for Print/Merge Document','2023-10-21 06:17:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (307,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (308,NULL,56,'Subject for Interview','2023-08-23 01:31:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (309,NULL,2,'Subject for Phone Call','2023-07-09 11:46:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (310,NULL,1,'Subject for Meeting','2022-12-31 03:22:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (311,NULL,1,'Subject for Meeting','2023-06-08 11:24:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (312,NULL,22,'Subject for Print/Merge Document','2023-10-24 14:30:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (313,NULL,56,'Subject for Interview','2023-10-04 01:34:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (314,NULL,9,'Subject for Tell a Friend','2023-06-21 18:22:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (315,NULL,2,'Subject for Phone Call','2023-07-17 20:01:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (316,NULL,9,'Subject for Tell a Friend','2023-07-24 01:00:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (317,NULL,1,'Subject for Meeting','2023-09-20 14:37:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (318,NULL,22,'Subject for Print/Merge Document','2023-01-23 06:32:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (319,NULL,22,'Subject for Print/Merge Document','2023-02-16 04:38:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (320,NULL,2,'Subject for Phone Call','2023-08-29 03:55:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (321,NULL,2,'Subject for Phone Call','2023-11-24 03:58:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (322,NULL,2,'Subject for Phone Call','2023-11-12 23:08:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (323,NULL,1,'Subject for Meeting','2023-02-07 16:08:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (324,NULL,56,'Subject for Interview','2023-06-05 15:26:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (325,NULL,2,'Subject for Phone Call','2023-08-31 18:54:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (326,NULL,2,'Subject for Phone Call','2023-09-01 00:45:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (327,NULL,1,'Subject for Meeting','2023-06-23 12:01:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (328,NULL,56,'Subject for Interview','2022-12-21 09:49:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (329,NULL,56,'Subject for Interview','2023-06-29 10:53:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (330,NULL,22,'Subject for Print/Merge Document','2023-07-22 03:26:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (331,NULL,22,'Subject for Print/Merge Document','2022-12-26 10:39:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (332,NULL,2,'Subject for Phone Call','2023-09-19 01:25:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (333,NULL,22,'Subject for Print/Merge Document','2023-08-18 04:26:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (334,NULL,1,'Subject for Meeting','2023-01-16 09:44:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (335,NULL,22,'Subject for Print/Merge Document','2023-01-04 11:25:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (336,NULL,2,'Subject for Phone Call','2023-08-11 09:48:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (337,NULL,56,'Subject for Interview','2023-07-03 07:56:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (338,NULL,22,'Subject for Print/Merge Document','2023-10-22 19:52:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (339,NULL,56,'Subject for Interview','2023-03-15 18:02:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (340,NULL,1,'Subject for Meeting','2023-05-21 14:45:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (341,NULL,2,'Subject for Phone Call','2023-01-15 20:34:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (342,NULL,22,'Subject for Print/Merge Document','2023-05-24 17:13:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (343,NULL,22,'Subject for Print/Merge Document','2023-07-29 19:40:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (344,NULL,22,'Subject for Print/Merge Document','2023-11-19 04:38:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (345,NULL,2,'Subject for Phone Call','2023-12-14 04:37:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (346,NULL,22,'Subject for Print/Merge Document','2023-09-26 23:50:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (347,NULL,1,'Subject for Meeting','2023-03-17 13:37:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (348,NULL,22,'Subject for Print/Merge Document','2023-01-28 07:26:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (349,NULL,22,'Subject for Print/Merge Document','2023-02-08 17:17:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (350,NULL,1,'Subject for Meeting','2023-07-22 21:39:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (351,NULL,1,'Subject for Meeting','2023-04-03 23:01:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (352,NULL,2,'Subject for Phone Call','2023-09-29 17:12:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (353,NULL,1,'Subject for Meeting','2023-08-10 12:39:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (354,NULL,2,'Subject for Phone Call','2023-08-13 19:53:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (355,NULL,1,'Subject for Meeting','2023-01-07 13:24:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (356,NULL,56,'Subject for Interview','2023-01-12 05:03:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (357,NULL,1,'Subject for Meeting','2023-03-11 10:51:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (358,NULL,22,'Subject for Print/Merge Document','2023-04-12 17:59:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (359,NULL,1,'Subject for Meeting','2023-10-17 18:03:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (360,NULL,56,'Subject for Interview','2023-09-16 00:13:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (361,NULL,1,'Subject for Meeting','2023-01-02 08:16:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (362,NULL,1,'Subject for Meeting','2023-11-25 10:56:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (363,NULL,56,'Subject for Interview','2023-06-02 06:42:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (364,NULL,56,'Subject for Interview','2023-09-12 20:29:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (365,NULL,22,'Subject for Print/Merge Document','2023-09-23 16:47:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (366,NULL,2,'Subject for Phone Call','2023-02-01 20:35:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (367,NULL,56,'Subject for Interview','2023-02-14 05:11:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (368,NULL,56,'Subject for Interview','2023-08-31 02:03:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (369,NULL,9,'Subject for Tell a Friend','2023-07-17 14:25:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (370,NULL,22,'Subject for Print/Merge Document','2023-03-11 20:22:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (371,NULL,2,'Subject for Phone Call','2023-10-02 21:46:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (372,NULL,9,'Subject for Tell a Friend','2023-08-05 06:24:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (373,NULL,56,'Subject for Interview','2023-11-10 08:18:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (374,NULL,1,'Subject for Meeting','2023-09-17 17:04:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (375,NULL,9,'Subject for Tell a Friend','2023-03-11 13:18:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (376,NULL,2,'Subject for Phone Call','2023-04-17 04:47:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (377,NULL,2,'Subject for Phone Call','2023-11-27 11:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (378,NULL,56,'Subject for Interview','2023-06-29 15:01:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (379,NULL,56,'Subject for Interview','2023-04-29 12:35:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (380,NULL,2,'Subject for Phone Call','2023-01-04 14:04:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (381,NULL,2,'Subject for Phone Call','2023-01-10 19:43:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (382,NULL,22,'Subject for Print/Merge Document','2023-11-17 17:34:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (383,NULL,56,'Subject for Interview','2023-03-10 12:46:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (384,NULL,2,'Subject for Phone Call','2023-04-16 14:55:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (385,NULL,9,'Subject for Tell a Friend','2023-04-04 18:24:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (386,NULL,9,'Subject for Tell a Friend','2023-07-24 15:21:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (387,NULL,22,'Subject for Print/Merge Document','2023-04-25 05:19:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (388,NULL,1,'Subject for Meeting','2023-01-09 04:49:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (389,NULL,56,'Subject for Interview','2023-08-28 02:12:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (390,NULL,22,'Subject for Print/Merge Document','2023-12-06 18:41:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (391,NULL,9,'Subject for Tell a Friend','2023-02-16 18:03:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (392,NULL,2,'Subject for Phone Call','2022-12-24 16:12:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (393,NULL,22,'Subject for Print/Merge Document','2023-07-05 20:08:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (394,NULL,22,'Subject for Print/Merge Document','2023-11-05 16:51:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (395,NULL,9,'Subject for Tell a Friend','2023-03-16 15:30:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (396,NULL,9,'Subject for Tell a Friend','2023-11-06 21:43:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (397,NULL,9,'Subject for Tell a Friend','2023-12-08 07:10:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (398,NULL,56,'Subject for Interview','2023-02-04 08:08:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (399,NULL,2,'Subject for Phone Call','2023-12-06 18:16:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (400,NULL,22,'Subject for Print/Merge Document','2023-11-25 01:56:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (401,NULL,2,'Subject for Phone Call','2023-11-06 18:52:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (402,NULL,1,'Subject for Meeting','2023-10-16 17:13:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (403,NULL,9,'Subject for Tell a Friend','2023-08-17 21:56:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (404,NULL,1,'Subject for Meeting','2023-04-19 14:40:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (405,NULL,1,'Subject for Meeting','2023-01-15 04:33:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (406,NULL,1,'Subject for Meeting','2023-10-24 06:07:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (407,NULL,1,'Subject for Meeting','2023-11-23 15:38:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (408,NULL,1,'Subject for Meeting','2023-10-06 02:53:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (409,NULL,56,'Subject for Interview','2023-10-10 19:17:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (410,NULL,56,'Subject for Interview','2023-06-08 09:01:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (411,NULL,2,'Subject for Phone Call','2023-04-27 10:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (412,NULL,2,'Subject for Phone Call','2023-06-14 21:22:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (413,NULL,1,'Subject for Meeting','2023-04-28 21:11:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (414,NULL,22,'Subject for Print/Merge Document','2023-08-06 12:02:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (415,NULL,56,'Subject for Interview','2023-01-09 12:53:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (416,NULL,2,'Subject for Phone Call','2023-08-09 17:30:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (417,NULL,1,'Subject for Meeting','2023-01-04 18:17:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (418,NULL,1,'Subject for Meeting','2023-04-12 11:17:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (419,NULL,1,'Subject for Meeting','2023-10-01 16:53:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (420,NULL,9,'Subject for Tell a Friend','2023-12-01 21:00:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (421,NULL,56,'Subject for Interview','2023-07-23 14:25:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (422,NULL,9,'Subject for Tell a Friend','2023-12-15 12:16:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (423,NULL,9,'Subject for Tell a Friend','2023-06-02 13:12:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (424,NULL,22,'Subject for Print/Merge Document','2023-06-02 20:04:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (425,NULL,56,'Subject for Interview','2023-07-09 18:30:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (426,NULL,56,'Subject for Interview','2023-08-27 04:11:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (427,NULL,2,'Subject for Phone Call','2023-09-20 03:48:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (428,NULL,9,'Subject for Tell a Friend','2023-02-21 05:18:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (429,NULL,1,'Subject for Meeting','2023-04-10 23:12:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (430,NULL,9,'Subject for Tell a Friend','2023-07-22 20:28:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (431,NULL,1,'Subject for Meeting','2023-04-06 14:04:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (432,NULL,1,'Subject for Meeting','2023-01-02 12:06:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (433,NULL,2,'Subject for Phone Call','2023-09-02 04:23:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (434,NULL,2,'Subject for Phone Call','2023-08-11 05:40:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (435,NULL,1,'Subject for Meeting','2022-12-20 07:41:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (436,NULL,2,'Subject for Phone Call','2023-12-02 16:26:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (437,NULL,2,'Subject for Phone Call','2023-05-15 13:55:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (438,NULL,22,'Subject for Print/Merge Document','2023-09-20 11:26:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (439,NULL,22,'Subject for Print/Merge Document','2023-03-12 20:54:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (440,NULL,56,'Subject for Interview','2023-07-02 05:16:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (441,NULL,1,'Subject for Meeting','2023-08-18 01:01:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (442,NULL,56,'Subject for Interview','2023-11-02 04:43:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (443,NULL,56,'Subject for Interview','2023-01-31 21:03:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (444,NULL,56,'Subject for Interview','2023-06-23 07:26:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (445,NULL,2,'Subject for Phone Call','2022-12-31 14:42:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (446,NULL,22,'Subject for Print/Merge Document','2023-02-19 13:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (447,NULL,2,'Subject for Phone Call','2023-11-18 08:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (448,NULL,2,'Subject for Phone Call','2023-09-09 04:46:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (449,NULL,1,'Subject for Meeting','2023-06-26 07:47:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (450,NULL,22,'Subject for Print/Merge Document','2023-12-11 13:20:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (451,1,6,'$ 125 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (452,2,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (453,3,6,'£ 25 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (454,4,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (455,5,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (456,6,6,'$ 500 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (457,7,6,'$ 1750 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (458,8,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (459,9,6,'$ 10 Online: Help CiviCRM','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (460,10,6,'$ 250 Online: Help CiviCRM','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (461,11,6,'Â¥ 500 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (462,12,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (463,13,6,'$ 50 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (464,14,6,'$ 50 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (465,15,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (466,16,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (467,17,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (468,18,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (469,19,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (470,20,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (471,21,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (472,22,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (473,23,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (474,24,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (475,25,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (476,26,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (477,27,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (478,28,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (479,29,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (480,30,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (481,31,6,'€ 5 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (482,1,7,'General','2023-12-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (483,2,7,'Student','2023-12-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (484,3,7,'General','2023-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (485,4,7,'Student','2023-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (486,5,7,'General','2021-11-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (487,6,7,'Student','2023-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (488,7,7,'General','2023-12-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (489,8,7,'Student','2023-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (490,9,7,'General','2023-12-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (491,10,7,'General','2021-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (492,11,7,'Lifetime','2023-12-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (493,12,7,'Student','2023-12-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (494,13,7,'General','2023-12-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (495,14,7,'Student','2023-12-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (496,15,7,'Student','2022-12-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (497,16,7,'Student','2023-12-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (498,17,7,'General','2023-12-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (499,18,7,'Student','2023-11-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (500,19,7,'General','2023-11-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (501,20,7,'Student','2022-11-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (502,21,7,'General','2023-11-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (503,22,7,'Lifetime','2023-11-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (504,23,7,'General','2023-11-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (505,24,7,'Student','2023-11-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (506,25,7,'General','2021-06-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (507,26,7,'Student','2023-11-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (508,27,7,'General','2023-11-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (509,28,7,'Student','2023-11-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (510,29,7,'General','2023-11-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (511,30,7,'Student','2022-11-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (526,46,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (536,56,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38');
 /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -733,964 +733,968 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_activity_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES
- (54,30,1,3),
- (61,34,1,3),
- (244,133,1,3),
- (576,320,1,3),
- (751,413,1,3),
- (759,417,1,3),
- (334,183,2,3),
- (417,230,2,3),
- (715,394,2,3),
- (818,451,2,2),
- (124,67,3,3),
- (171,92,3,3),
- (317,173,3,3),
- (395,217,3,3),
- (79,43,4,3),
- (134,72,4,3),
- (296,162,4,3),
- (338,185,4,3),
- (819,452,4,2),
- (822,455,4,2),
- (109,58,5,3),
- (215,117,5,3),
- (313,171,5,3),
- (444,246,5,3),
- (545,303,5,3),
- (647,359,5,3),
- (870,503,5,2),
- (908,541,5,2),
- (727,400,6,3),
- (820,453,6,2),
- (943,576,6,2),
- (528,294,7,3),
- (568,315,7,3),
- (613,341,7,3),
- (810,446,7,3),
- (150,81,8,3),
- (474,262,8,3),
- (570,316,8,3),
- (821,454,8,2),
- (865,498,8,2),
- (885,518,8,2),
- (935,568,8,2),
- (67,37,9,3),
- (226,123,10,3),
- (560,311,10,3),
- (643,357,10,3),
- (910,543,10,2),
- (341,187,11,3),
- (592,329,11,3),
- (119,64,12,3),
- (130,70,12,3),
- (175,94,12,3),
- (156,84,13,3),
- (275,150,13,3),
- (348,191,13,3),
- (379,208,13,3),
- (452,250,13,3),
- (919,552,13,2),
- (138,74,14,3),
- (220,120,14,3),
- (950,583,14,2),
- (154,83,15,3),
- (448,248,15,3),
- (483,267,15,3),
- (558,310,15,3),
- (670,371,15,3),
- (743,409,15,3),
- (276,151,16,2),
- (277,152,16,2),
- (279,153,16,2),
- (281,154,16,2),
- (283,155,16,2),
- (285,156,16,2),
- (286,156,16,3),
- (287,157,16,2),
- (289,158,16,2),
- (290,159,16,2),
- (291,160,16,2),
- (293,161,16,2),
- (295,162,16,2),
- (297,163,16,2),
- (299,164,16,2),
- (301,165,16,2),
- (303,166,16,2),
- (305,167,16,2),
- (307,168,16,2),
- (308,169,16,2),
- (310,170,16,2),
- (312,171,16,2),
- (314,172,16,2),
- (316,173,16,2),
- (318,174,16,2),
- (320,175,16,2),
- (321,176,16,2),
- (323,177,16,2),
- (325,178,16,2),
- (327,179,16,2),
- (329,180,16,2),
- (330,181,16,2),
- (331,182,16,2),
- (332,182,16,3),
- (333,183,16,2),
- (335,184,16,2),
- (337,185,16,2),
- (339,186,16,2),
- (340,187,16,2),
- (342,188,16,2),
- (343,189,16,2),
- (345,190,16,2),
- (347,191,16,2),
- (349,192,16,2),
- (351,193,16,2),
- (353,194,16,2),
- (354,195,16,2),
- (356,196,16,2),
- (358,197,16,2),
- (360,198,16,2),
- (361,199,16,2),
- (363,200,16,2),
- (365,201,16,2),
- (366,202,16,2),
- (368,203,16,2),
- (370,204,16,2),
- (372,205,16,2),
- (374,206,16,2),
- (376,207,16,2),
- (378,208,16,2),
- (380,209,16,2),
- (381,210,16,2),
- (383,211,16,2),
- (385,212,16,2),
- (387,213,16,2),
- (389,214,16,2),
- (390,215,16,2),
- (392,216,16,2),
- (394,217,16,2),
- (396,218,16,2),
- (398,219,16,2),
- (399,220,16,2),
- (400,221,16,2),
- (402,222,16,2),
- (403,223,16,2),
- (405,224,16,2),
- (407,225,16,2),
- (409,226,16,2),
- (411,227,16,2),
- (413,228,16,2),
- (414,229,16,2),
- (416,230,16,2),
- (418,231,16,2),
- (420,232,16,2),
- (421,233,16,2),
- (423,234,16,2),
- (425,235,16,2),
- (426,236,16,2),
- (427,237,16,2),
- (429,238,16,2),
- (431,239,16,2),
- (433,240,16,2),
- (434,241,16,2),
- (435,241,16,3),
- (436,242,16,2),
- (438,243,16,2),
- (440,244,16,2),
- (442,245,16,2),
- (443,246,16,2),
- (445,247,16,2),
- (447,248,16,2),
- (449,249,16,2),
- (451,250,16,2),
- (453,251,16,2),
- (455,252,16,2),
- (457,253,16,2),
- (459,254,16,2),
- (461,255,16,2),
- (462,256,16,2),
- (464,257,16,2),
- (466,258,16,2),
- (468,259,16,2),
- (470,260,16,2),
- (471,261,16,2),
- (473,262,16,2),
- (475,263,16,2),
- (477,264,16,2),
- (479,265,16,2),
- (480,266,16,2),
- (482,267,16,2),
- (484,268,16,2),
- (486,269,16,2),
- (487,270,16,2),
- (489,271,16,2),
- (491,272,16,2),
- (493,273,16,2),
- (494,274,16,2),
- (496,275,16,2),
- (498,276,16,2),
- (499,277,16,2),
- (501,278,16,2),
- (503,279,16,2),
- (505,280,16,2),
- (507,281,16,2),
- (508,282,16,2),
- (510,283,16,2),
- (512,284,16,2),
- (513,285,16,2),
- (515,286,16,2),
- (516,287,16,2),
- (517,288,16,2),
- (519,289,16,2),
- (521,290,16,2),
- (522,291,16,2),
- (524,292,16,2),
- (525,293,16,2),
- (527,294,16,2),
- (529,295,16,2),
- (531,296,16,2),
- (533,297,16,2),
- (534,298,16,2),
- (536,299,16,2),
- (538,300,16,2),
- (676,374,16,3),
- (707,390,16,3),
- (823,456,16,2),
- (924,557,16,2),
- (163,88,17,3),
- (497,275,17,3),
- (869,502,17,2),
- (888,521,17,2),
- (945,578,17,2),
- (231,126,18,3),
- (780,429,18,3),
- (81,44,19,3),
- (346,190,19,3),
- (432,239,19,3),
- (824,457,19,2),
- (938,571,19,2),
- (273,149,20,3),
- (369,203,20,3),
- (562,312,20,3),
- (619,344,20,3),
- (814,448,20,3),
- (28,15,21,3),
- (186,101,21,3),
- (526,293,21,3),
- (600,333,21,3),
- (610,339,21,3),
- (639,355,21,3),
- (733,404,21,3),
- (778,428,21,3),
- (284,155,22,3),
- (566,314,22,3),
- (628,349,22,3),
- (85,46,23,3),
- (140,75,23,3),
- (197,107,23,3),
- (278,152,23,3),
- (350,192,23,3),
- (382,210,23,3),
- (428,237,23,3),
- (918,551,23,2),
- (97,52,24,3),
- (240,131,26,3),
- (375,206,26,3),
- (502,278,26,3),
- (111,59,27,3),
- (218,119,27,3),
- (288,157,27,3),
- (617,343,27,3),
- (626,348,27,3),
- (649,360,27,3),
- (690,381,27,3),
- (713,393,27,3),
- (26,14,28,3),
- (103,55,28,3),
- (233,127,28,3),
- (292,160,28,3),
- (660,366,28,3),
- (688,380,28,3),
- (711,392,28,3),
- (761,418,28,3),
- (873,506,28,2),
- (890,523,28,2),
- (8,4,29,3),
- (532,296,29,3),
- (236,129,30,3),
- (328,179,30,3),
- (441,244,30,3),
- (485,268,30,3),
- (606,337,30,3),
- (682,377,30,3),
- (719,396,30,3),
- (923,556,30,2),
- (132,71,31,3),
- (488,270,31,3),
- (574,319,31,3),
- (169,91,32,3),
- (632,351,32,3),
- (717,395,32,3),
- (830,463,32,2),
- (831,464,32,2),
- (52,29,33,3),
- (128,69,33,3),
- (148,80,33,3),
- (709,391,33,3),
- (211,115,34,3),
- (415,229,34,3),
- (454,251,34,3),
- (598,332,34,3),
- (623,346,34,3),
- (800,441,34,3),
- (827,460,34,2),
- (393,216,35,3),
- (401,221,35,3),
- (705,389,35,3),
- (107,57,36,3),
- (228,124,36,3),
- (855,488,36,2),
- (881,514,36,2),
- (914,547,36,2),
- (145,78,37,3),
- (386,212,37,3),
- (564,313,37,3),
- (585,325,37,3),
- (680,376,37,3),
- (741,408,37,3),
- (792,436,37,3),
- (43,24,38,3),
- (630,350,38,3),
- (737,406,38,3),
- (13,7,39,3),
- (46,26,39,3),
- (808,445,39,3),
- (858,491,39,2),
- (899,532,39,2),
- (65,36,40,3),
- (654,363,40,3),
- (749,412,40,3),
- (915,548,40,2),
- (672,372,41,3),
- (698,385,41,3),
- (917,550,41,2),
- (203,110,42,3),
- (478,264,43,3),
- (829,462,43,2),
- (38,21,44,3),
- (48,27,44,3),
- (304,166,44,3),
- (446,247,44,3),
- (795,438,44,3),
- (248,135,45,3),
- (437,242,45,3),
- (656,364,45,3),
- (932,565,45,2),
- (306,167,46,3),
- (509,282,46,3),
- (253,138,47,3),
- (271,148,47,3),
- (377,207,47,3),
- (424,234,47,3),
- (554,308,47,3),
- (578,321,47,3),
- (747,411,47,3),
- (850,483,47,2),
- (894,527,47,2),
- (326,178,48,3),
- (861,494,48,2),
- (883,516,48,2),
- (31,17,49,3),
- (93,50,49,3),
- (193,105,49,3),
- (269,147,49,3),
- (860,493,49,2),
- (900,533,49,2),
- (15,8,50,3),
- (222,121,50,3),
- (324,177,50,3),
- (384,211,50,3),
- (745,410,50,3),
- (73,40,51,3),
- (83,45,51,3),
- (294,161,51,3),
- (543,302,51,3),
- (694,383,51,3),
- (2,1,52,3),
- (95,51,52,3),
- (122,66,52,3),
- (165,89,52,3),
- (280,153,52,3),
- (472,261,52,3),
- (10,5,53,3),
- (259,141,53,3),
- (636,353,53,3),
- (179,97,54,3),
- (397,218,54,3),
- (658,365,54,3),
- (731,403,54,3),
- (867,500,54,2),
- (886,519,54,2),
- (6,3,55,3),
- (261,142,55,3),
- (408,225,55,3),
- (422,233,55,3),
- (539,300,55,3),
- (674,373,55,3),
- (721,397,55,3),
- (849,482,55,2),
- (879,512,55,2),
- (535,298,56,3),
- (556,309,56,3),
- (651,361,56,3),
- (739,407,56,3),
- (812,447,56,3),
- (255,139,57,3),
- (302,165,57,3),
- (580,322,57,3),
- (787,433,57,3),
- (804,443,57,3),
- (955,588,57,2),
- (57,32,58,3),
- (136,73,58,3),
- (181,98,58,3),
- (300,164,58,3),
- (406,224,58,3),
- (832,465,59,2),
- (833,466,59,2),
- (834,467,59,2),
- (835,468,59,2),
- (836,469,59,2),
- (837,470,59,2),
- (838,471,59,2),
- (839,472,59,2),
- (840,473,59,2),
- (841,474,59,2),
- (842,475,59,2),
- (495,274,60,3),
- (763,419,60,3),
- (199,108,61,3),
- (520,289,61,3),
- (530,295,61,3),
- (184,100,62,3),
- (33,18,63,3),
- (195,106,63,3),
- (242,132,63,3),
- (500,277,63,3),
- (725,399,63,3),
- (735,405,63,3),
- (91,49,64,3),
- (641,356,64,3),
- (662,367,64,3),
- (21,11,65,3),
- (99,53,65,3),
- (404,223,65,3),
- (608,338,65,3),
- (615,342,65,3),
- (798,440,65,3),
- (336,184,66,3),
- (357,196,66,3),
- (456,252,66,3),
- (463,256,66,3),
- (753,414,66,3),
- (876,509,66,2),
- (906,539,66,2),
- (391,215,67,3),
- (547,304,67,3),
- (645,358,67,3),
- (450,249,68,3),
- (668,370,68,3),
- (700,386,68,3),
- (816,449,68,3),
- (158,85,69,3),
- (388,213,69,3),
- (666,369,69,3),
- (768,422,69,3),
- (958,591,69,2),
- (367,202,70,3),
- (583,324,70,3),
- (802,442,70,3),
- (69,38,71,3),
- (188,102,71,3),
- (309,169,71,3),
- (344,189,71,3),
- (828,461,71,2),
- (298,163,72,3),
- (439,243,72,3),
- (634,352,72,3),
- (59,33,73,3),
- (113,60,73,3),
- (207,112,73,3),
- (364,200,73,3),
- (371,204,73,3),
- (476,263,73,3),
- (772,425,73,3),
- (939,572,73,2),
- (87,47,74,3),
- (224,122,74,3),
- (755,415,74,3),
- (765,420,74,3),
- (774,426,74,3),
- (4,2,75,3),
- (117,63,75,3),
- (267,146,75,3),
- (311,170,76,3),
- (373,205,76,3),
- (460,254,76,3),
- (518,288,76,3),
- (940,573,76,2),
- (75,41,77,3),
- (315,172,77,3),
- (514,285,77,3),
- (537,299,77,3),
- (913,546,77,2),
- (126,68,78,3),
- (596,331,78,3),
- (874,507,78,2),
- (905,538,78,2),
- (161,87,79,3),
- (322,176,79,3),
- (410,226,80,3),
- (930,563,80,2),
- (71,39,81,3),
- (213,116,81,3),
- (469,259,81,3),
- (205,111,82,3),
- (504,279,82,3),
- (523,291,82,3),
- (825,458,82,2),
- (359,197,83,3),
- (678,375,83,3),
- (696,384,83,3),
- (19,10,84,3),
- (40,22,84,3),
- (89,48,84,3),
- (587,326,84,3),
- (948,581,84,2),
- (458,253,85,3),
- (257,140,86,3),
- (352,193,86,3),
- (550,306,86,3),
- (723,398,86,3),
- (877,510,86,2),
- (892,525,86,2),
- (77,42,87,3),
- (173,93,87,3),
- (362,199,87,3),
- (511,283,87,3),
- (686,379,87,3),
- (782,430,87,3),
- (857,490,87,2),
- (882,515,87,2),
- (24,13,88,3),
- (621,345,88,3),
- (684,378,88,3),
- (959,592,88,2),
- (17,9,89,3),
- (419,231,89,3),
- (506,280,89,3),
- (664,368,89,3),
- (692,382,89,3),
- (784,431,89,3),
- (167,90,90,3),
- (190,103,91,3),
- (263,143,91,3),
- (319,174,91,3),
- (355,195,91,3),
- (757,416,91,3),
- (63,35,92,3),
- (412,227,92,3),
- (481,266,92,3),
- (541,301,92,3),
- (552,307,92,3),
- (594,330,92,3),
- (826,459,92,2),
- (862,495,92,2),
- (901,534,92,2),
- (911,544,92,2),
- (36,20,93,3),
- (492,272,93,3),
- (859,492,93,2),
- (907,540,93,2),
- (467,258,94,3),
- (776,427,94,3),
- (916,549,94,2),
- (201,109,95,3),
- (282,154,95,3),
- (465,257,95,3),
- (603,335,95,3),
- (101,54,96,3),
- (251,137,96,3),
- (430,238,96,3),
- (806,444,96,3),
- (954,587,96,2),
- (142,76,97,3),
- (238,130,97,3),
- (942,575,97,2),
- (246,134,98,3),
- (589,327,98,3),
- (105,56,99,3),
- (490,271,99,3),
- (843,476,99,2),
- (844,477,99,2),
- (845,478,99,2),
- (846,479,99,2),
- (847,480,99,2),
- (50,28,100,3),
- (152,82,100,3),
- (703,388,100,3),
- (790,435,100,3),
- (872,505,100,2),
- (904,537,100,2),
- (936,569,101,2),
- (848,481,103,2),
- (868,501,106,2),
- (887,520,106,2),
- (853,486,113,2),
- (896,529,113,2),
- (875,508,117,2),
- (891,524,117,2),
- (949,582,117,2),
- (928,561,123,2),
- (852,485,126,2),
- (895,528,126,2),
- (540,301,127,2),
- (542,302,127,2),
- (544,303,127,2),
- (546,304,127,2),
- (548,305,127,2),
- (549,306,127,2),
- (551,307,127,2),
- (553,308,127,2),
- (555,309,127,2),
- (557,310,127,2),
- (559,311,127,2),
- (561,312,127,2),
- (563,313,127,2),
- (565,314,127,2),
- (567,315,127,2),
- (569,316,127,2),
- (571,317,127,2),
- (572,318,127,2),
- (573,319,127,2),
- (575,320,127,2),
- (577,321,127,2),
- (579,322,127,2),
- (581,323,127,2),
- (582,324,127,2),
- (584,325,127,2),
- (586,326,127,2),
- (588,327,127,2),
- (590,328,127,2),
- (591,329,127,2),
- (593,330,127,2),
- (595,331,127,2),
- (597,332,127,2),
- (599,333,127,2),
- (601,334,127,2),
- (602,335,127,2),
- (604,336,127,2),
- (605,337,127,2),
- (607,338,127,2),
- (609,339,127,2),
- (611,340,127,2),
- (612,341,127,2),
- (614,342,127,2),
- (616,343,127,2),
- (618,344,127,2),
- (620,345,127,2),
- (622,346,127,2),
- (624,347,127,2),
- (625,348,127,2),
- (627,349,127,2),
- (629,350,127,2),
- (631,351,127,2),
- (633,352,127,2),
- (635,353,127,2),
- (637,354,127,2),
- (638,355,127,2),
- (640,356,127,2),
- (642,357,127,2),
- (644,358,127,2),
- (646,359,127,2),
- (648,360,127,2),
- (650,361,127,2),
- (652,362,127,2),
- (653,363,127,2),
- (655,364,127,2),
- (657,365,127,2),
- (659,366,127,2),
- (661,367,127,2),
- (663,368,127,2),
- (665,369,127,2),
- (667,370,127,2),
- (669,371,127,2),
- (671,372,127,2),
- (673,373,127,2),
- (675,374,127,2),
- (677,375,127,2),
- (679,376,127,2),
- (681,377,127,2),
- (683,378,127,2),
- (685,379,127,2),
- (687,380,127,2),
- (689,381,127,2),
- (691,382,127,2),
- (693,383,127,2),
- (695,384,127,2),
- (697,385,127,2),
- (699,386,127,2),
- (701,387,127,2),
- (702,388,127,2),
- (704,389,127,2),
- (706,390,127,2),
- (708,391,127,2),
- (710,392,127,2),
- (712,393,127,2),
- (714,394,127,2),
- (716,395,127,2),
- (718,396,127,2),
- (720,397,127,2),
- (722,398,127,2),
- (724,399,127,2),
- (726,400,127,2),
- (728,401,127,2),
- (729,402,127,2),
- (730,403,127,2),
- (732,404,127,2),
- (734,405,127,2),
- (736,406,127,2),
- (738,407,127,2),
- (740,408,127,2),
- (742,409,127,2),
- (744,410,127,2),
- (746,411,127,2),
- (748,412,127,2),
- (750,413,127,2),
- (752,414,127,2),
- (754,415,127,2),
- (756,416,127,2),
- (758,417,127,2),
- (760,418,127,2),
- (762,419,127,2),
- (764,420,127,2),
- (766,421,127,2),
- (767,422,127,2),
- (769,423,127,2),
- (770,424,127,2),
- (771,425,127,2),
- (773,426,127,2),
- (775,427,127,2),
- (777,428,127,2),
- (779,429,127,2),
- (781,430,127,2),
- (783,431,127,2),
- (785,432,127,2),
- (786,433,127,2),
- (788,434,127,2),
- (789,435,127,2),
- (791,436,127,2),
- (793,437,127,2),
- (794,438,127,2),
- (796,439,127,2),
- (797,440,127,2),
- (799,441,127,2),
- (801,442,127,2),
- (803,443,127,2),
- (805,444,127,2),
- (807,445,127,2),
- (809,446,127,2),
- (811,447,127,2),
- (813,448,127,2),
- (815,449,127,2),
- (817,450,127,2),
- (946,579,127,2),
- (925,558,132,2),
- (922,555,135,2),
- (864,497,136,2),
- (902,535,136,2),
- (929,562,144,2),
- (878,511,149,2),
- (893,526,149,2),
- (947,580,154,2),
- (951,584,156,2),
- (937,570,158,2),
- (944,577,159,2),
- (1,1,160,2),
- (3,2,160,2),
- (5,3,160,2),
- (7,4,160,2),
- (9,5,160,2),
- (11,6,160,2),
- (12,7,160,2),
- (14,8,160,2),
- (16,9,160,2),
- (18,10,160,2),
- (20,11,160,2),
- (22,12,160,2),
- (23,13,160,2),
- (25,14,160,2),
- (27,15,160,2),
- (29,16,160,2),
- (30,17,160,2),
- (32,18,160,2),
- (34,19,160,2),
- (35,20,160,2),
- (37,21,160,2),
- (39,22,160,2),
- (41,23,160,2),
- (42,24,160,2),
- (44,25,160,2),
- (45,26,160,2),
- (47,27,160,2),
- (49,28,160,2),
- (51,29,160,2),
- (53,30,160,2),
- (55,31,160,2),
- (56,32,160,2),
- (58,33,160,2),
- (60,34,160,2),
- (62,35,160,2),
- (64,36,160,2),
- (66,37,160,2),
- (68,38,160,2),
- (70,39,160,2),
- (72,40,160,2),
- (74,41,160,2),
- (76,42,160,2),
- (78,43,160,2),
- (80,44,160,2),
- (82,45,160,2),
- (84,46,160,2),
- (86,47,160,2),
- (88,48,160,2),
- (90,49,160,2),
- (92,50,160,2),
- (94,51,160,2),
- (96,52,160,2),
- (98,53,160,2),
- (100,54,160,2),
- (102,55,160,2),
- (104,56,160,2),
- (106,57,160,2),
- (108,58,160,2),
- (110,59,160,2),
- (112,60,160,2),
- (114,61,160,2),
- (115,62,160,2),
- (116,63,160,2),
- (118,64,160,2),
- (120,65,160,2),
- (121,66,160,2),
- (123,67,160,2),
- (125,68,160,2),
- (127,69,160,2),
- (129,70,160,2),
- (131,71,160,2),
- (133,72,160,2),
- (135,73,160,2),
- (137,74,160,2),
- (139,75,160,2),
- (141,76,160,2),
- (143,77,160,2),
- (144,78,160,2),
- (146,79,160,2),
- (147,80,160,2),
- (149,81,160,2),
- (151,82,160,2),
- (153,83,160,2),
- (155,84,160,2),
- (157,85,160,2),
- (159,86,160,2),
- (160,87,160,2),
- (162,88,160,2),
- (164,89,160,2),
- (166,90,160,2),
- (168,91,160,2),
- (170,92,160,2),
- (172,93,160,2),
- (174,94,160,2),
- (176,95,160,2),
- (177,96,160,2),
- (178,97,160,2),
- (180,98,160,2),
- (182,99,160,2),
- (183,100,160,2),
- (185,101,160,2),
- (187,102,160,2),
- (189,103,160,2),
- (191,104,160,2),
- (192,105,160,2),
- (194,106,160,2),
- (196,107,160,2),
- (198,108,160,2),
- (200,109,160,2),
- (202,110,160,2),
- (204,111,160,2),
- (206,112,160,2),
- (208,113,160,2),
- (209,114,160,2),
- (210,115,160,2),
- (212,116,160,2),
- (214,117,160,2),
- (216,118,160,2),
- (217,119,160,2),
- (219,120,160,2),
- (221,121,160,2),
- (223,122,160,2),
- (225,123,160,2),
- (227,124,160,2),
- (229,125,160,2),
- (230,126,160,2),
- (232,127,160,2),
- (234,128,160,2),
- (235,129,160,2),
- (237,130,160,2),
- (239,131,160,2),
- (241,132,160,2),
- (243,133,160,2),
- (245,134,160,2),
- (247,135,160,2),
- (249,136,160,2),
- (250,137,160,2),
- (252,138,160,2),
- (254,139,160,2),
- (256,140,160,2),
- (258,141,160,2),
- (260,142,160,2),
- (262,143,160,2),
- (264,144,160,2),
- (265,145,160,2),
- (266,146,160,2),
- (268,147,160,2),
- (270,148,160,2),
- (272,149,160,2),
- (274,150,160,2),
- (912,545,160,2),
- (952,585,163,2),
- (856,489,164,2),
- (898,531,164,2),
- (851,484,168,2),
- (880,513,168,2),
- (854,487,169,2),
- (897,530,169,2),
- (957,590,172,2),
- (871,504,175,2),
- (889,522,175,2),
- (956,589,175,2),
- (931,564,178,2),
- (926,559,179,2),
- (863,496,180,2),
- (884,517,180,2),
- (934,567,182,2),
- (953,586,184,2),
- (866,499,187,2),
- (903,536,187,2),
- (927,560,189,2),
- (921,554,192,2),
- (920,553,195,2),
- (933,566,196,2),
- (941,574,197,2);
+ (160,87,1,3),
+ (210,114,1,3),
+ (542,295,1,3),
+ (318,173,2,3),
+ (535,291,2,3),
+ (768,421,2,3),
+ (822,451,2,2),
+ (250,135,3,3),
+ (410,223,3,3),
+ (452,246,3,3),
+ (691,379,3,3),
+ (392,212,4,3),
+ (546,297,4,3),
+ (823,452,4,2),
+ (826,455,4,2),
+ (170,92,5,3),
+ (438,238,5,3),
+ (488,266,5,3),
+ (369,200,6,3),
+ (388,210,6,3),
+ (724,398,6,3),
+ (753,413,6,3),
+ (824,453,6,2),
+ (19,10,7,3),
+ (43,23,7,3),
+ (168,91,7,3),
+ (316,172,7,3),
+ (693,380,7,3),
+ (98,53,8,3),
+ (311,169,8,3),
+ (445,242,8,3),
+ (825,454,8,2),
+ (865,494,8,2),
+ (895,524,8,2),
+ (226,122,9,3),
+ (359,195,9,3),
+ (530,288,9,3),
+ (208,113,10,3),
+ (540,294,10,3),
+ (805,441,10,3),
+ (41,22,11,3),
+ (743,408,11,3),
+ (956,585,12,2),
+ (408,222,13,3),
+ (421,229,13,3),
+ (518,282,13,3),
+ (179,97,14,3),
+ (220,119,14,3),
+ (762,418,14,3),
+ (33,18,15,3),
+ (262,142,15,3),
+ (333,181,15,3),
+ (685,376,15,3),
+ (779,427,15,3),
+ (28,15,16,3),
+ (269,146,16,3),
+ (390,211,16,3),
+ (528,287,16,3),
+ (655,360,16,3),
+ (827,456,16,2),
+ (122,66,17,3),
+ (124,67,17,3),
+ (132,72,17,3),
+ (260,141,17,3),
+ (363,197,17,3),
+ (377,204,17,3),
+ (386,209,17,3),
+ (603,328,17,3),
+ (456,248,18,3),
+ (785,430,18,3),
+ (945,574,18,2),
+ (74,39,19,3),
+ (85,45,19,3),
+ (512,279,19,3),
+ (581,316,19,3),
+ (737,405,19,3),
+ (828,457,19,2),
+ (942,571,19,2),
+ (202,109,20,3),
+ (212,115,20,3),
+ (516,281,20,3),
+ (593,323,21,3),
+ (807,442,21,3),
+ (329,179,22,3),
+ (149,81,23,3),
+ (416,226,23,3),
+ (570,310,23,3),
+ (587,320,23,3),
+ (760,417,23,3),
+ (811,444,23,3),
+ (66,35,24,3),
+ (687,377,24,3),
+ (46,25,25,3),
+ (953,582,25,2),
+ (3,2,26,3),
+ (135,74,26,3),
+ (147,80,26,3),
+ (174,94,26,3),
+ (344,187,26,3),
+ (15,8,27,3),
+ (25,13,27,3),
+ (79,42,27,3),
+ (346,188,27,3),
+ (428,233,27,3),
+ (638,351,27,3),
+ (714,392,27,3),
+ (741,407,27,3),
+ (373,202,28,3),
+ (873,502,28,2),
+ (903,532,28,2),
+ (241,130,29,3),
+ (309,168,29,3),
+ (661,363,29,3),
+ (62,33,30,3),
+ (751,412,30,3),
+ (335,182,31,3),
+ (382,207,31,3),
+ (955,584,31,2),
+ (166,90,32,3),
+ (770,422,32,3),
+ (834,463,32,2),
+ (835,464,32,2),
+ (695,381,33,3),
+ (145,79,34,3),
+ (414,225,34,3),
+ (831,460,34,2),
+ (854,483,34,2),
+ (884,513,34,2),
+ (554,301,35,3),
+ (772,423,35,3),
+ (245,132,36,3),
+ (467,255,36,3),
+ (620,339,36,3),
+ (119,64,37,3),
+ (189,102,37,3),
+ (320,174,37,3),
+ (474,259,37,3),
+ (500,273,37,3),
+ (820,449,37,3),
+ (524,285,38,3),
+ (681,374,38,3),
+ (962,591,38,2),
+ (72,38,39,3),
+ (83,44,39,3),
+ (181,98,39,3),
+ (216,117,39,3),
+ (418,227,39,3),
+ (463,252,39,3),
+ (9,5,40,3),
+ (13,7,40,3),
+ (193,104,40,3),
+ (440,239,40,3),
+ (280,152,41,3),
+ (326,177,41,3),
+ (482,263,41,3),
+ (577,314,41,3),
+ (766,420,41,3),
+ (252,136,42,3),
+ (572,311,42,3),
+ (575,313,42,3),
+ (629,345,42,3),
+ (795,435,42,3),
+ (948,577,42,2),
+ (152,83,43,3),
+ (338,184,43,3),
+ (458,249,43,3),
+ (490,267,43,3),
+ (544,296,43,3),
+ (722,397,43,3),
+ (733,403,43,3),
+ (833,462,43,2),
+ (60,32,44,3),
+ (271,147,44,3),
+ (404,219,44,3),
+ (605,329,44,3),
+ (789,432,44,3),
+ (412,224,45,3),
+ (558,303,45,3),
+ (48,26,46,3),
+ (129,70,46,3),
+ (447,243,46,3),
+ (601,327,46,3),
+ (670,368,46,3),
+ (96,52,47,3),
+ (197,106,47,3),
+ (526,286,47,3),
+ (709,389,47,3),
+ (868,497,48,2),
+ (898,527,48,2),
+ (102,55,49,3),
+ (276,150,49,3),
+ (432,235,49,3),
+ (749,411,49,3),
+ (566,308,50,3),
+ (595,324,50,3),
+ (624,341,50,3),
+ (729,401,50,3),
+ (803,440,50,3),
+ (636,350,51,3),
+ (290,158,52,3),
+ (478,261,52,3),
+ (510,278,52,3),
+ (718,395,52,3),
+ (797,436,52,3),
+ (957,586,52,2),
+ (191,103,53,3),
+ (486,265,53,3),
+ (650,357,53,3),
+ (775,425,53,3),
+ (117,63,54,3),
+ (267,145,54,3),
+ (666,366,54,3),
+ (322,175,55,3),
+ (361,196,55,3),
+ (564,307,55,3),
+ (707,388,55,3),
+ (940,569,55,2),
+ (380,206,56,3),
+ (443,241,56,3),
+ (781,428,56,3),
+ (158,86,57,3),
+ (689,378,57,3),
+ (282,153,58,3),
+ (313,170,58,3),
+ (367,199,58,3),
+ (384,208,58,3),
+ (397,215,58,3),
+ (560,304,58,3),
+ (589,321,58,3),
+ (818,448,58,3),
+ (154,84,59,3),
+ (533,290,59,3),
+ (657,361,59,3),
+ (816,447,59,3),
+ (836,465,59,2),
+ (837,466,59,2),
+ (838,467,59,2),
+ (839,468,59,2),
+ (840,469,59,2),
+ (841,470,59,2),
+ (842,471,59,2),
+ (843,472,59,2),
+ (844,473,59,2),
+ (845,474,59,2),
+ (846,475,59,2),
+ (882,511,59,2),
+ (912,541,59,2),
+ (939,568,59,2),
+ (70,37,60,3),
+ (640,352,60,3),
+ (331,180,61,3),
+ (552,300,61,3),
+ (949,578,61,2),
+ (113,61,62,3),
+ (353,192,62,3),
+ (514,280,62,3),
+ (881,510,62,2),
+ (911,540,62,2),
+ (935,564,62,2),
+ (278,151,63,3),
+ (305,166,63,3),
+ (799,437,63,3),
+ (324,176,64,3),
+ (399,216,64,3),
+ (469,256,64,3),
+ (508,277,64,3),
+ (597,325,64,3),
+ (39,21,65,3),
+ (247,133,65,3),
+ (583,317,65,3),
+ (700,384,65,3),
+ (704,386,65,3),
+ (938,567,65,2),
+ (58,31,66,3),
+ (342,186,66,3),
+ (395,214,66,3),
+ (472,258,66,3),
+ (199,107,67,3),
+ (502,274,67,3),
+ (877,506,67,2),
+ (907,536,67,2),
+ (932,561,67,2),
+ (371,201,68,3),
+ (430,234,68,3),
+ (454,247,68,3),
+ (110,59,69,3),
+ (222,120,69,3),
+ (301,164,69,3),
+ (642,353,69,3),
+ (644,354,69,3),
+ (185,100,70,3),
+ (679,373,70,3),
+ (871,500,70,2),
+ (901,530,70,2),
+ (64,34,71,3),
+ (449,244,71,3),
+ (476,260,71,3),
+ (832,461,71,2),
+ (936,565,71,2),
+ (504,275,72,3),
+ (683,375,72,3),
+ (735,404,72,3),
+ (923,552,72,2),
+ (54,29,73,3),
+ (106,57,73,3),
+ (632,347,73,3),
+ (35,19,74,3),
+ (50,27,74,3),
+ (143,78,74,3),
+ (284,154,74,3),
+ (756,415,74,3),
+ (348,189,75,3),
+ (612,334,75,3),
+ (648,356,75,3),
+ (777,426,75,3),
+ (878,507,75,2),
+ (908,537,75,2),
+ (230,124,76,3),
+ (237,128,76,3),
+ (239,129,76,3),
+ (243,131,76,3),
+ (484,264,76,3),
+ (141,77,77,3),
+ (646,355,77,3),
+ (813,445,77,3),
+ (927,556,77,2),
+ (522,284,78,3),
+ (556,302,78,3),
+ (357,194,79,3),
+ (365,198,79,3),
+ (548,298,79,3),
+ (943,572,79,2),
+ (21,11,80,3),
+ (23,12,80,3),
+ (292,159,80,3),
+ (726,399,80,3),
+ (739,406,80,3),
+ (424,231,81,3),
+ (498,272,81,3),
+ (783,429,81,3),
+ (793,434,81,3),
+ (52,28,82,3),
+ (68,36,82,3),
+ (520,283,82,3),
+ (829,458,82,2),
+ (853,482,82,2),
+ (883,512,82,2),
+ (961,590,82,2),
+ (115,62,83,3),
+ (137,75,83,3),
+ (204,110,83,3),
+ (287,156,83,3),
+ (922,551,83,2),
+ (104,56,84,3),
+ (214,116,84,3),
+ (872,501,84,2),
+ (902,531,84,2),
+ (17,9,85,3),
+ (100,54,85,3),
+ (139,76,85,3),
+ (176,95,85,3),
+ (254,137,85,3),
+ (506,276,85,3),
+ (675,371,85,3),
+ (747,410,85,3),
+ (299,163,86,3),
+ (496,271,86,3),
+ (668,367,86,3),
+ (677,372,86,3),
+ (712,391,86,3),
+ (7,4,87,3),
+ (164,89,87,3),
+ (296,161,87,3),
+ (375,203,87,3),
+ (550,299,87,3),
+ (915,544,87,2),
+ (94,51,88,3),
+ (172,93,88,3),
+ (426,232,88,3),
+ (461,251,88,3),
+ (37,20,89,3),
+ (493,269,89,3),
+ (745,409,89,3),
+ (930,559,89,2),
+ (91,49,90,3),
+ (162,88,90,3),
+ (265,144,90,3),
+ (5,3,91,3),
+ (31,17,91,3),
+ (127,69,91,3),
+ (617,337,91,3),
+ (731,402,91,3),
+ (856,485,91,2),
+ (886,515,91,2),
+ (224,121,92,3),
+ (235,127,92,3),
+ (591,322,92,3),
+ (830,459,92,2),
+ (303,165,93,3),
+ (401,217,93,3),
+ (609,332,93,3),
+ (663,364,93,3),
+ (56,30,94,3),
+ (81,43,94,3),
+ (277,151,94,2),
+ (279,152,94,2),
+ (281,153,94,2),
+ (283,154,94,2),
+ (285,155,94,2),
+ (286,156,94,2),
+ (288,157,94,2),
+ (289,158,94,2),
+ (291,159,94,2),
+ (293,160,94,2),
+ (295,161,94,2),
+ (297,162,94,2),
+ (298,163,94,2),
+ (300,164,94,2),
+ (302,165,94,2),
+ (304,166,94,2),
+ (306,167,94,2),
+ (307,167,94,3),
+ (308,168,94,2),
+ (310,169,94,2),
+ (312,170,94,2),
+ (314,171,94,2),
+ (315,172,94,2),
+ (317,173,94,2),
+ (319,174,94,2),
+ (321,175,94,2),
+ (323,176,94,2),
+ (325,177,94,2),
+ (327,178,94,2),
+ (328,179,94,2),
+ (330,180,94,2),
+ (332,181,94,2),
+ (334,182,94,2),
+ (336,183,94,2),
+ (337,184,94,2),
+ (339,185,94,2),
+ (341,186,94,2),
+ (343,187,94,2),
+ (345,188,94,2),
+ (347,189,94,2),
+ (349,190,94,2),
+ (350,191,94,2),
+ (352,192,94,2),
+ (354,193,94,2),
+ (356,194,94,2),
+ (358,195,94,2),
+ (360,196,94,2),
+ (362,197,94,2),
+ (364,198,94,2),
+ (366,199,94,2),
+ (368,200,94,2),
+ (370,201,94,2),
+ (372,202,94,2),
+ (374,203,94,2),
+ (376,204,94,2),
+ (378,205,94,2),
+ (379,206,94,2),
+ (381,207,94,2),
+ (383,208,94,2),
+ (385,209,94,2),
+ (387,210,94,2),
+ (389,211,94,2),
+ (391,212,94,2),
+ (393,213,94,2),
+ (394,214,94,2),
+ (396,215,94,2),
+ (398,216,94,2),
+ (400,217,94,2),
+ (402,218,94,2),
+ (403,219,94,2),
+ (405,220,94,2),
+ (406,221,94,2),
+ (407,222,94,2),
+ (409,223,94,2),
+ (411,224,94,2),
+ (413,225,94,2),
+ (415,226,94,2),
+ (417,227,94,2),
+ (419,228,94,2),
+ (420,229,94,2),
+ (422,230,94,2),
+ (423,231,94,2),
+ (425,232,94,2),
+ (427,233,94,2),
+ (429,234,94,2),
+ (431,235,94,2),
+ (433,236,94,2),
+ (435,237,94,2),
+ (437,238,94,2),
+ (439,239,94,2),
+ (441,240,94,2),
+ (442,241,94,2),
+ (444,242,94,2),
+ (446,243,94,2),
+ (448,244,94,2),
+ (450,245,94,2),
+ (451,246,94,2),
+ (453,247,94,2),
+ (455,248,94,2),
+ (457,249,94,2),
+ (459,250,94,2),
+ (460,251,94,2),
+ (462,252,94,2),
+ (464,253,94,2),
+ (465,254,94,2),
+ (466,255,94,2),
+ (468,256,94,2),
+ (470,257,94,2),
+ (471,258,94,2),
+ (473,259,94,2),
+ (475,260,94,2),
+ (477,261,94,2),
+ (479,262,94,2),
+ (481,263,94,2),
+ (483,264,94,2),
+ (485,265,94,2),
+ (487,266,94,2),
+ (489,267,94,2),
+ (491,268,94,2),
+ (492,269,94,2),
+ (494,270,94,2),
+ (495,271,94,2),
+ (497,272,94,2),
+ (499,273,94,2),
+ (501,274,94,2),
+ (503,275,94,2),
+ (505,276,94,2),
+ (507,277,94,2),
+ (509,278,94,2),
+ (511,279,94,2),
+ (513,280,94,2),
+ (515,281,94,2),
+ (517,282,94,2),
+ (519,283,94,2),
+ (521,284,94,2),
+ (523,285,94,2),
+ (525,286,94,2),
+ (527,287,94,2),
+ (529,288,94,2),
+ (531,289,94,2),
+ (532,290,94,2),
+ (534,291,94,2),
+ (536,292,94,2),
+ (538,293,94,2),
+ (539,294,94,2),
+ (541,295,94,2),
+ (543,296,94,2),
+ (545,297,94,2),
+ (547,298,94,2),
+ (549,299,94,2),
+ (551,300,94,2),
+ (720,396,94,3),
+ (764,419,94,3),
+ (436,237,95,3),
+ (659,362,95,3),
+ (702,385,95,3),
+ (937,566,95,2),
+ (11,6,96,3),
+ (77,41,96,3),
+ (156,85,96,3),
+ (599,326,96,3),
+ (672,369,96,3),
+ (870,499,96,2),
+ (900,529,96,2),
+ (294,160,97,3),
+ (537,292,97,3),
+ (568,309,97,3),
+ (622,340,97,3),
+ (787,431,97,3),
+ (653,359,98,3),
+ (108,58,99,3),
+ (183,99,99,3),
+ (195,105,99,3),
+ (228,123,99,3),
+ (233,126,99,3),
+ (351,191,99,3),
+ (355,193,99,3),
+ (615,336,99,3),
+ (698,383,99,3),
+ (809,443,99,3),
+ (847,476,99,2),
+ (848,477,99,2),
+ (849,478,99,2),
+ (850,479,99,2),
+ (851,480,99,2),
+ (869,498,99,2),
+ (899,528,99,2),
+ (87,46,100,3),
+ (187,101,100,3),
+ (273,148,100,3),
+ (340,185,100,3),
+ (434,236,100,3),
+ (480,262,100,3),
+ (758,416,100,3),
+ (921,550,100,2),
+ (218,118,101,3),
+ (257,139,101,3),
+ (579,315,101,3),
+ (791,433,101,3),
+ (852,481,103,2),
+ (857,486,105,2),
+ (887,516,105,2),
+ (944,573,106,2),
+ (855,484,110,2),
+ (885,514,110,2),
+ (954,583,110,2),
+ (879,508,112,2),
+ (909,538,112,2),
+ (918,547,113,2),
+ (861,490,114,2),
+ (891,520,114,2),
+ (860,489,119,2),
+ (890,519,119,2),
+ (553,301,120,2),
+ (555,302,120,2),
+ (557,303,120,2),
+ (559,304,120,2),
+ (561,305,120,2),
+ (562,306,120,2),
+ (563,307,120,2),
+ (565,308,120,2),
+ (567,309,120,2),
+ (569,310,120,2),
+ (571,311,120,2),
+ (573,312,120,2),
+ (574,313,120,2),
+ (576,314,120,2),
+ (578,315,120,2),
+ (580,316,120,2),
+ (582,317,120,2),
+ (584,318,120,2),
+ (585,319,120,2),
+ (586,320,120,2),
+ (588,321,120,2),
+ (590,322,120,2),
+ (592,323,120,2),
+ (594,324,120,2),
+ (596,325,120,2),
+ (598,326,120,2),
+ (600,327,120,2),
+ (602,328,120,2),
+ (604,329,120,2),
+ (606,330,120,2),
+ (607,331,120,2),
+ (608,332,120,2),
+ (610,333,120,2),
+ (611,334,120,2),
+ (613,335,120,2),
+ (614,336,120,2),
+ (616,337,120,2),
+ (618,338,120,2),
+ (619,339,120,2),
+ (621,340,120,2),
+ (623,341,120,2),
+ (625,342,120,2),
+ (626,343,120,2),
+ (627,344,120,2),
+ (628,345,120,2),
+ (630,346,120,2),
+ (631,347,120,2),
+ (633,348,120,2),
+ (634,349,120,2),
+ (635,350,120,2),
+ (637,351,120,2),
+ (639,352,120,2),
+ (641,353,120,2),
+ (643,354,120,2),
+ (645,355,120,2),
+ (647,356,120,2),
+ (649,357,120,2),
+ (651,358,120,2),
+ (652,359,120,2),
+ (654,360,120,2),
+ (656,361,120,2),
+ (658,362,120,2),
+ (660,363,120,2),
+ (662,364,120,2),
+ (664,365,120,2),
+ (665,366,120,2),
+ (667,367,120,2),
+ (669,368,120,2),
+ (671,369,120,2),
+ (673,370,120,2),
+ (674,371,120,2),
+ (676,372,120,2),
+ (678,373,120,2),
+ (680,374,120,2),
+ (682,375,120,2),
+ (684,376,120,2),
+ (686,377,120,2),
+ (688,378,120,2),
+ (690,379,120,2),
+ (692,380,120,2),
+ (694,381,120,2),
+ (696,382,120,2),
+ (697,383,120,2),
+ (699,384,120,2),
+ (701,385,120,2),
+ (703,386,120,2),
+ (705,387,120,2),
+ (706,388,120,2),
+ (708,389,120,2),
+ (710,390,120,2),
+ (711,391,120,2),
+ (713,392,120,2),
+ (715,393,120,2),
+ (716,394,120,2),
+ (717,395,120,2),
+ (719,396,120,2),
+ (721,397,120,2),
+ (723,398,120,2),
+ (725,399,120,2),
+ (727,400,120,2),
+ (728,401,120,2),
+ (730,402,120,2),
+ (732,403,120,2),
+ (734,404,120,2),
+ (736,405,120,2),
+ (738,406,120,2),
+ (740,407,120,2),
+ (742,408,120,2),
+ (744,409,120,2),
+ (746,410,120,2),
+ (748,411,120,2),
+ (750,412,120,2),
+ (752,413,120,2),
+ (754,414,120,2),
+ (755,415,120,2),
+ (757,416,120,2),
+ (759,417,120,2),
+ (761,418,120,2),
+ (763,419,120,2),
+ (765,420,120,2),
+ (767,421,120,2),
+ (769,422,120,2),
+ (771,423,120,2),
+ (773,424,120,2),
+ (774,425,120,2),
+ (776,426,120,2),
+ (778,427,120,2),
+ (780,428,120,2),
+ (782,429,120,2),
+ (784,430,120,2),
+ (786,431,120,2),
+ (788,432,120,2),
+ (790,433,120,2),
+ (792,434,120,2),
+ (794,435,120,2),
+ (796,436,120,2),
+ (798,437,120,2),
+ (800,438,120,2),
+ (801,439,120,2),
+ (802,440,120,2),
+ (804,441,120,2),
+ (806,442,120,2),
+ (808,443,120,2),
+ (810,444,120,2),
+ (812,445,120,2),
+ (814,446,120,2),
+ (815,447,120,2),
+ (817,448,120,2),
+ (819,449,120,2),
+ (821,450,120,2),
+ (920,549,120,2),
+ (916,545,124,2),
+ (917,546,127,2),
+ (931,560,129,2),
+ (958,587,130,2),
+ (950,579,132,2),
+ (933,562,139,2),
+ (862,491,146,2),
+ (892,521,146,2),
+ (1,1,147,2),
+ (2,2,147,2),
+ (4,3,147,2),
+ (6,4,147,2),
+ (8,5,147,2),
+ (10,6,147,2),
+ (12,7,147,2),
+ (14,8,147,2),
+ (16,9,147,2),
+ (18,10,147,2),
+ (20,11,147,2),
+ (22,12,147,2),
+ (24,13,147,2),
+ (26,14,147,2),
+ (27,15,147,2),
+ (29,16,147,2),
+ (30,17,147,2),
+ (32,18,147,2),
+ (34,19,147,2),
+ (36,20,147,2),
+ (38,21,147,2),
+ (40,22,147,2),
+ (42,23,147,2),
+ (44,24,147,2),
+ (45,25,147,2),
+ (47,26,147,2),
+ (49,27,147,2),
+ (51,28,147,2),
+ (53,29,147,2),
+ (55,30,147,2),
+ (57,31,147,2),
+ (59,32,147,2),
+ (61,33,147,2),
+ (63,34,147,2),
+ (65,35,147,2),
+ (67,36,147,2),
+ (69,37,147,2),
+ (71,38,147,2),
+ (73,39,147,2),
+ (75,40,147,2),
+ (76,41,147,2),
+ (78,42,147,2),
+ (80,43,147,2),
+ (82,44,147,2),
+ (84,45,147,2),
+ (86,46,147,2),
+ (88,47,147,2),
+ (89,48,147,2),
+ (90,49,147,2),
+ (92,50,147,2),
+ (93,51,147,2),
+ (95,52,147,2),
+ (97,53,147,2),
+ (99,54,147,2),
+ (101,55,147,2),
+ (103,56,147,2),
+ (105,57,147,2),
+ (107,58,147,2),
+ (109,59,147,2),
+ (111,60,147,2),
+ (112,61,147,2),
+ (114,62,147,2),
+ (116,63,147,2),
+ (118,64,147,2),
+ (120,65,147,2),
+ (121,66,147,2),
+ (123,67,147,2),
+ (125,68,147,2),
+ (126,69,147,2),
+ (128,70,147,2),
+ (130,71,147,2),
+ (131,72,147,2),
+ (133,73,147,2),
+ (134,74,147,2),
+ (136,75,147,2),
+ (138,76,147,2),
+ (140,77,147,2),
+ (142,78,147,2),
+ (144,79,147,2),
+ (146,80,147,2),
+ (148,81,147,2),
+ (150,82,147,2),
+ (151,83,147,2),
+ (153,84,147,2),
+ (155,85,147,2),
+ (157,86,147,2),
+ (159,87,147,2),
+ (161,88,147,2),
+ (163,89,147,2),
+ (165,90,147,2),
+ (167,91,147,2),
+ (169,92,147,2),
+ (171,93,147,2),
+ (173,94,147,2),
+ (175,95,147,2),
+ (177,96,147,2),
+ (178,97,147,2),
+ (180,98,147,2),
+ (182,99,147,2),
+ (184,100,147,2),
+ (186,101,147,2),
+ (188,102,147,2),
+ (190,103,147,2),
+ (192,104,147,2),
+ (194,105,147,2),
+ (196,106,147,2),
+ (198,107,147,2),
+ (200,108,147,2),
+ (201,109,147,2),
+ (203,110,147,2),
+ (205,111,147,2),
+ (206,112,147,2),
+ (207,113,147,2),
+ (209,114,147,2),
+ (211,115,147,2),
+ (213,116,147,2),
+ (215,117,147,2),
+ (217,118,147,2),
+ (219,119,147,2),
+ (221,120,147,2),
+ (223,121,147,2),
+ (225,122,147,2),
+ (227,123,147,2),
+ (229,124,147,2),
+ (231,125,147,2),
+ (232,126,147,2),
+ (234,127,147,2),
+ (236,128,147,2),
+ (238,129,147,2),
+ (240,130,147,2),
+ (242,131,147,2),
+ (244,132,147,2),
+ (246,133,147,2),
+ (248,134,147,2),
+ (249,135,147,2),
+ (251,136,147,2),
+ (253,137,147,2),
+ (255,138,147,2),
+ (256,139,147,2),
+ (258,140,147,2),
+ (259,141,147,2),
+ (261,142,147,2),
+ (263,143,147,2),
+ (264,144,147,2),
+ (266,145,147,2),
+ (268,146,147,2),
+ (270,147,147,2),
+ (272,148,147,2),
+ (274,149,147,2),
+ (275,150,147,2),
+ (926,555,149,2),
+ (925,554,150,2),
+ (875,504,153,2),
+ (905,534,153,2),
+ (863,492,154,2),
+ (893,522,154,2),
+ (924,553,155,2),
+ (874,503,156,2),
+ (904,533,156,2),
+ (914,543,156,2),
+ (919,548,160,2),
+ (963,592,162,2),
+ (859,488,163,2),
+ (889,518,163,2),
+ (960,589,168,2),
+ (864,493,170,2),
+ (894,523,170,2),
+ (951,580,173,2),
+ (934,563,174,2),
+ (947,576,175,2),
+ (858,487,176,2),
+ (888,517,176,2),
+ (946,575,177,2),
+ (867,496,179,2),
+ (897,526,179,2),
+ (928,557,183,2),
+ (880,509,188,2),
+ (910,539,188,2),
+ (866,495,190,2),
+ (896,525,190,2),
+ (959,588,193,2),
+ (941,570,194,2),
+ (876,505,195,2),
+ (906,535,195,2),
+ (952,581,195,2),
+ (929,558,199,2);
 /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1701,186 +1705,185 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_address` WRITE;
 /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */;
 INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES
- (1,25,1,1,0,'111A Lincoln Pl W',111,'A',NULL,'Lincoln','Pl','W',NULL,NULL,NULL,NULL,'Glen',1,1047,NULL,'25088',NULL,1228,38.382145,-81.19842,0,NULL,NULL,NULL),
- (2,35,1,1,0,'965W Maple Path S',965,'W',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Columbus',1,1042,NULL,'78934',NULL,1228,29.712052,-96.56134,0,NULL,NULL,NULL),
- (3,142,1,1,0,'805O Pine Ln W',805,'O',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Collingswood',1,1029,NULL,'08108',NULL,1228,39.915263,-75.06401,0,NULL,NULL,NULL),
- (4,5,1,1,0,'173K Northpoint St W',173,'K',NULL,'Northpoint','St','W',NULL,NULL,NULL,NULL,'Valparaiso',1,1013,NULL,'46385',NULL,1228,41.484652,-87.11269,0,NULL,NULL,NULL),
- (5,4,1,1,0,'162H Bay Path W',162,'H',NULL,'Bay','Path','W',NULL,NULL,NULL,NULL,'Mound',1,1022,NULL,'55364',NULL,1228,44.933712,-93.66038,0,NULL,NULL,NULL),
- (6,9,1,1,0,'337O Caulder Path NE',337,'O',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Moro',1,1012,NULL,'62067',NULL,1228,38.91973,-90.01241,0,NULL,NULL,NULL),
- (7,123,1,1,0,'11U Cadell Pl W',11,'U',NULL,'Cadell','Pl','W',NULL,NULL,NULL,NULL,'Medford',1,1036,NULL,'97504',NULL,1228,42.334496,-122.83547,0,NULL,NULL,NULL),
- (8,83,1,1,0,'891B States Rd SE',891,'B',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Chappell',1,1016,NULL,'40816',NULL,1228,36.987495,-83.32795,0,NULL,NULL,NULL),
- (9,186,1,1,0,'933Q Cadell Pl SE',933,'Q',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Perris',1,1004,NULL,'92599',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL),
- (10,89,1,1,0,'531K El Camino Path SE',531,'K',NULL,'El Camino','Path','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL),
- (11,194,1,1,0,'101I Jackson Rd SE',101,'I',NULL,'Jackson','Rd','SE',NULL,NULL,NULL,NULL,'Hughesville',1,1019,NULL,'20637',NULL,1228,38.523408,-76.75435,0,NULL,NULL,NULL),
- (12,168,1,1,0,'559U El Camino Pl NW',559,'U',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Youngsville',1,1037,NULL,'16371',NULL,1228,41.860809,-79.31703,0,NULL,NULL,NULL),
- (13,172,1,1,0,'552E States Way S',552,'E',NULL,'States','Way','S',NULL,NULL,NULL,NULL,'Bearden',1,1003,NULL,'71720',NULL,1228,33.733334,-92.64664,0,NULL,NULL,NULL),
- (14,117,1,1,0,'514D Main Ave SE',514,'D',NULL,'Main','Ave','SE',NULL,NULL,NULL,NULL,'Annandale',1,1022,NULL,'55302',NULL,1228,45.246631,-94.11692,0,NULL,NULL,NULL),
- (15,197,1,1,0,'671A Woodbridge Rd W',671,'A',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'South Bend',1,1013,NULL,'46699',NULL,1228,41.596769,-86.292991,0,NULL,NULL,NULL),
- (16,185,1,1,0,'937U Maple Dr SE',937,'U',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78236',NULL,1228,29.389767,-98.61251,0,NULL,NULL,NULL),
- (17,132,1,1,0,'485W States Pl W',485,'W',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Pocono Pines',1,1037,NULL,'18350',NULL,1228,41.116737,-75.46037,0,NULL,NULL,NULL),
- (18,94,1,1,0,'121D Woodbridge Rd N',121,'D',NULL,'Woodbridge','Rd','N',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63195',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL),
- (19,144,1,1,0,'468J Second Dr NE',468,'J',NULL,'Second','Dr','NE',NULL,NULL,NULL,NULL,'Wichita Falls',1,1042,NULL,'76305',NULL,1228,33.996515,-98.51781,0,NULL,NULL,NULL),
- (20,87,1,1,0,'668P Caulder Ave NE',668,'P',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL),
- (21,42,1,1,0,'465R Lincoln Pl E',465,'R',NULL,'Lincoln','Pl','E',NULL,NULL,NULL,NULL,'Leon',1,1035,NULL,'73441',NULL,1228,33.877679,-97.42814,0,NULL,NULL,NULL),
- (22,80,1,1,0,'454W Beech Ln S',454,'W',NULL,'Beech','Ln','S',NULL,NULL,NULL,NULL,'Hawi',1,1010,NULL,'96719',NULL,1228,20.241109,-155.84459,0,NULL,NULL,NULL),
- (23,120,1,1,0,'48O Cadell Path S',48,'O',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Danville',1,1037,NULL,'17821',NULL,1228,40.985594,-76.63449,0,NULL,NULL,NULL),
- (24,169,1,1,0,'382A Caulder Path N',382,'A',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Mendota',1,1022,NULL,'55150',NULL,1228,44.884265,-93.16415,0,NULL,NULL,NULL),
- (25,130,1,1,0,'501Z Pine Ave N',501,'Z',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'Barnesville',1,1009,NULL,'30204',NULL,1228,33.05413,-84.14862,0,NULL,NULL,NULL),
- (26,17,1,1,0,'421M Beech Path SE',421,'M',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Pope A F B',1,1032,NULL,'28308',NULL,1228,35.173377,-79.013799,0,NULL,NULL,NULL),
- (27,38,1,1,0,'138Q Caulder Pl N',138,'Q',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL),
- (28,174,1,1,0,'740V Cadell Blvd W',740,'V',NULL,'Cadell','Blvd','W',NULL,NULL,NULL,NULL,'Mineral Springs',1,1032,NULL,'28108',NULL,1228,34.916253,-80.640383,0,NULL,NULL,NULL),
- (29,113,1,1,0,'870B Main Rd NW',870,'B',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Punta Gorda',1,1008,NULL,'33599',NULL,1228,26.871443,-82.007115,0,NULL,NULL,NULL),
- (30,171,1,1,0,'88Q Caulder Dr E',88,'Q',NULL,'Caulder','Dr','E',NULL,NULL,NULL,NULL,'Sutter',1,1012,NULL,'62373',NULL,1228,40.240004,-91.35197,0,NULL,NULL,NULL),
- (31,97,1,1,0,'723M Beech St SE',723,'M',NULL,'Beech','St','SE',NULL,NULL,NULL,NULL,'Pacific',1,1024,NULL,'63069',NULL,1228,38.482353,-90.73892,0,NULL,NULL,NULL),
- (32,29,1,1,0,'955M Lincoln Pl NE',955,'M',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Fort Myers',1,1008,NULL,'33913',NULL,1228,26.542097,-81.69984,0,NULL,NULL,NULL),
- (33,138,1,1,0,'396E Maple Way N',396,'E',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Vergennes',1,1012,NULL,'62994',NULL,1228,37.901441,-89.33485,0,NULL,NULL,NULL),
- (34,105,1,1,0,'806O Pine Way E',806,'O',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Vernal',1,1043,NULL,'84078',NULL,1228,40.514262,-109.54223,0,NULL,NULL,NULL),
- (35,192,1,1,0,'566U Dowlen Way NW',566,'U',NULL,'Dowlen','Way','NW',NULL,NULL,NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL),
- (36,37,1,1,0,'21G Martin Luther King Pl E',21,'G',NULL,'Martin Luther King','Pl','E',NULL,NULL,NULL,NULL,'Haviland',1,1034,NULL,'45851',NULL,1228,41.030911,-84.60213,0,NULL,NULL,NULL),
- (37,165,1,1,0,'530L El Camino Pl NW',530,'L',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Ringgold',1,1045,NULL,'24586',NULL,1228,36.595244,-79.28647,0,NULL,NULL,NULL),
- (38,184,1,1,0,'25P Cadell St W',25,'P',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Holder',1,1008,NULL,'34445',NULL,1228,28.948753,-82.406476,0,NULL,NULL,NULL),
- (39,158,1,1,0,'154C Dowlen Path S',154,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Butternut',1,1048,NULL,'54514',NULL,1228,46.024995,-90.44778,0,NULL,NULL,NULL),
- (40,108,1,1,0,'419Q Dowlen Way SW',419,'Q',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Port Washington',1,1048,NULL,'53074',NULL,1228,43.40181,-87.88001,0,NULL,NULL,NULL),
- (41,96,1,1,0,'975E College Path S',975,'E',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Squirrel',1,1011,NULL,'83447',NULL,1228,44.319199,-111.60171,0,NULL,NULL,NULL),
- (42,188,1,1,0,'377K Caulder Ave NW',377,'K',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Newtown',1,1013,NULL,'47969',NULL,1228,40.205056,-87.15089,0,NULL,NULL,NULL),
- (43,58,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL),
- (44,190,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,NULL),
- (45,155,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,NULL),
- (46,26,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,NULL),
- (47,53,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,NULL),
- (48,156,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,NULL),
- (49,131,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,NULL),
- (50,10,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,NULL),
- (51,177,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,NULL),
- (52,3,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),
- (53,191,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,NULL),
- (54,134,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,NULL),
- (55,73,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,NULL),
- (56,88,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,NULL),
- (57,23,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,NULL),
- (58,51,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,NULL),
- (59,43,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,NULL),
- (60,75,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,NULL),
- (61,65,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,NULL),
- (62,159,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,NULL),
- (63,103,3,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,NULL),
- (64,187,2,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,63),
- (65,135,3,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL),
- (66,115,2,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,65),
- (67,77,3,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,NULL),
- (68,81,2,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,67),
- (69,146,3,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,NULL),
- (70,178,2,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,69),
- (71,50,3,1,0,'763G College Ave S',763,'G',NULL,'College','Ave','S',NULL,'c/o PO Plus',NULL,NULL,'Herrick',1,1012,NULL,'62431',NULL,1228,39.228594,-88.98873,0,NULL,NULL,NULL),
- (72,22,3,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,NULL),
- (73,33,2,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,72),
- (74,59,3,1,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,NULL),
- (75,185,2,0,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,74),
- (76,68,3,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,NULL),
- (77,85,2,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,76),
- (78,133,3,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,NULL),
- (79,72,2,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,78),
- (80,52,3,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,NULL),
- (81,109,2,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,80),
- (82,19,3,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,NULL),
- (83,129,2,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,82),
- (84,161,3,1,0,'617Q Maple Dr SW',617,'Q',NULL,'Maple','Dr','SW',NULL,'Attn: Development',NULL,NULL,'Joppa',1,1000,NULL,'35087',NULL,1228,34.303718,-86.58323,0,NULL,NULL,NULL),
- (85,69,3,1,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,NULL),
- (86,4,2,0,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,85),
- (87,95,3,1,0,'571U El Camino Pl S',571,'U',NULL,'El Camino','Pl','S',NULL,'Donor Relations',NULL,NULL,'Lagrange',1,1034,NULL,'44050',NULL,1228,41.259352,-82.13542,0,NULL,NULL,NULL),
- (88,64,3,1,0,'475G Dowlen Ln SW',475,'G',NULL,'Dowlen','Ln','SW',NULL,'Donor Relations',NULL,NULL,'Yamhill',1,1036,NULL,'97148',NULL,1228,45.352399,-123.22502,0,NULL,NULL,NULL),
- (89,139,3,1,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL),
- (90,197,2,0,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,89),
- (91,122,3,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,NULL),
- (92,18,2,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,91),
- (93,7,3,1,0,'21W Caulder Blvd SE',21,'W',NULL,'Caulder','Blvd','SE',NULL,'Urgent',NULL,NULL,'Hanover',1,1019,NULL,'21098',NULL,1228,38.974203,-76.594942,0,NULL,NULL,NULL),
- (94,148,3,1,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,NULL),
- (95,96,2,0,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,94),
- (96,67,3,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,NULL),
- (97,76,2,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,96),
- (98,16,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (99,24,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (100,189,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (101,86,1,1,0,'258S Martin Luther King Pl W',258,'S',NULL,'Martin Luther King','Pl','W',NULL,NULL,NULL,NULL,'Stafford Springs',1,1006,NULL,'06076',NULL,1228,41.979871,-72.27863,0,NULL,NULL,NULL),
- (102,176,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (103,151,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (104,20,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (105,141,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (106,200,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (107,125,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (108,55,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (109,49,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (110,179,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (111,34,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (112,164,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (113,150,1,1,0,'107Y Cadell Blvd S',107,'Y',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73131',NULL,1228,35.576357,-97.46924,0,NULL,NULL,NULL),
- (114,193,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (115,44,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (116,60,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (117,183,1,1,0,'885A Second Rd W',885,'A',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Bouse',1,1002,NULL,'85325',NULL,1228,33.946064,-113.9537,0,NULL,NULL,NULL),
- (118,109,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (119,76,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (120,126,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (121,84,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (122,149,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (123,147,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (124,74,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (125,46,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (126,163,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (127,162,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (128,66,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (129,140,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (130,14,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (131,170,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (132,45,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (133,21,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (134,199,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (135,112,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (136,79,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (137,124,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (138,91,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (139,104,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (140,92,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (141,48,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (142,100,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (143,160,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (144,57,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (145,110,1,1,0,'717I Beech Ave SW',717,'I',NULL,'Beech','Ave','SW',NULL,NULL,NULL,NULL,'Shreveport',1,1017,NULL,'71161',NULL,1228,32.607556,-93.75256,0,NULL,NULL,NULL),
- (146,6,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (147,13,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (148,62,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (149,198,1,1,0,'866W College Rd SE',866,'W',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Senoia',1,1009,NULL,'30276',NULL,1228,33.281102,-84.58017,0,NULL,NULL,NULL),
- (150,137,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (151,99,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (152,116,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (153,15,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (154,182,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (155,114,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (156,32,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (157,180,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (158,90,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (159,39,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (160,41,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (161,18,1,0,0,'276T Caulder Blvd W',276,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Yanceyville',1,1032,NULL,'27379',NULL,1228,36.387904,-79.33107,0,NULL,NULL,NULL),
- (162,121,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (163,196,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (164,195,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (165,2,1,1,0,'552C Pine Blvd W',552,'C',NULL,'Pine','Blvd','W',NULL,NULL,NULL,NULL,'Ozawkie',1,1015,NULL,'66070',NULL,1228,39.201834,-95.44963,0,NULL,NULL,NULL),
- (166,12,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (167,61,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (168,63,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (169,154,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (170,181,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (171,175,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (172,85,1,0,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (173,47,1,1,0,'684E Second Ave NE',684,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Umatilla',1,1008,NULL,'32784',NULL,1228,28.948549,-81.70621,0,NULL,NULL,NULL),
- (174,118,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (175,111,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (176,152,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (177,36,1,1,0,'917Y Bay Dr NW',917,'Y',NULL,'Bay','Dr','NW',NULL,NULL,NULL,NULL,'Woodstock',1,1012,NULL,'60098',NULL,1228,42.316121,-88.43884,0,NULL,NULL,NULL),
- (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
- (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
- (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
+ (1,19,1,1,0,'536O Maple Way NE',536,'O',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'San Fidel',1,1030,NULL,'87049',NULL,1228,35.087772,-107.63451,0,NULL,NULL,NULL),
+ (2,153,1,1,0,'969F Caulder Blvd W',969,'F',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Thornton',1,1016,NULL,'41855',NULL,1228,37.156856,-82.76167,0,NULL,NULL,NULL),
+ (3,190,1,1,0,'679O Second Dr W',679,'O',NULL,'Second','Dr','W',NULL,NULL,NULL,NULL,'Wells',1,1044,NULL,'05774',NULL,1228,43.43357,-73.19578,0,NULL,NULL,NULL),
+ (4,65,1,1,0,'763N Caulder Dr NW',763,'N',NULL,'Caulder','Dr','NW',NULL,NULL,NULL,NULL,'Tipton',1,1015,NULL,'67495',NULL,1228,39.339801,-98.470661,0,NULL,NULL,NULL),
+ (5,70,1,1,0,'795D Pine Pl W',795,'D',NULL,'Pine','Pl','W',NULL,NULL,NULL,NULL,'Lexington',1,1026,NULL,'68850',NULL,1228,40.786048,-99.7424,0,NULL,NULL,NULL),
+ (6,120,1,1,0,'713Q Van Ness St NE',713,'Q',NULL,'Van Ness','St','NE',NULL,NULL,NULL,NULL,'Polson',1,1025,NULL,'59860',NULL,1228,47.696131,-114.16094,0,NULL,NULL,NULL),
+ (7,198,1,1,0,'180R Beech Path S',180,'R',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Lohman',1,1024,NULL,'65053',NULL,1228,38.543762,-92.35461,0,NULL,NULL,NULL),
+ (8,110,1,1,0,'762J States Path E',762,'J',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Provencal',1,1017,NULL,'71468',NULL,1228,31.494144,-93.17508,0,NULL,NULL,NULL),
+ (9,45,1,1,0,'761Y Van Ness Ave NW',761,'Y',NULL,'Van Ness','Ave','NW',NULL,NULL,NULL,NULL,'Tyler',1,1000,NULL,'36785',NULL,1228,32.282192,-86.8216,0,NULL,NULL,NULL),
+ (10,37,1,1,0,'412Q Caulder Path N',412,'Q',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Downey',1,1004,NULL,'90239',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),
+ (11,82,1,1,0,'296T Woodbridge St S',296,'T',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20060',NULL,1228,38.918011,-77.020398,0,NULL,NULL,NULL),
+ (12,102,1,1,0,'24L Bay Way NW',24,'L',NULL,'Bay','Way','NW',NULL,NULL,NULL,NULL,'Harrisburg',1,1037,NULL,'17107',NULL,1228,40.297031,-76.876437,0,NULL,NULL,NULL),
+ (13,192,1,1,0,'792R Woodbridge Path W',792,'R',NULL,'Woodbridge','Path','W',NULL,NULL,NULL,NULL,'Lee Center',1,1012,NULL,'61331',NULL,1228,41.747471,-89.27713,0,NULL,NULL,NULL),
+ (14,10,1,1,0,'980F Dowlen St NW',980,'F',NULL,'Dowlen','St','NW',NULL,NULL,NULL,NULL,'Brackney',1,1037,NULL,'18812',NULL,1228,41.964875,-75.95528,0,NULL,NULL,NULL),
+ (15,23,1,1,0,'937D Bay Dr W',937,'D',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Greenville',1,1039,NULL,'29611',NULL,1228,34.840717,-82.44234,0,NULL,NULL,NULL),
+ (16,94,1,1,0,'817W College Path W',817,'W',NULL,'College','Path','W',NULL,NULL,NULL,NULL,'Paterson',1,1029,NULL,'07502',NULL,1228,40.918948,-74.1939,0,NULL,NULL,NULL),
+ (17,108,1,1,0,'651X Martin Luther King Path NE',651,'X',NULL,'Martin Luther King','Path','NE',NULL,NULL,NULL,NULL,'New Kensington',1,1037,NULL,'15069',NULL,1228,40.360223,-79.439801,0,NULL,NULL,NULL),
+ (18,154,1,1,0,'197P Second Ln NE',197,'P',NULL,'Second','Ln','NE',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79186',NULL,1228,35.401475,-101.895089,0,NULL,NULL,NULL),
+ (19,86,1,1,0,'28S Pine Dr N',28,'S',NULL,'Pine','Dr','N',NULL,NULL,NULL,NULL,'Elkhart',1,1012,NULL,'62634',NULL,1228,40.02489,-89.46592,0,NULL,NULL,NULL),
+ (20,95,1,1,0,'426Q States Pl W',426,'Q',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Chapman',1,1026,NULL,'68827',NULL,1228,41.031618,-98.17004,0,NULL,NULL,NULL),
+ (21,176,1,1,0,'703H Second Path E',703,'H',NULL,'Second','Path','E',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21211',NULL,1228,39.328957,-76.63361,0,NULL,NULL,NULL),
+ (22,74,1,1,0,'60I Dowlen Pl W',60,'I',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Owyhee',1,1027,NULL,'89832',NULL,1228,41.951703,-116.17725,0,NULL,NULL,NULL),
+ (23,191,1,1,0,'654L Caulder Ave S',654,'L',NULL,'Caulder','Ave','S',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,NULL),
+ (24,117,1,1,0,'314F Jackson Path NE',314,'F',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Viola',1,1011,NULL,'83872',NULL,1228,46.861905,-116.96316,0,NULL,NULL,NULL),
+ (25,124,1,1,0,'694L Maple Path NW',694,'L',NULL,'Maple','Path','NW',NULL,NULL,NULL,NULL,'Central Village',1,1006,NULL,'06332',NULL,1228,41.725694,-71.909019,0,NULL,NULL,NULL),
+ (26,160,1,1,0,'511G Main Way SW',511,'G',NULL,'Main','Way','SW',NULL,NULL,NULL,NULL,'Burlington',1,1032,NULL,'27217',NULL,1228,36.132737,-79.41135,0,NULL,NULL,NULL),
+ (27,189,1,1,0,'27A Pine Path N',27,'A',NULL,'Pine','Path','N',NULL,NULL,NULL,NULL,'Boxborough',1,1020,NULL,'01719',NULL,1228,42.486259,-71.51244,0,NULL,NULL,NULL),
+ (28,135,1,1,0,'261E College Blvd SE',261,'E',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Nazlini',1,1002,NULL,'86540',NULL,1228,35.952827,-109.41297,0,NULL,NULL,NULL),
+ (29,77,1,1,0,'485L Pine St N',485,'L',NULL,'Pine','St','N',NULL,NULL,NULL,NULL,'Lake Odessa',1,1021,NULL,'48849',NULL,1228,42.788151,-85.13565,0,NULL,NULL,NULL),
+ (30,178,1,1,0,'388Y Lincoln Blvd E',388,'Y',NULL,'Lincoln','Blvd','E',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33180',NULL,1228,25.962069,-80.14465,0,NULL,NULL,NULL),
+ (31,131,1,1,0,'376P Northpoint Ln W',376,'P',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'San Diego',1,1004,NULL,'92193',NULL,1228,33.016928,-116.846046,0,NULL,NULL,NULL),
+ (32,88,1,1,0,'972B Pine Way N',972,'B',NULL,'Pine','Way','N',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84132',NULL,1228,40.772743,-111.838541,0,NULL,NULL,NULL),
+ (33,200,1,1,0,'115J Lincoln St NE',115,'J',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Murrells Inlet',1,1039,NULL,'29875',NULL,1228,33.55016,-79.053838,0,NULL,NULL,NULL),
+ (34,48,1,1,0,'649Z Martin Luther King Pl NW',649,'Z',NULL,'Martin Luther King','Pl','NW',NULL,NULL,NULL,NULL,'Baileyton',1,1000,NULL,'35019',NULL,1228,34.29254,-86.63505,0,NULL,NULL,NULL),
+ (35,158,1,1,0,'711Q Jackson Path E',711,'Q',NULL,'Jackson','Path','E',NULL,NULL,NULL,NULL,'Mcnary',1,1002,NULL,'85930',NULL,1228,34.04421,-109.73709,0,NULL,NULL,NULL),
+ (36,148,1,1,0,'452M Jackson Way W',452,'M',NULL,'Jackson','Way','W',NULL,NULL,NULL,NULL,'Ivyton',1,1016,NULL,'41444',NULL,1228,37.690636,-83.074592,0,NULL,NULL,NULL),
+ (37,137,1,1,0,'726J Maple Dr S',726,'J',NULL,'Maple','Dr','S',NULL,NULL,NULL,NULL,'Boulder',1,1043,NULL,'84716',NULL,1228,37.94512,-111.09991,0,NULL,NULL,NULL),
+ (38,146,1,1,0,'241I Green Dr SE',241,'I',NULL,'Green','Dr','SE',NULL,NULL,NULL,NULL,'Yoder',1,1049,NULL,'82244',NULL,1228,41.907756,-104.3721,0,NULL,NULL,NULL),
+ (39,122,1,1,0,'270O Main Ln S',270,'O',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Enid',1,1035,NULL,'73705',NULL,1228,36.379072,-97.782595,0,NULL,NULL,NULL),
+ (40,159,1,1,0,'86L El Camino Path S',86,'L',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Contoocook',1,1028,NULL,'03229',NULL,1228,43.204192,-71.70711,0,NULL,NULL,NULL),
+ (41,100,1,1,0,'324A Woodbridge Blvd N',324,'A',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Girardville',1,1037,NULL,'17935',NULL,1228,40.793258,-76.28315,0,NULL,NULL,NULL),
+ (42,40,1,1,0,'659G Dowlen St N',659,'G',NULL,'Dowlen','St','N',NULL,NULL,NULL,NULL,'Mount Vision',1,1031,NULL,'13810',NULL,1228,42.609579,-75.09464,0,NULL,NULL,NULL),
+ (43,188,1,1,0,'127S Lincoln Blvd NE',127,'S',NULL,'Lincoln','Blvd','NE',NULL,NULL,NULL,NULL,'Fort Monmouth',1,1029,NULL,'07703',NULL,1228,40.309121,-74.0486,0,NULL,NULL,NULL),
+ (44,29,1,1,0,'613I Caulder Path N',613,'I',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Ainsworth',1,1026,NULL,'69210',NULL,1228,42.530382,-99.88206,0,NULL,NULL,NULL),
+ (45,170,1,1,0,'851K Northpoint Rd N',851,'K',NULL,'Northpoint','Rd','N',NULL,NULL,NULL,NULL,'Maple Park',1,1012,NULL,'60151',NULL,1228,41.91842,-88.57626,0,NULL,NULL,NULL),
+ (46,3,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,NULL),
+ (47,111,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,NULL),
+ (48,92,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,NULL),
+ (49,61,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,NULL),
+ (50,106,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,NULL),
+ (51,56,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,NULL),
+ (52,193,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,NULL),
+ (53,151,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,NULL),
+ (54,97,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,NULL),
+ (55,53,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,NULL),
+ (56,138,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,NULL),
+ (57,199,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,NULL),
+ (58,172,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,NULL),
+ (59,186,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,NULL),
+ (60,167,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,NULL),
+ (61,2,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,NULL),
+ (62,68,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,NULL),
+ (63,25,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,NULL),
+ (64,39,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,NULL),
+ (65,125,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,NULL),
+ (66,47,3,1,0,'795P Bay Pl SE',795,'P',NULL,'Bay','Pl','SE',NULL,'Cuffe Parade',NULL,NULL,'Tipton',1,1037,NULL,'16684',NULL,1228,40.636691,-78.303614,0,NULL,NULL,NULL),
+ (67,118,3,1,0,'175W Dowlen Ave E',175,'W',NULL,'Dowlen','Ave','E',NULL,'Subscriptions Dept',NULL,NULL,'Mayslick',1,1016,NULL,'41055',NULL,1228,38.52217,-83.85894,0,NULL,NULL,NULL),
+ (68,18,3,1,0,'490T Cadell Ave W',490,'T',NULL,'Cadell','Ave','W',NULL,'Community Relations',NULL,NULL,'Harrisburg',1,1032,NULL,'28075',NULL,1228,35.335294,-80.6633,0,NULL,NULL,NULL),
+ (69,115,3,1,0,'667C Caulder Ln W',667,'C',NULL,'Caulder','Ln','W',NULL,'Attn: Development',NULL,NULL,'Covington',1,1035,NULL,'73730',NULL,1228,36.311257,-97.5597,0,NULL,NULL,NULL),
+ (70,9,3,1,0,'375N Maple Blvd SE',375,'N',NULL,'Maple','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Nashville',1,1041,NULL,'37209',NULL,1228,36.151324,-86.8559,0,NULL,NULL,NULL),
+ (71,146,2,0,0,'375N Maple Blvd SE',375,'N',NULL,'Maple','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Nashville',1,1041,NULL,'37209',NULL,1228,36.151324,-86.8559,0,NULL,NULL,70),
+ (72,71,3,1,0,'70V States Pl SW',70,'V',NULL,'States','Pl','SW',NULL,'Attn: Accounting',NULL,NULL,'Umpqua',1,1036,NULL,'97486',NULL,1228,43.38382,-123.53031,0,NULL,NULL,NULL),
+ (73,46,3,1,0,'276N Second Rd E',276,'N',NULL,'Second','Rd','E',NULL,'Payables Dept.',NULL,NULL,'Van Buren Point',1,1031,NULL,'14166',NULL,1228,42.4511,-79.415421,0,NULL,NULL,NULL),
+ (74,20,2,1,0,'276N Second Rd E',276,'N',NULL,'Second','Rd','E',NULL,'Payables Dept.',NULL,NULL,'Van Buren Point',1,1031,NULL,'14166',NULL,1228,42.4511,-79.415421,0,NULL,NULL,73),
+ (75,197,3,1,0,'944Z Pine Ave E',944,'Z',NULL,'Pine','Ave','E',NULL,'Payables Dept.',NULL,NULL,'North Platte',1,1026,NULL,'69103',NULL,1228,41.046447,-100.746912,0,NULL,NULL,NULL),
+ (76,41,2,1,0,'944Z Pine Ave E',944,'Z',NULL,'Pine','Ave','E',NULL,'Payables Dept.',NULL,NULL,'North Platte',1,1026,NULL,'69103',NULL,1228,41.046447,-100.746912,0,NULL,NULL,75),
+ (77,15,3,1,0,'185A Northpoint Pl NW',185,'A',NULL,'Northpoint','Pl','NW',NULL,'Subscriptions Dept',NULL,NULL,'Guilderland Center',1,1031,NULL,'12085',NULL,1228,42.694777,-73.905271,0,NULL,NULL,NULL),
+ (78,32,2,1,0,'185A Northpoint Pl NW',185,'A',NULL,'Northpoint','Pl','NW',NULL,'Subscriptions Dept',NULL,NULL,'Guilderland Center',1,1031,NULL,'12085',NULL,1228,42.694777,-73.905271,0,NULL,NULL,77),
+ (79,121,3,1,0,'172M El Camino Ln NW',172,'M',NULL,'El Camino','Ln','NW',NULL,'Subscriptions Dept',NULL,NULL,'Scottsdale',1,1002,NULL,'85266',NULL,1228,33.276539,-112.18717,0,NULL,NULL,NULL),
+ (80,35,3,1,0,'587F Northpoint St S',587,'F',NULL,'Northpoint','St','S',NULL,'Urgent',NULL,NULL,'Key Colony Beach',1,1008,NULL,'33051',NULL,1228,24.72339,-81.020281,0,NULL,NULL,NULL),
+ (81,152,2,1,0,'587F Northpoint St S',587,'F',NULL,'Northpoint','St','S',NULL,'Urgent',NULL,NULL,'Key Colony Beach',1,1008,NULL,'33051',NULL,1228,24.72339,-81.020281,0,NULL,NULL,80),
+ (82,78,3,1,0,'950X Beech Path SE',950,'X',NULL,'Beech','Path','SE',NULL,'Donor Relations',NULL,NULL,'Spring',1,1042,NULL,'77380',NULL,1228,30.143485,-95.46821,0,NULL,NULL,NULL),
+ (83,26,3,1,0,'438J Beech Blvd SE',438,'J',NULL,'Beech','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Malad City',1,1011,NULL,'83252',NULL,1228,42.192579,-112.32902,0,NULL,NULL,NULL),
+ (84,145,2,1,0,'438J Beech Blvd SE',438,'J',NULL,'Beech','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Malad City',1,1011,NULL,'83252',NULL,1228,42.192579,-112.32902,0,NULL,NULL,83),
+ (85,64,3,1,0,'95O College Way SE',95,'O',NULL,'College','Way','SE',NULL,'Receiving',NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,NULL),
+ (86,185,2,1,0,'95O College Way SE',95,'O',NULL,'College','Way','SE',NULL,'Receiving',NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,85),
+ (87,162,3,1,0,'602H College Dr N',602,'H',NULL,'College','Dr','N',NULL,'Community Relations',NULL,NULL,'Harvey',1,1017,NULL,'70058',NULL,1228,29.878578,-90.06903,0,NULL,NULL,NULL),
+ (88,55,2,1,0,'602H College Dr N',602,'H',NULL,'College','Dr','N',NULL,'Community Relations',NULL,NULL,'Harvey',1,1017,NULL,'70058',NULL,1228,29.878578,-90.06903,0,NULL,NULL,87),
+ (89,201,3,1,0,'270F Lincoln Ln NW',270,'F',NULL,'Lincoln','Ln','NW',NULL,'Attn: Development',NULL,NULL,'Gibsland',1,1017,NULL,'71028',NULL,1228,32.518748,-93.05705,0,NULL,NULL,NULL),
+ (90,123,3,1,0,'940H States Blvd E',940,'H',NULL,'States','Blvd','E',NULL,'Subscriptions Dept',NULL,NULL,'Emmonak',1,1001,NULL,'99581',NULL,1228,62.729019,-164.29917,0,NULL,NULL,NULL),
+ (91,51,3,1,0,'167E Lincoln Blvd SE',167,'E',NULL,'Lincoln','Blvd','SE',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55485',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL),
+ (92,150,2,1,0,'167E Lincoln Blvd SE',167,'E',NULL,'Lincoln','Blvd','SE',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55485',NULL,1228,45.015914,-93.47188,0,NULL,NULL,91),
+ (93,17,3,1,0,'385S El Camino Pl E',385,'S',NULL,'El Camino','Pl','E',NULL,'Community Relations',NULL,NULL,'Climax Springs',1,1024,NULL,'65324',NULL,1228,38.151604,-92.99055,0,NULL,NULL,NULL),
+ (94,77,2,0,0,'385S El Camino Pl E',385,'S',NULL,'El Camino','Pl','E',NULL,'Community Relations',NULL,NULL,'Climax Springs',1,1024,NULL,'65324',NULL,1228,38.151604,-92.99055,0,NULL,NULL,93),
+ (95,60,3,1,0,'484J Beech Ave N',484,'J',NULL,'Beech','Ave','N',NULL,'c/o OPDC',NULL,NULL,'Central City',1,1026,NULL,'68226',NULL,1228,41.12044,-97.992289,0,NULL,NULL,NULL),
+ (96,109,2,1,0,'484J Beech Ave N',484,'J',NULL,'Beech','Ave','N',NULL,'c/o OPDC',NULL,NULL,'Central City',1,1026,NULL,'68226',NULL,1228,41.12044,-97.992289,0,NULL,NULL,95),
+ (97,13,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (98,156,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (99,144,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (100,170,1,0,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (101,75,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (102,187,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (103,140,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (104,34,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (105,14,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (106,139,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (107,98,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (108,81,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (109,196,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (110,141,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (111,103,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (112,168,1,1,0,'74C Maple Way N',74,'C',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Pengilly',1,1022,NULL,'55775',NULL,1228,47.30797,-93.20693,0,NULL,NULL,NULL),
+ (113,58,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (114,185,1,0,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (115,127,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (116,6,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (117,145,1,0,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (118,171,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (119,49,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (120,132,1,1,0,'155C Main Dr NE',155,'C',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Leitchfield',1,1016,NULL,'42754',NULL,1228,37.479797,-86.30731,0,NULL,NULL,NULL),
+ (121,183,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (122,69,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (123,166,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (124,157,1,1,0,'974I Woodbridge Blvd NE',974,'I',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Pauma Valley',1,1004,NULL,'92061',NULL,1228,33.311881,-116.96499,0,NULL,NULL,NULL),
+ (125,22,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (126,33,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (127,55,1,0,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (128,195,1,1,0,'676Q Martin Luther King Ave S',676,'Q',NULL,'Martin Luther King','Ave','S',NULL,NULL,NULL,NULL,'Fort Smith',1,1003,NULL,'72908',NULL,1228,35.301623,-94.41283,0,NULL,NULL,NULL),
+ (129,8,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (130,54,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (131,89,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (132,128,1,1,0,'154M Second Blvd NW',154,'M',NULL,'Second','Blvd','NW',NULL,NULL,NULL,NULL,'Hope Valley',1,1038,NULL,'02832',NULL,1228,41.511414,-71.72737,0,NULL,NULL,NULL),
+ (133,7,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (134,83,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (135,130,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (136,62,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (137,173,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (138,150,1,0,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (139,50,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (140,143,1,1,0,'349C Martin Luther King Blvd SE',349,'C',NULL,'Martin Luther King','Blvd','SE',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,NULL),
+ (141,177,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (142,84,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (143,119,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (144,180,1,1,0,'909M Dowlen Ave E',909,'M',NULL,'Dowlen','Ave','E',NULL,NULL,NULL,NULL,'Tryon',1,1032,NULL,'28782',NULL,1228,35.221428,-82.21712,0,NULL,NULL,NULL),
+ (145,194,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (146,59,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (147,27,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (148,133,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (149,32,1,0,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (150,52,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (151,31,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (152,91,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (153,155,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (154,11,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (155,24,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (156,80,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (157,73,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (158,109,1,0,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (159,163,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (160,93,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (161,134,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (162,4,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (163,169,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (164,5,1,1,0,'812S Jackson Path E',812,'S',NULL,'Jackson','Path','E',NULL,NULL,NULL,NULL,'Summertown',1,1009,NULL,'30466',NULL,1228,32.566594,-82.324475,0,NULL,NULL,NULL),
+ (165,90,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (166,20,1,0,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (167,104,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (168,42,1,1,0,'866V College Rd SE',866,'V',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Lancaster',1,1034,NULL,'43130',NULL,1228,39.712887,-82.61216,0,NULL,NULL,NULL),
+ (169,184,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (170,152,1,0,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (171,129,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (172,28,1,1,0,'905E Main Pl NW',905,'E',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Trevett',1,1018,NULL,'04571',NULL,1228,43.88261,-69.680144,0,NULL,NULL,NULL),
+ (173,174,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (174,181,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (175,87,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (176,165,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (177,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
+ (178,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
+ (179,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1990,208 +1993,208 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES
- (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-19 21:22:28','Both'),
- (2,'Individual',NULL,'Mr. Elbert Terrell II',NULL,NULL,'Elbert','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,NULL,NULL,'1862258278',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Terrell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (3,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,'1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (4,'Individual',NULL,'Mrs. Damaris Smith','Global Sports Center',NULL,'Damaris','A','Smith',0,0,0,0,0,0,NULL,'Smith, Damaris',NULL,NULL,NULL,'1',NULL,'3693080437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,69,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (5,'Individual',NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'325908741',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (6,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,'1',NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (7,'Organization',NULL,'Hanover Education School','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Hanover Education School',NULL,NULL,NULL,NULL,NULL,'3329437880',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hanover Education School',NULL,NULL,NULL,0,NULL,NULL,15,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (8,'Individual',NULL,'Ms. Laree Blackwell',NULL,NULL,'Laree','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Laree',NULL,NULL,NULL,'4',NULL,'122613497',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Blackwell',NULL,1,'1987-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (9,'Individual',NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,'1',NULL,'1346258529',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (10,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (11,'Individual',NULL,'Mr. Carlos Cruz II',NULL,NULL,'Carlos','N','Cruz',0,1,0,0,0,0,NULL,'Cruz, Carlos',NULL,NULL,NULL,'1',NULL,'149105357',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz II',NULL,NULL,'1970-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (12,'Individual',NULL,'Margaret Reynolds',NULL,NULL,'Margaret','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Margaret',NULL,NULL,NULL,NULL,NULL,'1615992834',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,1,'1995-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (13,'Individual',NULL,'Sonny Reynolds III',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds III',NULL,2,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (14,'Individual',NULL,'Delana Wattson',NULL,NULL,'Delana','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Delana',NULL,NULL,NULL,'1',NULL,'4463545',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Wattson',NULL,1,'1958-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (15,'Individual',NULL,'olsenb@testmail.co.pl','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,'3',NULL,'3294760178',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (16,'Individual',NULL,'Mrs. Kiara Bachman',NULL,NULL,'Kiara','I','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'2',NULL,'3047638217',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Bachman',NULL,1,'1998-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (17,'Individual',NULL,'Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (18,'Individual',NULL,'Andrew Díaz Sr.','Cranfills Gap Health Trust',NULL,'Andrew','E','Díaz',1,0,0,0,0,0,NULL,'Díaz, Andrew',NULL,NULL,NULL,NULL,NULL,'2189664098',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Díaz Sr.',NULL,NULL,'1989-09-08',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (19,'Organization',NULL,'Creative Peace Solutions','Creative Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Creative Peace Solutions',NULL,NULL,NULL,NULL,NULL,'2853948413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,129,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (20,'Individual',NULL,'Claudio Cruz-Reynolds',NULL,NULL,'Claudio','','Cruz-Reynolds',0,0,0,0,0,0,NULL,'Cruz-Reynolds, Claudio',NULL,NULL,NULL,NULL,NULL,'2191699643',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz-Reynolds',NULL,2,'1987-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (21,'Individual',NULL,'Jackson Wattson',NULL,NULL,'Jackson','C','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,NULL,NULL,'1720434610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson',NULL,2,'1969-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (22,'Organization',NULL,'Boston Development Academy','Boston Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Boston Development Academy',NULL,NULL,NULL,NULL,NULL,'3712082957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Boston Development Academy',NULL,NULL,NULL,0,NULL,NULL,33,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (23,'Household',NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Samson-Terry family',NULL,NULL,NULL,'1',NULL,'1196143838',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Terry family',5,NULL,'Dear Samson-Terry family',2,NULL,'Samson-Terry family',NULL,NULL,NULL,0,NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (24,'Individual',NULL,'Sherman Bachman',NULL,NULL,'Sherman','','Bachman',0,1,0,0,0,0,NULL,'Bachman, Sherman',NULL,NULL,NULL,'4',NULL,'2672494279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (25,'Individual',NULL,'Beula Wagner',NULL,NULL,'Beula','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'109524906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (26,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'2',NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (27,'Individual',NULL,'Mrs. Merrie Robertson',NULL,NULL,'Merrie','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Merrie',NULL,NULL,NULL,'4',NULL,'2954108447',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (28,'Individual',NULL,'Sharyn Nielsen',NULL,NULL,'Sharyn','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Sharyn',NULL,NULL,NULL,'1',NULL,'3940504410',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (29,'Individual',NULL,'Ms. Beula Cruz',NULL,NULL,'Beula','G','Cruz',1,0,0,0,0,0,NULL,'Cruz, Beula',NULL,NULL,NULL,NULL,NULL,'3515356541',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,1,'1943-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (30,'Individual',NULL,'Dr. Josefa Grant',NULL,NULL,'Josefa','R','Grant',0,0,0,0,1,0,NULL,'Grant, Josefa',NULL,NULL,NULL,NULL,NULL,'511786429',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Grant',NULL,NULL,'1983-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (31,'Individual',NULL,'Dr. Lincoln Yadav Sr.',NULL,NULL,'Lincoln','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Lincoln',NULL,NULL,NULL,NULL,NULL,'3563160263',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Yadav Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (32,'Individual',NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,'3970115490',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (33,'Individual',NULL,'dimitrovb20@infomail.co.uk','Boston Development Academy',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,'2',NULL,'3487863784',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,22,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (34,'Individual',NULL,'Mr. Sonny Prentice II',NULL,NULL,'Sonny','G','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sonny',NULL,NULL,NULL,'1',NULL,'2645636632',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Prentice II',NULL,2,'1977-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (35,'Individual',NULL,'Omar Müller',NULL,NULL,'Omar','','Müller',1,0,0,0,1,0,NULL,'Müller, Omar',NULL,NULL,NULL,NULL,NULL,'3845396679',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Müller',NULL,2,'1971-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (36,'Individual',NULL,'Mr. Lou Yadav',NULL,NULL,'Lou','J','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'5',NULL,'1442954395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (37,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,'4',NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,'1976-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (38,'Individual',NULL,'Landon Blackwell',NULL,NULL,'Landon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Landon',NULL,NULL,NULL,'2',NULL,'1569508638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Blackwell',NULL,2,'1944-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (39,'Individual',NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,'Delana','E','Díaz-Łąchowski',1,0,0,0,0,0,NULL,'Díaz-Łąchowski, Delana',NULL,NULL,NULL,NULL,NULL,'1952500554',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (40,'Individual',NULL,'Mrs. Megan Parker',NULL,NULL,'Megan','J','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (41,'Individual',NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'Landon','V','Díaz-Łąchowski',0,1,0,0,0,0,NULL,'Díaz-Łąchowski, Landon',NULL,NULL,NULL,'2',NULL,'1221970263',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'2011-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (42,'Individual',NULL,'Rolando Grant',NULL,NULL,'Rolando','','Grant',1,0,0,0,1,0,NULL,'Grant, Rolando',NULL,NULL,NULL,'2',NULL,'4031135000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Grant',NULL,2,'1935-02-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (43,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (44,'Individual',NULL,'Delana Ivanov',NULL,NULL,'Delana','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Delana',NULL,NULL,NULL,'3',NULL,'1796516445',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (45,'Individual',NULL,'Esta Wattson',NULL,NULL,'Esta','B','Wattson',0,1,0,0,0,0,NULL,'Wattson, Esta',NULL,NULL,NULL,'2',NULL,'1484476563',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wattson',NULL,NULL,'2001-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (46,'Individual',NULL,'Dr. Miguel Samuels',NULL,NULL,'Miguel','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Miguel',NULL,NULL,NULL,'3',NULL,'1633688376',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (47,'Individual',NULL,'Ashley McReynolds Sr.',NULL,NULL,'Ashley','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Ashley',NULL,NULL,NULL,NULL,NULL,'68872917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds Sr.',NULL,NULL,'1971-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (48,'Individual',NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,'2',NULL,'910006395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (49,'Individual',NULL,'Dr. Carlos Ivanov Jr.',NULL,NULL,'Carlos','E','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Carlos',NULL,NULL,NULL,'5',NULL,'3509440467',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Ivanov Jr.',NULL,2,'1994-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (50,'Organization',NULL,'Illinois Food Fund','Illinois Food Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Illinois Food Fund',NULL,NULL,NULL,'3',NULL,'1276770505',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Fund',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (51,'Household',NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,'1022464571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Díaz-Łąchowski family',5,NULL,'Dear Díaz-Łąchowski family',2,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (52,'Organization',NULL,'Lincoln Action Academy','Lincoln Action Academy',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Lincoln Action Academy',NULL,NULL,NULL,'4',NULL,'588269897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Action Academy',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (54,'Individual',NULL,'Dr. Teddy Nielsen',NULL,NULL,'Teddy','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Teddy',NULL,NULL,NULL,'3',NULL,'1600610365',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Nielsen',NULL,2,'1945-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (55,'Individual',NULL,'Russell Ivanov Jr.',NULL,NULL,'Russell','P','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Russell',NULL,NULL,NULL,'5',NULL,'624189081',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (56,'Individual',NULL,'Merrie Cooper',NULL,NULL,'Merrie','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Merrie',NULL,NULL,NULL,'2',NULL,'340467569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Cooper',NULL,1,'1939-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (57,'Individual',NULL,'Dr. Maxwell Deforest',NULL,NULL,'Maxwell','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Maxwell',NULL,NULL,NULL,'1',NULL,'1808949889',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (58,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (59,'Organization',NULL,'Global Sustainability Alliance','Global Sustainability Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,'1',NULL,'842567976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (60,'Individual',NULL,'Dr. Lou Ivanov Jr.',NULL,NULL,'Lou','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'2',NULL,'211844515',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Ivanov Jr.',NULL,2,'1981-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (61,'Individual',NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,'1',NULL,'1093174039',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (62,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,'5',NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (63,'Individual',NULL,'Sonny Reynolds',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds',NULL,2,'2011-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (64,'Organization',NULL,'Dowlen Software Alliance','Dowlen Software Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,NULL,NULL,'1260268914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,0,NULL,NULL,184,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (65,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (66,'Individual',NULL,'Barry Terry',NULL,NULL,'Barry','N','Terry',0,1,0,0,0,0,NULL,'Terry, Barry',NULL,NULL,NULL,NULL,NULL,'929041000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry',NULL,NULL,'2007-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (67,'Organization',NULL,'Bay Empowerment School','Bay Empowerment School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bay Empowerment School',NULL,NULL,NULL,NULL,NULL,'2478135666',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Empowerment School',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (68,'Organization',NULL,'United Agriculture Academy','United Agriculture Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Academy',NULL,NULL,NULL,'2',NULL,'2961780957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,85,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (69,'Organization',NULL,'Global Sports Center','Global Sports Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sports Center',NULL,NULL,NULL,NULL,NULL,'2901322748',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Center',NULL,NULL,NULL,0,NULL,NULL,4,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (70,'Individual',NULL,'Irvin Díaz Jr.',NULL,NULL,'Irvin','','Díaz',0,0,0,0,0,0,NULL,'Díaz, Irvin',NULL,NULL,NULL,NULL,NULL,'2415400429',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Díaz Jr.',NULL,2,'1952-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (71,'Individual',NULL,'Ms. Bernadette Müller',NULL,NULL,'Bernadette','F','Müller',0,0,0,0,1,0,NULL,'Müller, Bernadette',NULL,NULL,NULL,NULL,NULL,'2804032609',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (72,'Individual',NULL,'Mr. Miguel Wagner','Progressive Culture Partnership',NULL,'Miguel','D','Wagner',0,0,0,0,0,0,NULL,'Wagner, Miguel',NULL,NULL,NULL,NULL,NULL,'422482436',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Wagner',NULL,2,'1950-08-08',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (73,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (74,'Individual',NULL,'Valene Samuels','Illinois Food Fund',NULL,'Valene','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Valene',NULL,NULL,NULL,NULL,NULL,'1762584511',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'2020-03-07',0,NULL,NULL,NULL,NULL,NULL,50,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (75,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (76,'Individual',NULL,'Mr. Miguel Prentice II','Bay Empowerment School',NULL,'Miguel','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Miguel',NULL,NULL,NULL,NULL,NULL,'3093767059',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Prentice II',NULL,NULL,'1978-08-28',0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (77,'Organization',NULL,'Global Wellness Center','Global Wellness Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Center',NULL,NULL,NULL,'4',NULL,'2771241701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Center',NULL,NULL,NULL,0,NULL,NULL,81,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (78,'Individual',NULL,'Shad Müller',NULL,NULL,'Shad','','Müller',0,0,0,0,0,0,NULL,'Müller, Shad',NULL,NULL,NULL,NULL,NULL,'233080666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Müller',NULL,2,NULL,1,'2022-12-10',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (79,'Individual',NULL,'Irvin Müller',NULL,NULL,'Irvin','N','Müller',0,0,0,0,1,0,NULL,'Müller, Irvin',NULL,NULL,NULL,NULL,NULL,'1250430175',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Müller',NULL,2,'2016-02-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (80,'Individual',NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'Kathlyn','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Kathlyn',NULL,NULL,NULL,NULL,NULL,'3934921435',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'1970-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (81,'Individual',NULL,'Dr. Elina Smith','Global Wellness Center',NULL,'Elina','D','Smith',0,0,0,0,1,0,NULL,'Smith, Elina',NULL,NULL,NULL,'3',NULL,'1079819733',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Smith',NULL,1,'1942-10-13',0,NULL,NULL,NULL,NULL,NULL,77,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (82,'Individual',NULL,'Mrs. Margaret Cruz',NULL,NULL,'Margaret','M','Cruz',0,0,0,0,1,0,NULL,'Cruz, Margaret',NULL,NULL,NULL,'2',NULL,'680750633',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (83,'Individual',NULL,'Toby Barkley',NULL,NULL,'Toby','F','Barkley',1,0,0,0,1,0,NULL,'Barkley, Toby',NULL,NULL,NULL,'3',NULL,'2112758075',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (84,'Individual',NULL,'Mr. Craig Prentice',NULL,NULL,'Craig','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,'1',NULL,'3778069057',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Prentice',NULL,2,'1964-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (85,'Individual',NULL,'Dr. Justina McReynolds','United Agriculture Academy',NULL,'Justina','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Justina',NULL,NULL,NULL,'5',NULL,'1146130692',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina McReynolds',NULL,1,'1989-07-29',0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (86,'Individual',NULL,'Eleonor Parker',NULL,NULL,'Eleonor','K','Parker',0,0,0,0,0,0,NULL,'Parker, Eleonor',NULL,NULL,NULL,NULL,NULL,'3234463672',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Parker',NULL,1,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (87,'Individual',NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,'2789926097',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (88,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (89,'Individual',NULL,'Kiara Nielsen',NULL,NULL,'Kiara','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kiara',NULL,NULL,NULL,'2',NULL,'4265488572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (90,'Individual',NULL,'Junko Łąchowski',NULL,NULL,'Junko','E','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Junko',NULL,NULL,NULL,'5',NULL,'213828340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Łąchowski',NULL,NULL,'1989-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (91,'Individual',NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'3825255427',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (92,'Individual',NULL,'Mrs. Magan Wilson-Jameson',NULL,NULL,'Magan','','Wilson-Jameson',0,1,0,0,0,0,NULL,'Wilson-Jameson, Magan',NULL,NULL,NULL,NULL,NULL,'200719141',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan Wilson-Jameson',NULL,1,'2002-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (93,'Individual',NULL,'Mr. Jackson McReynolds',NULL,NULL,'Jackson','Q','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Jackson',NULL,NULL,NULL,'3',NULL,'748161972',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (94,'Individual',NULL,'Omar Parker Jr.',NULL,NULL,'Omar','','Parker',0,1,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'2',NULL,'3921166397',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Parker Jr.',NULL,NULL,'1998-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (95,'Organization',NULL,'Rural Agriculture Trust','Rural Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,'3',NULL,'3564832016',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (96,'Individual',NULL,'blackwella@notmail.org','Local Environmental Trust',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'blackwella@notmail.org',NULL,NULL,NULL,NULL,NULL,'442145169',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear blackwella@notmail.org',1,NULL,'Dear blackwella@notmail.org',1,NULL,'blackwella@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,148,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (97,'Individual',NULL,'Bernadette Łąchowski',NULL,NULL,'Bernadette','','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Bernadette',NULL,NULL,NULL,'2',NULL,'2108681272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (98,'Individual',NULL,'Shauna Patel',NULL,NULL,'Shauna','P','Patel',0,1,0,0,0,0,NULL,'Patel, Shauna',NULL,NULL,NULL,NULL,NULL,'607971339',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Patel',NULL,1,'1949-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (99,'Individual',NULL,'Ms. Mei Olsen',NULL,NULL,'Mei','R','Olsen',1,0,0,0,0,0,NULL,'Olsen, Mei',NULL,NULL,NULL,NULL,NULL,'258402374',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (100,'Individual',NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'4287671736',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (101,'Individual',NULL,'Delana Dimitrov',NULL,NULL,'Delana','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,NULL,NULL,'4026480882',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov',NULL,1,NULL,1,'2023-10-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (102,'Individual',NULL,'Mr. Barry Wagner',NULL,NULL,'Barry','N','Wagner',0,0,0,0,0,0,NULL,'Wagner, Barry',NULL,NULL,NULL,NULL,NULL,'1267143153',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Wagner',NULL,2,'1953-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (103,'Organization',NULL,'Oregon Development Network','Oregon Development Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Oregon Development Network',NULL,NULL,NULL,'2',NULL,'784567487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Network',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (104,'Individual',NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'3914421875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (105,'Individual',NULL,'Dr. Elizabeth Roberts',NULL,NULL,'Elizabeth','D','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,'3',NULL,'3104864980',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Roberts',NULL,1,'1971-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (106,'Individual',NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,'1568362394',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (107,'Individual',NULL,'Esta Łąchowski',NULL,NULL,'Esta','G','Łąchowski',0,0,0,0,1,0,NULL,'Łąchowski, Esta',NULL,NULL,NULL,'1',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (108,'Individual',NULL,'Dr. Kiara Łąchowski',NULL,NULL,'Kiara','O','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Kiara',NULL,NULL,NULL,NULL,NULL,'1559609409',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Łąchowski',NULL,NULL,'1982-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (109,'Individual',NULL,'Lashawnda Prentice','Lincoln Action Academy',NULL,'Lashawnda','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,NULL,NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,52,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (110,'Individual',NULL,'Mr. Lawerence Deforest',NULL,NULL,'Lawerence','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Lawerence',NULL,NULL,NULL,NULL,NULL,'2962516652',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (111,'Individual',NULL,'Kenny Yadav II',NULL,NULL,'Kenny','D','Yadav',0,0,0,0,0,0,NULL,'Yadav, Kenny',NULL,NULL,NULL,'4',NULL,'250746844',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Yadav II',NULL,NULL,'1995-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (112,'Individual',NULL,'Mr. Sherman Müller',NULL,NULL,'Sherman','H','Müller',1,0,0,0,0,0,NULL,'Müller, Sherman',NULL,NULL,NULL,'3',NULL,'1541323485',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Müller',NULL,2,'1991-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (113,'Individual',NULL,'Dr. Elizabeth Robertson',NULL,NULL,'Elizabeth','','Robertson',1,0,0,0,0,0,NULL,'Robertson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3762031116',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Robertson',NULL,NULL,'1954-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (114,'Individual',NULL,'Daren Samson-Terry',NULL,NULL,'Daren','F','Samson-Terry',1,0,0,0,0,0,NULL,'Samson-Terry, Daren',NULL,NULL,NULL,NULL,NULL,'1484741128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Samson-Terry',NULL,2,'1982-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (115,'Individual',NULL,'Clint Deforest','Sacramento Empowerment Partners',NULL,'Clint','U','Deforest',0,0,0,0,0,0,NULL,'Deforest, Clint',NULL,NULL,NULL,'1',NULL,'2437706084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (116,'Individual',NULL,'Teresa Olsen',NULL,NULL,'Teresa','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teresa',NULL,NULL,NULL,NULL,NULL,'1784308763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Olsen',NULL,1,'2007-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (117,'Individual',NULL,'Norris Reynolds',NULL,NULL,'Norris','S','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Norris',NULL,NULL,NULL,NULL,NULL,'3621358089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (118,'Individual',NULL,'Alexia Lee-Yadav',NULL,NULL,'Alexia','P','Lee-Yadav',0,1,0,0,1,0,NULL,'Lee-Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'147177678',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Lee-Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (119,'Individual',NULL,'Mr. Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,'1',NULL,'1660268830',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Wagner',NULL,2,'1981-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (120,'Individual',NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,'1',NULL,'2482041681',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (121,'Individual',NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,'5',NULL,'2359360083',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (122,'Organization',NULL,'Cranfills Gap Health Trust','Cranfills Gap Health Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,'1',NULL,'45920780',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,0,NULL,NULL,18,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (123,'Individual',NULL,'Kathlyn Roberts',NULL,NULL,'Kathlyn','Z','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathlyn',NULL,NULL,NULL,NULL,NULL,'2944584126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,'1942-07-12',1,'2023-02-07',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (124,'Individual',NULL,'Dr. Scott Müller',NULL,NULL,'Scott','Q','Müller',0,0,0,0,0,0,NULL,'Müller, Scott',NULL,NULL,NULL,NULL,NULL,'2575613599',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Müller',NULL,2,'1963-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (125,'Individual',NULL,'Sharyn Ivanov',NULL,NULL,'Sharyn','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sharyn',NULL,NULL,NULL,NULL,NULL,'4099997756',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (126,'Individual',NULL,'Troy Prentice',NULL,NULL,'Troy','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Troy',NULL,NULL,NULL,NULL,NULL,'2143976390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,NULL,'1996-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (127,'Individual',NULL,'Dr. Kiara Bachman',NULL,NULL,'Kiara','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'1',NULL,'3047638217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Bachman',NULL,1,'1947-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (128,'Individual',NULL,'Dr. Lincoln Cruz',NULL,NULL,'Lincoln','Y','Cruz',0,0,0,0,1,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,'2',NULL,'3085396026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cruz',NULL,2,'1940-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (129,'Individual',NULL,'Erik Deforest','Creative Peace Solutions',NULL,'Erik','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,NULL,NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1973-02-04',0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (130,'Individual',NULL,'Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Justina',NULL,NULL,NULL,'4',NULL,'3253764259',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jensen',NULL,1,'1982-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (131,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels family',NULL,NULL,NULL,'5',NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (132,'Individual',NULL,'Allen Cooper II',NULL,NULL,'Allen','K','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,'3',NULL,'1888383899',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Cooper II',NULL,2,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (133,'Organization',NULL,'Progressive Culture Partnership','Progressive Culture Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,'3',NULL,'3653775844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,0,NULL,NULL,72,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (134,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (135,'Organization',NULL,'Sacramento Empowerment Partners','Sacramento Empowerment Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,'2',NULL,'3370788420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (136,'Individual',NULL,'Ms. Merrie Smith',NULL,NULL,'Merrie','L','Smith',1,0,0,0,0,0,NULL,'Smith, Merrie',NULL,NULL,NULL,'1',NULL,'2728255522',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (137,'Individual',NULL,'Mrs. Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Olsen',NULL,1,'1986-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (138,'Individual',NULL,'Mr. Toby Jacobs',NULL,NULL,'Toby','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Toby',NULL,NULL,NULL,NULL,NULL,'247886444',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (139,'Organization',NULL,'Rural Health Initiative','Rural Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Rural Health Initiative',NULL,NULL,NULL,NULL,NULL,'1369844291',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Health Initiative',NULL,NULL,NULL,0,NULL,NULL,197,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (140,'Individual',NULL,'Mr. Russell Terry',NULL,NULL,'Russell','','Terry',0,0,0,0,0,0,NULL,'Terry, Russell',NULL,NULL,NULL,NULL,NULL,'3994938484',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Terry',NULL,2,'1952-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (141,'Individual',NULL,'Elbert Cruz',NULL,NULL,'Elbert','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Elbert',NULL,NULL,NULL,NULL,NULL,'418027726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cruz',NULL,2,'1966-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (142,'Individual',NULL,'Dr. Tanya Blackwell',NULL,NULL,'Tanya','H','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Tanya',NULL,NULL,NULL,NULL,NULL,'2751001066',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (143,'Individual',NULL,'Kenny Olsen III',NULL,NULL,'Kenny','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kenny',NULL,NULL,NULL,NULL,NULL,'293860292',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Olsen III',NULL,NULL,'1982-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (144,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',0,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (145,'Individual',NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'Shad','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Shad',NULL,NULL,NULL,NULL,NULL,'3732235082',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'1973-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (146,'Organization',NULL,'United Culture Initiative','United Culture Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'United Culture Initiative',NULL,NULL,NULL,'3',NULL,'1902448514',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,178,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (147,'Individual',NULL,'Toby Samuels III',NULL,NULL,'Toby','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Toby',NULL,NULL,NULL,NULL,NULL,'126496012',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samuels III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (148,'Organization',NULL,'Local Environmental Trust','Local Environmental Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Local Environmental Trust',NULL,NULL,NULL,'3',NULL,'1375669844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (149,'Individual',NULL,'Dr. Nicole Samuels',NULL,NULL,'Nicole','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Nicole',NULL,NULL,NULL,'1',NULL,'3510229898',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Samuels',NULL,1,'1977-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (150,'Individual',NULL,'Mr. Allan Prentice',NULL,NULL,'Allan','H','Prentice',1,0,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'5',NULL,'2464878706',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Prentice',NULL,NULL,'1952-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (151,'Individual',NULL,'Kandace Cruz-Reynolds',NULL,NULL,'Kandace','Z','Cruz-Reynolds',0,0,0,0,1,0,NULL,'Cruz-Reynolds, Kandace',NULL,NULL,NULL,'1',NULL,'2077726550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Cruz-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (152,'Individual',NULL,'Alexia Yadav',NULL,NULL,'Alexia','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'1312807214',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Yadav',NULL,NULL,'1987-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (153,'Individual',NULL,'Dr. Esta Nielsen',NULL,NULL,'Esta','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Esta',NULL,NULL,NULL,'3',NULL,'2804173952',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,NULL,'1938-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (154,'Individual',NULL,'Valene Reynolds',NULL,NULL,'Valene','Z','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Valene',NULL,NULL,NULL,'4',NULL,'2505441873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds',NULL,1,'1974-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (155,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (156,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (157,'Individual',NULL,'Mrs. Megan Jameson',NULL,NULL,'Megan','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Megan',NULL,NULL,NULL,NULL,NULL,'1706411142',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Jameson',NULL,1,'1986-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (158,'Individual',NULL,'Dr. Rosario Robertson II',NULL,NULL,'Rosario','M','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rosario',NULL,NULL,NULL,'2',NULL,'1907398578',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (159,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'4',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (160,'Individual',NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4284286130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (161,'Organization',NULL,'Progressive Music Network','Progressive Music Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Progressive Music Network',NULL,NULL,NULL,'4',NULL,'2461489408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (162,'Individual',NULL,'Dr. Brigette Terry',NULL,NULL,'Brigette','','Terry',0,0,0,0,0,0,NULL,'Terry, Brigette',NULL,NULL,NULL,NULL,NULL,'2789451544',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (163,'Individual',NULL,'Mrs. Kathlyn Jensen-Terry',NULL,NULL,'Kathlyn','','Jensen-Terry',1,0,0,0,1,0,NULL,'Jensen-Terry, Kathlyn',NULL,NULL,NULL,'3',NULL,'4042544597',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen-Terry',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (164,'Individual',NULL,'Dr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Bob',NULL,NULL,NULL,'3',NULL,'912966256',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (165,'Individual',NULL,'Landon Olsen',NULL,NULL,'Landon','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Landon',NULL,NULL,NULL,NULL,NULL,'496664817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (166,'Individual',NULL,'Mr. Clint Terry',NULL,NULL,'Clint','A','Terry',0,0,0,0,0,0,NULL,'Terry, Clint',NULL,NULL,NULL,NULL,NULL,'1893701236',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Terry',NULL,2,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (167,'Individual',NULL,'Dr. Errol Ivanov',NULL,NULL,'Errol','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Errol',NULL,NULL,NULL,NULL,NULL,'3859438937',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Ivanov',NULL,2,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (168,'Individual',NULL,'Dr. Ivey Deforest',NULL,NULL,'Ivey','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ivey',NULL,NULL,NULL,NULL,NULL,'1981648661',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (169,'Individual',NULL,'Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',1,0,0,0,1,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1774529515',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (170,'Individual',NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,'6529586',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattsonm@infomail.net',1,NULL,'Dear wattsonm@infomail.net',1,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (171,'Individual',NULL,'Mrs. Santina Robertson',NULL,NULL,'Santina','X','Robertson',1,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,'5',NULL,'2867920569',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Robertson',NULL,1,'1946-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (172,'Individual',NULL,'Allan Zope Sr.',NULL,NULL,'Allan','T','Zope',0,0,0,0,1,0,NULL,'Zope, Allan',NULL,NULL,NULL,'5',NULL,'891375066',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (173,'Individual',NULL,'Mrs. Sharyn Yadav',NULL,NULL,'Sharyn','V','Yadav',0,0,0,0,0,0,NULL,'Yadav, Sharyn',NULL,NULL,NULL,NULL,NULL,'2905194815',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Yadav',NULL,1,NULL,1,'2023-03-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (174,'Individual',NULL,'Mr. Miguel Zope III',NULL,NULL,'Miguel','','Zope',0,0,0,0,0,0,NULL,'Zope, Miguel',NULL,NULL,NULL,'1',NULL,'1624097300',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Zope III',NULL,2,'1990-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (175,'Individual',NULL,'Betty McReynolds',NULL,NULL,'Betty','J','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Betty',NULL,NULL,NULL,NULL,NULL,'2136104008',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty McReynolds',NULL,NULL,'1982-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (176,'Individual',NULL,'Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'4',NULL,'3509379571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Reynolds',NULL,1,'1964-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (177,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'4',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (178,'Individual',NULL,'Dr. Rodrigo Jameson','United Culture Initiative',NULL,'Rodrigo','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Rodrigo',NULL,NULL,NULL,NULL,NULL,'2012648674',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Jameson',NULL,2,'1954-05-09',0,NULL,NULL,NULL,NULL,NULL,146,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (179,'Individual',NULL,'Dr. Bernadette Jacobs-Prentice',NULL,NULL,'Bernadette','','Jacobs-Prentice',1,0,0,0,1,0,NULL,'Jacobs-Prentice, Bernadette',NULL,NULL,NULL,'5',NULL,'2581639941',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Jacobs-Prentice',NULL,1,'1974-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (180,'Individual',NULL,'Dr. Carlos Samson',NULL,NULL,'Carlos','F','Samson',0,1,0,0,0,0,NULL,'Samson, Carlos',NULL,NULL,NULL,'1',NULL,'3685526914',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (181,'Individual',NULL,'Ms. Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya McReynolds',NULL,1,'1989-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (182,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','Q','Terry',1,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1975-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (183,'Individual',NULL,'Mr. Kenny Ivanov',NULL,NULL,'Kenny','A','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Kenny',NULL,NULL,NULL,NULL,NULL,'4111336352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov',NULL,2,'1980-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (184,'Individual',NULL,'Dr. Teddy Cooper III','Dowlen Software Alliance',NULL,'Teddy','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Teddy',NULL,NULL,NULL,NULL,NULL,'828228061',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Cooper III',NULL,2,'1993-12-20',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (185,'Individual',NULL,'Sherman Robertson III','Global Sustainability Alliance',NULL,'Sherman','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Sherman',NULL,NULL,NULL,'3',NULL,'3479857214',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,59,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (186,'Individual',NULL,'Mr. Kenny Jacobs III',NULL,NULL,'Kenny','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kenny',NULL,NULL,NULL,NULL,NULL,'1044730065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Jacobs III',NULL,NULL,'1944-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (187,'Individual',NULL,'Mr. Bob Terrell','Oregon Development Network',NULL,'Bob','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Terrell',NULL,2,'1985-04-15',0,NULL,NULL,NULL,NULL,NULL,103,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (188,'Individual',NULL,'Mrs. Alexia Díaz',NULL,NULL,'Alexia','Q','Díaz',0,0,0,0,0,0,NULL,'Díaz, Alexia',NULL,NULL,NULL,'1',NULL,'352965868',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Díaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (189,'Individual',NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,'356570904',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (190,'Household',NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,'3738961941',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Reynolds family',5,NULL,'Dear Cruz-Reynolds family',2,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (191,'Household',NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,'1733530397',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jameson family',5,NULL,'Dear Wilson-Jameson family',2,NULL,'Wilson-Jameson family',NULL,NULL,NULL,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (192,'Individual',NULL,'Mrs. Josefa Wilson',NULL,NULL,'Josefa','L','Wilson',0,1,0,0,0,0,NULL,'Wilson, Josefa',NULL,NULL,NULL,'2',NULL,'244303065',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (193,'Individual',NULL,'Alexia Ivanov',NULL,NULL,'Alexia','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Alexia',NULL,NULL,NULL,NULL,NULL,'393680941',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (194,'Individual',NULL,'Mr. Troy Müller',NULL,NULL,'Troy','','Müller',0,0,0,0,0,0,NULL,'Müller, Troy',NULL,NULL,NULL,NULL,NULL,'2080888850',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Müller',NULL,NULL,'1958-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (195,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','G','Terrell',0,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,1,'1995-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (196,'Individual',NULL,'Barry Terrell',NULL,NULL,'Barry','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Barry',NULL,NULL,NULL,'5',NULL,'1436486502',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (197,'Individual',NULL,'Ray Grant Jr.','Rural Health Initiative',NULL,'Ray','X','Grant',0,1,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'3',NULL,'2294694701',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,139,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (198,'Individual',NULL,'Dr. Brent Reynolds Sr.',NULL,NULL,'Brent','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Brent',NULL,NULL,NULL,NULL,NULL,'547975558',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Reynolds Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (199,'Individual',NULL,'Dr. Magan Müller',NULL,NULL,'Magan','O','Müller',0,0,0,0,0,0,NULL,'Müller, Magan',NULL,NULL,NULL,'3',NULL,'681120033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (200,'Individual',NULL,'Lashawnda Deforest-Ivanov',NULL,NULL,'Lashawnda','A','Deforest-Ivanov',0,0,0,0,0,0,NULL,'Deforest-Ivanov, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1651460725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Ivanov',NULL,1,'1972-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (201,'Individual',NULL,'Beula Nielsen',NULL,NULL,'Beula','R','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Beula',NULL,NULL,NULL,'1',NULL,'1989597446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Nielsen',NULL,1,'1980-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','2553ad08256bebb3da7d27de1801f4e3',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both');
+ (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-12-17 20:11:28','Both'),
+ (2,'Household',NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,NULL,'900322331',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller-Díaz family',5,NULL,'Dear Müller-Díaz family',2,NULL,'Müller-Díaz family',NULL,NULL,NULL,0,NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (3,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (4,'Individual',NULL,'Mr. Norris Terrell Jr.',NULL,NULL,'Norris','X','Terrell',1,0,0,0,0,0,NULL,'Terrell, Norris',NULL,NULL,NULL,NULL,NULL,'1035663398',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Terrell Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (5,'Individual',NULL,'Mr. Winford Terrell III',NULL,NULL,'Winford','I','Terrell',1,0,0,0,0,0,NULL,'Terrell, Winford',NULL,NULL,NULL,NULL,NULL,'152025201',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Terrell III',NULL,2,'1964-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (6,'Individual',NULL,'Mr. Bryon Dimitrov',NULL,NULL,'Bryon','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Bryon',NULL,NULL,NULL,NULL,NULL,'3819077271',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Mr. Bryon Dimitrov',NULL,2,'1970-12-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (7,'Individual',NULL,'Mr. Ashley Dimitrov-Ivanov',NULL,NULL,'Ashley','','Dimitrov-Ivanov',0,0,0,0,0,0,NULL,'Dimitrov-Ivanov, Ashley',NULL,NULL,NULL,NULL,NULL,'3849146505',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Dimitrov-Ivanov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (8,'Individual',NULL,'Brittney Parker-Roberts','Creative Peace Network',NULL,'Brittney','','Parker-Roberts',1,0,0,0,0,0,NULL,'Parker-Roberts, Brittney',NULL,NULL,NULL,'1',NULL,'450084777',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Parker-Roberts',NULL,1,'1982-11-06',0,NULL,NULL,NULL,NULL,NULL,115,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (9,'Organization',NULL,'United Technology Center','United Technology Center',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'United Technology Center',NULL,NULL,NULL,'2',NULL,'94652750',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Technology Center',NULL,NULL,NULL,0,NULL,NULL,146,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (10,'Individual',NULL,'Lincoln Jameson',NULL,NULL,'Lincoln','','Jameson',0,1,0,0,0,0,NULL,'Jameson, Lincoln',NULL,NULL,NULL,'5',NULL,'2753899992',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jameson',NULL,2,'1963-07-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (11,'Individual',NULL,'Carlos McReynolds III',NULL,NULL,'Carlos','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Carlos',NULL,NULL,NULL,'5',NULL,'1986804051',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos McReynolds III',NULL,2,'2022-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (12,'Individual',NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,'2',NULL,'1984904105',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barkleys23@airmail.co.pl',1,NULL,'Dear barkleys23@airmail.co.pl',1,NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (13,'Individual',NULL,'Ms. Elina Blackwell',NULL,NULL,'Elina','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elina',NULL,NULL,NULL,NULL,NULL,'215876886',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (14,'Individual',NULL,'Kandace Blackwell',NULL,NULL,'Kandace','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Kandace',NULL,NULL,NULL,NULL,NULL,'1864345149',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Blackwell',NULL,1,'1992-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (15,'Organization',NULL,'Guilderland Center Family Association','Guilderland Center Family Association',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Guilderland Center Family Association',NULL,NULL,NULL,'2',NULL,'338343310',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Guilderland Center Family Association',NULL,NULL,NULL,0,NULL,NULL,32,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (16,'Individual',NULL,'Sanford Lee',NULL,NULL,'Sanford','C','Lee',0,0,0,0,0,0,NULL,'Lee, Sanford',NULL,NULL,NULL,NULL,NULL,'952477375',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Lee',NULL,2,'1945-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (17,'Organization',NULL,'El Camino Action Services','El Camino Action Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'El Camino Action Services',NULL,NULL,NULL,'4',NULL,'1062106639',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'El Camino Action Services',NULL,NULL,NULL,0,NULL,NULL,77,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (18,'Organization',NULL,'Creative Sports Fellowship','Creative Sports Fellowship',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Creative Sports Fellowship',NULL,NULL,NULL,'3',NULL,'2285812137',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Sports Fellowship',NULL,NULL,NULL,0,NULL,NULL,66,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (19,'Individual',NULL,'Claudio Yadav',NULL,NULL,'Claudio','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Claudio',NULL,NULL,NULL,NULL,NULL,'2212747069',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Yadav',NULL,2,'1955-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (20,'Individual',NULL,'Brent Jones III','New York Education Collective',NULL,'Brent','','Jones',0,0,0,0,0,0,NULL,'Jones, Brent',NULL,NULL,NULL,'4',NULL,'2534822524',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Jones III',NULL,2,'2020-04-01',0,NULL,NULL,NULL,NULL,NULL,46,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (21,'Individual',NULL,'Iris Jensen',NULL,NULL,'Iris','','Jensen',1,0,0,0,0,0,NULL,'Jensen, Iris',NULL,NULL,NULL,'5',NULL,'3094691992',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (22,'Individual',NULL,'Truman Wattson',NULL,NULL,'Truman','W','Wattson',0,0,0,0,0,0,NULL,'Wattson, Truman',NULL,NULL,NULL,'4',NULL,'3799954079',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Wattson',NULL,2,'1962-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (23,'Individual',NULL,'Kiara Terry',NULL,NULL,'Kiara','','Terry',1,0,0,0,1,0,NULL,'Terry, Kiara',NULL,NULL,NULL,'1',NULL,'4073244041',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Terry',NULL,NULL,'1978-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (24,'Individual',NULL,'Herminia McReynolds',NULL,NULL,'Herminia','S','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Herminia',NULL,NULL,NULL,'5',NULL,'2752519462',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia McReynolds',NULL,1,'1986-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (25,'Household',NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,'1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (26,'Organization',NULL,'United Family Trust','United Family Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'United Family Trust',NULL,NULL,NULL,'1',NULL,'1690052502',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Family Trust',NULL,NULL,NULL,0,NULL,NULL,145,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (27,'Individual',NULL,'santinac@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'santinac@mymail.info',NULL,NULL,NULL,'5',NULL,'908074764',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear santinac@mymail.info',1,NULL,'Dear santinac@mymail.info',1,NULL,'santinac@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (28,'Individual',NULL,'Dr. Russell Terrell',NULL,NULL,'Russell','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Russell',NULL,NULL,NULL,NULL,NULL,'127505299',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (29,'Individual',NULL,'Mr. Scott Wilson',NULL,NULL,'Scott','','Wilson',1,1,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,'2',NULL,'3378305352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Mr. Scott Wilson',NULL,2,'1992-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (30,'Individual',NULL,'Mrs. Felisha Terry',NULL,NULL,'Felisha','','Terry',0,1,0,0,0,0,NULL,'Terry, Felisha',NULL,NULL,NULL,'4',NULL,'2704836577',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Terry',NULL,1,'1935-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (31,'Individual',NULL,'Lawerence Ivanov Sr.',NULL,NULL,'Lawerence','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lawerence',NULL,NULL,NULL,'2',NULL,'268329993',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Ivanov Sr.',NULL,2,'2004-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (32,'Individual',NULL,'sivanov@testing.org','Guilderland Center Family Association',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'sivanov@testing.org',NULL,NULL,NULL,'2',NULL,'1207816225',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear sivanov@testing.org',1,NULL,'Dear sivanov@testing.org',1,NULL,'sivanov@testing.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,15,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (33,'Individual',NULL,'wattson.justina@example.biz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'wattson.justina@example.biz',NULL,NULL,NULL,NULL,NULL,'2165606156',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear wattson.justina@example.biz',1,NULL,'Dear wattson.justina@example.biz',1,NULL,'wattson.justina@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (34,'Individual',NULL,'Ray Grant',NULL,NULL,'Ray','','Grant',0,0,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'2',NULL,'2294694701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant',NULL,NULL,'1950-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (35,'Organization',NULL,'Florida Empowerment Fellowship','Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,NULL,'3420668028',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Florida Empowerment Fellowship',NULL,NULL,NULL,0,NULL,NULL,152,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (36,'Individual',NULL,'Dr. Roland Blackwell III',NULL,NULL,'Roland','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Roland',NULL,NULL,NULL,'3',NULL,'2389492395',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Blackwell III',NULL,NULL,'1984-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (37,'Individual',NULL,'Herminia Deforest',NULL,NULL,'Herminia','F','Deforest',0,0,0,0,0,0,NULL,'Deforest, Herminia',NULL,NULL,NULL,NULL,NULL,'1898104374',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Deforest',NULL,NULL,'1943-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (38,'Individual',NULL,'Troy Smith',NULL,NULL,'Troy','R','Smith',1,0,0,0,0,0,NULL,'Smith, Troy',NULL,NULL,NULL,'4',NULL,'2806538092',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Smith',NULL,2,'1970-08-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (39,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (40,'Individual',NULL,'Dr. Shauna Lee',NULL,NULL,'Shauna','F','Lee',0,0,0,0,0,0,NULL,'Lee, Shauna',NULL,NULL,NULL,'2',NULL,'3300398193',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Dr. Shauna Lee',NULL,1,'1980-12-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (41,'Individual',NULL,'Iris Nielsen','Pine Food Partners',NULL,'Iris','F','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Iris',NULL,NULL,NULL,NULL,NULL,'3773138011',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,197,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (42,'Individual',NULL,'Dr. Barry Jones Jr.',NULL,NULL,'Barry','','Jones',0,1,0,0,0,0,NULL,'Jones, Barry',NULL,NULL,NULL,'3',NULL,'1410678296',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Jones Jr.',NULL,2,'1970-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (43,'Individual',NULL,'Brigette Roberts',NULL,NULL,'Brigette','B','Roberts',0,0,0,0,0,0,NULL,'Roberts, Brigette',NULL,NULL,NULL,NULL,NULL,'1915771894',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (44,'Individual',NULL,'Mr. Lincoln Prentice',NULL,NULL,'Lincoln','','Prentice',1,0,0,0,1,0,NULL,'Prentice, Lincoln',NULL,NULL,NULL,NULL,NULL,'3258245727',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (45,'Individual',NULL,'scottolsen@lol.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'scottolsen@lol.com',NULL,NULL,NULL,NULL,NULL,'2001168533',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear scottolsen@lol.com',1,NULL,'Dear scottolsen@lol.com',1,NULL,'scottolsen@lol.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (46,'Organization',NULL,'New York Education Collective','New York Education Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'New York Education Collective',NULL,NULL,NULL,NULL,NULL,'1984282827',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Education Collective',NULL,NULL,NULL,0,NULL,NULL,20,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (47,'Organization',NULL,'Tipton Development Trust','Tipton Development Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Tipton Development Trust',NULL,NULL,NULL,'5',NULL,'3144310708',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Tipton Development Trust',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (48,'Individual',NULL,'Troy Robertson II',NULL,NULL,'Troy','Q','Robertson',0,1,0,0,1,0,NULL,'Robertson, Troy',NULL,NULL,NULL,'2',NULL,'3729972619',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Robertson II',NULL,2,'1994-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (49,'Individual',NULL,'Iris Lee',NULL,NULL,'Iris','','Lee',0,0,0,0,0,0,NULL,'Lee, Iris',NULL,NULL,NULL,'3',NULL,'3806304392',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (50,'Individual',NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,'189211021',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear kandacez51@mymail.co.uk',1,NULL,'Dear kandacez51@mymail.co.uk',1,NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (51,'Organization',NULL,'Minneapolis Culture Systems','Minneapolis Culture Systems',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Minneapolis Culture Systems',NULL,NULL,NULL,'5',NULL,'3675234497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Minneapolis Culture Systems',NULL,NULL,NULL,0,NULL,NULL,150,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (52,'Individual',NULL,'Kacey Ivanov',NULL,NULL,'Kacey','D','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Kacey',NULL,NULL,NULL,NULL,NULL,'2436947567',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Ivanov',NULL,1,'2006-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (54,'Individual',NULL,'Bob Roberts',NULL,NULL,'Bob','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Bob',NULL,NULL,NULL,'3',NULL,'1182740119',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Roberts',NULL,NULL,'1979-10-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (55,'Individual',NULL,'Erik Wattson III','Harvey Agriculture Fellowship',NULL,'Erik','T','Wattson',0,0,0,0,0,0,NULL,'Wattson, Erik',NULL,NULL,NULL,'2',NULL,'1174454182',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Wattson III',NULL,NULL,'2013-10-13',0,NULL,NULL,NULL,NULL,NULL,162,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (56,'Household',NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,'845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (57,'Individual',NULL,'Mrs. Santina Patel',NULL,NULL,'Santina','I','Patel',0,0,0,0,0,0,NULL,'Patel, Santina',NULL,NULL,NULL,NULL,NULL,'3765825557',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Patel',NULL,1,'1937-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (58,'Individual',NULL,'Dr. Nicole Dimitrov',NULL,NULL,'Nicole','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Nicole',NULL,NULL,NULL,'5',NULL,'3962727762',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (59,'Individual',NULL,'Omar Cooper',NULL,NULL,'Omar','Q','Cooper',0,0,0,0,0,0,NULL,'Cooper, Omar',NULL,NULL,NULL,NULL,NULL,'1015907011',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Cooper',NULL,NULL,'1984-03-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (60,'Organization',NULL,'Nebraska Arts Alliance','Nebraska Arts Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nebraska Arts Alliance',NULL,NULL,NULL,NULL,NULL,'1293132894',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Nebraska Arts Alliance',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (61,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (62,'Individual',NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,NULL,NULL,'397215980',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear ly.ivanov37@fishmail.net',1,NULL,'Dear ly.ivanov37@fishmail.net',1,NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (63,'Individual',NULL,'Megan Terry',NULL,NULL,'Megan','K','Terry',0,0,0,0,0,0,NULL,'Terry, Megan',NULL,NULL,NULL,NULL,NULL,'3263409952',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (64,'Organization',NULL,'College Music Trust','College Music Trust',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'College Music Trust',NULL,NULL,NULL,'1',NULL,'1964637119',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Music Trust',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (65,'Individual',NULL,'Elbert Jones II',NULL,NULL,'Elbert','P','Jones',0,0,0,0,0,0,NULL,'Jones, Elbert',NULL,NULL,NULL,'5',NULL,'3645053032',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jones II',NULL,2,'1948-06-24',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (66,'Individual',NULL,'Mr. Maria Patel III','Creative Sports Fellowship',NULL,'Maria','','Patel',1,1,0,0,0,0,NULL,'Patel, Maria',NULL,NULL,NULL,NULL,NULL,'1297212984',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Patel III',NULL,2,'1939-10-28',0,NULL,NULL,NULL,NULL,NULL,18,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (67,'Individual',NULL,'Mrs. Lashawnda Cruz',NULL,NULL,'Lashawnda','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Lashawnda',NULL,NULL,NULL,'5',NULL,'2604537313',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Cruz',NULL,NULL,'2000-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (68,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (69,'Individual',NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,NULL,NULL,'1659650771',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrell.russell@testing.co.nz',1,NULL,'Dear terrell.russell@testing.co.nz',1,NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (70,'Individual',NULL,'Sherman Cruz Sr.',NULL,NULL,'Sherman','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Sherman',NULL,NULL,NULL,'5',NULL,'3295870064',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Cruz Sr.',NULL,2,NULL,1,'2023-07-23',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (71,'Organization',NULL,'Oregon Development Association','Oregon Development Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Oregon Development Association',NULL,NULL,NULL,'1',NULL,'3443119254',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Association',NULL,NULL,NULL,0,NULL,NULL,200,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (72,'Individual',NULL,'Mei Nielsen',NULL,NULL,'Mei','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Mei',NULL,NULL,NULL,NULL,NULL,'1032657173',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Nielsen',NULL,1,'1992-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (73,'Individual',NULL,'Mrs. Elizabeth Díaz',NULL,NULL,'Elizabeth','J','Díaz',0,0,0,0,0,0,NULL,'Díaz, Elizabeth',NULL,NULL,NULL,'1',NULL,'1884711539',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Díaz',NULL,NULL,'1993-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (74,'Individual',NULL,'Russell Olsen',NULL,NULL,'Russell','M','Olsen',1,0,0,0,1,0,NULL,'Olsen, Russell',NULL,NULL,NULL,'1',NULL,'2568545963',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Olsen',NULL,2,'1995-03-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (75,'Individual',NULL,'Dr. Magan Wilson-Grant',NULL,NULL,'Magan','D','Wilson-Grant',0,1,0,0,0,0,NULL,'Wilson-Grant, Magan',NULL,NULL,NULL,NULL,NULL,'3008529488',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Wilson-Grant',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (76,'Individual',NULL,'Mrs. Felisha Lee',NULL,NULL,'Felisha','','Lee',0,0,0,0,0,0,NULL,'Lee, Felisha',NULL,NULL,NULL,'1',NULL,'1634353334',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Lee',NULL,1,'1986-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (77,'Individual',NULL,'robertse@testing.info','El Camino Action Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'robertse@testing.info',NULL,NULL,NULL,'4',NULL,'4169959986',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear robertse@testing.info',1,NULL,'Dear robertse@testing.info',1,NULL,'robertse@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,17,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (78,'Organization',NULL,'Sierra Peace Fellowship','Sierra Peace Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Sierra Peace Fellowship',NULL,NULL,NULL,NULL,NULL,'658617080',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Peace Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (79,'Individual',NULL,'Delana Jones',NULL,NULL,'Delana','N','Jones',0,1,0,0,0,0,NULL,'Jones, Delana',NULL,NULL,NULL,NULL,NULL,'1936969701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (80,'Individual',NULL,'Mr. Billy McReynolds',NULL,NULL,'Billy','B','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Billy',NULL,NULL,NULL,NULL,NULL,'2779416929',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (81,'Individual',NULL,'Dr. Jacob Blackwell Sr.',NULL,NULL,'Jacob','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Jacob',NULL,NULL,NULL,'2',NULL,'4049710903',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Blackwell Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (82,'Individual',NULL,'Dr. Kacey Blackwell',NULL,NULL,'Kacey','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Kacey',NULL,NULL,NULL,NULL,NULL,'3163269089',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Dr. Kacey Blackwell',NULL,1,'1935-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (83,'Individual',NULL,'Bob Ivanov',NULL,NULL,'Bob','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Bob',NULL,NULL,NULL,'2',NULL,'2246956398',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (84,'Individual',NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,'1',NULL,'1361124795',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear wagner-smithr@testmail.net',1,NULL,'Dear wagner-smithr@testmail.net',1,NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (85,'Individual',NULL,'Lou Blackwell',NULL,NULL,'Lou','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Lou',NULL,NULL,NULL,NULL,NULL,'2525168848',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (86,'Individual',NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,'3847604605',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bryons@fakemail.co.in',1,NULL,'Dear bryons@fakemail.co.in',1,NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (87,'Individual',NULL,'Santina Nielsen',NULL,NULL,'Santina','Y','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Santina',NULL,NULL,NULL,'4',NULL,'4294042447',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Nielsen',NULL,1,'1989-03-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (88,'Individual',NULL,'Jacob Terry',NULL,NULL,'Jacob','P','Terry',0,1,0,0,0,0,NULL,'Terry, Jacob',NULL,NULL,NULL,'4',NULL,'1878863134',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Terry',NULL,2,'1977-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (89,'Individual',NULL,'Brittney Roberts',NULL,NULL,'Brittney','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Brittney',NULL,NULL,NULL,'3',NULL,'3955023783',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Roberts',NULL,1,'2010-07-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (90,'Individual',NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,'3',NULL,'3514749205',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jones.junko@lol.co.pl',1,NULL,'Dear jones.junko@lol.co.pl',1,NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (91,'Individual',NULL,'Claudio Ivanov',NULL,NULL,'Claudio','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Claudio',NULL,NULL,NULL,'2',NULL,'447991366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Ivanov',NULL,NULL,'1976-12-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (92,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,'5',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (93,'Individual',NULL,'Claudio Müller Sr.',NULL,NULL,'Claudio','Q','Müller',0,1,0,0,0,0,NULL,'Müller, Claudio',NULL,NULL,NULL,NULL,NULL,'2143910765',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Müller Sr.',NULL,NULL,'1974-05-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (94,'Individual',NULL,'Dr. Rosario Bachman',NULL,NULL,'Rosario','','Bachman',0,0,0,0,1,0,NULL,'Bachman, Rosario',NULL,NULL,NULL,NULL,NULL,'563214667',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Bachman',NULL,NULL,'1970-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (95,'Individual',NULL,'Princess Robertson',NULL,NULL,'Princess','I','Robertson',0,0,0,0,0,0,NULL,'Robertson, Princess',NULL,NULL,NULL,'3',NULL,'1575581088',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (96,'Individual',NULL,'Dr. Rebekah Blackwell',NULL,NULL,'Rebekah','F','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Rebekah',NULL,NULL,NULL,'5',NULL,'982789307',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Dr. Rebekah Blackwell',NULL,1,'1942-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (97,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (98,'Individual',NULL,'Delana Blackwell',NULL,NULL,'Delana','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Delana',NULL,NULL,NULL,NULL,NULL,'1631178499',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Blackwell',NULL,1,'2007-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (99,'Individual',NULL,'Allen Robertson',NULL,NULL,'Allen','N','Robertson',0,0,0,0,1,0,NULL,'Robertson, Allen',NULL,NULL,NULL,NULL,NULL,'4266356989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Robertson',NULL,2,'1948-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (100,'Individual',NULL,'Magan Łąchowski',NULL,NULL,'Magan','','Łąchowski',0,1,0,0,0,0,NULL,'Łąchowski, Magan',NULL,NULL,NULL,'1',NULL,'3822861759',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (101,'Individual',NULL,'Ms. Alida Roberts',NULL,NULL,'Alida','','Roberts',1,1,0,0,0,0,NULL,'Roberts, Alida',NULL,NULL,NULL,'5',NULL,'3245047840',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Ms. Alida Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (102,'Individual',NULL,'Dr. Craig Blackwell',NULL,NULL,'Craig','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Craig',NULL,NULL,NULL,'2',NULL,'2607395408',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Dr. Craig Blackwell',NULL,2,'1999-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (103,'Individual',NULL,'Maxwell Grant Sr.',NULL,NULL,'Maxwell','','Grant',0,1,0,0,0,0,NULL,'Grant, Maxwell',NULL,NULL,NULL,'3',NULL,'3863854365',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Grant Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (104,'Individual',NULL,'Dr. Truman Jones II',NULL,NULL,'Truman','','Jones',0,0,0,0,0,0,NULL,'Jones, Truman',NULL,NULL,NULL,'4',NULL,'2437506755',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Dr. Truman Jones II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (105,'Individual',NULL,'brzczysawb@example.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'brzczysawb@example.biz',NULL,NULL,NULL,NULL,NULL,'1399890309',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear brzczysawb@example.biz',1,NULL,'Dear brzczysawb@example.biz',1,NULL,'brzczysawb@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (106,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,'4',NULL,'3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (107,'Individual',NULL,'Elizabeth Patel',NULL,NULL,'Elizabeth','','Patel',0,0,0,0,0,0,NULL,'Patel, Elizabeth',NULL,NULL,NULL,NULL,NULL,'87465579',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Patel',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (108,'Individual',NULL,'Dr. Laree Lee',NULL,NULL,'Laree','U','Lee',0,0,0,0,1,0,NULL,'Lee, Laree',NULL,NULL,NULL,'3',NULL,'2331779223',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (109,'Individual',NULL,'erikmller-daz@fakemail.biz','Nebraska Arts Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'erikmller-daz@fakemail.biz',NULL,NULL,NULL,NULL,NULL,'1292151553',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear erikmller-daz@fakemail.biz',1,NULL,'Dear erikmller-daz@fakemail.biz',1,NULL,'erikmller-daz@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,60,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (110,'Individual',NULL,'Clint Díaz',NULL,NULL,'Clint','','Díaz',0,0,0,0,1,0,NULL,'Díaz, Clint',NULL,NULL,NULL,'2',NULL,'3503793680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Díaz',NULL,2,'1986-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (111,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (112,'Individual',NULL,'Brigette Prentice',NULL,NULL,'Brigette','Y','Prentice',0,0,0,0,0,0,NULL,'Prentice, Brigette',NULL,NULL,NULL,NULL,NULL,'1103079124',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Prentice',NULL,1,'1947-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (113,'Individual',NULL,'Ray Roberts II',NULL,NULL,'Ray','Q','Roberts',1,0,0,0,0,0,NULL,'Roberts, Ray',NULL,NULL,NULL,NULL,NULL,'1321167237',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Roberts II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (114,'Individual',NULL,'Dr. Bernadette Terrell','Lincoln Poetry Association',NULL,'Bernadette','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Bernadette',NULL,NULL,NULL,'2',NULL,'1643953272',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Terrell',NULL,NULL,'1977-11-28',0,NULL,NULL,NULL,NULL,NULL,201,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (115,'Organization',NULL,'Creative Peace Network','Creative Peace Network',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Creative Peace Network',NULL,NULL,NULL,'2',NULL,'6924904',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Network',NULL,NULL,NULL,0,NULL,NULL,8,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (116,'Individual',NULL,'Princess Parker',NULL,NULL,'Princess','','Parker',0,0,0,0,0,0,NULL,'Parker, Princess',NULL,NULL,NULL,NULL,NULL,'1904893975',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Parker',NULL,NULL,'1969-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (117,'Individual',NULL,'Claudio Yadav',NULL,NULL,'Claudio','H','Yadav',0,0,0,0,0,0,NULL,'Yadav, Claudio',NULL,NULL,NULL,'4',NULL,'2212747069',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (118,'Organization',NULL,'Rural Development Network','Rural Development Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Development Network',NULL,NULL,NULL,NULL,NULL,'1539214508',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Development Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (119,'Individual',NULL,'Eleonor Wagner-Smith',NULL,NULL,'Eleonor','','Wagner-Smith',0,0,0,0,0,0,NULL,'Wagner-Smith, Eleonor',NULL,NULL,NULL,'5',NULL,'1511260799',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Wagner-Smith',NULL,NULL,'2008-06-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (120,'Individual',NULL,'Ashley Barkley',NULL,NULL,'Ashley','E','Barkley',0,0,0,0,0,0,NULL,'Barkley, Ashley',NULL,NULL,NULL,NULL,NULL,'2198515289',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Barkley',NULL,1,'1940-12-26',1,'2023-03-17',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (121,'Organization',NULL,'Urban Family Center','Urban Family Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Urban Family Center',NULL,NULL,NULL,NULL,NULL,'216761887',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Family Center',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (122,'Individual',NULL,'Winford Zope',NULL,NULL,'Winford','B','Zope',0,1,0,0,0,0,NULL,'Zope, Winford',NULL,NULL,NULL,'1',NULL,'3617829114',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (123,'Organization',NULL,'States Wellness Partnership','States Wellness Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'States Wellness Partnership',NULL,NULL,NULL,'5',NULL,'3510888814',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Wellness Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (124,'Individual',NULL,'Mrs. Carylon Prentice',NULL,NULL,'Carylon','K','Prentice',0,0,0,0,0,0,NULL,'Prentice, Carylon',NULL,NULL,NULL,'4',NULL,'1810903097',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Mrs. Carylon Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (125,'Household',NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Nielsen family',NULL,NULL,NULL,'5',NULL,'766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (126,'Individual',NULL,'Maxwell Dimitrov',NULL,NULL,'Maxwell','I','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Maxwell',NULL,NULL,NULL,'5',NULL,'2461663646',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Dimitrov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (127,'Individual',NULL,'Dr. Jackson Dimitrov',NULL,NULL,'Jackson','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Jackson',NULL,NULL,NULL,'1',NULL,'2271911049',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Dimitrov',NULL,2,'1983-12-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (128,'Individual',NULL,'Rolando Roberts Jr.',NULL,NULL,'Rolando','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Rolando',NULL,NULL,NULL,'2',NULL,'3250154238',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Roberts Jr.',NULL,NULL,'1957-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (129,'Individual',NULL,'Maxwell Terrell',NULL,NULL,'Maxwell','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Maxwell',NULL,NULL,NULL,'4',NULL,'4143618431',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (130,'Individual',NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,NULL,NULL,'2937065213',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear ivanov.troy62@lol.co.uk',1,NULL,'Dear ivanov.troy62@lol.co.uk',1,NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (131,'Individual',NULL,'Dr. Jay Zope',NULL,NULL,'Jay','N','Zope',0,0,0,0,1,0,NULL,'Zope, Jay',NULL,NULL,NULL,'2',NULL,'819910080',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Zope',NULL,2,'1982-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (132,'Individual',NULL,'Dr. Junko Lee',NULL,NULL,'Junko','','Lee',0,1,0,0,1,0,NULL,'Lee, Junko',NULL,NULL,NULL,'5',NULL,'2980940667',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (133,'Individual',NULL,'Dr. Clint Cooper Sr.',NULL,NULL,'Clint','O','Cooper',0,0,0,0,0,0,NULL,'Cooper, Clint',NULL,NULL,NULL,'4',NULL,'303284897',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint Cooper Sr.',NULL,2,'1978-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (134,'Individual',NULL,'Brittney Terrell',NULL,NULL,'Brittney','C','Terrell',0,0,0,0,0,0,NULL,'Terrell, Brittney',NULL,NULL,NULL,NULL,NULL,'21549293',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Terrell',NULL,1,'1978-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (135,'Individual',NULL,'Elina Grant',NULL,NULL,'Elina','','Grant',1,1,0,0,0,0,NULL,'Grant, Elina',NULL,NULL,NULL,'4',NULL,'1935800100',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Grant',NULL,1,'1961-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (136,'Individual',NULL,'Dr. Mei Jensen',NULL,NULL,'Mei','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Mei',NULL,NULL,NULL,NULL,NULL,'3305491240',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Jensen',NULL,1,'1985-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (137,'Individual',NULL,'Laree Cooper',NULL,NULL,'Laree','V','Cooper',0,0,0,0,0,0,NULL,'Cooper, Laree',NULL,NULL,NULL,'2',NULL,'4213061637',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (138,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Zope family',NULL,NULL,NULL,'2',NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (139,'Individual',NULL,'Clint Blackwell',NULL,NULL,'Clint','S','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Clint',NULL,NULL,NULL,'3',NULL,'3997373533',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (140,'Individual',NULL,'Arlyne Grant',NULL,NULL,'Arlyne','U','Grant',0,0,0,0,0,0,NULL,'Grant, Arlyne',NULL,NULL,NULL,NULL,NULL,'1053085057',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Grant',NULL,1,'1994-07-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (141,'Individual',NULL,'Mr. Billy Grant Sr.',NULL,NULL,'Billy','B','Grant',0,0,0,0,1,0,NULL,'Grant, Billy',NULL,NULL,NULL,'1',NULL,'3507413817',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Grant Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (142,'Individual',NULL,'Lashawnda Prentice',NULL,NULL,'Lashawnda','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,'5',NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,1,'1944-10-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (143,'Individual',NULL,'Norris Zope III',NULL,NULL,'Norris','F','Zope',0,0,0,0,0,0,NULL,'Zope, Norris',NULL,NULL,NULL,NULL,NULL,'707573451',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Zope III',NULL,2,'1980-08-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (144,'Individual',NULL,'Bob Blackwell Jr.',NULL,NULL,'Bob','G','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Bob',NULL,NULL,NULL,NULL,NULL,'533638173',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Blackwell Jr.',NULL,NULL,'2012-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (145,'Individual',NULL,'Valene Wagner-Lee','United Family Trust',NULL,'Valene','','Wagner-Lee',1,0,0,0,0,0,NULL,'Wagner-Lee, Valene',NULL,NULL,NULL,NULL,NULL,'3257288206',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Wagner-Lee',NULL,NULL,'1967-01-18',0,NULL,NULL,NULL,NULL,NULL,26,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (146,'Individual',NULL,'Dr. Brent Łąchowski','United Technology Center',NULL,'Brent','','Łąchowski',1,1,0,0,0,0,NULL,'Łąchowski, Brent',NULL,NULL,NULL,'4',NULL,'1516135364',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Łąchowski',NULL,2,'1993-11-21',0,NULL,NULL,NULL,NULL,NULL,9,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (147,'Individual',NULL,'Dr. Jed Bachman Sr.',NULL,NULL,'Jed','A','Bachman',1,0,0,0,0,0,NULL,'Bachman, Jed',NULL,NULL,NULL,'3',NULL,'876018088',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Bachman Sr.',NULL,2,'1944-01-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (148,'Individual',NULL,'Dr. Winford Terrell Jr.',NULL,NULL,'Winford','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Winford',NULL,NULL,NULL,'2',NULL,'152025201',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Terrell Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (149,'Individual',NULL,'Truman Zope',NULL,NULL,'Truman','','Zope',0,0,0,0,0,0,NULL,'Zope, Truman',NULL,NULL,NULL,NULL,NULL,'828636704',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Zope',NULL,2,'1937-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (150,'Individual',NULL,'Brigette Zope','Minneapolis Culture Systems',NULL,'Brigette','M','Zope',0,0,0,0,0,0,NULL,'Zope, Brigette',NULL,NULL,NULL,'5',NULL,'3799032348',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Zope',NULL,1,'1998-12-07',0,NULL,NULL,NULL,NULL,NULL,51,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (151,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'3',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (152,'Individual',NULL,'terrelle@infomail.com','Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'terrelle@infomail.com',NULL,NULL,NULL,'3',NULL,'840866343',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear terrelle@infomail.com',1,NULL,'Dear terrelle@infomail.com',1,NULL,'terrelle@infomail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,35,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (153,'Individual',NULL,'Dr. Princess Łąchowski',NULL,NULL,'Princess','C','Łąchowski',1,0,0,0,0,0,NULL,'Łąchowski, Princess',NULL,NULL,NULL,'4',NULL,'2893297968',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Łąchowski',NULL,NULL,'1976-03-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (154,'Individual',NULL,'Jed Roberts',NULL,NULL,'Jed','','Roberts',1,0,0,0,0,0,NULL,'Roberts, Jed',NULL,NULL,NULL,NULL,NULL,'1541419664',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Roberts',NULL,2,'2000-06-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (155,'Individual',NULL,'Jina Roberts-McReynolds',NULL,NULL,'Jina','R','Roberts-McReynolds',0,1,0,0,0,0,NULL,'Roberts-McReynolds, Jina',NULL,NULL,NULL,'5',NULL,'2439939152',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Roberts-McReynolds',NULL,1,'1966-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (156,'Individual',NULL,'Mr. Norris Blackwell Jr.',NULL,NULL,'Norris','I','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Norris',NULL,NULL,NULL,'1',NULL,'2555129550',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Blackwell Jr.',NULL,NULL,'1999-10-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (157,'Individual',NULL,'Sherman Terrell Sr.',NULL,NULL,'Sherman','D','Terrell',1,0,0,0,0,0,NULL,'Terrell, Sherman',NULL,NULL,NULL,NULL,NULL,'470401788',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Terrell Sr.',NULL,2,'1980-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (158,'Individual',NULL,'Ms. Santina Wattson',NULL,NULL,'Santina','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Santina',NULL,NULL,NULL,NULL,NULL,'4231196577',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Wattson',NULL,NULL,'1950-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (159,'Individual',NULL,'Dr. Andrew Prentice Sr.',NULL,NULL,'Andrew','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Andrew',NULL,NULL,NULL,'5',NULL,'3759820671',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Prentice Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (160,'Individual',NULL,'Toby Nielsen Jr.',NULL,NULL,'Toby','R','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Toby',NULL,NULL,NULL,NULL,NULL,'1430850543',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Nielsen Jr.',NULL,2,'1942-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (161,'Individual',NULL,'Troy Łąchowski',NULL,NULL,'Troy','T','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Troy',NULL,NULL,NULL,NULL,NULL,'1486408354',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Łąchowski',NULL,2,'1988-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (162,'Organization',NULL,'Harvey Agriculture Fellowship','Harvey Agriculture Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Harvey Agriculture Fellowship',NULL,NULL,NULL,NULL,NULL,'606107641',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Harvey Agriculture Fellowship',NULL,NULL,NULL,0,NULL,NULL,55,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (163,'Individual',NULL,'Kathleen Müller-Díaz',NULL,NULL,'Kathleen','G','Müller-Díaz',0,0,0,0,0,0,NULL,'Müller-Díaz, Kathleen',NULL,NULL,NULL,'4',NULL,'1818085974',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Müller-Díaz',NULL,1,'2007-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (164,'Individual',NULL,'Dr. Miguel González',NULL,NULL,'Miguel','','González',0,0,0,0,0,0,NULL,'González, Miguel',NULL,NULL,NULL,NULL,NULL,'833815017',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (165,'Individual',NULL,'Mr. Irvin Terry-Nielsen',NULL,NULL,'Irvin','M','Terry-Nielsen',0,1,0,0,0,0,NULL,'Terry-Nielsen, Irvin',NULL,NULL,NULL,NULL,NULL,'962565424',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin Terry-Nielsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (166,'Individual',NULL,'Carylon Terrell',NULL,NULL,'Carylon','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Carylon',NULL,NULL,NULL,'4',NULL,'3327689936',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (167,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (168,'Individual',NULL,'Mr. Jed Grant',NULL,NULL,'Jed','','Grant',0,0,0,0,1,0,NULL,'Grant, Jed',NULL,NULL,NULL,NULL,NULL,'2644056120',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed Grant',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (169,'Individual',NULL,'Mei Terrell',NULL,NULL,'Mei','','Terrell',1,1,0,0,0,0,NULL,'Terrell, Mei',NULL,NULL,NULL,'5',NULL,'306991433',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (170,'Individual',NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,'3',NULL,'2820426487',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear wagner.k.beula@testing.com',1,NULL,'Dear wagner.k.beula@testing.com',1,NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (171,'Individual',NULL,'Rodrigo Lee',NULL,NULL,'Rodrigo','N','Lee',0,1,0,0,0,0,NULL,'Lee, Rodrigo',NULL,NULL,NULL,'4',NULL,'2509854524',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Lee',NULL,2,'1987-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (172,'Household',NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Cooper family',NULL,NULL,NULL,'4',NULL,'1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (173,'Individual',NULL,'Ms. Valene Prentice-Zope',NULL,NULL,'Valene','','Prentice-Zope',1,0,0,0,0,0,NULL,'Prentice-Zope, Valene',NULL,NULL,NULL,'2',NULL,'527568177',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Ms. Valene Prentice-Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (174,'Individual',NULL,'Herminia Nielsen',NULL,NULL,'Herminia','','Nielsen',0,1,0,0,0,0,NULL,'Nielsen, Herminia',NULL,NULL,NULL,NULL,NULL,'176728020',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Nielsen',NULL,NULL,'1983-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (175,'Individual',NULL,'Ms. Rebekah Prentice',NULL,NULL,'Rebekah','','Prentice',0,1,0,0,0,0,NULL,'Prentice, Rebekah',NULL,NULL,NULL,'1',NULL,'961021134',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Prentice',NULL,1,'1947-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (176,'Individual',NULL,'Mrs. Justina Blackwell',NULL,NULL,'Justina','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Justina',NULL,NULL,NULL,NULL,NULL,'630587972',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Blackwell',NULL,1,'1989-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (177,'Individual',NULL,'Ms. Damaris Smith',NULL,NULL,'Damaris','Q','Smith',0,0,0,0,1,0,NULL,'Smith, Damaris',NULL,NULL,NULL,NULL,NULL,'3693080437',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Ms. Damaris Smith',NULL,NULL,'1967-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (178,'Individual',NULL,'Dr. Allen Parker Jr.',NULL,NULL,'Allen','D','Parker',0,1,0,0,0,0,NULL,'Parker, Allen',NULL,NULL,NULL,NULL,NULL,'710842690',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Parker Jr.',NULL,2,'1981-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (179,'Individual',NULL,'Mrs. Josefa Wagner',NULL,NULL,'Josefa','C','Wagner',0,0,0,0,0,0,NULL,'Wagner, Josefa',NULL,NULL,NULL,'5',NULL,'497687514',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (180,'Individual',NULL,'Dr. Ashley Wagner',NULL,NULL,'Ashley','S','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,NULL,NULL,'1660268830',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Wagner',NULL,2,'1950-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (181,'Individual',NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,'1',NULL,'1891169823',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear nielsen.t.brent@mymail.co.nz',1,NULL,'Dear nielsen.t.brent@mymail.co.nz',1,NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (182,'Individual',NULL,'josefai3@sample.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'josefai3@sample.net',NULL,NULL,NULL,NULL,NULL,'1994317403',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear josefai3@sample.net',1,NULL,'Dear josefai3@sample.net',1,NULL,'josefai3@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (183,'Individual',NULL,'Mrs. Tanya Terrell',NULL,NULL,'Tanya','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,'5',NULL,'1604022989',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (184,'Individual',NULL,'Roland Terrell',NULL,NULL,'Roland','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Roland',NULL,NULL,NULL,'3',NULL,'731518019',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Terrell',NULL,NULL,'1974-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (185,'Individual',NULL,'Heidi Dimitrov','College Music Trust',NULL,'Heidi','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Heidi',NULL,NULL,NULL,NULL,NULL,'90891784',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Dimitrov',NULL,NULL,'2012-02-22',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (186,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,'5',NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (187,'Individual',NULL,'grant.princess@testmail.co.nz','Tipton Development Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'grant.princess@testmail.co.nz',NULL,NULL,NULL,'1',NULL,'2066741182',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear grant.princess@testmail.co.nz',1,NULL,'Dear grant.princess@testmail.co.nz',1,NULL,'grant.princess@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,47,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (188,'Individual',NULL,'Felisha Deforest',NULL,NULL,'Felisha','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Felisha',NULL,NULL,NULL,'2',NULL,'3583247352',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Deforest',NULL,1,'1982-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (189,'Individual',NULL,'Josefa Patel',NULL,NULL,'Josefa','D','Patel',0,1,0,0,0,0,NULL,'Patel, Josefa',NULL,NULL,NULL,NULL,NULL,'2620051748',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Patel',NULL,NULL,'1971-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (190,'Individual',NULL,'Dr. Ashley Blackwell III',NULL,NULL,'Ashley','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Ashley',NULL,NULL,NULL,'1',NULL,'2843113739',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Blackwell III',NULL,2,'1936-06-24',1,'2023-04-03',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (191,'Individual',NULL,'Dr. Shad Samuels',NULL,NULL,'Shad','S','Samuels',0,0,0,0,1,0,NULL,'Samuels, Shad',NULL,NULL,NULL,NULL,NULL,'3610852394',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Samuels',NULL,2,'1947-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (192,'Individual',NULL,'Merrie González',NULL,NULL,'Merrie','','González',0,0,0,0,0,0,NULL,'González, Merrie',NULL,NULL,NULL,'4',NULL,'1134733928',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie González',NULL,1,'1953-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (193,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (194,'Individual',NULL,'Scarlet Cooper',NULL,NULL,'Scarlet','M','Cooper',1,0,0,0,0,0,NULL,'Cooper, Scarlet',NULL,NULL,NULL,NULL,NULL,'1649376042',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (195,'Individual',NULL,'Mei Wattson',NULL,NULL,'Mei','N','Wattson',0,0,0,0,0,0,NULL,'Wattson, Mei',NULL,NULL,NULL,NULL,NULL,'1845197516',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Wattson',NULL,1,'1990-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (196,'Individual',NULL,'Dr. Tanya Nielsen-Grant',NULL,NULL,'Tanya','L','Nielsen-Grant',1,0,0,0,1,0,NULL,'Nielsen-Grant, Tanya',NULL,NULL,NULL,'4',NULL,'3762760163',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Nielsen-Grant',NULL,1,'1992-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (197,'Organization',NULL,'Pine Food Partners','Pine Food Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pine Food Partners',NULL,NULL,NULL,'3',NULL,'3921206649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Food Partners',NULL,NULL,NULL,0,NULL,NULL,41,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (198,'Individual',NULL,'Omar Łąchowski III',NULL,NULL,'Omar','','Łąchowski',0,1,0,0,1,0,NULL,'Łąchowski, Omar',NULL,NULL,NULL,'3',NULL,'3249212023',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Łąchowski III',NULL,2,'1996-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (199,'Household',NULL,'Wagner-Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wagner-Smith family',NULL,NULL,NULL,'5',NULL,'2318725151',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner-Smith family',5,NULL,'Dear Wagner-Smith family',2,NULL,'Wagner-Smith family',NULL,NULL,NULL,0,NULL,'Wagner-Smith family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (200,'Individual',NULL,'Dr. Jacob Jones','Oregon Development Association',NULL,'Jacob','','Jones',0,0,0,0,0,0,NULL,'Jones, Jacob',NULL,NULL,NULL,'1',NULL,'210245998',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Jones',NULL,NULL,'1969-09-19',0,NULL,NULL,NULL,NULL,NULL,71,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (201,'Organization',NULL,'Lincoln Poetry Association','Lincoln Poetry Association',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Lincoln Poetry Association',NULL,NULL,NULL,NULL,NULL,'1465356771',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Poetry Association',NULL,NULL,NULL,0,NULL,NULL,114,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','f4b3bbf951ca454e8175f4a281a7e2cc',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35','Both');
 /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2220,117 +2223,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES
- (1,2,1,NULL,4,'2013-10-19 14:22:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
- (2,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (3,6,1,NULL,4,'2017-09-24 01:22:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
- (4,8,1,NULL,4,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
- (5,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (6,16,1,NULL,4,'2023-07-26 13:40:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
- (7,19,1,NULL,1,'2023-10-17 14:22:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
- (8,82,1,NULL,1,'2023-02-24 22:33:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (9,92,1,NULL,1,'2022-11-19 14:22:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (10,34,1,NULL,1,'2019-05-27 16:22:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (11,71,1,NULL,1,'2023-10-18 10:22:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (12,43,1,NULL,1,'2022-07-19 03:49:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (13,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (14,32,1,NULL,1,'2023-08-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (15,59,1,NULL,1,'2022-07-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (16,59,1,NULL,1,'2022-08-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (17,59,1,NULL,1,'2022-09-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (18,59,1,NULL,1,'2022-10-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (19,59,1,NULL,1,'2022-11-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (20,59,1,NULL,1,'2022-12-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (21,59,1,NULL,1,'2023-01-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (22,59,1,NULL,1,'2023-02-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (23,59,1,NULL,1,'2023-03-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (24,59,1,NULL,1,'2023-04-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (25,59,1,NULL,1,'2023-05-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (26,99,1,NULL,1,'2023-02-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (27,99,1,NULL,1,'2023-03-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (28,99,1,NULL,1,'2023-04-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (29,99,1,NULL,1,'2023-05-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (30,99,1,NULL,1,'2023-06-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (31,103,1,NULL,1,'2023-09-19 14:22:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (32,55,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c908bcfa0cd5be20',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (33,168,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'4d24ed19cb02ed0c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (34,36,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c7f53644ae2a7abd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (35,87,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'df65e9305cdef133',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (36,48,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'9e43d605091634b7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (37,180,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e6d81f09a41d0f35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (38,8,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e38f6ec37b9fabb3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (39,54,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'f739f79d40e7bd2d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (40,106,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'0937a86d9856d20f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (41,17,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'386a76c90a983717',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (42,175,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'1d446a98d22519c5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (43,28,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'6f302a92a8d039f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (44,117,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'184c1625a0ab7dc0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (45,86,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'fd4792bd3a50da87',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (46,149,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'2ae34338151a8c31',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (47,47,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'62904aaad7687d16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (48,126,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'58c722d9ea8f60e4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (49,113,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'0e4d2cc74726c33e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (50,169,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'46fff670fdd88c83',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (51,164,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'126eb1cbca88ac46',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (52,39,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'8e1a4f823c309e35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (53,49,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9183e73af132fbd1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (54,92,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'e7836a1040fc6647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (55,136,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'dc8c98604902da07',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (56,187,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9668e4798e266def',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (57,100,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ef096073ba84bc0a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (58,78,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'aa13673d8ef85a65',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (59,66,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'32f851d09a3775f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (60,93,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'fe44a2c192ab18be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (61,5,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'ffed5868e9951a95',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (63,6,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b28927dfa09ab7b4',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (64,8,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'52b5a6a76b142227',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (65,10,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7245aac602b546bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (66,13,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ff5b5537da44c970',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (67,14,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fad72a1cf34cf68e',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (68,16,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'95a80169077a3dea',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (69,17,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'413cb05032f4ef86',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (70,19,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'755c91f4df5025f2',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (71,23,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'d39bcc7bf0e51cab',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (72,30,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'2169580b75789814',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (73,36,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'25a9f0b5ed29df0a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (74,40,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3eb2384d79bdaa10',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (75,41,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ed07590fe067cb07',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (76,45,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'96af8634550c39ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (77,57,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a2542bee3dc332de',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (78,69,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6cc8dd5a5b8e8913',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (79,73,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'a720e6fdf9eea694',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (80,76,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'732d30e0d1d41ca5',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (81,77,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ac8995759a7a3270',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (82,80,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6ba712ac9576b7b6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (83,84,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b056ac8b83186f79',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (84,88,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'24cc9f9c83795713',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (85,92,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'548746b3839860da',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (86,94,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'472bf4e471ef125f',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (87,96,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'188d57636c31422a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (88,97,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'c8d10d10dd2d66bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (89,101,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'082640d22f20fcf6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (90,117,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'7a53e74599f788ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (91,123,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f78524f14cda217c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (92,127,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3de19df12cf6886c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (93,132,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b7c48e40295cdc9a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (94,135,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'648327e05cdee0ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (95,144,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9dc4f36b0500ac35',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (96,154,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fe477a4cedeef016',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (97,156,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'bd1cbf336bcdc529',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (98,158,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'146f0c5184fd503c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (99,159,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'6def5a3cac235219',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (100,160,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'0ab78d1432305653',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (101,163,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4bc019d5fcebe204',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (102,172,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'44c3f7faa315a724',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (103,175,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7749b8e4f077e05c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (104,178,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7e35b99bd91e7b4c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (105,179,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'504a9107e1c840c3',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (106,182,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'cca171d375cdc8f6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (107,184,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'656d8e5060576829',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (108,189,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b7318d85efca799b',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (109,192,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4feacc260963ba72',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (110,195,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f82bc2b76969d315',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (111,196,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a96ed671bbd3ea09',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (112,197,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'60f19d9651d20536',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
+ (1,2,1,NULL,4,'2013-12-17 20:11:37',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
+ (2,4,1,NULL,1,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (3,6,1,NULL,4,'2017-11-22 07:11:37',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
+ (4,8,1,NULL,4,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
+ (5,4,1,NULL,1,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (6,16,1,NULL,4,'2023-09-23 19:29:37',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
+ (7,19,1,NULL,1,'2023-12-15 20:11:37',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
+ (8,82,1,NULL,1,'2023-04-25 04:22:37',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (9,92,1,NULL,1,'2023-01-17 20:11:37',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (10,34,1,NULL,1,'2019-07-25 22:11:37',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (11,71,1,NULL,1,'2023-12-16 16:11:37',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (12,43,1,NULL,1,'2022-09-17 09:38:17',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (13,32,1,NULL,1,'2023-09-17 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (14,32,1,NULL,1,'2023-10-17 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (15,59,1,NULL,1,'2022-09-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (16,59,1,NULL,1,'2022-10-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (17,59,1,NULL,1,'2022-11-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (18,59,1,NULL,1,'2022-12-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (19,59,1,NULL,1,'2023-01-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (20,59,1,NULL,1,'2023-02-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (21,59,1,NULL,1,'2023-03-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (22,59,1,NULL,1,'2023-04-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (23,59,1,NULL,1,'2023-05-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (24,59,1,NULL,1,'2023-06-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (25,59,1,NULL,1,'2023-07-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (26,99,1,NULL,1,'2023-04-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (27,99,1,NULL,1,'2023-05-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (28,99,1,NULL,1,'2023-06-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (29,99,1,NULL,1,'2023-07-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (30,99,1,NULL,1,'2023-08-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (31,103,1,NULL,1,'2023-11-17 20:11:37',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (32,82,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'830461b5ad84c1e7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (33,34,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ff8cf92f9773545c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (34,110,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'a5415e027d83717c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (35,91,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1ca376a7b8d0e2d5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (36,105,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'9555523ece178b6a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (37,176,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'a7c0f89867c8a428',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (38,163,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'57ca21492529910f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (39,119,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'99991cb2ffe28b8b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (40,114,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'7fc2d080a0d70d5f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (41,146,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'1d0aac8b34ff8b84',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (42,154,2,NULL,1,'2023-12-17 20:11:38',0.00,1200.00,NULL,NULL,'c75d99ea7586de97',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (43,170,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'20e577eba5667eae',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (44,8,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'2ccc981e3e5a1e8d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (45,190,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'fe4e0f13e7eb09bf',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (46,179,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'e254b4f121439b6f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (47,48,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ebd306ae8053c70f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (48,99,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'60cce134dbd4af13',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (49,96,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'624424ef23bab211',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (50,70,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'2ba05d7beabc92a6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (51,84,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'f0b56ae2e34b40b2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (52,28,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'42542107efb6f295',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (53,156,2,NULL,1,'2023-12-17 20:11:38',0.00,1200.00,NULL,NULL,'15093bca050f76cb',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (54,153,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'b707c69168d7550b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (55,195,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'10336515977ecfd6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (56,67,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'4af2784315e9f068',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (57,75,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'60040a9003287de2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (58,112,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'d05b6eb57e4fa850',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (59,188,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'acd346f2fe5f77bc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (60,62,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'023a722551f3e725',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (61,59,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1202258df77a0fa2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (63,156,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'25fd6030886b7c5c',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (64,87,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ba8f69f88fe9a279',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (65,124,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'15af525cf42e5b33',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (66,127,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1afc702ecb5219fd',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (67,113,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'cad86325b8d974d2',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (68,160,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'91dcd9fea13e4d34',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (69,120,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'2f37622da3edd416',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (70,100,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'0cd0fead7f55fc4f',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (71,83,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'c6de9a43eb5b7aa3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (72,72,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'0f56e1a0dd6ab6f3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (73,155,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'776e13db77b1f674',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (74,150,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'8905d5e48dc6442a',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (75,149,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'86063ee6b2a9e896',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (76,77,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'22e53d83c72810f6',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (77,183,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'c14f7f184fe25f15',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (78,199,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'e4af20137ce2bdd5',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (79,89,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'11449abd78f15f83',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (80,129,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'797deb5dffdce687',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (81,67,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'27cc8136671b8d16',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (82,139,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'8e76e6c92073b839',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (83,174,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'13382d88dcdbf9c5',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (84,62,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'36af07a9a33d3f5d',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (85,71,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'b65d48375f052b5e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (86,95,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'99f3b4bbbe0e2de3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (87,65,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'55b9c4d23cf793e4',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (88,59,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'4a5cc20b54e1bf2d',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (89,55,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'49ca8e2d4f12f02b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (90,194,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'35ec8cec4d7b3e0c',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (91,19,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'9d526f8939ed06bc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (92,79,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'026ebccce765774b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (93,106,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'a747e70aae3e2c37',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (94,18,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c8661d25b19cc20a',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (95,177,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'23c1977d50939b3e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (96,175,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'5900a1f4d9db201b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (97,42,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'034acdc1fa387ffc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (98,61,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'19b9fc43ca780269',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (99,132,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'8fa3d088dff273af',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (100,173,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'055d24ef0c16aeb2',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (101,195,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'23c029b556d782cd',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (102,25,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'422bb0afad03efe1',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (103,110,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c55c272423d8f92b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (104,31,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'96cda567448aa26b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (105,12,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'44ac28a2795797e3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (106,52,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'36371153332378fc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (107,130,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'3231adeb2f830242',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (108,193,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'bec2677521a23f70',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (109,168,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c73781dd9dfc1d86',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (110,82,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'febc54389846736e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (111,38,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'1272470c83cadd49',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (112,162,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'bd7ec6b46ece178f',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
 /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2363,9 +2366,9 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution_recur` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES
- (1,59,25.00,'USD','month',1,12,'2022-07-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (2,99,10.00,'CAD','month',1,6,'2023-02-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30','2023-09-19 14:22:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (3,103,5.00,'EUR','month',3,3,'2023-09-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-19 14:22:30',0,NULL,0,1,NULL,NULL,NULL,1);
+ (1,59,25.00,'USD','month',1,12,'2022-09-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (2,99,10.00,'CAD','month',1,6,'2023-04-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37','2023-11-17 20:11:37','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (3,103,5.00,'EUR','month',3,3,'2023-11-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2024-02-17 20:11:37',0,NULL,0,1,NULL,NULL,NULL,1);
 /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2376,8 +2379,8 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution_soft` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES
- (1,9,142,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
- (2,10,142,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
+ (1,9,190,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
+ (2,10,190,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
 /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2975,7 +2978,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_domain` WRITE;
 /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
 INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES
- (1,'Default Domain Name',NULL,'5.68.1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.69.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
 /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2987,196 +2990,197 @@ LOCK TABLES `civicrm_email` WRITE;
 /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */;
 INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES
  (1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (2,25,1,'beulaw59@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (3,25,1,'wagnerb94@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (4,35,1,'mllero90@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (5,35,1,'omarmller@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (6,5,1,'jacobs.esta@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (7,54,1,'teddynielsen@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (8,4,1,'smith.a.damaris42@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (9,4,1,'smith.a.damaris@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (10,9,1,'brigetteroberts@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (11,9,1,'brigetter@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (12,143,1,'olsenk90@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (13,143,1,'olsenk@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (14,123,1,'kz.roberts@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (15,123,1,'kathlynroberts79@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (16,70,1,'daz.irvin@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (17,70,1,'irvindaz@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (18,173,1,'yadav.sharyn@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (19,186,1,'jacobs.kenny@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (20,186,1,'jacobsk50@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (21,127,1,'kiarab15@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (22,101,1,'delanadimitrov@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (23,30,1,'josefag39@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (24,30,1,'grant.josefa82@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (25,89,1,'nielsenk60@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (26,187,1,'bobt59@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (27,194,1,'troymller@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (28,115,1,'deforest.u.clint2@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (29,115,1,'deforest.u.clint61@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (30,129,1,'erikd57@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (31,129,1,'deforest.erik32@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (32,168,1,'ideforest7@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (33,168,1,'iveyd@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (34,157,1,'jameson.megan@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (35,157,1,'jameson.megan@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (36,172,1,'allanz@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (37,172,1,'at.zope30@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (38,197,1,'rayg@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (39,197,1,'raygrant@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (40,98,1,'shaunapatel@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (41,94,1,'omarp@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (42,94,1,'omarp59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (43,11,1,'cruzc@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (44,178,1,'rjameson4@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (45,144,1,'princessterry@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (46,201,1,'beulanielsen@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (47,87,1,'reynolds.q.laree29@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (48,8,1,'lt.blackwell40@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (49,8,1,'blackwell.t.laree45@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (50,33,1,'dimitrovb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (51,33,1,'dimitrovb20@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (52,42,1,'grantr7@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (53,120,1,'blackwell.josefa@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (54,169,1,'kathlynj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (55,169,1,'kjones@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (56,17,1,'aolsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (57,17,1,'alexiao17@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (58,174,1,'miguelzope@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (59,71,1,'mllerb@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (60,71,1,'bf.mller@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (61,56,1,'cooper.merrie@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (62,171,1,'sx.robertson@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (63,171,1,'robertson.santina5@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (64,97,1,'chowski.bernadette@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (65,29,1,'cruz.beula75@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (66,138,1,'tobyj@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (67,138,1,'tjacobs90@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (68,107,1,'estachowski@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (69,107,1,'chowski.g.esta16@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (70,167,1,'ivanov.errol42@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (71,167,1,'ivanov.errol@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (72,27,1,'robertson.merrie@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (73,27,1,'robertsonm44@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (74,184,1,'cooper.teddy48@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (75,184,1,'teddycooper72@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (76,102,1,'wagner.n.barry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (77,102,1,'barryw56@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (78,96,1,'blackwella@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (79,106,1,'dazr@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (80,106,1,'daz.rosario@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (81,86,1,'eleonorp@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (82,86,1,'eleonorparker61@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (83,24,1,'sbachman@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (84,189,1,'bachman.maria@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (85,176,1,'reynolds.iris@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (86,176,1,'ireynolds85@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (87,151,1,'kandacecruz-reynolds@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (88,49,1,'carlosivanov25@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (89,49,1,'carlosi64@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (90,200,1,'deforest-ivanov.lashawnda36@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (91,125,1,'ivanov.sharyn@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (92,125,1,'sharyni93@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (93,55,1,'ivanov.p.russell30@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (94,55,1,'russelli@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (95,150,1,'prentice.h.allan58@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (96,150,1,'prenticea@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (97,34,1,'sonnyprentice32@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (98,34,1,'sonnyprentice47@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (99,183,1,'ivanov.a.kenny24@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (100,183,1,'ivanovk@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (101,193,1,'ivanova@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (102,44,1,'divanov@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (103,44,1,'delanai@example.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (104,60,1,'louivanov85@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (105,60,1,'livanov@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (106,109,1,'lashawndaprentice31@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (107,109,1,'lashawndap@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (108,76,1,'prenticem4@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (109,76,1,'prenticem86@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (110,126,1,'troyp@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (111,126,1,'tprentice83@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (112,46,1,'miguels@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (113,74,1,'samuels.valene96@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (114,163,1,'kjensen-terry@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (115,162,1,'terry.brigette@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (116,162,1,'brigettet@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (117,21,1,'jc.wattson@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (118,14,1,'delanaw69@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (119,14,1,'wattson.delana@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (120,170,1,'wattsonm@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (121,45,1,'estaw12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (122,45,1,'estawattson@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (123,199,1,'mo.mller8@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (124,199,1,'mllerm@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (125,112,1,'mller.h.sherman73@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (126,79,1,'irvinmller41@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (127,79,1,'mlleri@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (128,48,1,'teddywilson@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (129,91,1,'rebekahj@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (130,91,1,'jameson.q.rebekah@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (131,104,1,'wilson-jameson.brittney@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (132,104,1,'bj.wilson-jameson@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (133,92,1,'maganwilson-jameson9@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (134,100,1,'justinawilson-deforest24@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (135,160,1,'alexiad24@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (136,198,1,'brentr@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (137,198,1,'reynoldsb42@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (138,6,1,'reynolds.magan75@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (139,15,1,'olsenb@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (140,137,1,'olsena@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (141,180,1,'cf.samson37@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (142,180,1,'cf.samson29@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (143,114,1,'darens@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (144,114,1,'darens48@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (145,32,1,'jl.samson-terry93@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (146,18,1,'andrewd35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (147,18,1,'ae.daz94@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (148,90,1,'junkochowski28@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (149,39,1,'daz-chowskid16@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (150,121,1,'terrell.g.sherman70@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (151,121,1,'terrells@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (152,196,1,'terrell.barry@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (153,154,1,'vz.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (154,61,1,'arlynereynolds@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (155,61,1,'reynoldsa@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (156,63,1,'sreynolds21@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (157,63,1,'sonnyreynolds@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (158,85,1,'mcreynolds.justina@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (159,85,1,'mcreynolds.justina@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (160,36,1,'yadav.j.lou79@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (161,36,1,'louyadav@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (162,118,1,'ap.lee-yadav10@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (163,118,1,'lee-yadava5@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (164,103,3,'info@oregondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (165,187,2,'bterrell@oregondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (166,135,3,'service@sacramentopartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (167,115,2,'clintdeforest@sacramentopartners.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (168,77,3,'contact@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (169,81,2,'smith.elina@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (170,22,3,'info@bostonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (171,33,2,'angelikaterrell45@bostonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (172,68,3,'contact@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (173,85,2,'mcreynolds.justina@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (174,133,3,'feedback@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (175,72,2,'wagner.miguel@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (176,19,3,'info@creativesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (177,129,2,'erikd10@creativesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (178,161,3,'info@progressivenetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (179,69,3,'info@globalsportscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (180,4,2,'smith.damaris@globalsportscenter.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (181,95,3,'info@ruralagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (182,139,3,'sales@ruralinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (183,197,2,'raygrant48@ruralinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (184,7,3,'sales@hanovereducation.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (185,15,2,'juliannt81@hanovereducation.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (186,148,3,'contact@localtrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (187,96,2,'valeneb@localtrust.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (188,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
+ (2,19,1,'claudioy@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (3,153,1,'princesschowski44@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (4,153,1,'princesschowski66@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (5,16,1,'lees@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (6,16,1,'sanfordlee29@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (7,65,1,'ep.jones@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (8,70,1,'shermanc@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (9,120,1,'ae.barkley94@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (10,110,1,'daz.clint@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (11,45,1,'olsen.scott@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (12,45,1,'scottolsen@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (13,12,1,'barkleys23@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (14,102,1,'blackwell.craig50@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (15,10,1,'jameson.lincoln@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (16,10,1,'lincolnjameson5@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (17,23,1,'kiarat54@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (18,94,1,'bachmanr46@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (19,38,1,'smith.troy@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (20,38,1,'smitht70@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (21,154,1,'jedroberts32@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (22,86,1,'bryons@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (23,95,1,'robertson.i.princess15@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (24,95,1,'robertson.princess@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (25,182,1,'josefai3@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (26,74,1,'olsen.russell62@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (27,74,1,'olsenr36@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (28,191,1,'samuels.s.shad@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (29,191,1,'ss.samuels40@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (30,112,1,'brigettep12@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (31,117,1,'yadavc@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (32,117,1,'ch.yadav@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (33,57,1,'santinap44@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (34,57,1,'si.patel@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (35,124,1,'carylonp@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (36,124,1,'prenticec84@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (37,79,1,'dn.jones@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (38,79,1,'dn.jones52@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (39,76,1,'felishal74@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (40,67,1,'cruz.lashawnda@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (41,149,1,'trumanz@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (42,149,1,'trumanzope@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (43,160,1,'tr.nielsen@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (44,160,1,'nielsen.toby57@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (45,135,1,'elinag@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (46,114,1,'terrell.bernadette@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (47,114,1,'terrell.bernadette32@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (48,77,1,'robertse@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (49,77,1,'robertse@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (50,178,1,'ad.parker13@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (51,178,1,'allenparker@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (52,147,1,'bachman.jed@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (53,147,1,'bachmanj@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (54,131,1,'zope.n.jay14@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (55,200,1,'jones.jacob@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (56,200,1,'jonesj45@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (57,48,1,'robertsont41@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (58,179,1,'josefawagner10@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (59,107,1,'elizabethpatel14@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (60,105,1,'bm.barkley30@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (61,105,1,'brzczysawb@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (62,136,1,'meijensen@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (63,136,1,'jensen.mei@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (64,142,1,'lashawndap47@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (65,142,1,'lashawndap41@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (66,148,1,'winfordterrell@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (67,137,1,'cooperl22@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (68,137,1,'cooper.v.laree55@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (69,146,1,'brentchowski70@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (70,30,1,'fterry91@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (71,122,1,'winfordz@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (72,100,1,'mchowski@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (73,40,1,'lees@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (74,44,1,'lincolnprentice27@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (75,44,1,'prentice.lincoln@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (76,63,1,'terry.megan@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (77,63,1,'mk.terry@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (78,96,1,'blackwell.rebekah@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (79,66,1,'patel.maria@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (80,66,1,'mariap9@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (81,170,1,'beulawagner33@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (82,170,1,'wagner.k.beula@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (83,13,1,'blackwell.elina@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (84,156,1,'blackwelln23@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (85,144,1,'bobb34@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (86,34,1,'raygrant61@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (87,75,1,'md.wilson-grant@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (88,187,1,'grant.princess@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (89,140,1,'grant.u.arlyne@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (90,81,1,'jblackwell84@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (91,81,1,'blackwellj25@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (92,139,1,'cs.blackwell@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (93,139,1,'blackwell.s.clint@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (94,141,1,'grant.b.billy41@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (95,185,1,'dimitrov.heidi@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (96,185,1,'heididimitrov@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (97,127,1,'dimitrov.jackson@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (98,145,1,'wagner-lee.valene@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (99,145,1,'valenew@example.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (100,171,1,'rodrigolee@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (101,157,1,'terrell.d.sherman@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (102,69,1,'rterrell@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (103,69,1,'terrell.russell@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (104,195,1,'wattson.n.mei@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (105,195,1,'wattson.n.mei39@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (106,22,1,'tw.wattson90@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (107,33,1,'wattson.justina@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (108,33,1,'wattson.justina@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (109,55,1,'erikwattson@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (110,8,1,'parker-robertsb@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (111,8,1,'brittneyp@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (112,54,1,'roberts.bob@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (113,89,1,'robertsb@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (114,89,1,'brittneyr@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (115,62,1,'ivanov.lawerence@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (116,62,1,'ly.ivanov37@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (117,83,1,'ivanov.bob@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (118,83,1,'ivanovb@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (119,130,1,'ts.ivanov@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (120,130,1,'ivanov.troy62@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (121,143,1,'nf.zope@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (122,150,1,'zopeb19@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (123,50,1,'zope.q.kandace@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (124,50,1,'kandacez51@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (125,177,1,'smith.q.damaris68@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (126,84,1,'wagner-smith.rosario@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (127,84,1,'wagner-smithr@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (128,59,1,'oq.cooper@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (129,27,1,'santinac@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (130,32,1,'sivanov@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (131,24,1,'herminiam@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (132,24,1,'mcreynolds.s.herminia70@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (133,93,1,'mller.q.claudio@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (134,93,1,'mllerc51@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (135,109,1,'erikmller-daz@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (136,163,1,'mller-dazk@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (137,134,1,'terrell.brittney@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (138,134,1,'brittneyt@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (139,4,1,'terrell.x.norris67@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (140,4,1,'terrell.norris@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (141,169,1,'meit@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (142,90,1,'jones.junko@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (143,20,1,'jonesb@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (144,20,1,'jones.brent@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (145,104,1,'tjones@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (146,104,1,'trumanj@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (147,28,1,'rterrell@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (148,28,1,'rterrell@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (149,184,1,'terrell.roland@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (150,184,1,'terrell.roland@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (151,152,1,'terrelle@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (152,165,1,'im.terry-nielsen@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (153,174,1,'nielsen.herminia@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (154,174,1,'herminianielsen@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (155,181,1,'nielsen.t.brent@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (156,87,1,'santinan76@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (157,47,3,'info@tiptondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (158,187,2,'olsen.sonny@tiptondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (159,118,3,'feedback@ruraldevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (160,18,3,'sales@creativefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (161,66,2,'patelm@creativefellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (162,115,3,'info@creativepeace.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (163,8,2,'parker-roberts.brittney@creativepeace.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (164,9,3,'sales@unitedcenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (165,146,2,'bchowski@unitedcenter.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (166,46,3,'service@nyeducationcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (167,20,2,'jones.brent@nyeducationcollective.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (168,197,3,'contact@pinefoodpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (169,41,2,'nielseni@pinefoodpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (170,15,3,'contact@gcfamilyassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (171,32,2,'smith.ashley@gcfamilyassociation.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (172,121,3,'contact@urbanfamilycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (173,35,3,'sales@floridafellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (174,152,2,'rsamson@floridafellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (175,78,3,'info@sierrapeacefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (176,26,3,'service@unitedfamily.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (177,145,2,'vwagner-lee84@unitedfamily.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (178,64,3,'sales@collegemusic.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (179,185,2,'dimitrov.heidi@collegemusic.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (180,162,3,'service@harveyagriculturefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (181,55,2,'erikw@harveyagriculturefellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (182,201,3,'contact@lincolnpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (183,114,2,'terrellb@lincolnpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (184,123,3,'feedback@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (185,51,3,'feedback@minneapolissystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (186,150,2,'zope.m.brigette@minneapolissystems.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (187,17,3,'info@ecactionservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (188,77,2,'irisn@ecactionservices.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (189,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (190,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (191,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (192,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3300,165 +3304,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
  (60,'civicrm_financial_item',30,30,10.00),
  (61,'civicrm_contribution',31,31,5.00),
  (62,'civicrm_financial_item',31,31,5.00),
- (63,'civicrm_contribution',61,32,1200.00),
- (64,'civicrm_financial_item',32,32,1200.00),
- (65,'civicrm_contribution',38,33,100.00),
+ (63,'civicrm_contribution',32,32,100.00),
+ (64,'civicrm_financial_item',32,32,100.00),
+ (65,'civicrm_contribution',34,33,100.00),
  (66,'civicrm_financial_item',33,33,100.00),
- (67,'civicrm_contribution',41,34,100.00),
+ (67,'civicrm_contribution',36,34,100.00),
  (68,'civicrm_financial_item',34,34,100.00),
- (69,'civicrm_contribution',43,35,100.00),
+ (69,'civicrm_contribution',38,35,100.00),
  (70,'civicrm_financial_item',35,35,100.00),
- (71,'civicrm_contribution',34,36,100.00),
+ (71,'civicrm_contribution',40,36,100.00),
  (72,'civicrm_financial_item',36,36,100.00),
- (73,'civicrm_contribution',52,37,50.00),
- (74,'civicrm_financial_item',37,37,50.00),
- (75,'civicrm_contribution',47,38,50.00),
- (76,'civicrm_financial_item',38,38,50.00),
- (77,'civicrm_contribution',36,39,100.00),
+ (73,'civicrm_contribution',41,37,100.00),
+ (74,'civicrm_financial_item',37,37,100.00),
+ (75,'civicrm_contribution',44,38,100.00),
+ (76,'civicrm_financial_item',38,38,100.00),
+ (77,'civicrm_contribution',48,39,100.00),
  (78,'civicrm_financial_item',39,39,100.00),
- (79,'civicrm_contribution',53,40,50.00),
- (80,'civicrm_financial_item',40,40,50.00),
- (81,'civicrm_contribution',39,41,100.00),
+ (79,'civicrm_contribution',50,40,100.00),
+ (80,'civicrm_financial_item',40,40,100.00),
+ (81,'civicrm_contribution',52,41,100.00),
  (82,'civicrm_financial_item',41,41,100.00),
- (83,'civicrm_contribution',32,42,100.00),
+ (83,'civicrm_contribution',54,42,100.00),
  (84,'civicrm_financial_item',42,42,100.00),
- (85,'civicrm_contribution',59,43,50.00),
- (86,'civicrm_financial_item',43,43,50.00),
- (87,'civicrm_contribution',58,44,50.00),
- (88,'civicrm_financial_item',44,44,50.00),
- (89,'civicrm_contribution',45,45,100.00),
+ (85,'civicrm_contribution',56,43,100.00),
+ (86,'civicrm_financial_item',43,43,100.00),
+ (87,'civicrm_contribution',58,44,100.00),
+ (88,'civicrm_financial_item',44,44,100.00),
+ (89,'civicrm_contribution',60,45,100.00),
  (90,'civicrm_financial_item',45,45,100.00),
- (91,'civicrm_contribution',35,46,100.00),
- (92,'civicrm_financial_item',46,46,100.00),
- (93,'civicrm_contribution',54,47,50.00),
+ (91,'civicrm_contribution',33,46,50.00),
+ (92,'civicrm_financial_item',46,46,50.00),
+ (93,'civicrm_contribution',35,47,50.00),
  (94,'civicrm_financial_item',47,47,50.00),
- (95,'civicrm_contribution',60,48,1200.00),
- (96,'civicrm_financial_item',48,48,1200.00),
- (97,'civicrm_contribution',57,49,50.00),
+ (95,'civicrm_contribution',37,48,50.00),
+ (96,'civicrm_financial_item',48,48,50.00),
+ (97,'civicrm_contribution',39,49,50.00),
  (98,'civicrm_financial_item',49,49,50.00),
- (99,'civicrm_contribution',40,50,100.00),
- (100,'civicrm_financial_item',50,50,100.00),
- (101,'civicrm_contribution',49,51,50.00),
+ (99,'civicrm_contribution',43,50,50.00),
+ (100,'civicrm_financial_item',50,50,50.00),
+ (101,'civicrm_contribution',45,51,50.00),
  (102,'civicrm_financial_item',51,51,50.00),
- (103,'civicrm_contribution',44,52,100.00),
- (104,'civicrm_financial_item',52,52,100.00),
- (105,'civicrm_contribution',48,53,50.00),
+ (103,'civicrm_contribution',46,52,50.00),
+ (104,'civicrm_financial_item',52,52,50.00),
+ (105,'civicrm_contribution',47,53,50.00),
  (106,'civicrm_financial_item',53,53,50.00),
- (107,'civicrm_contribution',55,54,50.00),
+ (107,'civicrm_contribution',49,54,50.00),
  (108,'civicrm_financial_item',54,54,50.00),
- (109,'civicrm_contribution',46,55,100.00),
- (110,'civicrm_financial_item',55,55,100.00),
- (111,'civicrm_contribution',51,56,50.00),
+ (109,'civicrm_contribution',51,55,50.00),
+ (110,'civicrm_financial_item',55,55,50.00),
+ (111,'civicrm_contribution',55,56,50.00),
  (112,'civicrm_financial_item',56,56,50.00),
- (113,'civicrm_contribution',33,57,100.00),
- (114,'civicrm_financial_item',57,57,100.00),
- (115,'civicrm_contribution',50,58,50.00),
+ (113,'civicrm_contribution',57,57,50.00),
+ (114,'civicrm_financial_item',57,57,50.00),
+ (115,'civicrm_contribution',59,58,50.00),
  (116,'civicrm_financial_item',58,58,50.00),
- (117,'civicrm_contribution',42,59,100.00),
- (118,'civicrm_financial_item',59,59,100.00),
- (119,'civicrm_contribution',37,60,100.00),
- (120,'civicrm_financial_item',60,60,100.00),
- (121,'civicrm_contribution',56,61,50.00),
- (122,'civicrm_financial_item',61,61,50.00),
- (123,'civicrm_contribution',85,62,50.00),
+ (117,'civicrm_contribution',61,59,50.00),
+ (118,'civicrm_financial_item',59,59,50.00),
+ (119,'civicrm_contribution',42,60,1200.00),
+ (120,'civicrm_financial_item',60,60,1200.00),
+ (121,'civicrm_contribution',53,61,1200.00),
+ (122,'civicrm_financial_item',61,61,1200.00),
+ (123,'civicrm_contribution',64,62,50.00),
  (124,'civicrm_financial_item',62,62,50.00),
- (125,'civicrm_contribution',73,63,50.00),
+ (125,'civicrm_contribution',67,63,50.00),
  (126,'civicrm_financial_item',63,63,50.00),
- (127,'civicrm_contribution',75,64,50.00),
+ (127,'civicrm_contribution',70,64,50.00),
  (128,'civicrm_financial_item',64,64,50.00),
- (129,'civicrm_contribution',110,65,50.00),
+ (129,'civicrm_contribution',73,65,50.00),
  (130,'civicrm_financial_item',65,65,50.00),
- (131,'civicrm_contribution',72,66,50.00),
+ (131,'civicrm_contribution',76,66,50.00),
  (132,'civicrm_financial_item',66,66,50.00),
- (133,'civicrm_contribution',105,67,50.00),
+ (133,'civicrm_contribution',79,67,50.00),
  (134,'civicrm_financial_item',67,67,50.00),
- (135,'civicrm_contribution',95,68,50.00),
+ (135,'civicrm_contribution',82,68,50.00),
  (136,'civicrm_financial_item',68,68,50.00),
- (137,'civicrm_contribution',76,69,50.00),
+ (137,'civicrm_contribution',85,69,50.00),
  (138,'civicrm_financial_item',69,69,50.00),
  (139,'civicrm_contribution',89,70,50.00),
  (140,'civicrm_financial_item',70,70,50.00),
- (141,'civicrm_contribution',79,71,50.00),
+ (141,'civicrm_contribution',92,71,50.00),
  (142,'civicrm_financial_item',71,71,50.00),
- (143,'civicrm_contribution',88,72,50.00),
+ (143,'civicrm_contribution',95,72,50.00),
  (144,'civicrm_financial_item',72,72,50.00),
- (145,'civicrm_contribution',69,73,50.00),
+ (145,'civicrm_contribution',98,73,50.00),
  (146,'civicrm_financial_item',73,73,50.00),
- (147,'civicrm_contribution',83,74,50.00),
+ (147,'civicrm_contribution',101,74,50.00),
  (148,'civicrm_financial_item',74,74,50.00),
- (149,'civicrm_contribution',97,75,50.00),
+ (149,'civicrm_contribution',104,75,50.00),
  (150,'civicrm_financial_item',75,75,50.00),
- (151,'civicrm_contribution',87,76,50.00),
+ (151,'civicrm_contribution',107,76,50.00),
  (152,'civicrm_financial_item',76,76,50.00),
- (153,'civicrm_contribution',102,77,50.00),
+ (153,'civicrm_contribution',110,77,50.00),
  (154,'civicrm_financial_item',77,77,50.00),
- (155,'civicrm_contribution',100,78,800.00),
+ (155,'civicrm_contribution',65,78,800.00),
  (156,'civicrm_financial_item',78,78,800.00),
- (157,'civicrm_contribution',74,79,800.00),
+ (157,'civicrm_contribution',68,79,800.00),
  (158,'civicrm_financial_item',79,79,800.00),
  (159,'civicrm_contribution',71,80,800.00),
  (160,'civicrm_financial_item',80,80,800.00),
- (161,'civicrm_contribution',109,81,800.00),
+ (161,'civicrm_contribution',74,81,800.00),
  (162,'civicrm_financial_item',81,81,800.00),
- (163,'civicrm_contribution',68,82,800.00),
+ (163,'civicrm_contribution',77,82,800.00),
  (164,'civicrm_financial_item',82,82,800.00),
- (165,'civicrm_contribution',108,83,800.00),
+ (165,'civicrm_contribution',80,83,800.00),
  (166,'civicrm_financial_item',83,83,800.00),
- (167,'civicrm_contribution',82,84,800.00),
+ (167,'civicrm_contribution',83,84,800.00),
  (168,'civicrm_financial_item',84,84,800.00),
- (169,'civicrm_contribution',111,85,800.00),
+ (169,'civicrm_contribution',86,85,800.00),
  (170,'civicrm_financial_item',85,85,800.00),
- (171,'civicrm_contribution',106,86,800.00),
+ (171,'civicrm_contribution',87,86,800.00),
  (172,'civicrm_financial_item',86,86,800.00),
- (173,'civicrm_contribution',98,87,800.00),
+ (173,'civicrm_contribution',90,87,800.00),
  (174,'civicrm_financial_item',87,87,800.00),
- (175,'civicrm_contribution',80,88,800.00),
+ (175,'civicrm_contribution',93,88,800.00),
  (176,'civicrm_financial_item',88,88,800.00),
- (177,'civicrm_contribution',63,89,800.00),
+ (177,'civicrm_contribution',96,89,800.00),
  (178,'civicrm_financial_item',89,89,800.00),
- (179,'civicrm_contribution',92,90,800.00),
+ (179,'civicrm_contribution',99,90,800.00),
  (180,'civicrm_financial_item',90,90,800.00),
- (181,'civicrm_contribution',90,91,800.00),
+ (181,'civicrm_contribution',102,91,800.00),
  (182,'civicrm_financial_item',91,91,800.00),
- (183,'civicrm_contribution',101,92,800.00),
+ (183,'civicrm_contribution',105,92,800.00),
  (184,'civicrm_financial_item',92,92,800.00),
- (185,'civicrm_contribution',77,93,800.00),
+ (185,'civicrm_contribution',108,93,800.00),
  (186,'civicrm_financial_item',93,93,800.00),
- (187,'civicrm_contribution',78,94,800.00),
+ (187,'civicrm_contribution',111,94,800.00),
  (188,'civicrm_financial_item',94,94,800.00),
- (189,'civicrm_contribution',84,95,800.00),
+ (189,'civicrm_contribution',112,95,800.00),
  (190,'civicrm_financial_item',95,95,800.00),
- (191,'civicrm_contribution',65,96,50.00),
+ (191,'civicrm_contribution',63,96,50.00),
  (192,'civicrm_financial_item',96,96,50.00),
- (193,'civicrm_contribution',81,97,50.00),
+ (193,'civicrm_contribution',66,97,50.00),
  (194,'civicrm_financial_item',97,97,50.00),
- (195,'civicrm_contribution',86,98,50.00),
+ (195,'civicrm_contribution',69,98,50.00),
  (196,'civicrm_financial_item',98,98,50.00),
- (197,'civicrm_contribution',66,99,50.00),
+ (197,'civicrm_contribution',72,99,50.00),
  (198,'civicrm_financial_item',99,99,50.00),
- (199,'civicrm_contribution',94,100,50.00),
+ (199,'civicrm_contribution',75,100,50.00),
  (200,'civicrm_financial_item',100,100,50.00),
- (201,'civicrm_contribution',93,101,50.00),
+ (201,'civicrm_contribution',78,101,50.00),
  (202,'civicrm_financial_item',101,101,50.00),
- (203,'civicrm_contribution',91,102,50.00),
+ (203,'civicrm_contribution',81,102,50.00),
  (204,'civicrm_financial_item',102,102,50.00),
- (205,'civicrm_contribution',104,103,50.00),
+ (205,'civicrm_contribution',84,103,50.00),
  (206,'civicrm_financial_item',103,103,50.00),
- (207,'civicrm_contribution',64,104,50.00),
+ (207,'civicrm_contribution',88,104,50.00),
  (208,'civicrm_financial_item',104,104,50.00),
- (209,'civicrm_contribution',70,105,50.00),
+ (209,'civicrm_contribution',91,105,50.00),
  (210,'civicrm_financial_item',105,105,50.00),
- (211,'civicrm_contribution',112,106,50.00),
+ (211,'civicrm_contribution',94,106,50.00),
  (212,'civicrm_financial_item',106,106,50.00),
- (213,'civicrm_contribution',99,107,50.00),
+ (213,'civicrm_contribution',97,107,50.00),
  (214,'civicrm_financial_item',107,107,50.00),
- (215,'civicrm_contribution',96,108,50.00),
+ (215,'civicrm_contribution',100,108,50.00),
  (216,'civicrm_financial_item',108,108,50.00),
- (217,'civicrm_contribution',67,109,50.00),
+ (217,'civicrm_contribution',103,109,50.00),
  (218,'civicrm_financial_item',109,109,50.00),
- (219,'civicrm_contribution',107,110,50.00),
+ (219,'civicrm_contribution',106,110,50.00),
  (220,'civicrm_financial_item',110,110,50.00),
- (221,'civicrm_contribution',103,111,50.00),
+ (221,'civicrm_contribution',109,111,50.00),
  (222,'civicrm_financial_item',111,111,50.00);
 /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -3470,126 +3474,126 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_entity_tag` WRITE;
 /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */;
 INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES
- (111,'civicrm_contact',2,5),
- (14,'civicrm_contact',4,4),
- (13,'civicrm_contact',5,4),
- (15,'civicrm_contact',9,4),
- (16,'civicrm_contact',9,5),
- (98,'civicrm_contact',13,5),
- (99,'civicrm_contact',15,4),
- (100,'civicrm_contact',15,5),
- (107,'civicrm_contact',18,4),
- (108,'civicrm_contact',18,5),
- (6,'civicrm_contact',19,3),
- (86,'civicrm_contact',21,4),
- (87,'civicrm_contact',21,5),
- (64,'civicrm_contact',24,4),
- (65,'civicrm_contact',24,5),
- (51,'civicrm_contact',29,4),
- (11,'civicrm_contact',31,5),
- (37,'civicrm_contact',33,4),
- (38,'civicrm_contact',33,5),
- (73,'civicrm_contact',34,4),
- (12,'civicrm_contact',35,4),
- (117,'civicrm_contact',36,4),
- (118,'civicrm_contact',36,5),
- (55,'civicrm_contact',37,4),
- (45,'civicrm_contact',38,5),
- (109,'civicrm_contact',39,4),
- (110,'civicrm_contact',39,5),
- (56,'civicrm_contact',40,4),
- (76,'civicrm_contact',44,4),
- (80,'civicrm_contact',46,4),
- (115,'civicrm_contact',47,4),
- (91,'civicrm_contact',48,4),
- (92,'civicrm_contact',48,5),
- (69,'civicrm_contact',49,5),
- (3,'civicrm_contact',50,3),
- (4,'civicrm_contact',59,2),
- (114,'civicrm_contact',61,4),
- (8,'civicrm_contact',64,1),
- (7,'civicrm_contact',69,3),
- (19,'civicrm_contact',70,5),
- (48,'civicrm_contact',71,4),
- (79,'civicrm_contact',76,5),
- (2,'civicrm_contact',77,1),
- (39,'civicrm_contact',80,5),
- (46,'civicrm_contact',81,4),
- (47,'civicrm_contact',81,5),
- (20,'civicrm_contact',83,5),
- (77,'civicrm_contact',84,4),
- (78,'civicrm_contact',84,5),
- (63,'civicrm_contact',86,5),
- (24,'civicrm_contact',89,5),
- (43,'civicrm_contact',93,4),
- (44,'civicrm_contact',93,5),
- (32,'civicrm_contact',94,5),
- (60,'civicrm_contact',96,4),
- (61,'civicrm_contact',96,5),
- (101,'civicrm_contact',99,4),
- (102,'civicrm_contact',99,5),
- (23,'civicrm_contact',101,4),
- (58,'civicrm_contact',102,4),
- (59,'civicrm_contact',102,5),
- (1,'civicrm_contact',103,1),
- (93,'civicrm_contact',104,5),
- (53,'civicrm_contact',107,5),
- (94,'civicrm_contact',110,5),
- (119,'civicrm_contact',111,4),
- (120,'civicrm_contact',111,5),
- (90,'civicrm_contact',112,4),
- (105,'civicrm_contact',114,4),
- (106,'civicrm_contact',114,5),
- (26,'civicrm_contact',115,5),
- (62,'civicrm_contact',119,4),
- (40,'civicrm_contact',120,4),
- (41,'civicrm_contact',120,5),
- (9,'civicrm_contact',122,1),
- (17,'civicrm_contact',123,4),
- (18,'civicrm_contact',123,5),
- (89,'civicrm_contact',124,4),
- (70,'civicrm_contact',125,4),
- (36,'civicrm_contact',128,4),
- (42,'civicrm_contact',130,5),
- (5,'civicrm_contact',133,2),
- (83,'civicrm_contact',140,4),
- (66,'civicrm_contact',141,4),
- (67,'civicrm_contact',141,5),
- (52,'civicrm_contact',145,5),
- (81,'civicrm_contact',147,4),
- (82,'civicrm_contact',147,5),
- (10,'civicrm_contact',148,2),
- (71,'civicrm_contact',150,4),
- (72,'civicrm_contact',150,5),
- (68,'civicrm_contact',151,4),
- (113,'civicrm_contact',154,5),
- (95,'civicrm_contact',160,4),
- (84,'civicrm_contact',162,4),
- (85,'civicrm_contact',162,5),
- (54,'civicrm_contact',167,5),
- (27,'civicrm_contact',168,4),
- (28,'civicrm_contact',168,5),
- (88,'civicrm_contact',170,4),
- (49,'civicrm_contact',171,4),
- (50,'civicrm_contact',171,5),
- (29,'civicrm_contact',172,4),
- (116,'civicrm_contact',175,5),
- (33,'civicrm_contact',178,5),
- (103,'civicrm_contact',180,4),
- (104,'civicrm_contact',180,5),
- (74,'civicrm_contact',183,4),
- (75,'civicrm_contact',183,5),
- (57,'civicrm_contact',184,5),
- (31,'civicrm_contact',185,5),
- (21,'civicrm_contact',186,4),
- (22,'civicrm_contact',186,5),
- (25,'civicrm_contact',194,4),
- (112,'civicrm_contact',196,4),
- (30,'civicrm_contact',197,4),
- (96,'civicrm_contact',198,4),
- (97,'civicrm_contact',198,5),
- (34,'civicrm_contact',201,4),
- (35,'civicrm_contact',201,5);
+ (112,'civicrm_contact',4,4),
+ (111,'civicrm_contact',5,4),
+ (76,'civicrm_contact',6,4),
+ (77,'civicrm_contact',6,5),
+ (3,'civicrm_contact',9,1),
+ (107,'civicrm_contact',11,4),
+ (20,'civicrm_contact',12,4),
+ (21,'civicrm_contact',12,5),
+ (5,'civicrm_contact',15,1),
+ (15,'civicrm_contact',16,5),
+ (10,'civicrm_contact',17,3),
+ (2,'civicrm_contact',18,1),
+ (115,'civicrm_contact',20,4),
+ (47,'civicrm_contact',21,4),
+ (48,'civicrm_contact',21,5),
+ (24,'civicrm_contact',23,4),
+ (7,'civicrm_contact',26,3),
+ (116,'civicrm_contact',28,5),
+ (61,'civicrm_contact',29,4),
+ (55,'civicrm_contact',30,4),
+ (56,'civicrm_contact',30,5),
+ (88,'civicrm_contact',33,4),
+ (89,'civicrm_contact',33,5),
+ (67,'civicrm_contact',34,4),
+ (6,'civicrm_contact',35,3),
+ (19,'civicrm_contact',37,5),
+ (59,'civicrm_contact',40,4),
+ (113,'civicrm_contact',42,4),
+ (114,'civicrm_contact',42,5),
+ (4,'civicrm_contact',46,2),
+ (1,'civicrm_contact',47,2),
+ (105,'civicrm_contact',52,4),
+ (91,'civicrm_contact',54,4),
+ (92,'civicrm_contact',54,5),
+ (34,'civicrm_contact',57,4),
+ (35,'civicrm_contact',57,5),
+ (103,'civicrm_contact',59,5),
+ (93,'civicrm_contact',62,4),
+ (62,'civicrm_contact',66,4),
+ (63,'civicrm_contact',66,5),
+ (84,'civicrm_contact',69,4),
+ (85,'civicrm_contact',69,5),
+ (16,'civicrm_contact',70,5),
+ (11,'civicrm_contact',72,4),
+ (12,'civicrm_contact',72,5),
+ (30,'civicrm_contact',74,4),
+ (36,'civicrm_contact',79,4),
+ (106,'civicrm_contact',80,5),
+ (69,'civicrm_contact',81,4),
+ (70,'civicrm_contact',81,5),
+ (94,'civicrm_contact',83,4),
+ (100,'civicrm_contact',84,4),
+ (101,'civicrm_contact',84,5),
+ (17,'civicrm_contact',85,5),
+ (28,'civicrm_contact',86,5),
+ (46,'civicrm_contact',88,4),
+ (104,'civicrm_contact',91,4),
+ (108,'civicrm_contact',93,4),
+ (109,'civicrm_contact',93,5),
+ (50,'civicrm_contact',107,5),
+ (25,'civicrm_contact',108,4),
+ (26,'civicrm_contact',108,5),
+ (110,'civicrm_contact',109,4),
+ (18,'civicrm_contact',110,4),
+ (37,'civicrm_contact',113,4),
+ (42,'civicrm_contact',114,4),
+ (43,'civicrm_contact',114,5),
+ (38,'civicrm_contact',116,5),
+ (32,'civicrm_contact',117,4),
+ (33,'civicrm_contact',117,5),
+ (9,'civicrm_contact',123,2),
+ (90,'civicrm_contact',128,4),
+ (45,'civicrm_contact',131,4),
+ (79,'civicrm_contact',132,4),
+ (80,'civicrm_contact',132,5),
+ (102,'civicrm_contact',133,5),
+ (51,'civicrm_contact',136,5),
+ (54,'civicrm_contact',137,5),
+ (71,'civicrm_contact',139,4),
+ (74,'civicrm_contact',141,4),
+ (75,'civicrm_contact',141,5),
+ (52,'civicrm_contact',142,5),
+ (95,'civicrm_contact',143,5),
+ (39,'civicrm_contact',149,5),
+ (96,'civicrm_contact',150,4),
+ (97,'civicrm_contact',150,5),
+ (117,'civicrm_contact',152,4),
+ (13,'civicrm_contact',153,4),
+ (14,'civicrm_contact',153,5),
+ (27,'civicrm_contact',154,5),
+ (65,'civicrm_contact',156,4),
+ (66,'civicrm_contact',156,5),
+ (83,'civicrm_contact',157,5),
+ (53,'civicrm_contact',158,4),
+ (57,'civicrm_contact',159,4),
+ (58,'civicrm_contact',159,5),
+ (8,'civicrm_contact',162,3),
+ (118,'civicrm_contact',165,4),
+ (119,'civicrm_contact',165,5),
+ (72,'civicrm_contact',168,4),
+ (73,'civicrm_contact',168,5),
+ (64,'civicrm_contact',170,5),
+ (81,'civicrm_contact',171,4),
+ (82,'civicrm_contact',171,5),
+ (44,'civicrm_contact',178,4),
+ (49,'civicrm_contact',179,4),
+ (98,'civicrm_contact',180,4),
+ (99,'civicrm_contact',180,5),
+ (120,'civicrm_contact',181,4),
+ (29,'civicrm_contact',182,4),
+ (78,'civicrm_contact',185,4),
+ (68,'civicrm_contact',187,4),
+ (60,'civicrm_contact',188,4),
+ (40,'civicrm_contact',189,4),
+ (41,'civicrm_contact',189,5),
+ (31,'civicrm_contact',191,4),
+ (22,'civicrm_contact',192,4),
+ (23,'civicrm_contact',192,5),
+ (86,'civicrm_contact',195,4),
+ (87,'civicrm_contact',195,5);
 /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3599,13 +3603,13 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_event` WRITE;
 /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */;
-INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES
- (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-19 17:00:00','2024-04-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-18 12:00:00','2023-10-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-19 07:00:00','2024-05-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0);
+INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`, `is_show_calendar_links`) VALUES
+ (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-06-17 17:00:00','2024-06-19 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-12-16 12:00:00','2023-12-16 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-07-17 07:00:00','2024-07-20 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1);
 /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3640,12 +3644,14 @@ INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `fi
  (4,'module','recaptcha','reCAPTCHA','reCAPTCHA','recaptcha',NULL,1),
  (5,'module','ckeditor4','CKEditor4','CKEditor4','ckeditor4',NULL,1),
  (6,'module','org.civicrm.flexmailer','FlexMailer','FlexMailer','flexmailer',NULL,1),
- (7,'module','civi_contribute','CiviContribute','CiviContribute','civi_contribute',NULL,1),
- (8,'module','civi_event','CiviEvent','CiviEvent','civi_event',NULL,1),
- (9,'module','civi_mail','CiviMail','CiviMail','civi_mail',NULL,1),
- (10,'module','civi_member','CiviMember','CiviMember','civi_member',NULL,1),
- (11,'module','civi_pledge','CiviPledge','CiviPledge','civi_pledge',NULL,1),
- (12,'module','civi_report','CiviReport','CiviReport','civi_report',NULL,1);
+ (7,'module','civi_campaign','CiviCampaign','CiviCampaign','civi_campaign',NULL,1),
+ (8,'module','civi_case','CiviCase','CiviCase','civi_case',NULL,1),
+ (9,'module','civi_contribute','CiviContribute','CiviContribute','civi_contribute',NULL,1),
+ (10,'module','civi_event','CiviEvent','CiviEvent','civi_event',NULL,1),
+ (11,'module','civi_mail','CiviMail','CiviMail','civi_mail',NULL,1),
+ (12,'module','civi_member','CiviMember','CiviMember','civi_member',NULL,1),
+ (13,'module','civi_pledge','CiviPledge','CiviPledge','civi_pledge',NULL,1),
+ (14,'module','civi_report','CiviReport','CiviReport','civi_report',NULL,1);
 /*!40000 ALTER TABLE `civicrm_extension` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3689,117 +3695,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_financial_item` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */;
 INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES
- (1,'2023-10-19 21:22:30','2013-10-19 14:22:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
- (2,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
- (3,'2023-10-19 21:22:30','2017-09-24 01:22:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
- (4,'2023-10-19 21:22:30','2021-07-19 14:22:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
- (5,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
- (6,'2023-10-19 21:22:30','2023-07-26 13:40:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
- (7,'2023-10-19 21:22:30','2023-10-17 14:22:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
- (8,'2023-10-19 21:22:30','2023-02-24 22:33:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
- (9,'2023-10-19 21:22:30','2022-11-19 14:22:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
- (10,'2023-10-19 21:22:30','2019-05-27 16:22:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
- (11,'2023-10-19 21:22:30','2023-10-18 10:22:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
- (12,'2023-10-19 21:22:30','2022-07-19 03:49:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
- (13,'2023-10-19 21:22:30','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
- (14,'2023-10-19 21:22:30','2023-08-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
- (15,'2023-10-19 21:22:30','2022-07-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
- (16,'2023-10-19 21:22:30','2022-08-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
- (17,'2023-10-19 21:22:30','2022-09-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
- (18,'2023-10-19 21:22:30','2022-10-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
- (19,'2023-10-19 21:22:30','2022-11-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
- (20,'2023-10-19 21:22:30','2022-12-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
- (21,'2023-10-19 21:22:30','2023-01-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
- (22,'2023-10-19 21:22:30','2023-02-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
- (23,'2023-10-19 21:22:30','2023-03-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
- (24,'2023-10-19 21:22:30','2023-04-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
- (25,'2023-10-19 21:22:30','2023-05-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
- (26,'2023-10-19 21:22:30','2023-02-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
- (27,'2023-10-19 21:22:30','2023-03-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
- (28,'2023-10-19 21:22:30','2023-04-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
- (29,'2023-10-19 21:22:30','2023-05-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
- (30,'2023-10-19 21:22:30','2023-06-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
- (31,'2023-10-19 21:22:30','2023-09-19 14:22:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
- (32,'2023-10-19 21:22:30','2023-10-19 14:22:30',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
- (33,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'General',100.00,'USD',2,1,'civicrm_line_item',38),
- (34,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'General',100.00,'USD',2,1,'civicrm_line_item',41),
- (35,'2023-10-19 21:22:30','2023-10-19 14:22:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43),
- (36,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'General',100.00,'USD',2,1,'civicrm_line_item',34),
- (37,'2023-10-19 21:22:30','2023-10-19 14:22:30',39,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
- (38,'2023-10-19 21:22:30','2023-10-19 14:22:30',47,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
- (39,'2023-10-19 21:22:30','2023-10-19 14:22:30',48,'General',100.00,'USD',2,1,'civicrm_line_item',36),
- (40,'2023-10-19 21:22:30','2023-10-19 14:22:30',49,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
- (41,'2023-10-19 21:22:30','2023-10-19 14:22:30',54,'General',100.00,'USD',2,1,'civicrm_line_item',39),
- (42,'2023-10-19 21:22:30','2023-10-19 14:22:30',55,'General',100.00,'USD',2,1,'civicrm_line_item',32),
- (43,'2023-10-19 21:22:30','2023-10-19 14:22:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
- (44,'2023-10-19 21:22:30','2023-10-19 14:22:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
- (45,'2023-10-19 21:22:30','2023-10-19 14:22:30',86,'General',100.00,'USD',2,1,'civicrm_line_item',45),
- (46,'2023-10-19 21:22:30','2023-10-19 14:22:30',87,'General',100.00,'USD',2,1,'civicrm_line_item',35),
- (47,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
- (48,'2023-10-19 21:22:30','2023-10-19 14:22:30',93,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
- (49,'2023-10-19 21:22:30','2023-10-19 14:22:30',100,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
- (50,'2023-10-19 21:22:30','2023-10-19 14:22:30',106,'General',100.00,'USD',2,1,'civicrm_line_item',40),
- (51,'2023-10-19 21:22:30','2023-10-19 14:22:30',113,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
- (52,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'General',100.00,'USD',2,1,'civicrm_line_item',44),
- (53,'2023-10-19 21:22:30','2023-10-19 14:22:30',126,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
- (54,'2023-10-19 21:22:30','2023-10-19 14:22:30',136,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
- (55,'2023-10-19 21:22:30','2023-10-19 14:22:30',149,'General',100.00,'USD',2,1,'civicrm_line_item',46),
- (56,'2023-10-19 21:22:30','2023-10-19 14:22:30',164,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
- (57,'2023-10-19 21:22:30','2023-10-19 14:22:30',168,'General',100.00,'USD',2,1,'civicrm_line_item',33),
- (58,'2023-10-19 21:22:30','2023-10-19 14:22:30',169,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
- (59,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'General',100.00,'USD',2,1,'civicrm_line_item',42),
- (60,'2023-10-19 21:22:30','2023-10-19 14:22:30',180,'General',100.00,'USD',2,1,'civicrm_line_item',37),
- (61,'2023-10-19 21:22:30','2023-10-19 14:22:30',187,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
- (62,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
- (63,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
- (64,'2023-10-19 21:22:30','2023-10-19 14:22:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
- (65,'2023-10-19 21:22:30','2023-10-19 14:22:30',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
- (66,'2023-10-19 21:22:30','2023-10-19 14:22:30',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
- (67,'2023-10-19 21:22:30','2023-10-19 14:22:30',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
- (68,'2023-10-19 21:22:30','2023-10-19 14:22:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
- (69,'2023-10-19 21:22:30','2023-10-19 14:22:30',45,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
- (70,'2023-10-19 21:22:30','2023-10-19 14:22:30',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
- (71,'2023-10-19 21:22:30','2023-10-19 14:22:30',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
- (72,'2023-10-19 21:22:30','2023-10-19 14:22:30',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
- (73,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
- (74,'2023-10-19 21:22:30','2023-10-19 14:22:30',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
- (75,'2023-10-19 21:22:30','2023-10-19 14:22:30',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
- (76,'2023-10-19 21:22:30','2023-10-19 14:22:30',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
- (77,'2023-10-19 21:22:30','2023-10-19 14:22:30',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
- (78,'2023-10-19 21:22:30','2023-10-19 14:22:30',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
- (79,'2023-10-19 21:22:30','2023-10-19 14:22:30',40,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
- (80,'2023-10-19 21:22:30','2023-10-19 14:22:30',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
- (81,'2023-10-19 21:22:30','2023-10-19 14:22:30',192,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
- (82,'2023-10-19 21:22:30','2023-10-19 14:22:30',16,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
- (83,'2023-10-19 21:22:30','2023-10-19 14:22:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
- (84,'2023-10-19 21:22:30','2023-10-19 14:22:30',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
- (85,'2023-10-19 21:22:30','2023-10-19 14:22:30',196,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
- (86,'2023-10-19 21:22:30','2023-10-19 14:22:30',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
- (87,'2023-10-19 21:22:30','2023-10-19 14:22:30',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
- (88,'2023-10-19 21:22:30','2023-10-19 14:22:30',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
- (89,'2023-10-19 21:22:30','2023-10-19 14:22:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
- (90,'2023-10-19 21:22:30','2023-10-19 14:22:30',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
- (91,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
- (92,'2023-10-19 21:22:30','2023-10-19 14:22:30',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
- (93,'2023-10-19 21:22:30','2023-10-19 14:22:30',57,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
- (94,'2023-10-19 21:22:30','2023-10-19 14:22:30',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
- (95,'2023-10-19 21:22:30','2023-10-19 14:22:30',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
- (96,'2023-10-19 21:22:30','2023-10-19 14:22:30',10,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
- (97,'2023-10-19 21:22:30','2023-10-19 14:22:30',77,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
- (98,'2023-10-19 21:22:30','2023-10-19 14:22:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
- (99,'2023-10-19 21:22:30','2023-10-19 14:22:30',13,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
- (100,'2023-10-19 21:22:30','2023-10-19 14:22:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
- (101,'2023-10-19 21:22:30','2023-10-19 14:22:30',132,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
- (102,'2023-10-19 21:22:30','2023-10-19 14:22:30',123,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
- (103,'2023-10-19 21:22:30','2023-10-19 14:22:30',178,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
- (104,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
- (105,'2023-10-19 21:22:30','2023-10-19 14:22:30',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
- (106,'2023-10-19 21:22:30','2023-10-19 14:22:30',197,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
- (107,'2023-10-19 21:22:30','2023-10-19 14:22:30',159,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
- (108,'2023-10-19 21:22:30','2023-10-19 14:22:30',154,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
- (109,'2023-10-19 21:22:30','2023-10-19 14:22:30',14,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
- (110,'2023-10-19 21:22:30','2023-10-19 14:22:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
- (111,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
+ (1,'2023-12-17 20:11:38','2013-12-17 20:11:37',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
+ (2,'2023-12-17 20:11:38','2021-09-17 20:11:37',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
+ (3,'2023-12-17 20:11:38','2017-11-22 07:11:37',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
+ (4,'2023-12-17 20:11:38','2021-09-17 20:11:37',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
+ (5,'2023-12-17 20:11:38','2021-09-17 20:11:37',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
+ (6,'2023-12-17 20:11:38','2023-09-23 19:29:37',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
+ (7,'2023-12-17 20:11:38','2023-12-15 20:11:37',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
+ (8,'2023-12-17 20:11:38','2023-04-25 04:22:37',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
+ (9,'2023-12-17 20:11:38','2023-01-17 20:11:37',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
+ (10,'2023-12-17 20:11:38','2019-07-25 22:11:37',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
+ (11,'2023-12-17 20:11:38','2023-12-16 16:11:37',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
+ (12,'2023-12-17 20:11:38','2022-09-17 09:38:17',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
+ (13,'2023-12-17 20:11:38','2023-09-17 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
+ (14,'2023-12-17 20:11:38','2023-10-17 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
+ (15,'2023-12-17 20:11:38','2022-09-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
+ (16,'2023-12-17 20:11:38','2022-10-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
+ (17,'2023-12-17 20:11:38','2022-11-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
+ (18,'2023-12-17 20:11:38','2022-12-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
+ (19,'2023-12-17 20:11:38','2023-01-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
+ (20,'2023-12-17 20:11:38','2023-02-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
+ (21,'2023-12-17 20:11:38','2023-03-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
+ (22,'2023-12-17 20:11:38','2023-04-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
+ (23,'2023-12-17 20:11:38','2023-05-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
+ (24,'2023-12-17 20:11:38','2023-06-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
+ (25,'2023-12-17 20:11:38','2023-07-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
+ (26,'2023-12-17 20:11:38','2023-04-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
+ (27,'2023-12-17 20:11:38','2023-05-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
+ (28,'2023-12-17 20:11:38','2023-06-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
+ (29,'2023-12-17 20:11:38','2023-07-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
+ (30,'2023-12-17 20:11:38','2023-08-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
+ (31,'2023-12-17 20:11:38','2023-11-17 20:11:37',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
+ (32,'2023-12-17 20:11:38','2023-12-17 20:11:38',82,'General',100.00,'USD',2,1,'civicrm_line_item',32),
+ (33,'2023-12-17 20:11:38','2023-12-17 20:11:38',110,'General',100.00,'USD',2,1,'civicrm_line_item',33),
+ (34,'2023-12-17 20:11:38','2023-12-17 20:11:38',105,'General',100.00,'USD',2,1,'civicrm_line_item',34),
+ (35,'2023-12-17 20:11:38','2023-12-17 20:11:38',163,'General',100.00,'USD',2,1,'civicrm_line_item',35),
+ (36,'2023-12-17 20:11:38','2023-12-17 20:11:38',114,'General',100.00,'USD',2,1,'civicrm_line_item',36),
+ (37,'2023-12-17 20:11:38','2023-12-17 20:11:38',146,'General',100.00,'USD',2,1,'civicrm_line_item',37),
+ (38,'2023-12-17 20:11:38','2023-12-17 20:11:38',8,'General',100.00,'USD',2,1,'civicrm_line_item',38),
+ (39,'2023-12-17 20:11:38','2023-12-17 20:11:38',99,'General',100.00,'USD',2,1,'civicrm_line_item',39),
+ (40,'2023-12-17 20:11:38','2023-12-17 20:11:38',70,'General',100.00,'USD',2,1,'civicrm_line_item',40),
+ (41,'2023-12-17 20:11:38','2023-12-17 20:11:38',28,'General',100.00,'USD',2,1,'civicrm_line_item',41),
+ (42,'2023-12-17 20:11:38','2023-12-17 20:11:38',153,'General',100.00,'USD',2,1,'civicrm_line_item',42),
+ (43,'2023-12-17 20:11:38','2023-12-17 20:11:38',67,'General',100.00,'USD',2,1,'civicrm_line_item',43),
+ (44,'2023-12-17 20:11:38','2023-12-17 20:11:38',112,'General',100.00,'USD',2,1,'civicrm_line_item',44),
+ (45,'2023-12-17 20:11:38','2023-12-17 20:11:38',62,'General',100.00,'USD',2,1,'civicrm_line_item',45),
+ (46,'2023-12-17 20:11:38','2023-12-17 20:11:38',34,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
+ (47,'2023-12-17 20:11:38','2023-12-17 20:11:38',91,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
+ (48,'2023-12-17 20:11:38','2023-12-17 20:11:38',176,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
+ (49,'2023-12-17 20:11:38','2023-12-17 20:11:38',119,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
+ (50,'2023-12-17 20:11:38','2023-12-17 20:11:38',170,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
+ (51,'2023-12-17 20:11:38','2023-12-17 20:11:38',190,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
+ (52,'2023-12-17 20:11:38','2023-12-17 20:11:38',179,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
+ (53,'2023-12-17 20:11:38','2023-12-17 20:11:38',48,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
+ (54,'2023-12-17 20:11:38','2023-12-17 20:11:38',96,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
+ (55,'2023-12-17 20:11:38','2023-12-17 20:11:38',84,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
+ (56,'2023-12-17 20:11:38','2023-12-17 20:11:38',195,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
+ (57,'2023-12-17 20:11:38','2023-12-17 20:11:38',75,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
+ (58,'2023-12-17 20:11:38','2023-12-17 20:11:38',188,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
+ (59,'2023-12-17 20:11:38','2023-12-17 20:11:38',59,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
+ (60,'2023-12-17 20:11:38','2023-12-17 20:11:38',154,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
+ (61,'2023-12-17 20:11:38','2023-12-17 20:11:38',156,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
+ (62,'2023-12-17 20:11:38','2023-12-17 20:11:38',87,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
+ (63,'2023-12-17 20:11:38','2023-12-17 20:11:38',113,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
+ (64,'2023-12-17 20:11:38','2023-12-17 20:11:38',100,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
+ (65,'2023-12-17 20:11:38','2023-12-17 20:11:38',155,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
+ (66,'2023-12-17 20:11:38','2023-12-17 20:11:38',77,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
+ (67,'2023-12-17 20:11:38','2023-12-17 20:11:38',89,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
+ (68,'2023-12-17 20:11:38','2023-12-17 20:11:38',139,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
+ (69,'2023-12-17 20:11:38','2023-12-17 20:11:38',71,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
+ (70,'2023-12-17 20:11:38','2023-12-17 20:11:38',55,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
+ (71,'2023-12-17 20:11:38','2023-12-17 20:11:38',79,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
+ (72,'2023-12-17 20:11:38','2023-12-17 20:11:38',177,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
+ (73,'2023-12-17 20:11:38','2023-12-17 20:11:38',61,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
+ (74,'2023-12-17 20:11:38','2023-12-17 20:11:38',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
+ (75,'2023-12-17 20:11:38','2023-12-17 20:11:38',31,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
+ (76,'2023-12-17 20:11:38','2023-12-17 20:11:38',130,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
+ (77,'2023-12-17 20:11:38','2023-12-17 20:11:38',82,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
+ (78,'2023-12-17 20:11:38','2023-12-17 20:11:38',124,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
+ (79,'2023-12-17 20:11:38','2023-12-17 20:11:38',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
+ (80,'2023-12-17 20:11:38','2023-12-17 20:11:38',83,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
+ (81,'2023-12-17 20:11:38','2023-12-17 20:11:38',150,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
+ (82,'2023-12-17 20:11:38','2023-12-17 20:11:38',183,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
+ (83,'2023-12-17 20:11:38','2023-12-17 20:11:38',129,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
+ (84,'2023-12-17 20:11:38','2023-12-17 20:11:38',174,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
+ (85,'2023-12-17 20:11:38','2023-12-17 20:11:38',95,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
+ (86,'2023-12-17 20:11:38','2023-12-17 20:11:38',65,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
+ (87,'2023-12-17 20:11:38','2023-12-17 20:11:38',194,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
+ (88,'2023-12-17 20:11:38','2023-12-17 20:11:38',106,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
+ (89,'2023-12-17 20:11:38','2023-12-17 20:11:38',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
+ (90,'2023-12-17 20:11:38','2023-12-17 20:11:38',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
+ (91,'2023-12-17 20:11:38','2023-12-17 20:11:38',25,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
+ (92,'2023-12-17 20:11:38','2023-12-17 20:11:38',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
+ (93,'2023-12-17 20:11:38','2023-12-17 20:11:38',193,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
+ (94,'2023-12-17 20:11:38','2023-12-17 20:11:38',38,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
+ (95,'2023-12-17 20:11:38','2023-12-17 20:11:38',162,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
+ (96,'2023-12-17 20:11:38','2023-12-17 20:11:38',156,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
+ (97,'2023-12-17 20:11:38','2023-12-17 20:11:38',127,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
+ (98,'2023-12-17 20:11:38','2023-12-17 20:11:38',120,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
+ (99,'2023-12-17 20:11:38','2023-12-17 20:11:38',72,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
+ (100,'2023-12-17 20:11:38','2023-12-17 20:11:38',149,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
+ (101,'2023-12-17 20:11:38','2023-12-17 20:11:38',199,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
+ (102,'2023-12-17 20:11:38','2023-12-17 20:11:38',67,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
+ (103,'2023-12-17 20:11:38','2023-12-17 20:11:38',62,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
+ (104,'2023-12-17 20:11:38','2023-12-17 20:11:38',59,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
+ (105,'2023-12-17 20:11:38','2023-12-17 20:11:38',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
+ (106,'2023-12-17 20:11:38','2023-12-17 20:11:38',18,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
+ (107,'2023-12-17 20:11:38','2023-12-17 20:11:38',42,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
+ (108,'2023-12-17 20:11:38','2023-12-17 20:11:38',173,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
+ (109,'2023-12-17 20:11:38','2023-12-17 20:11:38',110,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
+ (110,'2023-12-17 20:11:38','2023-12-17 20:11:38',52,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
+ (111,'2023-12-17 20:11:38','2023-12-17 20:11:38',168,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
 /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3810,117 +3816,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_financial_trxn` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */;
 INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES
- (1,NULL,6,'2013-10-19 14:22:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
- (2,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (3,NULL,6,'2017-09-24 01:22:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
- (4,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
- (5,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (6,NULL,6,'2023-07-26 13:40:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
- (7,NULL,6,'2023-10-17 14:22:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
- (8,NULL,6,'2023-02-24 22:33:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (9,NULL,6,'2022-11-19 14:22:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (10,NULL,6,'2019-05-27 16:22:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (11,NULL,6,'2023-10-18 10:22:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (12,NULL,6,'2022-07-19 03:49:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (13,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (14,NULL,6,'2023-08-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (15,NULL,6,'2022-07-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (16,NULL,6,'2022-08-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (17,NULL,6,'2022-09-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (18,NULL,6,'2022-10-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (19,NULL,6,'2022-11-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (20,NULL,6,'2022-12-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (21,NULL,6,'2023-01-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (22,NULL,6,'2023-02-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (23,NULL,6,'2023-03-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (24,NULL,6,'2023-04-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (25,NULL,6,'2023-05-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (26,NULL,6,'2023-02-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (27,NULL,6,'2023-03-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (28,NULL,6,'2023-04-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (29,NULL,6,'2023-05-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (30,NULL,6,'2023-06-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (31,NULL,6,'2023-09-19 14:22:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (32,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'ffed5868e9951a95',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (33,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e38f6ec37b9fabb3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (34,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'386a76c90a983717',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (35,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'6f302a92a8d039f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (36,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c7f53644ae2a7abd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (37,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'8e1a4f823c309e35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (38,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'62904aaad7687d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (39,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'9e43d605091634b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (40,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9183e73af132fbd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (41,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'f739f79d40e7bd2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (42,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c908bcfa0cd5be20',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (43,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'32f851d09a3775f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (44,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'aa13673d8ef85a65',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (45,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'fd4792bd3a50da87',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (46,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'df65e9305cdef133',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (47,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'e7836a1040fc6647',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (48,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'fe44a2c192ab18be',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (49,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ef096073ba84bc0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (50,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'0937a86d9856d20f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (51,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'0e4d2cc74726c33e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (52,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'184c1625a0ab7dc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (53,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'58c722d9ea8f60e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (54,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'dc8c98604902da07',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (55,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'2ae34338151a8c31',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (56,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'126eb1cbca88ac46',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (57,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'4d24ed19cb02ed0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (58,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'46fff670fdd88c83',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (59,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'1d446a98d22519c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (60,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e6d81f09a41d0f35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (61,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9668e4798e266def',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (62,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'548746b3839860da',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (63,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'25a9f0b5ed29df0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (64,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ed07590fe067cb07',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (65,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f82bc2b76969d315',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (66,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'2169580b75789814',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (67,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'504a9107e1c840c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (68,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9dc4f36b0500ac35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (69,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'96af8634550c39ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (70,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'082640d22f20fcf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (71,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'a720e6fdf9eea694',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (72,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'c8d10d10dd2d66bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (73,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'413cb05032f4ef86',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (74,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b056ac8b83186f79',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (75,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'bd1cbf336bcdc529',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (76,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'188d57636c31422a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (77,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'44c3f7faa315a724',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (78,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'0ab78d1432305653',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (79,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3eb2384d79bdaa10',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (80,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'d39bcc7bf0e51cab',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (81,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4feacc260963ba72',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (82,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'95a80169077a3dea',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (83,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b7318d85efca799b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (84,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6ba712ac9576b7b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (85,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a96ed671bbd3ea09',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (86,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'cca171d375cdc8f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (87,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'146f0c5184fd503c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (88,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'732d30e0d1d41ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (89,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b28927dfa09ab7b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (90,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3de19df12cf6886c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (91,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'7a53e74599f788ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (92,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4bc019d5fcebe204',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (93,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a2542bee3dc332de',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (94,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6cc8dd5a5b8e8913',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (95,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'24cc9f9c83795713',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (96,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7245aac602b546bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (97,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ac8995759a7a3270',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (98,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'472bf4e471ef125f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (99,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ff5b5537da44c970',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (100,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'648327e05cdee0ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (101,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b7c48e40295cdc9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (102,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f78524f14cda217c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (103,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7e35b99bd91e7b4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (104,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'52b5a6a76b142227',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (105,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'755c91f4df5025f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (106,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'60f19d9651d20536',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (107,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'6def5a3cac235219',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (108,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fe477a4cedeef016',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (109,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fad72a1cf34cf68e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (110,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'656d8e5060576829',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (111,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7749b8e4f077e05c',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
+ (1,NULL,6,'2013-12-17 20:11:37',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
+ (2,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (3,NULL,6,'2017-11-22 07:11:37',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
+ (4,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
+ (5,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (6,NULL,6,'2023-09-23 19:29:37',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
+ (7,NULL,6,'2023-12-15 20:11:37',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
+ (8,NULL,6,'2023-04-25 04:22:37',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (9,NULL,6,'2023-01-17 20:11:37',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (10,NULL,6,'2019-07-25 22:11:37',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (11,NULL,6,'2023-12-16 16:11:37',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (12,NULL,6,'2022-09-17 09:38:17',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (13,NULL,6,'2023-09-17 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (14,NULL,6,'2023-10-17 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (15,NULL,6,'2022-09-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (16,NULL,6,'2022-10-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (17,NULL,6,'2022-11-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (18,NULL,6,'2022-12-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (19,NULL,6,'2023-01-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (20,NULL,6,'2023-02-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (21,NULL,6,'2023-03-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (22,NULL,6,'2023-04-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (23,NULL,6,'2023-05-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (24,NULL,6,'2023-06-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (25,NULL,6,'2023-07-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (26,NULL,6,'2023-04-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (27,NULL,6,'2023-05-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (28,NULL,6,'2023-06-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (29,NULL,6,'2023-07-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (30,NULL,6,'2023-08-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (31,NULL,6,'2023-11-17 20:11:37',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (32,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'830461b5ad84c1e7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (33,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'a5415e027d83717c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (34,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'9555523ece178b6a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (35,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'57ca21492529910f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (36,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'7fc2d080a0d70d5f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (37,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'1d0aac8b34ff8b84',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (38,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'2ccc981e3e5a1e8d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (39,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'60cce134dbd4af13',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (40,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'2ba05d7beabc92a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (41,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'42542107efb6f295',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (42,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'b707c69168d7550b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (43,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'4af2784315e9f068',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (44,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'d05b6eb57e4fa850',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (45,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'023a722551f3e725',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (46,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ff8cf92f9773545c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (47,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1ca376a7b8d0e2d5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (48,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'a7c0f89867c8a428',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (49,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'99991cb2ffe28b8b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (50,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'20e577eba5667eae',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (51,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'fe4e0f13e7eb09bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (52,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'e254b4f121439b6f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (53,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ebd306ae8053c70f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (54,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'624424ef23bab211',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (55,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'f0b56ae2e34b40b2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (56,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'10336515977ecfd6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (57,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'60040a9003287de2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (58,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'acd346f2fe5f77bc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (59,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1202258df77a0fa2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (60,NULL,6,'2023-12-17 20:11:38',1200.00,NULL,NULL,'USD',1,'c75d99ea7586de97',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (61,NULL,6,'2023-12-17 20:11:38',1200.00,NULL,NULL,'USD',1,'15093bca050f76cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (62,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ba8f69f88fe9a279',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (63,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'cad86325b8d974d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (64,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'0cd0fead7f55fc4f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (65,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'776e13db77b1f674',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (66,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'22e53d83c72810f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (67,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'11449abd78f15f83',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (68,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'8e76e6c92073b839',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (69,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'b65d48375f052b5e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (70,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'49ca8e2d4f12f02b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (71,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'026ebccce765774b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (72,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'23c1977d50939b3e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (73,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'19b9fc43ca780269',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (74,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'23c029b556d782cd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (75,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'96cda567448aa26b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (76,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'3231adeb2f830242',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (77,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'febc54389846736e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (78,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'15af525cf42e5b33',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (79,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'91dcd9fea13e4d34',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (80,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'c6de9a43eb5b7aa3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (81,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'8905d5e48dc6442a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (82,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'c14f7f184fe25f15',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (83,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'797deb5dffdce687',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (84,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'13382d88dcdbf9c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (85,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'99f3b4bbbe0e2de3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (86,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'55b9c4d23cf793e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (87,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'35ec8cec4d7b3e0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (88,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'a747e70aae3e2c37',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (89,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'5900a1f4d9db201b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (90,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'8fa3d088dff273af',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (91,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'422bb0afad03efe1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (92,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'44ac28a2795797e3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (93,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'bec2677521a23f70',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (94,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'1272470c83cadd49',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (95,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'bd7ec6b46ece178f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (96,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'25fd6030886b7c5c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (97,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1afc702ecb5219fd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (98,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'2f37622da3edd416',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (99,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'0f56e1a0dd6ab6f3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (100,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'86063ee6b2a9e896',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (101,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'e4af20137ce2bdd5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (102,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'27cc8136671b8d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (103,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'36af07a9a33d3f5d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (104,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'4a5cc20b54e1bf2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (105,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'9d526f8939ed06bc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (106,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c8661d25b19cc20a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (107,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'034acdc1fa387ffc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (108,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'055d24ef0c16aeb2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (109,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c55c272423d8f92b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (110,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'36371153332378fc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (111,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c73781dd9dfc1d86',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3959,89 +3965,89 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_group_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES
- (1,2,31,'Added',NULL,NULL),
- (2,2,25,'Added',NULL,NULL),
- (3,2,35,'Added',NULL,NULL),
- (4,2,142,'Added',NULL,NULL),
- (5,2,5,'Added',NULL,NULL),
- (6,2,54,'Added',NULL,NULL),
- (7,2,4,'Added',NULL,NULL),
- (8,2,82,'Added',NULL,NULL),
- (9,2,9,'Added',NULL,NULL),
- (10,2,143,'Added',NULL,NULL),
- (11,2,123,'Added',NULL,NULL),
- (12,2,78,'Added',NULL,NULL),
- (13,2,70,'Added',NULL,NULL),
- (14,2,173,'Added',NULL,NULL),
- (15,2,83,'Added',NULL,NULL),
- (16,2,72,'Added',NULL,NULL),
- (17,2,186,'Added',NULL,NULL),
- (18,2,127,'Added',NULL,NULL),
- (19,2,101,'Added',NULL,NULL),
- (20,2,30,'Added',NULL,NULL),
- (21,2,89,'Added',NULL,NULL),
- (22,2,187,'Added',NULL,NULL),
- (23,2,194,'Added',NULL,NULL),
- (24,2,136,'Added',NULL,NULL),
- (25,2,115,'Added',NULL,NULL),
- (26,2,129,'Added',NULL,NULL),
- (27,2,168,'Added',NULL,NULL),
- (28,2,157,'Added',NULL,NULL),
- (29,2,172,'Added',NULL,NULL),
- (30,2,117,'Added',NULL,NULL),
- (31,2,197,'Added',NULL,NULL),
- (32,2,98,'Added',NULL,NULL),
- (33,2,185,'Added',NULL,NULL),
- (34,2,132,'Added',NULL,NULL),
- (35,2,94,'Added',NULL,NULL),
- (36,2,11,'Added',NULL,NULL),
- (37,2,178,'Added',NULL,NULL),
- (38,2,144,'Added',NULL,NULL),
- (39,2,201,'Added',NULL,NULL),
- (40,2,87,'Added',NULL,NULL),
- (41,2,128,'Added',NULL,NULL),
- (42,2,8,'Added',NULL,NULL),
- (43,2,33,'Added',NULL,NULL),
- (44,2,42,'Added',NULL,NULL),
- (45,2,80,'Added',NULL,NULL),
- (46,2,153,'Added',NULL,NULL),
- (47,2,120,'Added',NULL,NULL),
- (48,2,169,'Added',NULL,NULL),
- (49,2,130,'Added',NULL,NULL),
- (50,2,28,'Added',NULL,NULL),
- (51,2,93,'Added',NULL,NULL),
- (52,2,17,'Added',NULL,NULL),
- (53,2,38,'Added',NULL,NULL),
- (54,2,174,'Added',NULL,NULL),
- (55,2,81,'Added',NULL,NULL),
- (56,2,113,'Added',NULL,NULL),
- (57,2,71,'Added',NULL,NULL),
- (58,2,56,'Added',NULL,NULL),
- (59,2,171,'Added',NULL,NULL),
- (60,2,97,'Added',NULL,NULL),
- (61,3,29,'Added',NULL,NULL),
- (62,3,138,'Added',NULL,NULL),
- (63,3,145,'Added',NULL,NULL),
- (64,3,166,'Added',NULL,NULL),
- (65,3,107,'Added',NULL,NULL),
- (66,3,105,'Added',NULL,NULL),
- (67,3,167,'Added',NULL,NULL),
- (68,3,192,'Added',NULL,NULL),
- (69,3,37,'Added',NULL,NULL),
- (70,3,27,'Added',NULL,NULL),
- (71,3,40,'Added',NULL,NULL),
- (72,3,165,'Added',NULL,NULL),
- (73,3,184,'Added',NULL,NULL),
- (74,3,158,'Added',NULL,NULL),
- (75,3,102,'Added',NULL,NULL),
- (76,4,31,'Added',NULL,NULL),
- (77,4,82,'Added',NULL,NULL),
- (78,4,83,'Added',NULL,NULL),
- (79,4,187,'Added',NULL,NULL),
- (80,4,172,'Added',NULL,NULL),
- (81,4,11,'Added',NULL,NULL),
- (82,4,33,'Added',NULL,NULL),
- (83,4,28,'Added',NULL,NULL),
+ (1,2,72,'Added',NULL,NULL),
+ (2,2,19,'Added',NULL,NULL),
+ (3,2,153,'Added',NULL,NULL),
+ (4,2,190,'Added',NULL,NULL),
+ (5,2,16,'Added',NULL,NULL),
+ (6,2,65,'Added',NULL,NULL),
+ (7,2,70,'Added',NULL,NULL),
+ (8,2,120,'Added',NULL,NULL),
+ (9,2,85,'Added',NULL,NULL),
+ (10,2,198,'Added',NULL,NULL),
+ (11,2,110,'Added',NULL,NULL),
+ (12,2,45,'Added',NULL,NULL),
+ (13,2,37,'Added',NULL,NULL),
+ (14,2,82,'Added',NULL,NULL),
+ (15,2,12,'Added',NULL,NULL),
+ (16,2,102,'Added',NULL,NULL),
+ (17,2,192,'Added',NULL,NULL),
+ (18,2,10,'Added',NULL,NULL),
+ (19,2,23,'Added',NULL,NULL),
+ (20,2,94,'Added',NULL,NULL),
+ (21,2,108,'Added',NULL,NULL),
+ (22,2,38,'Added',NULL,NULL),
+ (23,2,154,'Added',NULL,NULL),
+ (24,2,41,'Added',NULL,NULL),
+ (25,2,86,'Added',NULL,NULL),
+ (26,2,95,'Added',NULL,NULL),
+ (27,2,182,'Added',NULL,NULL),
+ (28,2,176,'Added',NULL,NULL),
+ (29,2,74,'Added',NULL,NULL),
+ (30,2,161,'Added',NULL,NULL),
+ (31,2,191,'Added',NULL,NULL),
+ (32,2,112,'Added',NULL,NULL),
+ (33,2,117,'Added',NULL,NULL),
+ (34,2,101,'Added',NULL,NULL),
+ (35,2,57,'Added',NULL,NULL),
+ (36,2,124,'Added',NULL,NULL),
+ (37,2,79,'Added',NULL,NULL),
+ (38,2,126,'Added',NULL,NULL),
+ (39,2,113,'Added',NULL,NULL),
+ (40,2,76,'Added',NULL,NULL),
+ (41,2,116,'Added',NULL,NULL),
+ (42,2,67,'Added',NULL,NULL),
+ (43,2,149,'Added',NULL,NULL),
+ (44,2,160,'Added',NULL,NULL),
+ (45,2,189,'Added',NULL,NULL),
+ (46,2,135,'Added',NULL,NULL),
+ (47,2,114,'Added',NULL,NULL),
+ (48,2,77,'Added',NULL,NULL),
+ (49,2,178,'Added',NULL,NULL),
+ (50,2,147,'Added',NULL,NULL),
+ (51,2,131,'Added',NULL,NULL),
+ (52,2,43,'Added',NULL,NULL),
+ (53,2,88,'Added',NULL,NULL),
+ (54,2,200,'Added',NULL,NULL),
+ (55,2,21,'Added',NULL,NULL),
+ (56,2,48,'Added',NULL,NULL),
+ (57,2,179,'Added',NULL,NULL),
+ (58,2,99,'Added',NULL,NULL),
+ (59,2,107,'Added',NULL,NULL),
+ (60,2,105,'Added',NULL,NULL),
+ (61,3,136,'Added',NULL,NULL),
+ (62,3,164,'Added',NULL,NULL),
+ (63,3,142,'Added',NULL,NULL),
+ (64,3,175,'Added',NULL,NULL),
+ (65,3,158,'Added',NULL,NULL),
+ (66,3,148,'Added',NULL,NULL),
+ (67,3,137,'Added',NULL,NULL),
+ (68,3,146,'Added',NULL,NULL),
+ (69,3,30,'Added',NULL,NULL),
+ (70,3,122,'Added',NULL,NULL),
+ (71,3,159,'Added',NULL,NULL),
+ (72,3,100,'Added',NULL,NULL),
+ (73,3,40,'Added',NULL,NULL),
+ (74,3,44,'Added',NULL,NULL),
+ (75,3,188,'Added',NULL,NULL),
+ (76,4,72,'Added',NULL,NULL),
+ (77,4,120,'Added',NULL,NULL),
+ (78,4,12,'Added',NULL,NULL),
+ (79,4,38,'Added',NULL,NULL),
+ (80,4,74,'Added',NULL,NULL),
+ (81,4,124,'Added',NULL,NULL),
+ (82,4,149,'Added',NULL,NULL),
+ (83,4,147,'Added',NULL,NULL),
  (84,4,202,'Added',NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -4089,23 +4095,27 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_job` WRITE;
 /*!40000 ALTER TABLE `civicrm_job` DISABLE KEYS */;
 INSERT INTO `civicrm_job` (`id`, `domain_id`, `run_frequency`, `last_run`, `scheduled_run_date`, `name`, `description`, `api_entity`, `api_action`, `parameters`, `is_active`) VALUES
- (1,1,'Daily',NULL,NULL,'CiviCRM Update Check','Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.','Job','version_check',NULL,1),
- (2,1,'Always',NULL,NULL,'Send Scheduled Mailings','Sends out scheduled CiviMail mailings','Job','process_mailing',NULL,0),
- (3,1,'Hourly',NULL,NULL,'Fetch Bounces','Fetches bounces from mailings and writes them to mailing statistics','Job','fetch_bounces',NULL,0),
- (4,1,'Hourly',NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails from a mail directory','Job','fetch_activities',NULL,0),
- (5,1,'Daily',NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders','Job','process_pledge','send_reminders=[1 or 0] optional- 1 to send payment reminders',0),
- (6,1,'Daily',NULL,NULL,'Geocode and Parse Addresses','Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)','Job','geocode','geocoding=[1 or 0] required\nparse=[1 or 0] required\nstart=[contact ID] optional-begin with this contact ID\nend=[contact ID] optional-process contacts with IDs less than this\nthrottle=[1 or 0] optional-1 adds five second sleep',0),
- (7,1,'Daily',NULL,NULL,'Update Greetings and Addressees','Goes through contact records and updates email and postal greetings, or addressee value','Job','update_greeting','ct=[Individual or Household or Organization] required\ngt=[email_greeting or postal_greeting or addressee] required\nforce=[0 or 1] optional-0 update contacts with null value, 1 update all\nlimit=Number optional-Limit the number of contacts to update',0),
- (8,1,'Daily',NULL,NULL,'Mail Reports','Generates and sends out reports via email','Job','mail_report','instanceId=[ID of report instance] required\nformat=[csv or print] optional-output CSV or print-friendly HTML, else PDF',0),
- (9,1,'Hourly',NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email','Job','send_reminder',NULL,0),
- (10,1,'Always',NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time','Job','process_participant',NULL,0),
- (11,1,'Daily',NULL,NULL,'Update Membership Statuses','Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.','Job','process_membership',NULL,0),
- (12,1,'Always',NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.','Job','process_respondent',NULL,0),
- (13,1,'Hourly',NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.','Job','cleanup',NULL,0),
- (14,1,'Always',NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS','Job','process_sms',NULL,0),
- (15,1,'Always',NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache.','Job','group_rebuild','limit=Number optional-Limit the number of smart groups rebuild',0),
- (16,1,'Daily',NULL,NULL,'Disable expired relationships','Disables relationships that have expired (ie. those relationships whose end date is in the past).','Job','disable_expired_relationships',NULL,0),
- (17,1,'Daily',NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.','Mailing','update_email_resetdate','minDays, maxDays=Consider mailings that have completed between minDays and maxDays',0);
+ (1,1,'Daily',NULL,NULL,'CiviCRM Update Check','Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check','Job','version_check',NULL,1),
+ (2,1,'Always',NULL,NULL,'Send Scheduled Mailings','Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing','Job','process_mailing',NULL,0),
+ (3,1,'Hourly',NULL,NULL,'Fetch Bounces','Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces','Job','fetch_bounces','is_create_activities=0',0),
+ (4,1,'Hourly',NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities','Job','fetch_activities',NULL,0),
+ (5,1,'Daily',NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge','Job','process_pledge','send_reminders=0',0),
+ (6,1,'Daily',NULL,NULL,'Geocode and Parse Addresses','Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode','Job','geocode','geocoding=1\n      parse=0\n      throttle=0',0),
+ (7,1,'Daily',NULL,NULL,'Update Individual Email Greeting','Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=email_greeting',0),
+ (8,1,'Daily',NULL,NULL,'Update Individual Postal Greeting','Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=postal_greeting',0),
+ (9,1,'Daily',NULL,NULL,'Update Individual Addressee','Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=addressee',0),
+ (10,1,'Daily',NULL,NULL,'Mail Reports','Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report','Job','mail_report','',0),
+ (11,1,'Hourly',NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder','Job','send_reminder',NULL,0),
+ (12,1,'Always',NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant','Job','process_participant',NULL,0),
+ (13,1,'Daily',NULL,NULL,'Update Membership Statuses','Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership','Job','process_membership',NULL,0),
+ (14,1,'Always',NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent','Job','process_respondent',NULL,0),
+ (15,1,'Monthly',NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup','Job','cleanup','session=0',0),
+ (16,1,'Always',NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms','Job','process_sms',NULL,0),
+ (17,1,'Hourly',NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild','Job','group_rebuild','limit=0',0),
+ (18,1,'Hourly',NULL,NULL,'Group Cache Flush','Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush','Job','group_cache_flush','',0),
+ (19,1,'Daily',NULL,NULL,'Disable expired relationships','Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships','Job','disable_expired_relationships',NULL,0),
+ (20,1,'Daily',NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate','Mailing','update_email_resetdate','minDays=5\n      maxDays=60',0),
+ (21,1,'Daily',NULL,NULL,'Dedupe Contacts','Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge','Job','process_batch_merge',NULL,0);
 /*!40000 ALTER TABLE `civicrm_job` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4157,85 +4167,85 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
  (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL),
  (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL),
  (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (33,'civicrm_membership',3,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (34,'civicrm_membership',7,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (35,'civicrm_membership',9,35,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (36,'civicrm_membership',13,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (37,'civicrm_membership',15,37,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (38,'civicrm_membership',17,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (39,'civicrm_membership',19,39,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (40,'civicrm_membership',20,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (41,'civicrm_membership',21,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (42,'civicrm_membership',23,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (43,'civicrm_membership',25,43,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (44,'civicrm_membership',27,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (45,'civicrm_membership',29,45,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (46,'civicrm_membership',30,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (47,'civicrm_membership',2,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (48,'civicrm_membership',4,48,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (49,'civicrm_membership',5,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (50,'civicrm_membership',6,50,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (51,'civicrm_membership',8,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (52,'civicrm_membership',10,52,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (53,'civicrm_membership',12,53,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (54,'civicrm_membership',14,54,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (55,'civicrm_membership',16,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (56,'civicrm_membership',18,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (57,'civicrm_membership',24,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (58,'civicrm_membership',26,58,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (60,'civicrm_membership',11,60,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
- (61,'civicrm_membership',22,61,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
- (63,'civicrm_participant',3,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (64,'civicrm_participant',6,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (34,'civicrm_membership',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (36,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (37,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (38,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (41,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (42,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (43,'civicrm_membership',25,56,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (44,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (45,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (46,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (47,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (48,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (49,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (50,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (51,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (52,'civicrm_membership',15,46,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (55,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
+ (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
+ (63,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (64,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
  (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (66,'civicrm_participant',12,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (67,'civicrm_participant',15,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (68,'civicrm_participant',18,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (69,'civicrm_participant',21,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (70,'civicrm_participant',24,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (71,'civicrm_participant',25,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (72,'civicrm_participant',28,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (73,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (74,'civicrm_participant',34,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (75,'civicrm_participant',37,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (76,'civicrm_participant',40,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (77,'civicrm_participant',43,101,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (78,'civicrm_participant',46,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (79,'civicrm_participant',49,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (80,'civicrm_participant',50,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (81,'civicrm_participant',1,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (82,'civicrm_participant',4,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (83,'civicrm_participant',7,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (84,'civicrm_participant',10,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (85,'civicrm_participant',13,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (86,'civicrm_participant',16,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (87,'civicrm_participant',19,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (88,'civicrm_participant',22,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (89,'civicrm_participant',26,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (90,'civicrm_participant',29,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (91,'civicrm_participant',32,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (92,'civicrm_participant',35,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (93,'civicrm_participant',38,96,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (95,'civicrm_participant',44,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (97,'civicrm_participant',2,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (98,'civicrm_participant',5,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (99,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (100,'civicrm_participant',11,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (101,'civicrm_participant',14,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (102,'civicrm_participant',17,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (103,'civicrm_participant',20,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (104,'civicrm_participant',23,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (66,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (76,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (78,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (104,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
  (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (106,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (107,'civicrm_participant',33,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (108,'civicrm_participant',36,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (109,'civicrm_participant',39,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (110,'civicrm_participant',42,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (111,'civicrm_participant',45,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (112,'civicrm_participant',48,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
+ (106,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (112,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
 /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4246,9 +4256,9 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_loc_block` WRITE;
 /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */;
 INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES
- (1,178,189,175,NULL,NULL,NULL,NULL,NULL),
- (2,179,190,176,NULL,NULL,NULL,NULL,NULL),
- (3,180,191,177,NULL,NULL,NULL,NULL,NULL);
+ (1,177,190,160,NULL,NULL,NULL,NULL,NULL),
+ (2,178,191,161,NULL,NULL,NULL,NULL,NULL),
+ (3,179,192,162,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4274,7 +4284,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */;
 INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES
- (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-19 14:22:30');
+ (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-12-17 20:11:35');
 /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4511,7 +4521,7 @@ LOCK TABLES `civicrm_mailing_component` WRITE;
 /*!40000 ALTER TABLE `civicrm_mailing_component` DISABLE KEYS */;
 INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES
  (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),
- (2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a>  <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),
+ (2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Opt out of any future emails</a>  <br/> {domain.address}','Opt out of any future emails: {action.optOutUrl}\n{domain.address}',1,1),
  (3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),
  (4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.','Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.',1,1),
  (5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1),
@@ -4663,9 +4673,13 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_managed` WRITE;
 /*!40000 ALTER TABLE `civicrm_managed` DISABLE KEYS */;
 INSERT INTO `civicrm_managed` (`id`, `module`, `name`, `entity_type`, `entity_id`, `cleanup`, `entity_modified_date`) VALUES
- (1,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',1,'always',NULL),
- (2,'civicrm','SavedSearch_Contact_Summary_Notes','SavedSearch',2,'always',NULL),
- (3,'civicrm','SavedSearch_Contact_Summary_Relationships','SavedSearch',3,'unused',NULL);
+ (1,'civi_campaign','SavedSearch_Administer_Campaigns','SavedSearch',1,'always',NULL),
+ (2,'civi_campaign','SavedSearch_Administer_Petitions','SavedSearch',2,'always',NULL),
+ (3,'civi_campaign','SavedSearch_Administer_Survey_Options','SavedSearch',3,'always',NULL),
+ (4,'civi_campaign','SavedSearch_Administer_Surveys','SavedSearch',4,'always',NULL),
+ (5,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',5,'always',NULL),
+ (6,'civicrm','SavedSearch_Contact_Summary_Notes','SavedSearch',6,'always',NULL),
+ (7,'civicrm','SavedSearch_Contact_Summary_Relationships','SavedSearch',7,'unused',NULL);
 /*!40000 ALTER TABLE `civicrm_managed` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4694,36 +4708,36 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_membership` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */;
 INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES
- (1,55,1,'2023-10-19','2023-10-19','2025-10-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (2,47,2,'2023-10-18','2023-10-18','2024-10-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (3,168,1,'2023-10-17','2023-10-17','2025-10-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (4,126,2,'2023-10-16','2023-10-16','2024-10-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (5,113,2,'2022-10-15','2022-10-15','2023-10-14','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (6,169,2,'2023-10-14','2023-10-14','2024-10-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (7,36,1,'2023-10-13','2023-10-13','2025-10-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (8,164,2,'2023-10-12','2023-10-12','2024-10-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (9,87,1,'2023-10-11','2023-10-11','2025-10-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (10,39,2,'2022-10-10','2022-10-10','2023-10-09','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (11,93,3,'2023-10-09','2023-10-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (12,49,2,'2023-10-08','2023-10-08','2024-10-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (13,48,1,'2023-10-07','2023-10-07','2025-10-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (14,92,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (15,180,1,'2021-06-29','2021-06-29','2023-06-28','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (16,136,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (17,8,1,'2023-10-03','2023-10-03','2025-10-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (18,187,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (19,54,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (20,106,1,'2021-05-20','2021-05-20','2023-05-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (21,17,1,'2023-09-29','2023-09-29','2025-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (22,5,3,'2023-09-28','2023-09-28',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (23,175,1,'2023-09-27','2023-09-27','2025-09-26','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (24,100,2,'2023-09-26','2023-09-26','2024-09-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (25,28,1,'2021-04-10','2021-04-10','2023-04-09','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (26,78,2,'2023-09-24','2023-09-24','2024-09-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (27,117,1,'2023-09-23','2023-09-23','2025-09-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (28,66,2,'2023-09-22','2023-09-22','2024-09-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (29,86,1,'2023-09-21','2023-09-21','2025-09-20','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (30,149,1,'2021-03-01','2021-03-01','2023-02-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL);
+ (1,82,1,'2023-12-17','2023-12-17','2025-12-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (2,34,2,'2023-12-16','2023-12-16','2024-12-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (3,110,1,'2023-12-15','2023-12-15','2025-12-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (4,91,2,'2023-12-14','2023-12-14','2024-12-13','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (5,105,1,'2021-11-15','2021-11-15','2023-11-14','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (6,176,2,'2023-12-12','2023-12-12','2024-12-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (7,163,1,'2023-12-11','2023-12-11','2025-12-10','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (8,119,2,'2023-12-10','2023-12-10','2024-12-09','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (9,114,1,'2023-12-09','2023-12-09','2025-12-08','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (10,146,1,'2021-10-06','2021-10-06','2023-10-05','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (11,154,3,'2023-12-07','2023-12-07',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (12,170,2,'2023-12-06','2023-12-06','2024-12-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (13,8,1,'2023-12-05','2023-12-05','2025-12-04','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (14,190,2,'2023-12-04','2023-12-04','2024-12-03','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (15,179,2,'2022-12-03','2022-12-03','2023-12-02','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (16,48,2,'2023-12-02','2023-12-02','2024-12-01','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (17,99,1,'2023-12-01','2023-12-01','2025-11-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (18,96,2,'2023-11-30','2023-11-30','2024-11-29','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (19,70,1,'2023-11-29','2023-11-29','2025-11-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (20,84,2,'2022-11-28','2022-11-28','2023-11-27','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (21,28,1,'2023-11-27','2023-11-27','2025-11-26','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (22,156,3,'2023-11-26','2023-11-26',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (23,153,1,'2023-11-25','2023-11-25','2025-11-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (24,195,2,'2023-11-24','2023-11-24','2024-11-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (25,67,1,'2021-06-08','2021-06-08','2023-06-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (26,75,2,'2023-11-22','2023-11-22','2024-11-21','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (27,112,1,'2023-11-21','2023-11-21','2025-11-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (28,188,2,'2023-11-20','2023-11-20','2024-11-19','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (29,62,1,'2023-11-19','2023-11-19','2025-11-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (30,59,2,'2022-11-18','2022-11-18','2023-11-17','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4745,36 +4759,36 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_membership_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */;
 INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES
- (1,22,1,'2023-09-28',NULL,5,'2023-10-19',3,NULL),
- (2,17,1,'2023-10-03','2025-10-02',8,'2023-10-19',1,NULL),
- (3,21,1,'2023-09-29','2025-09-28',17,'2023-10-19',1,NULL),
- (4,25,3,'2021-04-10','2023-04-09',28,'2023-10-19',1,NULL),
- (5,7,1,'2023-10-13','2025-10-12',36,'2023-10-19',1,NULL),
- (6,10,4,'2022-10-10','2023-10-09',39,'2023-10-19',2,NULL),
- (7,2,1,'2023-10-18','2024-10-17',47,'2023-10-19',2,NULL),
- (8,13,1,'2023-10-07','2025-10-06',48,'2023-10-19',1,NULL),
- (9,12,1,'2023-10-08','2024-10-07',49,'2023-10-19',2,NULL),
- (10,19,1,'2023-10-01','2025-09-30',54,'2023-10-19',1,NULL),
- (11,1,1,'2023-10-19','2025-10-18',55,'2023-10-19',1,NULL),
- (12,28,1,'2023-09-22','2024-09-21',66,'2023-10-19',2,NULL),
- (13,26,1,'2023-09-24','2024-09-23',78,'2023-10-19',2,NULL),
- (14,29,1,'2023-09-21','2025-09-20',86,'2023-10-19',1,NULL),
- (15,9,1,'2023-10-11','2025-10-10',87,'2023-10-19',1,NULL),
- (16,14,1,'2023-10-06','2024-10-05',92,'2023-10-19',2,NULL),
- (17,11,1,'2023-10-09',NULL,93,'2023-10-19',3,NULL),
- (18,24,1,'2023-09-26','2024-09-25',100,'2023-10-19',2,NULL),
- (19,20,3,'2021-05-20','2023-05-19',106,'2023-10-19',1,NULL),
- (20,5,4,'2022-10-15','2023-10-14',113,'2023-10-19',2,NULL),
- (21,27,1,'2023-09-23','2025-09-22',117,'2023-10-19',1,NULL),
- (22,4,1,'2023-10-16','2024-10-15',126,'2023-10-19',2,NULL),
- (23,16,1,'2023-10-04','2024-10-03',136,'2023-10-19',2,NULL),
- (24,30,3,'2021-03-01','2023-02-28',149,'2023-10-19',1,NULL),
- (25,8,1,'2023-10-12','2024-10-11',164,'2023-10-19',2,NULL),
- (26,3,1,'2023-10-17','2025-10-16',168,'2023-10-19',1,NULL),
- (27,6,1,'2023-10-14','2024-10-13',169,'2023-10-19',2,NULL),
- (28,23,1,'2023-09-27','2025-09-26',175,'2023-10-19',1,NULL),
- (29,15,3,'2021-06-29','2023-06-28',180,'2023-10-19',1,NULL),
- (30,18,1,'2023-10-02','2024-10-01',187,'2023-10-19',2,NULL);
+ (1,13,1,'2023-12-05','2025-12-04',8,'2023-12-17',1,NULL),
+ (2,21,1,'2023-11-27','2025-11-26',28,'2023-12-17',1,NULL),
+ (3,2,1,'2023-12-16','2024-12-15',34,'2023-12-17',2,NULL),
+ (4,16,1,'2023-12-02','2024-12-01',48,'2023-12-17',2,NULL),
+ (5,30,4,'2022-11-18','2023-11-17',59,'2023-12-17',2,NULL),
+ (6,29,1,'2023-11-19','2025-11-18',62,'2023-12-17',1,NULL),
+ (7,25,3,'2021-06-08','2023-06-07',67,'2023-12-17',1,NULL),
+ (8,19,1,'2023-11-29','2025-11-28',70,'2023-12-17',1,NULL),
+ (9,26,1,'2023-11-22','2024-11-21',75,'2023-12-17',2,NULL),
+ (10,1,1,'2023-12-17','2025-12-16',82,'2023-12-17',1,NULL),
+ (11,20,4,'2022-11-28','2023-11-27',84,'2023-12-17',2,NULL),
+ (12,4,1,'2023-12-14','2024-12-13',91,'2023-12-17',2,NULL),
+ (13,18,1,'2023-11-30','2024-11-29',96,'2023-12-17',2,NULL),
+ (14,17,1,'2023-12-01','2025-11-30',99,'2023-12-17',1,NULL),
+ (15,5,3,'2021-11-15','2023-11-14',105,'2023-12-17',1,NULL),
+ (16,3,1,'2023-12-15','2025-12-14',110,'2023-12-17',1,NULL),
+ (17,27,1,'2023-11-21','2025-11-20',112,'2023-12-17',1,NULL),
+ (18,9,1,'2023-12-09','2025-12-08',114,'2023-12-17',1,NULL),
+ (19,8,1,'2023-12-10','2024-12-09',119,'2023-12-17',2,NULL),
+ (20,10,3,'2021-10-06','2023-10-05',146,'2023-12-17',1,NULL),
+ (21,23,1,'2023-11-25','2025-11-24',153,'2023-12-17',1,NULL),
+ (22,11,1,'2023-12-07',NULL,154,'2023-12-17',3,NULL),
+ (23,22,1,'2023-11-26',NULL,156,'2023-12-17',3,NULL),
+ (24,7,1,'2023-12-11','2025-12-10',163,'2023-12-17',1,NULL),
+ (25,12,1,'2023-12-06','2024-12-05',170,'2023-12-17',2,NULL),
+ (26,6,1,'2023-12-12','2024-12-11',176,'2023-12-17',2,NULL),
+ (27,15,4,'2022-12-03','2023-12-02',179,'2023-12-17',2,NULL),
+ (28,28,1,'2023-11-20','2024-11-19',188,'2023-12-17',2,NULL),
+ (29,14,1,'2023-12-04','2024-12-03',190,'2023-12-17',2,NULL),
+ (30,24,1,'2023-11-24','2024-11-23',195,'2023-12-17',2,NULL);
 /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4786,35 +4800,35 @@ LOCK TABLES `civicrm_membership_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */;
 INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES
  (1,1,32),
- (2,3,33),
- (3,7,34),
- (4,9,35),
- (5,13,36),
- (6,15,37),
- (7,17,38),
- (8,19,39),
- (9,20,40),
- (10,21,41),
- (11,23,42),
- (12,25,43),
- (13,27,44),
- (14,29,45),
- (15,30,46),
- (16,2,47),
- (17,4,48),
- (18,5,49),
- (19,6,50),
- (20,8,51),
- (21,10,52),
- (22,12,53),
- (23,14,54),
- (24,16,55),
- (25,18,56),
- (26,24,57),
- (27,26,58),
+ (2,2,33),
+ (3,3,34),
+ (4,4,35),
+ (5,5,36),
+ (6,6,37),
+ (7,7,38),
+ (8,8,39),
+ (9,9,40),
+ (10,10,41),
+ (11,11,42),
+ (12,12,43),
+ (13,13,44),
+ (14,14,45),
+ (15,15,46),
+ (16,16,47),
+ (17,17,48),
+ (18,18,49),
+ (19,19,50),
+ (20,20,51),
+ (21,21,52),
+ (22,22,53),
+ (23,23,54),
+ (24,24,55),
+ (25,25,56),
+ (26,26,57),
+ (27,27,58),
  (28,28,59),
- (29,11,60),
- (30,22,61);
+ (29,29,60),
+ (30,30,61);
 /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4855,311 +4869,311 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_menu` WRITE;
 /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */;
 INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES
- (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (5,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (6,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (7,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (8,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (9,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (10,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
- (12,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (13,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (14,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (15,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (16,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (18,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (19,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
- (20,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
- (21,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
- (22,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
- (23,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
- (24,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
- (25,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
- (26,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (27,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (28,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (29,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (30,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (31,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (32,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (33,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (34,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (35,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (36,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (37,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (38,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (39,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (40,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (41,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (42,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (43,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (44,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (45,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (46,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (47,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (48,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (49,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
- (50,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (51,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (52,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (53,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (54,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (55,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (56,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (57,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (58,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (59,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (60,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (61,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (62,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (63,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (64,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (65,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
- (66,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (67,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (68,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (69,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (70,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (71,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (72,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (73,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (74,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (75,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (76,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (77,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (78,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (79,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (80,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (81,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (82,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (83,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (84,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (85,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (86,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (87,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (88,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (89,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
- (90,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (91,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
- (92,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (93,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (94,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
- (95,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
- (96,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
- (97,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (98,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (99,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (100,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
- (101,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
- (102,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (103,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (104,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (105,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (106,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (107,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (108,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
- (109,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (110,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (111,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (112,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
- (113,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (114,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (115,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (116,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (117,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
- (118,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (119,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (120,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
- (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (123,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (124,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
- (125,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
- (126,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (127,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (128,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (129,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (130,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (131,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (132,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (133,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (134,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (135,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (136,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (137,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (138,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (139,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (140,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (141,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (142,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
- (143,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (144,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (145,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (146,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (147,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (148,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (149,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (150,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (151,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (152,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (153,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (154,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
- (155,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (156,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (157,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (158,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (159,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (160,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (161,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (162,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (163,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (164,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (165,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (166,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (167,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (168,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (169,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (170,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (171,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (172,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (173,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (174,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (175,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (176,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (177,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (178,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (179,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (180,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (181,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (182,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (183,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (184,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (185,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (186,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (187,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
- (188,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
- (189,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (190,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (191,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (192,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
- (193,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
- (194,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (195,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (196,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (197,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (198,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (199,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (200,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (201,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (202,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (203,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (204,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (205,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (206,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (207,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (208,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (209,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (210,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (211,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (212,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (213,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (214,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (215,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (216,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (217,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (218,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (219,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (220,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (221,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (222,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (223,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (224,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (225,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (226,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (227,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (228,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (229,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (230,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (231,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (232,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (233,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (234,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (235,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (236,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (237,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (238,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (239,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (240,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (241,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (242,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (243,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (244,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (245,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (246,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (247,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (248,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (249,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (250,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (251,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (252,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (253,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (254,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (255,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (256,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (257,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (258,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (259,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (260,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (261,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (262,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (263,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (264,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (265,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (266,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (267,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
- (268,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (269,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (270,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (271,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (272,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (273,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (274,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (275,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (276,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (277,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (278,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (279,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (280,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (281,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (282,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (283,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (284,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
- (285,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
- (286,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (287,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
- (288,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (289,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
- (290,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (291,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
- (292,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
- (293,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
- (294,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
- (295,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'),
- (296,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
- (297,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
- (298,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
- (299,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (300,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (301,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (302,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (303,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (304,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
- (305,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (1,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (2,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (3,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (4,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (5,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (6,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (7,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (8,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (9,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (10,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (11,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (12,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (13,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (14,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (15,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (16,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (17,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (18,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (19,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
+ (20,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (21,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (22,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (23,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (24,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
+ (25,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (26,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (27,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
+ (28,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (29,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
+ (30,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
+ (31,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (32,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (33,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (34,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
+ (35,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
+ (36,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (37,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (38,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (39,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (40,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (41,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (42,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (43,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (44,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (45,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (46,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (47,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (48,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (49,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (50,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (51,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (52,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (53,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (54,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (55,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (56,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (57,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (58,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (59,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (60,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (61,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (62,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (63,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (64,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (65,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (66,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (67,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (68,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (69,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (70,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (71,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (72,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (73,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (74,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (75,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (76,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (77,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (78,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (79,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (80,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (81,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (82,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (83,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (84,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (85,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (86,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (87,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (88,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (89,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (90,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (91,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (92,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (93,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (94,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (95,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (96,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (97,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (98,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (99,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (100,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (101,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (102,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (103,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (104,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (105,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (106,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (107,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
+ (108,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (109,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (110,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (111,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (112,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (113,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (114,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (115,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (116,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (117,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (118,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (119,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (120,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (121,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (122,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (123,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (124,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (125,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (126,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (127,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (128,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (129,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (130,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (131,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (132,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (133,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (134,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (135,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (136,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (137,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (138,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (139,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (140,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (141,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (142,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (143,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (144,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (145,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (146,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (147,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (148,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (149,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (150,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (151,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (152,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (153,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (154,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (155,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
+ (156,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (157,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (158,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (159,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (160,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (161,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (162,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (163,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
+ (164,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
+ (165,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
+ (166,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
+ (167,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
+ (168,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
+ (169,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
+ (170,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (171,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (172,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (173,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (174,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (175,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (176,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (177,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (178,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (179,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (180,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (181,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (182,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (183,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (184,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (185,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (186,1,'civicrm/admin/setting/preferences/date/edit',NULL,'Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_PreferencesDate\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:21:\"View Date Preferences\";s:3:\"url\";s:47:\"/civicrm/admin/setting/preferences/date?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,97,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (187,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (188,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (189,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (190,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (191,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (192,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (193,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
+ (194,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (195,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (196,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (197,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (198,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (199,1,'civicrm/admin/labelFormats/edit',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Label Page Formats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (200,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (201,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (202,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (203,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (204,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (205,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (206,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (207,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (208,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (209,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (210,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
+ (211,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (212,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (213,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (214,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (215,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (216,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (217,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (218,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (219,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (220,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (221,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (222,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (223,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (224,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (225,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (226,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (227,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (228,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (229,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (230,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (231,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (232,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (233,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (234,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (235,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
+ (236,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (237,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
+ (238,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (239,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (240,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
+ (241,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
+ (242,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
+ (243,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (244,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (245,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (246,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
+ (247,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
+ (248,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (249,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (250,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (251,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (252,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (253,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (254,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (255,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (256,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (257,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (258,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (259,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (260,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (261,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (262,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (263,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (264,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
+ (265,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
+ (266,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (267,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (268,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (269,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
+ (270,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (271,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (272,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (273,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (274,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (275,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (276,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (277,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (278,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (279,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (280,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (281,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (282,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (283,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (284,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (285,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (286,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
+ (287,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
+ (288,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (289,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
+ (290,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (291,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
+ (292,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (293,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
+ (294,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
+ (295,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
+ (296,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
+ (297,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'),
+ (298,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
+ (299,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
+ (300,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
+ (301,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (302,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (303,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (304,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (305,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
  (306,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
  (307,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
  (308,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
@@ -5176,139 +5190,143 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`
  (319,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'),
  (320,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
  (321,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (322,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (323,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (324,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (325,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (326,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (327,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (328,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (329,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (330,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (331,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (332,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (333,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
- (334,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
- (335,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'),
- (336,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
- (337,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (338,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (339,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (340,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (341,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (342,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (343,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
- (344,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
- (345,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
- (346,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
- (347,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
- (348,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (349,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (350,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (351,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (352,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (353,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (354,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (355,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (356,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (357,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (358,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (359,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (360,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (361,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
- (362,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
- (363,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
- (364,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
- (365,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (366,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (367,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
- (368,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (369,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (370,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (371,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (372,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
- (373,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
- (374,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (375,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (376,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
- (377,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
- (378,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
- (379,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
- (380,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
- (381,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (382,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (383,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
- (384,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
- (385,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
- (386,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (387,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
- (388,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
- (389,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (390,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (391,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (392,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (393,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (394,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (395,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
- (396,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
- (397,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (398,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
- (399,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (400,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (401,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (402,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
- (403,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (404,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (405,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (406,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (407,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (408,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (409,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (410,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (411,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (412,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (413,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (414,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (415,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (416,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (417,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (418,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
- (419,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (420,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (421,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (422,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (423,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (424,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
- (425,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (426,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
- (427,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
- (428,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
- (429,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (430,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (431,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (432,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (433,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (434,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (435,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (436,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (437,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (438,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (439,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (440,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (441,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (442,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (443,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (444,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (445,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (446,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (447,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (448,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (449,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (450,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (451,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (452,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
- (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
+ (322,1,'civicrm/admin/contribute/managePremiums/edit',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_ManagePremiums\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}i:3;a:2:{s:5:\"title\";s:15:\"Manage Premiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (323,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (324,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (325,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (326,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (327,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (328,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (329,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (330,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (331,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (332,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (333,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (334,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
+ (335,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
+ (336,1,'civicrm/admin/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,530,1,1,0,'a:0:{}'),
+ (337,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (338,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (339,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (340,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (341,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (342,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (343,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (344,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
+ (345,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
+ (346,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
+ (347,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
+ (348,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
+ (349,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (350,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (351,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (352,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (353,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (354,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (355,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (356,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (357,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (358,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
+ (359,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (360,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (361,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (362,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (363,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (364,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
+ (365,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
+ (366,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
+ (367,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
+ (368,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (369,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (370,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
+ (371,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (372,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (373,1,'civicrm/admin/component/edit',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Component\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,411,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (374,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (375,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (376,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
+ (377,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (378,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (379,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (380,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
+ (381,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
+ (382,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
+ (383,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
+ (384,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
+ (385,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (386,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (387,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
+ (388,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
+ (389,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
+ (390,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (391,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
+ (392,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
+ (393,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (394,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (395,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (396,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (397,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (398,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (399,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
+ (400,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
+ (401,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (402,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
+ (403,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (404,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (405,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (406,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
+ (407,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (408,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (409,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (410,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (411,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (412,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (413,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (414,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (415,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (416,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (417,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (418,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (419,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (420,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (421,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (422,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (423,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (424,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (425,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (426,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (427,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (428,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
+ (429,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (430,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
+ (431,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
+ (432,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
+ (433,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (434,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (435,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (436,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (437,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (438,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (439,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (440,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (441,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (442,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (443,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (444,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (445,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (446,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (447,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (448,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (449,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (450,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (451,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (452,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (453,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (454,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (455,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (456,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (457,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
+ (458,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Date Preferences\";a:6:{s:5:\"title\";s:16:\"Date Preferences\";s:4:\"desc\";N;s:2:\"id\";s:15:\"DatePreferences\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/date/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:37:\"/civicrm/admin/component/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
 /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -5323,12 +5341,12 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n  {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n  {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n  {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Activity Summary{/ts} - {$activityTypeName}\n              </th>\n            </tr>\n            {if !empty($isCaseActivity)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Your Case Role(s){/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$contact.role|default:\'\'}\n                </td>\n              </tr>\n              {if !empty($manageCaseURL)}\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n            {if !empty($editActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {if !empty($viewActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {foreach from=$activity.fields item=field}\n              <tr>\n                <td {$labelStyle}>\n                  {$field.label}\n                </td>\n                <td {$valueStyle}>\n                  {if $field.type eq \'Date\'}\n                    {$field.value|crmDate:$config->dateformatDatetime}\n                  {else}\n                    {$field.value}\n                  {/if}\n                </td>\n              </tr>\n            {/foreach}\n\n            {if !empty($activity.customGroups)}\n              {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n                <tr>\n                  <th {$headerStyle}>\n                    {$customGroupName}\n                  </th>\n                </tr>\n                {foreach from=$customGroup item=field}\n                  <tr>\n                    <td {$labelStyle}>\n                      {$field.label}\n                    </td>\n                    <td {$valueStyle}>\n                      {if $field.type eq \'Date\'}\n                        {$field.value|crmDate:$config->dateformatDatetime}\n                      {else}\n                        {$field.value}\n                      {/if}\n                    </td>\n                  </tr>\n                {/foreach}\n              {/foreach}\n            {/if}\n          </table>\n        </td>\n      </tr>\n    </table>\n</body>\n</html>\n',1,814,'case_activity',0,1,0,NULL),
  (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,815,'contribution_dupalert',1,0,0,NULL),
  (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,815,'contribution_dupalert',0,1,0,NULL),
- (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
- (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
- (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',1,0,0,NULL),
- (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',0,1,0,NULL),
- (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $email_comment}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
- (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $email_comment}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
+ (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
+ (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
+ (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.line_total|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_exclusive_amount}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',1,0,0,NULL),
+ (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.line_total|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_exclusive_amount}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',0,1,0,NULL),
+ (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $userText}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$userText}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
+ (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $userText}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$userText}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
  (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_notify',1,0,0,NULL),
  (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_notify',0,1,0,NULL),
  (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_cancelled',1,0,0,NULL),
@@ -5345,12 +5363,12 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,825,'pcp_supporter_notify',0,1,0,NULL),
  (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',1,0,0,NULL),
  (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',0,1,0,NULL),
- (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney:$currency}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL),
- (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney:$currency}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL),
- (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL),
- (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL),
- (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL),
- (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL),
+ (27,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {financial_trxn.total_amount|raw} < 0}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if !{contribution.balance_amount|boolean}}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      {if {financial_trxn.total_amount|raw} < 0}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {financial_trxn.trxn_date}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.payment_instrument_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.payment_instrument_id:label}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.check_number|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.check_number}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if {contribution.total_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.total_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.paid_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.paid_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.balance_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.balance_amount}\n    </td>\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n        <tr>\n          <th {$headerStyle}>\n              {ts}Billing Name and Address{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n          </td>\n        </tr>\n      {/if}\n    {if {financial_trxn.pan_truncation|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {financial_trxn.card_type_id:label}<br />\n          ************{financial_trxn.pan_truncation}<br />\n        </td>\n      </tr>\n    {/if}\n    {if {event.id|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Event Information and Location{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {event.event_title}<br />\n          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n        </td>\n      </tr>\n\n      {if {participant.role_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Participant Role{/ts}\n        </td>\n        <td {$valueStyle}>\n         {participant.role_id:label}\n        </td>\n      </tr>\n      {/if}\n\n      {if {event.is_show_location|boolean}}\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                  {event.location}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                  {ts}Event Contacts:{/ts}\n              </td>\n            </tr>\n\n             {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n             {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_2_id.email|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                      {ts}Email{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {event.loc_block_id.email_2_id.email}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if}\n        </table>\n      </td>\n    </tr>\n  </table>\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL),
+ (28,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {financial_trxn.total_amount|raw} < 0}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if !{contribution.balance_amount|boolean}}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      {if {financial_trxn.total_amount|raw} < 0}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {financial_trxn.trxn_date}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.payment_instrument_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.payment_instrument_id:label}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.check_number|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.check_number}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if {contribution.total_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.total_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.paid_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.paid_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.balance_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.balance_amount}\n    </td>\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n        <tr>\n          <th {$headerStyle}>\n              {ts}Billing Name and Address{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n          </td>\n        </tr>\n      {/if}\n    {if {financial_trxn.pan_truncation|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {financial_trxn.card_type_id:label}<br />\n          ************{financial_trxn.pan_truncation}<br />\n        </td>\n      </tr>\n    {/if}\n    {if {event.id|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Event Information and Location{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {event.event_title}<br />\n          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n        </td>\n      </tr>\n\n      {if {participant.role_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Participant Role{/ts}\n        </td>\n        <td {$valueStyle}>\n         {participant.role_id:label}\n        </td>\n      </tr>\n      {/if}\n\n      {if {event.is_show_location|boolean}}\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                  {event.location}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                  {ts}Event Contacts:{/ts}\n              </td>\n            </tr>\n\n             {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n             {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_2_id.email|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                      {ts}Email{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {event.loc_block_id.email_2_id.email}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if}\n        </table>\n      </td>\n    </tr>\n  </table>\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL),
+ (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL),
+ (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL),
+ (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL),
+ (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL),
  (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,830,'event_registration_receipt',1,0,0,NULL),
  (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,830,'event_registration_receipt',0,1,0,NULL),
  (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {participant.role_id:label}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty(\'{participant.register_date}\')}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {participant.register_date}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_cancelled',1,0,0,NULL),
@@ -5363,10 +5381,10 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,834,'participant_transferred',0,1,0,NULL),
  (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',1,0,0,NULL),
  (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',0,1,0,NULL),
- (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL),
- (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL),
- (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment}\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership Expiration Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL),
- (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment}\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership Expiration Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL),
+ (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $userText}\n          <p>{$userText}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL),
+ (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $userText}\n          <p>{$userText}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL),
+ (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n      <p>{contribution.pay_later_receipt}</p>\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    {if {membership.id|boolean} && !$isShowLineItems}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n         {ts}{membership.membership_type_id:label}{/ts}\n       </td>\n      </tr>\n      {if {membership.start_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.start_date}\n        </td>\n       </tr>\n      {/if}\n      {if {membership.end_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.end_date}\n        </td>\n       </tr>\n      {/if}\n    {/if}\n    {if {contribution.total_amount|boolean}}\n      <tr>\n        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>\n      </tr>\n\n      {if !$isShowLineItems && {contribution.total_amount|boolean}}\n        {foreach from=$lineItems item=line}\n          <tr>\n            <td {$labelStyle}>\n              {if $line.membership_type_id}\n                {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n              {else}\n                {ts}Contribution Amount{/ts}\n              {/if}\n            </td>\n            <td {$valueStyle}>\n              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n          </tr>\n        {/foreach}\n      {elseif $isShowLineItems}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <table>\n              <tr>\n                <th>{ts}Item{/ts}</th>\n                <th>{ts}Fee{/ts}</th>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <th>{ts}SubTotal{/ts}</th>\n                  <th>{ts}Tax Rate{/ts}</th>\n                  <th>{ts}Tax Amount{/ts}</th>\n                  <th>{ts}Total{/ts}</th>\n                {/if}\n                <th>{ts}Membership Start Date{/ts}</th>\n                <th>{ts}Membership Expiration Date{/ts}</th>\n              </tr>\n              {foreach from=$lineItems item=line}\n                <tr>\n                  <td>{$line.title}</td>\n                  <td>\n                    {$line.line_total|crmMoney}\n                  </td>\n                  {if $isShowTax && {contribution.tax_amount|boolean}}\n                    <td>\n                      {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                    {if $line.tax_rate || $line.tax_amount != \"\"}\n                      <td>\n                        {$line.tax_rate|string_format:\"%.2f\"}%\n                      </td>\n                      <td>\n                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                      </td>\n                    {else}\n                      <td></td>\n                      <td></td>\n                    {/if}\n                    <td>\n                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                  {/if}\n                  <td>\n                    {$line.membership.start_date|crmDate:\"Full\"}\n                  </td>\n                  <td>\n                    {$line.membership.end_date|crmDate:\"Full\"}\n                  </td>\n                </tr>\n              {/foreach}\n            </table>\n          </td>\n        </tr>\n\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {contribution.tax_exclusive_amount}\n            </td>\n          </tr>\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n            {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n            {contribution.total_amount}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.receive_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.receive_date}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n    {/if}\n\n    {if {contribution.contribution_recur_id|boolean}}\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {ts}This membership will be renewed automatically.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if $honor_block_is_active}\n      <tr>\n        <th {$headerStyle}>\n          {$soft_credit_type}\n        </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n          <td {$labelStyle}>\n            {$label}\n          </td>\n          <td {$valueStyle}>\n            {$value}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($pcpBlock)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Personal Campaign Page{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n          {ts}Display In Honor Roll{/ts}\n        </td>\n        <td {$valueStyle}>\n          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n        </td>\n      </tr>\n      {if $pcp_roll_nickname}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Nickname{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_roll_nickname}\n          </td>\n        </tr>\n      {/if}\n      {if $pcp_personal_note}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Personal Note{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_personal_note}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($onBehalfProfile)}\n      <tr>\n        <th {$headerStyle}>\n          {$onBehalfProfile_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n          <td {$labelStyle}>\n            {$onBehalfName}\n          </td>\n          <td {$valueStyle}>\n            {$onBehalfValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if {contribution.address_id.display|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contribution.address_id.name}<br/>\n          {contribution.address_id.display}\n        </td>\n      </tr>\n    {/if}\n    {if {contact.email_primary.email|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contact.email_primary.email}\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($credit_card_type)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($selectPremium)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Premium Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {$product_name}\n        </td>\n      </tr>\n      {if $option}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Option{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$option}\n          </td>\n        </tr>\n      {/if}\n      {if $sku}\n        <tr>\n          <td {$labelStyle}>\n            {ts}SKU{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$sku}\n          </td>\n        </tr>\n      {/if}\n      {if $start_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Start Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$start_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if $end_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}End Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$end_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts}For information about this premium, contact:{/ts}</p>\n            {if !empty($contact_email)}\n              <p>{$contact_email}</p>\n            {/if}\n            {if !empty($contact_phone)}\n              <p>{$contact_phone}</p>\n            {/if}\n          </td>\n        </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n         {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($customPost)}\n      <tr>\n        <th {$headerStyle}>\n          {$customPost_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL),
+ (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n      <p>{contribution.pay_later_receipt}</p>\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    {if {membership.id|boolean} && !$isShowLineItems}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n         {ts}{membership.membership_type_id:label}{/ts}\n       </td>\n      </tr>\n      {if {membership.start_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.start_date}\n        </td>\n       </tr>\n      {/if}\n      {if {membership.end_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.end_date}\n        </td>\n       </tr>\n      {/if}\n    {/if}\n    {if {contribution.total_amount|boolean}}\n      <tr>\n        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>\n      </tr>\n\n      {if !$isShowLineItems && {contribution.total_amount|boolean}}\n        {foreach from=$lineItems item=line}\n          <tr>\n            <td {$labelStyle}>\n              {if $line.membership_type_id}\n                {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n              {else}\n                {ts}Contribution Amount{/ts}\n              {/if}\n            </td>\n            <td {$valueStyle}>\n              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n          </tr>\n        {/foreach}\n      {elseif $isShowLineItems}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <table>\n              <tr>\n                <th>{ts}Item{/ts}</th>\n                <th>{ts}Fee{/ts}</th>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <th>{ts}SubTotal{/ts}</th>\n                  <th>{ts}Tax Rate{/ts}</th>\n                  <th>{ts}Tax Amount{/ts}</th>\n                  <th>{ts}Total{/ts}</th>\n                {/if}\n                <th>{ts}Membership Start Date{/ts}</th>\n                <th>{ts}Membership Expiration Date{/ts}</th>\n              </tr>\n              {foreach from=$lineItems item=line}\n                <tr>\n                  <td>{$line.title}</td>\n                  <td>\n                    {$line.line_total|crmMoney}\n                  </td>\n                  {if $isShowTax && {contribution.tax_amount|boolean}}\n                    <td>\n                      {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                    {if $line.tax_rate || $line.tax_amount != \"\"}\n                      <td>\n                        {$line.tax_rate|string_format:\"%.2f\"}%\n                      </td>\n                      <td>\n                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                      </td>\n                    {else}\n                      <td></td>\n                      <td></td>\n                    {/if}\n                    <td>\n                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                  {/if}\n                  <td>\n                    {$line.membership.start_date|crmDate:\"Full\"}\n                  </td>\n                  <td>\n                    {$line.membership.end_date|crmDate:\"Full\"}\n                  </td>\n                </tr>\n              {/foreach}\n            </table>\n          </td>\n        </tr>\n\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {contribution.tax_exclusive_amount}\n            </td>\n          </tr>\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n            {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n            {contribution.total_amount}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.receive_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.receive_date}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n    {/if}\n\n    {if {contribution.contribution_recur_id|boolean}}\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {ts}This membership will be renewed automatically.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if $honor_block_is_active}\n      <tr>\n        <th {$headerStyle}>\n          {$soft_credit_type}\n        </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n          <td {$labelStyle}>\n            {$label}\n          </td>\n          <td {$valueStyle}>\n            {$value}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($pcpBlock)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Personal Campaign Page{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n          {ts}Display In Honor Roll{/ts}\n        </td>\n        <td {$valueStyle}>\n          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n        </td>\n      </tr>\n      {if $pcp_roll_nickname}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Nickname{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_roll_nickname}\n          </td>\n        </tr>\n      {/if}\n      {if $pcp_personal_note}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Personal Note{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_personal_note}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($onBehalfProfile)}\n      <tr>\n        <th {$headerStyle}>\n          {$onBehalfProfile_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n          <td {$labelStyle}>\n            {$onBehalfName}\n          </td>\n          <td {$valueStyle}>\n            {$onBehalfValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if {contribution.address_id.display|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contribution.address_id.name}<br/>\n          {contribution.address_id.display}\n        </td>\n      </tr>\n    {/if}\n    {if {contact.email_primary.email|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contact.email_primary.email}\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($credit_card_type)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($selectPremium)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Premium Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {$product_name}\n        </td>\n      </tr>\n      {if $option}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Option{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$option}\n          </td>\n        </tr>\n      {/if}\n      {if $sku}\n        <tr>\n          <td {$labelStyle}>\n            {ts}SKU{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$sku}\n          </td>\n        </tr>\n      {/if}\n      {if $start_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Start Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$start_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if $end_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}End Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$end_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts}For information about this premium, contact:{/ts}</p>\n            {if !empty($contact_email)}\n              <p>{$contact_email}</p>\n            {/if}\n            {if !empty($contact_phone)}\n              <p>{$contact_phone}</p>\n            {/if}\n          </td>\n        </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n         {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($customPost)}\n      <tr>\n        <th {$headerStyle}>\n          {$customPost_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL),
  (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL),
  (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL),
  (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,839,'membership_autorenew_billing',1,0,0,NULL),
@@ -5651,26 +5669,26 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_note` WRITE;
 /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */;
 INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES
- (1,'civicrm_contact',114,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-01-16 11:08:46',NULL,'0'),
- (2,'civicrm_contact',17,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-07-05 07:23:18',NULL,'0'),
- (3,'civicrm_contact',20,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 14:07:31',NULL,'0'),
- (4,'civicrm_contact',18,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 15:25:51',NULL,'0'),
- (5,'civicrm_contact',41,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-07 11:05:21',NULL,'0'),
- (6,'civicrm_contact',148,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-28 19:57:06',NULL,'0'),
- (7,'civicrm_contact',53,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-10-24 13:07:48',NULL,'0'),
- (8,'civicrm_contact',89,'Chart out route map for next 10k run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-09 07:36:28',NULL,'0'),
- (9,'civicrm_contact',12,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-11-11 03:25:47',NULL,'0'),
- (10,'civicrm_contact',107,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-08-16 01:33:00',NULL,'0'),
- (11,'civicrm_contact',38,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-04 04:20:12',NULL,'0'),
- (12,'civicrm_contact',165,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-22 04:04:51',NULL,'0'),
- (13,'civicrm_contact',189,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 21:42:27',NULL,'0'),
- (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-03-13 02:59:38',NULL,'0'),
- (15,'civicrm_contact',83,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 02:27:16',NULL,'0'),
- (16,'civicrm_contact',119,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-04 21:03:38',NULL,'0'),
- (17,'civicrm_contact',157,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-10 22:02:49',NULL,'0'),
- (18,'civicrm_contact',124,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-14 01:33:44',NULL,'0'),
- (19,'civicrm_contact',196,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-09-08 05:58:30',NULL,'0'),
- (20,'civicrm_contact',49,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-26 14:48:43',NULL,'0');
+ (1,'civicrm_contact',84,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-03-14 05:12:19',NULL,'0'),
+ (2,'civicrm_contact',14,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-09-07 23:32:57',NULL,'0'),
+ (3,'civicrm_contact',197,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-08-05 02:03:11',NULL,'0'),
+ (4,'civicrm_contact',125,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-06-28 04:27:43',NULL,'0'),
+ (5,'civicrm_contact',89,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-23 10:17:27',NULL,'0'),
+ (6,'civicrm_contact',70,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-08 08:54:10',NULL,'0'),
+ (7,'civicrm_contact',8,'Arrange collection of funds from members',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-26 06:15:12',NULL,'0'),
+ (8,'civicrm_contact',18,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2022-12-22 10:43:04',NULL,'0'),
+ (9,'civicrm_contact',146,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-27 12:31:48',NULL,'0'),
+ (10,'civicrm_contact',143,'Reminder screening of \"Black\" on next Friday',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-02-22 10:50:53',NULL,'0'),
+ (11,'civicrm_contact',175,'Arrange collection of funds from members',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-03-27 19:54:56',NULL,'0'),
+ (12,'civicrm_contact',134,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-04-29 10:41:01',NULL,'0'),
+ (13,'civicrm_contact',91,'Connect for presentation',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-04-09 13:36:48',NULL,'0'),
+ (14,'civicrm_contact',37,'Chart out route map for next 10k run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-15 04:44:09',NULL,'0'),
+ (15,'civicrm_contact',91,'Chart out route map for next 10k run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-12-12 04:17:57',NULL,'0'),
+ (16,'civicrm_contact',167,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-22 16:43:27',NULL,'0'),
+ (17,'civicrm_contact',178,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-29 22:51:17',NULL,'0'),
+ (18,'civicrm_contact',169,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-13 16:38:17',NULL,'0'),
+ (19,'civicrm_contact',115,'Organize the Terry Fox run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-17 15:52:59',NULL,'0'),
+ (20,'civicrm_contact',201,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-23 21:24:15',NULL,'0');
 /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6677,56 +6695,56 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_participant` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */;
 INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES
- (1,10,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (2,92,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (3,160,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (4,77,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (5,36,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (6,40,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (7,94,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (8,41,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (9,23,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (10,13,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (11,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (12,192,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (13,135,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (14,30,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (15,16,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (16,132,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (17,179,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (18,189,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (19,123,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (20,144,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (21,80,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (22,178,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (23,45,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (24,196,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (25,182,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (26,8,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (27,101,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (28,158,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (1,156,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (2,87,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (3,124,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (4,127,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (5,113,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (6,160,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (7,120,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (8,100,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (9,83,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (10,72,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (11,155,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (12,150,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (13,149,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (14,77,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (15,183,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (16,199,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (17,89,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (18,129,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (19,67,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (20,139,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (21,174,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (22,62,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (23,71,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (24,95,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (25,65,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (26,59,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (27,55,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (28,194,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
  (29,19,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (30,73,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (31,76,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (32,197,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (33,97,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (34,6,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (35,159,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (36,17,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (37,127,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (38,154,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (39,84,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (40,117,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (41,14,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (42,156,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (43,163,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (44,184,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (45,96,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (46,57,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (47,175,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (48,172,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (49,69,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (50,88,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
+ (30,79,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (31,106,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (32,18,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (33,177,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (34,175,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (35,42,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (36,61,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (37,132,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (38,173,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (39,195,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (40,25,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (41,110,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (42,31,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (43,12,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (44,52,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (45,130,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (46,193,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (47,168,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (48,82,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (49,38,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (50,162,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6737,56 +6755,56 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_participant_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */;
 INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES
- (1,34,63),
- (2,26,64),
- (3,1,65),
- (4,10,66),
- (5,41,67),
- (6,15,68),
- (7,36,69),
- (8,29,70),
+ (1,1,63),
+ (2,2,64),
+ (3,3,65),
+ (4,4,66),
+ (5,5,67),
+ (6,6,68),
+ (7,7,69),
+ (8,8,70),
  (9,9,71),
- (10,14,72),
- (11,5,73),
- (12,6,74),
- (13,8,75),
- (14,23,76),
- (15,46,77),
- (16,49,78),
- (17,30,79),
- (18,31,80),
- (19,4,81),
- (20,21,82),
- (21,39,83),
- (22,50,84),
- (23,2,85),
- (24,7,86),
- (25,45,87),
- (26,33,88),
+ (10,10,72),
+ (11,11,73),
+ (12,12,74),
+ (13,13,75),
+ (14,14,76),
+ (15,15,77),
+ (16,16,78),
+ (17,17,79),
+ (18,18,80),
+ (19,19,81),
+ (20,20,82),
+ (21,21,83),
+ (22,22,84),
+ (23,23,85),
+ (24,24,86),
+ (25,25,87),
+ (26,26,88),
  (27,27,89),
- (28,40,90),
- (29,19,91),
- (30,37,92),
- (31,16,93),
- (32,13,94),
- (33,20,95),
- (34,38,96),
- (35,42,97),
- (36,28,98),
- (37,35,99),
- (38,3,100),
- (39,43,101),
- (40,48,102),
- (41,47,103),
- (42,22,104),
- (43,17,105),
- (44,25,106),
- (45,44,107),
- (46,18,108),
- (47,12,109),
- (48,11,110),
- (49,24,111),
- (50,32,112);
+ (28,28,90),
+ (29,29,91),
+ (30,30,92),
+ (31,31,93),
+ (32,32,94),
+ (33,33,95),
+ (34,34,96),
+ (35,35,97),
+ (36,36,98),
+ (37,37,99),
+ (38,38,100),
+ (39,39,101),
+ (40,40,102),
+ (41,41,103),
+ (42,42,104),
+ (43,43,105),
+ (44,44,106),
+ (45,45,107),
+ (46,46,108),
+ (47,47,109),
+ (48,48,110),
+ (49,49,111),
+ (50,50,112);
 /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6859,7 +6877,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_pcp` WRITE;
 /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */;
 INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES
- (1,142,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
+ (1,190,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
 /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6881,183 +6899,168 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_phone` WRITE;
 /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */;
 INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES
- (1,31,1,1,0,NULL,'701-8326',NULL,'7018326',1),
- (2,25,1,1,0,NULL,'(561) 723-5834',NULL,'5617235834',2),
- (3,25,1,0,0,NULL,'(214) 874-3538',NULL,'2148743538',1),
- (4,35,1,1,0,NULL,'(371) 870-9746',NULL,'3718709746',2),
- (5,142,1,1,0,NULL,'(383) 878-6066',NULL,'3838786066',1),
- (6,142,1,0,0,NULL,'612-7608',NULL,'6127608',1),
- (7,5,1,1,0,NULL,'836-9875',NULL,'8369875',1),
- (8,5,1,0,0,NULL,'(476) 579-4329',NULL,'4765794329',2),
- (9,54,1,1,0,NULL,'(781) 303-5891',NULL,'7813035891',2),
- (10,82,1,1,0,NULL,'(380) 311-8610',NULL,'3803118610',2),
- (11,82,1,0,0,NULL,'(881) 823-9927',NULL,'8818239927',2),
- (12,9,1,1,0,NULL,'823-8440',NULL,'8238440',2),
- (13,9,1,0,0,NULL,'(751) 878-9340',NULL,'7518789340',2),
- (14,143,1,1,0,NULL,'609-4732',NULL,'6094732',2),
- (15,143,1,0,0,NULL,'(851) 855-2107',NULL,'8518552107',2),
- (16,78,1,1,0,NULL,'259-3009',NULL,'2593009',2),
- (17,78,1,0,0,NULL,'(489) 221-8298',NULL,'4892218298',2),
- (18,173,1,1,0,NULL,'298-2873',NULL,'2982873',2),
- (19,173,1,0,0,NULL,'507-5321',NULL,'5075321',2),
- (20,186,1,1,0,NULL,'(692) 738-5997',NULL,'6927385997',2),
- (21,127,1,1,0,NULL,'(596) 782-2345',NULL,'5967822345',2),
- (22,127,1,0,0,NULL,'(793) 307-2359',NULL,'7933072359',2),
- (23,101,1,1,0,NULL,'(580) 815-9336',NULL,'5808159336',2),
- (24,101,1,0,0,NULL,'(425) 772-7439',NULL,'4257727439',2),
- (25,30,1,1,0,NULL,'406-5173',NULL,'4065173',1),
- (26,30,1,0,0,NULL,'(377) 427-8722',NULL,'3774278722',1),
- (27,89,1,1,0,NULL,'889-6983',NULL,'8896983',1),
- (28,89,1,0,0,NULL,'751-6212',NULL,'7516212',2),
- (29,194,1,1,0,NULL,'(842) 838-3758',NULL,'8428383758',2),
- (30,194,1,0,0,NULL,'(369) 362-6537',NULL,'3693626537',2),
- (31,136,1,1,0,NULL,'(685) 284-2451',NULL,'6852842451',1),
- (32,136,1,0,0,NULL,'830-5972',NULL,'8305972',2),
- (33,129,1,1,0,NULL,'(278) 577-6073',NULL,'2785776073',1),
- (34,157,1,1,0,NULL,'452-1042',NULL,'4521042',1),
- (35,172,1,1,0,NULL,'430-7484',NULL,'4307484',1),
- (36,197,1,1,0,NULL,'578-3660',NULL,'5783660',2),
- (37,197,1,0,0,NULL,'(746) 349-8797',NULL,'7463498797',1),
- (38,185,1,1,0,NULL,'(468) 598-9717',NULL,'4685989717',2),
- (39,185,1,0,0,NULL,'(239) 246-8389',NULL,'2392468389',2),
- (40,132,1,1,0,NULL,'752-6132',NULL,'7526132',1),
- (41,132,1,0,0,NULL,'(421) 637-1571',NULL,'4216371571',2),
- (42,94,1,1,0,NULL,'425-1925',NULL,'4251925',1),
- (43,11,1,1,0,NULL,'439-4637',NULL,'4394637',1),
- (44,11,1,0,0,NULL,'411-7439',NULL,'4117439',2),
- (45,178,1,1,0,NULL,'(772) 371-1531',NULL,'7723711531',1),
- (46,144,1,1,0,NULL,'481-6839',NULL,'4816839',1),
- (47,201,1,1,0,NULL,'(565) 235-7766',NULL,'5652357766',2),
- (48,201,1,0,0,NULL,'(593) 665-8270',NULL,'5936658270',2),
- (49,8,1,1,0,NULL,'859-2182',NULL,'8592182',2),
- (50,33,1,1,0,NULL,'800-2321',NULL,'8002321',1),
- (51,153,1,1,0,NULL,'(784) 658-5457',NULL,'7846585457',1),
- (52,153,1,0,0,NULL,'627-6722',NULL,'6276722',2),
- (53,120,1,1,0,NULL,'292-2860',NULL,'2922860',1),
- (54,120,1,0,0,NULL,'468-1106',NULL,'4681106',2),
- (55,169,1,1,0,NULL,'363-1993',NULL,'3631993',1),
- (56,130,1,1,0,NULL,'542-5373',NULL,'5425373',1),
- (57,28,1,1,0,NULL,'862-4570',NULL,'8624570',2),
- (58,17,1,1,0,NULL,'(245) 434-1599',NULL,'2454341599',1),
- (59,38,1,1,0,NULL,'(613) 348-5759',NULL,'6133485759',2),
- (60,38,1,0,0,NULL,'(712) 372-4759',NULL,'7123724759',2),
- (61,174,1,1,0,NULL,'(434) 223-4524',NULL,'4342234524',1),
- (62,174,1,0,0,NULL,'247-9687',NULL,'2479687',2),
- (63,113,1,1,0,NULL,'857-6594',NULL,'8576594',1),
- (64,71,1,1,0,NULL,'414-8952',NULL,'4148952',1),
- (65,71,1,0,0,NULL,'764-9546',NULL,'7649546',2),
- (66,56,1,1,0,NULL,'(296) 887-3997',NULL,'2968873997',1),
- (67,171,1,1,0,NULL,'(271) 495-5559',NULL,'2714955559',1),
- (68,171,1,0,0,NULL,'(733) 578-6411',NULL,'7335786411',2),
- (69,29,1,1,0,NULL,'494-3776',NULL,'4943776',2),
- (70,29,1,0,0,NULL,'413-1135',NULL,'4131135',1),
- (71,138,1,1,0,NULL,'278-9104',NULL,'2789104',1),
- (72,145,1,1,0,NULL,'334-7938',NULL,'3347938',2),
- (73,107,1,1,0,NULL,'(722) 383-3115',NULL,'7223833115',1),
- (74,107,1,0,0,NULL,'(535) 772-4758',NULL,'5357724758',1),
- (75,105,1,1,0,NULL,'(498) 296-3018',NULL,'4982963018',1),
- (76,167,1,1,0,NULL,'224-2691',NULL,'2242691',2),
- (77,167,1,0,0,NULL,'(865) 340-9624',NULL,'8653409624',1),
- (78,37,1,1,0,NULL,'846-3229',NULL,'8463229',2),
- (79,37,1,0,0,NULL,'704-8850',NULL,'7048850',2),
- (80,27,1,1,0,NULL,'(811) 430-2028',NULL,'8114302028',2),
- (81,40,1,1,0,NULL,'(515) 357-5489',NULL,'5153575489',1),
- (82,40,1,0,0,NULL,'692-6797',NULL,'6926797',2),
- (83,184,1,1,0,NULL,'(556) 507-5924',NULL,'5565075924',1),
- (84,184,1,0,0,NULL,'738-7531',NULL,'7387531',2),
- (85,102,1,1,0,NULL,'(885) 386-6877',NULL,'8853866877',1),
- (86,102,1,0,0,NULL,'(807) 355-3320',NULL,'8073553320',1),
- (87,108,1,1,0,NULL,'479-5380',NULL,'4795380',2),
- (88,188,1,1,0,NULL,'(496) 577-5005',NULL,'4965775005',2),
- (89,188,1,0,0,NULL,'310-9165',NULL,'3109165',1),
- (90,119,1,1,0,NULL,'(476) 320-7474',NULL,'4763207474',1),
- (91,119,1,0,0,NULL,'(329) 447-8458',NULL,'3294478458',1),
- (92,141,1,1,0,NULL,'880-8053',NULL,'8808053',1),
- (93,141,1,0,0,NULL,'(859) 278-9294',NULL,'8592789294',1),
- (94,176,1,1,0,NULL,'(560) 309-3969',NULL,'5603093969',2),
- (95,151,1,1,0,NULL,'(619) 444-1535',NULL,'6194441535',2),
- (96,151,1,0,0,NULL,'(482) 747-9033',NULL,'4827479033',1),
- (97,20,1,1,0,NULL,'362-2214',NULL,'3622214',2),
- (98,20,1,0,0,NULL,'438-4004',NULL,'4384004',1),
- (99,49,1,1,0,NULL,'798-8766',NULL,'7988766',2),
- (100,49,1,0,0,NULL,'775-7678',NULL,'7757678',1),
- (101,200,1,1,0,NULL,'503-9866',NULL,'5039866',1),
- (102,200,1,0,0,NULL,'(289) 816-8906',NULL,'2898168906',2),
- (103,125,1,1,0,NULL,'387-7137',NULL,'3877137',2),
- (104,55,1,1,0,NULL,'(391) 528-2746',NULL,'3915282746',2),
- (105,164,1,1,0,NULL,'353-1272',NULL,'3531272',2),
- (106,164,1,0,0,NULL,'470-5909',NULL,'4705909',2),
- (107,193,1,1,0,NULL,'714-8765',NULL,'7148765',1),
- (108,193,1,0,0,NULL,'(285) 824-3376',NULL,'2858243376',1),
- (109,44,1,1,0,NULL,'(344) 649-2733',NULL,'3446492733',1),
- (110,44,1,0,0,NULL,'(366) 835-9590',NULL,'3668359590',1),
- (111,60,1,1,0,NULL,'363-2460',NULL,'3632460',2),
- (112,60,1,0,0,NULL,'216-8190',NULL,'2168190',2),
- (113,84,1,1,0,NULL,'472-6165',NULL,'4726165',1),
- (114,84,1,0,0,NULL,'428-9663',NULL,'4289663',2),
- (115,109,1,1,0,NULL,'510-6627',NULL,'5106627',2),
- (116,109,1,0,0,NULL,'243-7513',NULL,'2437513',1),
- (117,76,1,1,0,NULL,'(459) 671-5070',NULL,'4596715070',2),
- (118,76,1,0,0,NULL,'(765) 787-7486',NULL,'7657877486',2),
- (119,149,1,1,0,NULL,'331-1328',NULL,'3311328',2),
- (120,74,1,1,0,NULL,'(374) 251-1719',NULL,'3742511719',1),
- (121,140,1,1,0,NULL,'651-1898',NULL,'6511898',2),
- (122,163,1,1,0,NULL,'(626) 322-3211',NULL,'6263223211',2),
- (123,66,1,1,0,NULL,'(724) 450-1369',NULL,'7244501369',2),
- (124,21,1,1,0,NULL,'(536) 578-2919',NULL,'5365782919',1),
- (125,21,1,0,0,NULL,'(584) 872-8621',NULL,'5848728621',2),
- (126,14,1,1,0,NULL,'(568) 369-5716',NULL,'5683695716',2),
- (127,14,1,0,0,NULL,'(330) 403-9152',NULL,'3304039152',1),
- (128,170,1,1,0,NULL,'647-9420',NULL,'6479420',2),
- (129,170,1,0,0,NULL,'458-3219',NULL,'4583219',2),
- (130,124,1,1,0,NULL,'(632) 454-8571',NULL,'6324548571',1),
- (131,124,1,0,0,NULL,'(828) 768-4009',NULL,'8287684009',2),
- (132,199,1,1,0,NULL,'708-5459',NULL,'7085459',1),
- (133,112,1,1,0,NULL,'(577) 229-6716',NULL,'5772296716',1),
- (134,104,1,1,0,NULL,'(785) 655-3220',NULL,'7856553220',2),
- (135,110,1,1,0,NULL,'545-3656',NULL,'5453656',2),
- (136,110,1,0,0,NULL,'460-7083',NULL,'4607083',2),
- (137,100,1,1,0,NULL,'747-4183',NULL,'7474183',1),
- (138,100,1,0,0,NULL,'(767) 535-3474',NULL,'7675353474',1),
- (139,160,1,1,0,NULL,'273-8785',NULL,'2738785',1),
- (140,57,1,1,0,NULL,'(807) 566-1513',NULL,'8075661513',2),
- (141,6,1,1,0,NULL,'521-4662',NULL,'5214662',1),
- (142,6,1,0,0,NULL,'(797) 575-5372',NULL,'7975755372',1),
- (143,62,1,1,0,NULL,'851-5822',NULL,'8515822',1),
- (144,62,1,0,0,NULL,'371-2426',NULL,'3712426',2),
- (145,137,1,1,0,NULL,'855-6543',NULL,'8556543',1),
- (146,137,1,0,0,NULL,'757-5565',NULL,'7575565',2),
- (147,99,1,1,0,NULL,'(824) 300-5139',NULL,'8243005139',1),
- (148,116,1,1,0,NULL,'(218) 349-9660',NULL,'2183499660',2),
- (149,180,1,1,0,NULL,'683-4985',NULL,'6834985',1),
- (150,180,1,0,0,NULL,'540-9753',NULL,'5409753',1),
- (151,114,1,1,0,NULL,'574-9685',NULL,'5749685',1),
- (152,114,1,0,0,NULL,'877-1810',NULL,'8771810',2),
- (153,32,1,1,0,NULL,'(327) 275-4451',NULL,'3272754451',2),
- (154,18,1,1,0,NULL,'270-8573',NULL,'2708573',1),
- (155,90,1,1,0,NULL,'(732) 233-1502',NULL,'7322331502',2),
- (156,39,1,1,0,NULL,'(297) 642-7386',NULL,'2976427386',1),
- (157,39,1,0,0,NULL,'392-3136',NULL,'3923136',2),
- (158,41,1,1,0,NULL,'732-3802',NULL,'7323802',2),
- (159,121,1,1,0,NULL,'518-7925',NULL,'5187925',1),
- (160,121,1,0,0,NULL,'582-8517',NULL,'5828517',2),
- (161,12,1,1,0,NULL,'891-1072',NULL,'8911072',2),
- (162,12,1,0,0,NULL,'(298) 460-2344',NULL,'2984602344',2),
- (163,61,1,1,0,NULL,'700-2528',NULL,'7002528',2),
- (164,47,1,1,0,NULL,'660-6029',NULL,'6606029',1),
- (165,181,1,1,0,NULL,'(739) 875-8399',NULL,'7398758399',2),
- (166,181,1,0,0,NULL,'(217) 474-7210',NULL,'2174747210',1),
- (167,85,1,1,0,NULL,'767-7183',NULL,'7677183',2),
- (168,85,1,0,0,NULL,'(716) 432-5188',NULL,'7164325188',2),
- (169,36,1,1,0,NULL,'(359) 373-1010',NULL,'3593731010',1),
- (170,36,1,0,0,NULL,'348-2045',NULL,'3482045',2),
- (171,118,1,1,0,NULL,'519-9913',NULL,'5199913',1),
- (172,118,1,0,0,NULL,'(566) 410-4236',NULL,'5664104236',1),
- (173,152,1,1,0,NULL,'(630) 518-4681',NULL,'6305184681',2),
- (174,152,1,0,0,NULL,'(480) 533-9631',NULL,'4805339631',2),
- (175,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
- (176,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
- (177,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
+ (1,72,1,1,0,NULL,'800-2446',NULL,'8002446',1),
+ (2,72,1,0,0,NULL,'477-7890',NULL,'4777890',2),
+ (3,19,1,1,0,NULL,'346-4275',NULL,'3464275',2),
+ (4,19,1,0,0,NULL,'738-3594',NULL,'7383594',1),
+ (5,153,1,1,0,NULL,'881-1995',NULL,'8811995',2),
+ (6,153,1,0,0,NULL,'332-8487',NULL,'3328487',2),
+ (7,16,1,1,0,NULL,'337-2383',NULL,'3372383',2),
+ (8,65,1,1,0,NULL,'345-6698',NULL,'3456698',2),
+ (9,120,1,1,0,NULL,'268-3790',NULL,'2683790',2),
+ (10,120,1,0,0,NULL,'726-2801',NULL,'7262801',1),
+ (11,85,1,1,0,NULL,'(423) 767-2167',NULL,'4237672167',2),
+ (12,110,1,1,0,NULL,'627-9868',NULL,'6279868',1),
+ (13,110,1,0,0,NULL,'588-6379',NULL,'5886379',2),
+ (14,45,1,1,0,NULL,'457-7461',NULL,'4577461',2),
+ (15,37,1,1,0,NULL,'567-4723',NULL,'5674723',2),
+ (16,12,1,1,0,NULL,'(810) 561-3757',NULL,'8105613757',2),
+ (17,102,1,1,0,NULL,'(467) 667-5308',NULL,'4676675308',2),
+ (18,192,1,1,0,NULL,'(845) 753-2633',NULL,'8457532633',2),
+ (19,192,1,0,0,NULL,'(432) 859-5238',NULL,'4328595238',2),
+ (20,23,1,1,0,NULL,'(530) 786-5195',NULL,'5307865195',1),
+ (21,94,1,1,0,NULL,'530-2765',NULL,'5302765',2),
+ (22,108,1,1,0,NULL,'414-5675',NULL,'4145675',2),
+ (23,108,1,0,0,NULL,'336-3080',NULL,'3363080',2),
+ (24,38,1,1,0,NULL,'(694) 886-2966',NULL,'6948862966',2),
+ (25,154,1,1,0,NULL,'352-2421',NULL,'3522421',2),
+ (26,86,1,1,0,NULL,'297-4919',NULL,'2974919',1),
+ (27,86,1,0,0,NULL,'(316) 570-2720',NULL,'3165702720',2),
+ (28,95,1,1,0,NULL,'(842) 501-3198',NULL,'8425013198',2),
+ (29,176,1,1,0,NULL,'(401) 654-6326',NULL,'4016546326',1),
+ (30,74,1,1,0,NULL,'(539) 620-9860',NULL,'5396209860',2),
+ (31,112,1,1,0,NULL,'340-3806',NULL,'3403806',1),
+ (32,112,1,0,0,NULL,'(762) 203-4895',NULL,'7622034895',2),
+ (33,117,1,1,0,NULL,'(459) 399-2369',NULL,'4593992369',1),
+ (34,101,1,1,0,NULL,'(425) 748-5203',NULL,'4257485203',2),
+ (35,101,1,0,0,NULL,'(740) 288-7287',NULL,'7402887287',2),
+ (36,57,1,1,0,NULL,'(811) 695-4352',NULL,'8116954352',2),
+ (37,57,1,0,0,NULL,'(621) 862-1093',NULL,'6218621093',1),
+ (38,124,1,1,0,NULL,'(468) 299-9641',NULL,'4682999641',1),
+ (39,124,1,0,0,NULL,'(826) 563-9123',NULL,'8265639123',1),
+ (40,126,1,1,0,NULL,'(669) 282-4083',NULL,'6692824083',2),
+ (41,126,1,0,0,NULL,'444-2349',NULL,'4442349',1),
+ (42,76,1,1,0,NULL,'229-2280',NULL,'2292280',2),
+ (43,76,1,0,0,NULL,'(292) 204-1367',NULL,'2922041367',1),
+ (44,116,1,1,0,NULL,'590-2233',NULL,'5902233',2),
+ (45,116,1,0,0,NULL,'877-6167',NULL,'8776167',2),
+ (46,149,1,1,0,NULL,'(721) 365-9584',NULL,'7213659584',2),
+ (47,135,1,1,0,NULL,'406-1292',NULL,'4061292',1),
+ (48,147,1,1,0,NULL,'574-1811',NULL,'5741811',1),
+ (49,131,1,1,0,NULL,'(495) 345-1345',NULL,'4953451345',1),
+ (50,88,1,1,0,NULL,'(425) 338-4268',NULL,'4253384268',1),
+ (51,88,1,0,0,NULL,'(312) 351-7531',NULL,'3123517531',1),
+ (52,200,1,1,0,NULL,'(229) 375-3756',NULL,'2293753756',1),
+ (53,200,1,0,0,NULL,'244-8897',NULL,'2448897',1),
+ (54,21,1,1,0,NULL,'811-2695',NULL,'8112695',2),
+ (55,21,1,0,0,NULL,'(787) 213-8032',NULL,'7872138032',2),
+ (56,48,1,1,0,NULL,'(264) 286-4791',NULL,'2642864791',1),
+ (57,48,1,0,0,NULL,'(675) 663-8290',NULL,'6756638290',1),
+ (58,99,1,1,0,NULL,'(353) 688-5483',NULL,'3536885483',1),
+ (59,99,1,0,0,NULL,'868-5196',NULL,'8685196',1),
+ (60,107,1,1,0,NULL,'(759) 383-1340',NULL,'7593831340',1),
+ (61,136,1,1,0,NULL,'(323) 692-9618',NULL,'3236929618',1),
+ (62,142,1,1,0,NULL,'(655) 445-6644',NULL,'6554456644',1),
+ (63,175,1,1,0,NULL,'490-9070',NULL,'4909070',2),
+ (64,175,1,0,0,NULL,'(564) 253-8226',NULL,'5642538226',1),
+ (65,148,1,1,0,NULL,'399-9174',NULL,'3999174',1),
+ (66,146,1,1,0,NULL,'(377) 344-5441',NULL,'3773445441',1),
+ (67,30,1,1,0,NULL,'524-4405',NULL,'5244405',2),
+ (68,122,1,1,0,NULL,'(843) 258-2699',NULL,'8432582699',2),
+ (69,159,1,1,0,NULL,'895-4057',NULL,'8954057',2),
+ (70,159,1,0,0,NULL,'300-1954',NULL,'3001954',1),
+ (71,100,1,1,0,NULL,'739-2383',NULL,'7392383',2),
+ (72,100,1,0,0,NULL,'(328) 673-3228',NULL,'3286733228',2),
+ (73,44,1,1,0,NULL,'(808) 663-6537',NULL,'8086636537',2),
+ (74,44,1,0,0,NULL,'454-8435',NULL,'4548435',1),
+ (75,63,1,1,0,NULL,'(873) 732-8956',NULL,'8737328956',1),
+ (76,63,1,0,0,NULL,'(212) 596-7051',NULL,'2125967051',1),
+ (77,66,1,1,0,NULL,'(284) 650-4538',NULL,'2846504538',1),
+ (78,36,1,1,0,NULL,'514-8993',NULL,'5148993',2),
+ (79,36,1,0,0,NULL,'(621) 425-6472',NULL,'6214256472',1),
+ (80,13,1,1,0,NULL,'640-8235',NULL,'6408235',1),
+ (81,13,1,0,0,NULL,'307-5196',NULL,'3075196',2),
+ (82,144,1,1,0,NULL,'418-2253',NULL,'4182253',2),
+ (83,34,1,1,0,NULL,'414-1909',NULL,'4141909',2),
+ (84,34,1,0,0,NULL,'(483) 225-6458',NULL,'4832256458',1),
+ (85,140,1,1,0,NULL,'459-4619',NULL,'4594619',1),
+ (86,140,1,0,0,NULL,'272-4332',NULL,'2724332',2),
+ (87,81,1,1,0,NULL,'363-9755',NULL,'3639755',1),
+ (88,81,1,0,0,NULL,'(608) 537-1180',NULL,'6085371180',1),
+ (89,139,1,1,0,NULL,'675-1553',NULL,'6751553',1),
+ (90,103,1,1,0,NULL,'295-5740',NULL,'2955740',1),
+ (91,6,1,1,0,NULL,'(298) 241-4643',NULL,'2982414643',1),
+ (92,58,1,1,0,NULL,'206-6250',NULL,'2066250',1),
+ (93,58,1,0,0,NULL,'(626) 327-2993',NULL,'6263272993',1),
+ (94,132,1,1,0,NULL,'(686) 710-7673',NULL,'6867107673',1),
+ (95,132,1,0,0,NULL,'(230) 350-4706',NULL,'2303504706',2),
+ (96,145,1,1,0,NULL,'(210) 587-7428',NULL,'2105877428',1),
+ (97,157,1,1,0,NULL,'(662) 776-6793',NULL,'6627766793',2),
+ (98,157,1,0,0,NULL,'434-8633',NULL,'4348633',1),
+ (99,183,1,1,0,NULL,'207-4326',NULL,'2074326',2),
+ (100,33,1,1,0,NULL,'522-2498',NULL,'5222498',1),
+ (101,55,1,1,0,NULL,'603-3506',NULL,'6033506',2),
+ (102,128,1,1,0,NULL,'(330) 233-7554',NULL,'3302337554',1),
+ (103,8,1,1,0,NULL,'828-2338',NULL,'8282338',1),
+ (104,89,1,1,0,NULL,'(275) 383-2166',NULL,'2753832166',1),
+ (105,89,1,0,0,NULL,'(445) 507-5154',NULL,'4455075154',1),
+ (106,130,1,1,0,NULL,'710-4396',NULL,'7104396',1),
+ (107,130,1,0,0,NULL,'(608) 447-9773',NULL,'6084479773',2),
+ (108,143,1,1,0,NULL,'(764) 265-2156',NULL,'7642652156',1),
+ (109,143,1,0,0,NULL,'(501) 583-5924',NULL,'5015835924',1),
+ (110,150,1,1,0,NULL,'377-3069',NULL,'3773069',1),
+ (111,50,1,1,0,NULL,'(274) 407-7319',NULL,'2744077319',2),
+ (112,180,1,1,0,NULL,'(479) 294-4913',NULL,'4792944913',2),
+ (113,84,1,1,0,NULL,'876-5083',NULL,'8765083',1),
+ (114,84,1,0,0,NULL,'866-7911',NULL,'8667911',1),
+ (115,119,1,1,0,NULL,'626-6833',NULL,'6266833',2),
+ (116,119,1,0,0,NULL,'(497) 516-3235',NULL,'4975163235',2),
+ (117,133,1,1,0,NULL,'319-4553',NULL,'3194553',2),
+ (118,133,1,0,0,NULL,'806-7566',NULL,'8067566',1),
+ (119,194,1,1,0,NULL,'707-4577',NULL,'7074577',1),
+ (120,59,1,1,0,NULL,'220-1066',NULL,'2201066',1),
+ (121,59,1,0,0,NULL,'(534) 284-8077',NULL,'5342848077',1),
+ (122,27,1,1,0,NULL,'679-5416',NULL,'6795416',2),
+ (123,27,1,0,0,NULL,'891-4304',NULL,'8914304',2),
+ (124,91,1,1,0,NULL,'(858) 791-1832',NULL,'8587911832',2),
+ (125,91,1,0,0,NULL,'248-5768',NULL,'2485768',1),
+ (126,32,1,1,0,NULL,'(645) 696-3487',NULL,'6456963487',1),
+ (127,52,1,1,0,NULL,'(332) 706-1068',NULL,'3327061068',1),
+ (128,52,1,0,0,NULL,'(395) 443-4209',NULL,'3954434209',1),
+ (129,31,1,1,0,NULL,'(701) 694-9901',NULL,'7016949901',2),
+ (130,31,1,0,0,NULL,'268-2970',NULL,'2682970',1),
+ (131,155,1,1,0,NULL,'(862) 616-2217',NULL,'8626162217',1),
+ (132,11,1,1,0,NULL,'396-1588',NULL,'3961588',1),
+ (133,24,1,1,0,NULL,'(239) 746-1248',NULL,'2397461248',1),
+ (134,24,1,0,0,NULL,'550-6720',NULL,'5506720',2),
+ (135,93,1,1,0,NULL,'(828) 681-4961',NULL,'8286814961',2),
+ (136,93,1,0,0,NULL,'(799) 492-7090',NULL,'7994927090',2),
+ (137,73,1,1,0,NULL,'388-4622',NULL,'3884622',1),
+ (138,73,1,0,0,NULL,'215-3923',NULL,'2153923',2),
+ (139,109,1,1,0,NULL,'(294) 297-1178',NULL,'2942971178',2),
+ (140,109,1,0,0,NULL,'459-2509',NULL,'4592509',2),
+ (141,163,1,1,0,NULL,'675-6616',NULL,'6756616',1),
+ (142,163,1,0,0,NULL,'745-3502',NULL,'7453502',2),
+ (143,5,1,1,0,NULL,'(661) 394-3727',NULL,'6613943727',2),
+ (144,5,1,0,0,NULL,'(381) 364-9727',NULL,'3813649727',2),
+ (145,4,1,1,0,NULL,'(204) 634-9784',NULL,'2046349784',2),
+ (146,169,1,1,0,NULL,'559-8597',NULL,'5598597',1),
+ (147,42,1,1,0,NULL,'217-8845',NULL,'2178845',2),
+ (148,42,1,0,0,NULL,'(549) 556-5950',NULL,'5495565950',2),
+ (149,90,1,1,0,NULL,'(616) 690-9960',NULL,'6166909960',1),
+ (150,90,1,0,0,NULL,'617-1536',NULL,'6171536',2),
+ (151,20,1,1,0,NULL,'498-7608',NULL,'4987608',2),
+ (152,28,1,1,0,NULL,'(580) 493-9923',NULL,'5804939923',1),
+ (153,184,1,1,0,NULL,'(502) 221-9737',NULL,'5022219737',1),
+ (154,184,1,0,0,NULL,'(807) 858-1323',NULL,'8078581323',1),
+ (155,152,1,1,0,NULL,'423-3878',NULL,'4233878',2),
+ (156,129,1,1,0,NULL,'553-3089',NULL,'5533089',1),
+ (157,165,1,1,0,NULL,'(327) 783-3030',NULL,'3277833030',2),
+ (158,87,1,1,0,NULL,'(851) 326-1014',NULL,'8513261014',1),
+ (159,87,1,0,0,NULL,'(722) 554-3854',NULL,'7225543854',1),
+ (160,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
+ (161,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
+ (162,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
 /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7081,8 +7084,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_pledge_block` WRITE;
 /*!40000 ALTER TABLE `civicrm_pledge_block` DISABLE KEYS */;
 INSERT INTO `civicrm_pledge_block` (`id`, `entity_table`, `entity_id`, `pledge_frequency_unit`, `is_pledge_interval`, `max_reminders`, `initial_reminder_day`, `additional_reminder_day`, `pledge_start_date`, `is_pledge_start_date_visible`, `is_pledge_start_date_editable`) VALUES
- (1,'civicrm_contribution_page',3,'weekmonthyear',1,1,5,5,NULL,0,0),
- (2,'civicrm_contribution_page',1,'weekmonthyear',0,2,5,5,NULL,0,0);
+ (1,'civicrm_contribution_page',3,'weekmonthyear',1,1,5,5,NULL,0,0);
 /*!40000 ALTER TABLE `civicrm_pledge_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7161,7 +7163,7 @@ LOCK TABLES `civicrm_price_field` WRITE;
 INSERT INTO `civicrm_price_field` (`id`, `price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `help_pre`, `help_post`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `active_on`, `expire_on`, `javascript`, `visibility_id`) VALUES
  (1,1,'contribution_amount','Contribution Amount','Text',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (2,3,'contribution_amount','Contribution Amount','Radio',0,NULL,NULL,2,1,1,1,0,NULL,NULL,NULL,1),
- (3,3,'other_amount','Other Amount','Text',0,NULL,NULL,3,0,1,1,0,NULL,NULL,NULL,1),
+ (3,3,'other_amount','Additional Amount','Text',0,NULL,NULL,3,0,1,1,0,NULL,NULL,NULL,1),
  (4,2,'1','Membership Amount','Radio',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (5,4,'membership_amount','Membership','Radio',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (6,5,'other_amount','Contribution Amount','Text',0,NULL,NULL,3,0,1,1,1,NULL,NULL,NULL,1),
@@ -7292,224 +7294,222 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_relationship` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */;
 INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES
- (1,24,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (2,189,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (3,24,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (4,189,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (5,189,24,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (6,16,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (7,24,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (8,189,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (9,86,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (10,16,86,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (11,151,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (12,20,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (13,151,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (14,20,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (15,20,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (16,176,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (17,151,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (18,20,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (19,141,190,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (20,176,141,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (21,125,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (22,55,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (23,125,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (24,55,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (25,55,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (26,200,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (27,125,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (28,55,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (29,49,155,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (30,200,49,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (31,34,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (32,164,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (33,34,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (34,164,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (35,164,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (36,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (37,34,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (38,164,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (39,150,26,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (40,179,150,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (41,44,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (42,60,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (43,44,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (44,60,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (45,60,44,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (46,193,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (47,44,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (48,60,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (49,183,53,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (50,193,183,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (51,76,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (52,126,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (53,76,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (54,126,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (55,126,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (56,109,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (57,76,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (58,126,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (59,84,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (60,109,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (61,147,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (62,74,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (63,147,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (64,74,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (65,74,147,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (66,149,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (67,147,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (68,74,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (69,46,131,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (70,149,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (71,162,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (72,66,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (73,162,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (74,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (75,66,162,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (76,163,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (77,162,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (78,66,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (79,140,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (80,163,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (81,170,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (82,45,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (83,170,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (84,45,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (85,45,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (86,14,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (87,170,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (88,45,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (89,21,177,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (90,14,21,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (91,112,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (92,79,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (93,112,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (94,79,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (95,79,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (96,199,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (97,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (98,79,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (99,124,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (100,199,124,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (101,104,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (102,92,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (103,104,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (104,92,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (105,92,104,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (106,91,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (107,104,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (108,92,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (109,48,191,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (110,91,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (111,160,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (112,57,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (113,160,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (114,57,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (115,57,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (116,100,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (117,160,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (118,57,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (119,110,134,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (120,100,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (121,13,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (122,62,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (123,13,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (124,62,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (125,62,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (126,6,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (127,13,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (128,62,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (129,198,73,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (130,6,198,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (131,99,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (132,116,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (133,99,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (134,116,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (135,116,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (136,137,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (137,99,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (138,116,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (139,15,88,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (140,137,15,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (141,114,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (142,32,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (143,114,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (144,32,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (145,32,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (146,182,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (147,114,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (148,32,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (149,180,23,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (150,182,180,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (151,39,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (152,41,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (153,39,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (154,41,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (155,41,39,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (156,90,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (157,39,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (158,41,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (159,18,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (160,90,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (161,196,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (162,195,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (163,196,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (164,195,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (165,195,196,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (166,121,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (167,196,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (168,195,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (169,2,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (170,121,2,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (171,61,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (172,63,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (173,61,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (174,63,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (175,63,61,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (176,12,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (177,61,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (178,63,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (179,154,75,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (180,12,154,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (181,175,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (182,85,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (183,175,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (184,85,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (185,85,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (186,181,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (187,175,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (188,85,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (189,47,65,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (190,181,47,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (191,111,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (192,152,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (193,111,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (194,152,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (195,152,111,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (196,118,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (197,111,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (198,152,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (199,36,159,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (200,118,36,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (201,15,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (202,129,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (203,33,22,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (204,74,50,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (205,109,52,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (206,185,59,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (207,184,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (208,76,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (209,85,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (210,4,69,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (211,81,77,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (212,187,103,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (213,18,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (214,72,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (215,115,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (216,197,139,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (217,178,146,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (218,96,148,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30');
+ (1,156,170,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (2,144,170,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (3,156,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (4,144,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (5,144,156,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (6,13,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (7,156,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (8,144,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (9,170,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (10,13,170,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (11,187,34,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (12,140,34,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (13,187,75,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (14,140,75,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (15,140,187,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (16,75,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (17,187,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (18,140,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (19,34,111,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (20,75,34,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (21,139,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (22,98,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (23,139,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (24,98,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (25,98,139,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (26,14,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (27,139,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (28,98,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (29,81,92,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (30,14,81,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (31,141,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (32,103,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (33,141,196,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (34,103,196,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (35,103,141,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (36,196,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (37,141,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (38,103,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (39,168,61,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (40,196,168,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (41,185,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (42,127,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (43,185,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (44,127,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (45,127,185,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (46,58,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (47,185,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (48,127,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (49,6,106,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (50,58,6,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (51,171,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (52,49,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (53,171,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (54,49,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (55,49,171,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (56,145,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (57,171,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (58,49,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (59,132,56,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (60,145,132,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (61,69,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (62,166,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (63,69,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (64,166,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (65,166,69,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (66,183,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (67,69,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (68,166,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (69,157,193,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (70,183,157,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (71,33,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (72,55,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (73,33,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (74,55,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (75,55,33,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (76,22,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (77,33,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (78,55,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (79,195,151,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (80,22,195,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (81,54,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (82,89,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (83,54,8,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (84,89,8,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (85,89,54,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (86,8,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (87,54,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (88,89,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (89,128,97,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (90,8,128,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (91,83,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (92,130,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (93,83,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (94,130,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (95,130,83,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (96,7,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (97,83,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (98,130,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (99,62,53,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (100,7,62,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (101,150,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (102,50,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (103,150,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (104,50,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (105,50,150,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (106,173,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (107,150,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (108,50,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (109,143,138,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (110,173,143,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (111,84,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (112,119,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (113,84,177,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (114,119,177,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (115,119,84,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (116,177,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (117,84,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (118,119,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (119,180,199,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (120,177,180,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (121,59,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (122,27,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (123,59,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (124,27,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (125,27,59,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (126,194,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (127,59,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (128,27,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (129,133,172,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (130,194,133,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (131,52,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (132,31,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (133,52,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (134,31,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (135,31,52,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (136,32,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (137,52,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (138,31,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (139,91,186,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (140,32,91,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (141,11,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (142,24,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (143,11,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (144,24,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (145,24,11,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (146,155,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (147,11,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (148,24,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (149,80,167,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (150,155,80,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (151,109,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (152,163,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (153,109,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (154,163,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (155,163,109,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (156,73,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (157,109,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (158,163,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (159,93,2,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (160,73,93,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (161,4,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (162,169,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (163,4,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (164,169,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (165,169,4,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (166,134,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (167,4,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (168,169,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (169,5,68,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (170,134,5,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (171,20,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (172,104,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (173,20,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (174,104,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (175,104,20,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (176,90,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (177,20,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (178,104,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (179,42,25,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (180,90,42,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (181,152,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (182,129,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (183,152,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (184,129,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (185,129,152,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (186,184,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (187,152,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (188,129,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (189,28,39,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (190,184,28,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (191,181,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (192,87,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (193,181,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (194,87,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (195,87,181,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (196,174,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (197,181,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (198,87,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (199,165,125,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (200,174,165,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (201,146,9,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (202,32,15,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (203,77,17,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (204,66,18,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (205,145,26,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (206,152,35,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (207,20,46,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (208,187,47,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (209,150,51,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (210,109,60,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (211,185,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (212,200,71,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (213,8,115,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (214,55,162,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (215,41,197,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (216,114,201,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35');
 /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7520,442 +7520,438 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_relationship_cache` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */;
 INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES
- (1,1,1,'a_b',24,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (2,1,1,'b_a',86,'Parent of',24,'Child of',1,NULL,NULL,NULL),
- (3,2,1,'a_b',189,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (4,2,1,'b_a',86,'Parent of',189,'Child of',1,NULL,NULL,NULL),
- (5,3,1,'a_b',24,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (6,3,1,'b_a',16,'Parent of',24,'Child of',1,NULL,NULL,NULL),
- (7,4,1,'a_b',189,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (8,4,1,'b_a',16,'Parent of',189,'Child of',1,NULL,NULL,NULL),
- (9,5,4,'a_b',189,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL),
- (10,5,4,'b_a',24,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL),
- (11,6,8,'a_b',16,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (12,6,8,'b_a',58,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL),
- (13,7,8,'a_b',24,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (14,7,8,'b_a',58,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL),
- (15,8,8,'a_b',189,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (16,8,8,'b_a',58,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL),
- (17,9,7,'a_b',86,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL),
- (18,9,7,'b_a',58,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL),
- (19,10,2,'a_b',16,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL),
- (20,10,2,'b_a',86,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL),
- (21,11,1,'a_b',151,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (22,11,1,'b_a',141,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (23,12,1,'a_b',20,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (24,12,1,'b_a',141,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (25,13,1,'a_b',151,'Child of',176,'Parent of',1,NULL,NULL,NULL),
- (26,13,1,'b_a',176,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (27,14,1,'a_b',20,'Child of',176,'Parent of',1,NULL,NULL,NULL),
- (28,14,1,'b_a',176,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (29,15,4,'a_b',20,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL),
- (30,15,4,'b_a',151,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
- (31,16,8,'a_b',176,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (32,16,8,'b_a',190,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL),
- (33,17,8,'a_b',151,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (34,17,8,'b_a',190,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL),
- (35,18,8,'a_b',20,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (36,18,8,'b_a',190,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
- (37,19,7,'a_b',141,'Head of Household for',190,'Head of Household is',1,NULL,NULL,NULL),
- (38,19,7,'b_a',190,'Head of Household is',141,'Head of Household for',1,NULL,NULL,NULL),
- (39,20,2,'a_b',176,'Spouse of',141,'Spouse of',1,NULL,NULL,NULL),
- (40,20,2,'b_a',141,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL),
- (41,21,1,'a_b',125,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (42,21,1,'b_a',49,'Parent of',125,'Child of',1,NULL,NULL,NULL),
- (43,22,1,'a_b',55,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (44,22,1,'b_a',49,'Parent of',55,'Child of',1,NULL,NULL,NULL),
- (45,23,1,'a_b',125,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (46,23,1,'b_a',200,'Parent of',125,'Child of',1,NULL,NULL,NULL),
- (47,24,1,'a_b',55,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (48,24,1,'b_a',200,'Parent of',55,'Child of',1,NULL,NULL,NULL),
- (49,25,4,'a_b',55,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL),
- (50,25,4,'b_a',125,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL),
- (51,26,8,'a_b',200,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (52,26,8,'b_a',155,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL),
- (53,27,8,'a_b',125,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (54,27,8,'b_a',155,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL),
- (55,28,8,'a_b',55,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (56,28,8,'b_a',155,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL),
- (57,29,7,'a_b',49,'Head of Household for',155,'Head of Household is',1,NULL,NULL,NULL),
- (58,29,7,'b_a',155,'Head of Household is',49,'Head of Household for',1,NULL,NULL,NULL),
- (59,30,2,'a_b',200,'Spouse of',49,'Spouse of',1,NULL,NULL,NULL),
- (60,30,2,'b_a',49,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL),
- (61,31,1,'a_b',34,'Child of',150,'Parent of',1,NULL,NULL,NULL),
- (62,31,1,'b_a',150,'Parent of',34,'Child of',1,NULL,NULL,NULL),
- (63,32,1,'a_b',164,'Child of',150,'Parent of',1,NULL,NULL,NULL),
- (64,32,1,'b_a',150,'Parent of',164,'Child of',1,NULL,NULL,NULL),
- (65,33,1,'a_b',34,'Child of',179,'Parent of',1,NULL,NULL,NULL),
- (66,33,1,'b_a',179,'Parent of',34,'Child of',1,NULL,NULL,NULL),
- (67,34,1,'a_b',164,'Child of',179,'Parent of',1,NULL,NULL,NULL),
- (68,34,1,'b_a',179,'Parent of',164,'Child of',1,NULL,NULL,NULL),
- (69,35,4,'a_b',164,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL),
- (70,35,4,'b_a',34,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL),
- (71,36,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (72,36,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL),
- (73,37,8,'a_b',34,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (74,37,8,'b_a',26,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL),
- (75,38,8,'a_b',164,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (76,38,8,'b_a',26,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL),
- (77,39,7,'a_b',150,'Head of Household for',26,'Head of Household is',0,NULL,NULL,NULL),
- (78,39,7,'b_a',26,'Head of Household is',150,'Head of Household for',0,NULL,NULL,NULL),
- (79,40,2,'a_b',179,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL),
- (80,40,2,'b_a',150,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL),
- (81,41,1,'a_b',44,'Child of',183,'Parent of',1,NULL,NULL,NULL),
- (82,41,1,'b_a',183,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (83,42,1,'a_b',60,'Child of',183,'Parent of',1,NULL,NULL,NULL),
- (84,42,1,'b_a',183,'Parent of',60,'Child of',1,NULL,NULL,NULL),
- (85,43,1,'a_b',44,'Child of',193,'Parent of',1,NULL,NULL,NULL),
- (86,43,1,'b_a',193,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (87,44,1,'a_b',60,'Child of',193,'Parent of',1,NULL,NULL,NULL),
- (88,44,1,'b_a',193,'Parent of',60,'Child of',1,NULL,NULL,NULL),
- (89,45,4,'a_b',60,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL),
- (90,45,4,'b_a',44,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL),
- (91,46,8,'a_b',193,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (92,46,8,'b_a',53,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL),
- (93,47,8,'a_b',44,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (94,47,8,'b_a',53,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL),
- (95,48,8,'a_b',60,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (96,48,8,'b_a',53,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL),
- (97,49,7,'a_b',183,'Head of Household for',53,'Head of Household is',0,NULL,NULL,NULL),
- (98,49,7,'b_a',53,'Head of Household is',183,'Head of Household for',0,NULL,NULL,NULL),
- (99,50,2,'a_b',193,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL),
- (100,50,2,'b_a',183,'Spouse of',193,'Spouse of',0,NULL,NULL,NULL),
- (101,51,1,'a_b',76,'Child of',84,'Parent of',1,NULL,NULL,NULL),
- (102,51,1,'b_a',84,'Parent of',76,'Child of',1,NULL,NULL,NULL),
- (103,52,1,'a_b',126,'Child of',84,'Parent of',1,NULL,NULL,NULL),
- (104,52,1,'b_a',84,'Parent of',126,'Child of',1,NULL,NULL,NULL),
- (105,53,1,'a_b',76,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (106,53,1,'b_a',109,'Parent of',76,'Child of',1,NULL,NULL,NULL),
- (107,54,1,'a_b',126,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (108,54,1,'b_a',109,'Parent of',126,'Child of',1,NULL,NULL,NULL),
- (109,55,4,'a_b',126,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL),
- (110,55,4,'b_a',76,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL),
- (111,56,8,'a_b',109,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (112,56,8,'b_a',156,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
- (113,57,8,'a_b',76,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (114,57,8,'b_a',156,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL),
- (115,58,8,'a_b',126,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (116,58,8,'b_a',156,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL),
- (117,59,7,'a_b',84,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL),
- (118,59,7,'b_a',156,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL),
- (119,60,2,'a_b',109,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL),
- (120,60,2,'b_a',84,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL),
- (121,61,1,'a_b',147,'Child of',46,'Parent of',1,NULL,NULL,NULL),
- (122,61,1,'b_a',46,'Parent of',147,'Child of',1,NULL,NULL,NULL),
- (123,62,1,'a_b',74,'Child of',46,'Parent of',1,NULL,NULL,NULL),
- (124,62,1,'b_a',46,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (125,63,1,'a_b',147,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (126,63,1,'b_a',149,'Parent of',147,'Child of',1,NULL,NULL,NULL),
- (127,64,1,'a_b',74,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (128,64,1,'b_a',149,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (129,65,4,'a_b',74,'Sibling of',147,'Sibling of',1,NULL,NULL,NULL),
- (130,65,4,'b_a',147,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL),
- (131,66,8,'a_b',149,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (132,66,8,'b_a',131,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL),
- (133,67,8,'a_b',147,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (134,67,8,'b_a',131,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL),
- (135,68,8,'a_b',74,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (136,68,8,'b_a',131,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL),
- (137,69,7,'a_b',46,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL),
- (138,69,7,'b_a',131,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL),
- (139,70,2,'a_b',149,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL),
- (140,70,2,'b_a',46,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL),
- (141,71,1,'a_b',162,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (142,71,1,'b_a',140,'Parent of',162,'Child of',1,NULL,NULL,NULL),
- (143,72,1,'a_b',66,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (144,72,1,'b_a',140,'Parent of',66,'Child of',1,NULL,NULL,NULL),
- (145,73,1,'a_b',162,'Child of',163,'Parent of',1,NULL,NULL,NULL),
- (146,73,1,'b_a',163,'Parent of',162,'Child of',1,NULL,NULL,NULL),
- (147,74,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL),
- (148,74,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL),
- (149,75,4,'a_b',66,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL),
- (150,75,4,'b_a',162,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL),
- (151,76,8,'a_b',163,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (152,76,8,'b_a',10,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
- (153,77,8,'a_b',162,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (154,77,8,'b_a',10,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL),
- (155,78,8,'a_b',66,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (156,78,8,'b_a',10,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL),
- (157,79,7,'a_b',140,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL),
- (158,79,7,'b_a',10,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL),
- (159,80,2,'a_b',163,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL),
- (160,80,2,'b_a',140,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL),
- (161,81,1,'a_b',170,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (162,81,1,'b_a',21,'Parent of',170,'Child of',1,NULL,NULL,NULL),
- (163,82,1,'a_b',45,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (164,82,1,'b_a',21,'Parent of',45,'Child of',1,NULL,NULL,NULL),
- (165,83,1,'a_b',170,'Child of',14,'Parent of',1,NULL,NULL,NULL),
- (166,83,1,'b_a',14,'Parent of',170,'Child of',1,NULL,NULL,NULL),
- (167,84,1,'a_b',45,'Child of',14,'Parent of',1,NULL,NULL,NULL),
- (168,84,1,'b_a',14,'Parent of',45,'Child of',1,NULL,NULL,NULL),
- (169,85,4,'a_b',45,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL),
- (170,85,4,'b_a',170,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL),
- (171,86,8,'a_b',14,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (172,86,8,'b_a',177,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL),
- (173,87,8,'a_b',170,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (174,87,8,'b_a',177,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL),
- (175,88,8,'a_b',45,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (176,88,8,'b_a',177,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL),
- (177,89,7,'a_b',21,'Head of Household for',177,'Head of Household is',1,NULL,NULL,NULL),
- (178,89,7,'b_a',177,'Head of Household is',21,'Head of Household for',1,NULL,NULL,NULL),
- (179,90,2,'a_b',14,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL),
- (180,90,2,'b_a',21,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL),
- (181,91,1,'a_b',112,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (182,91,1,'b_a',124,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (183,92,1,'a_b',79,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (184,92,1,'b_a',124,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (185,93,1,'a_b',112,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (186,93,1,'b_a',199,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (187,94,1,'a_b',79,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (188,94,1,'b_a',199,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (189,95,4,'a_b',79,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL),
- (190,95,4,'b_a',112,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL),
- (191,96,8,'a_b',199,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (192,96,8,'b_a',3,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL),
- (193,97,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (194,97,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL),
- (195,98,8,'a_b',79,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (196,98,8,'b_a',3,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL),
- (197,99,7,'a_b',124,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL),
- (198,99,7,'b_a',3,'Head of Household is',124,'Head of Household for',1,NULL,NULL,NULL),
- (199,100,2,'a_b',199,'Spouse of',124,'Spouse of',1,NULL,NULL,NULL),
- (200,100,2,'b_a',124,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL),
- (201,101,1,'a_b',104,'Child of',48,'Parent of',1,NULL,NULL,NULL),
- (202,101,1,'b_a',48,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (203,102,1,'a_b',92,'Child of',48,'Parent of',1,NULL,NULL,NULL),
- (204,102,1,'b_a',48,'Parent of',92,'Child of',1,NULL,NULL,NULL),
- (205,103,1,'a_b',104,'Child of',91,'Parent of',1,NULL,NULL,NULL),
- (206,103,1,'b_a',91,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (207,104,1,'a_b',92,'Child of',91,'Parent of',1,NULL,NULL,NULL),
- (208,104,1,'b_a',91,'Parent of',92,'Child of',1,NULL,NULL,NULL),
- (209,105,4,'a_b',92,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL),
- (210,105,4,'b_a',104,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL),
- (211,106,8,'a_b',91,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (212,106,8,'b_a',191,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL),
- (213,107,8,'a_b',104,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (214,107,8,'b_a',191,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
- (215,108,8,'a_b',92,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (216,108,8,'b_a',191,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL),
- (217,109,7,'a_b',48,'Head of Household for',191,'Head of Household is',1,NULL,NULL,NULL),
- (218,109,7,'b_a',191,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL),
- (219,110,2,'a_b',91,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL),
- (220,110,2,'b_a',48,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL),
- (221,111,1,'a_b',160,'Child of',110,'Parent of',1,NULL,NULL,NULL),
- (222,111,1,'b_a',110,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (223,112,1,'a_b',57,'Child of',110,'Parent of',1,NULL,NULL,NULL),
- (224,112,1,'b_a',110,'Parent of',57,'Child of',1,NULL,NULL,NULL),
- (225,113,1,'a_b',160,'Child of',100,'Parent of',1,NULL,NULL,NULL),
- (226,113,1,'b_a',100,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (227,114,1,'a_b',57,'Child of',100,'Parent of',1,NULL,NULL,NULL),
- (228,114,1,'b_a',100,'Parent of',57,'Child of',1,NULL,NULL,NULL),
- (229,115,4,'a_b',57,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL),
- (230,115,4,'b_a',160,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL),
- (231,116,8,'a_b',100,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (232,116,8,'b_a',134,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL),
- (233,117,8,'a_b',160,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (234,117,8,'b_a',134,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL),
- (235,118,8,'a_b',57,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (236,118,8,'b_a',134,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL),
- (237,119,7,'a_b',110,'Head of Household for',134,'Head of Household is',0,NULL,NULL,NULL),
- (238,119,7,'b_a',134,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL),
- (239,120,2,'a_b',100,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL),
- (240,120,2,'b_a',110,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL),
- (241,121,1,'a_b',13,'Child of',198,'Parent of',1,NULL,NULL,NULL),
- (242,121,1,'b_a',198,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (243,122,1,'a_b',62,'Child of',198,'Parent of',1,NULL,NULL,NULL),
- (244,122,1,'b_a',198,'Parent of',62,'Child of',1,NULL,NULL,NULL),
- (245,123,1,'a_b',13,'Child of',6,'Parent of',1,NULL,NULL,NULL),
- (246,123,1,'b_a',6,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (247,124,1,'a_b',62,'Child of',6,'Parent of',1,NULL,NULL,NULL),
- (248,124,1,'b_a',6,'Parent of',62,'Child of',1,NULL,NULL,NULL),
- (249,125,4,'a_b',62,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL),
- (250,125,4,'b_a',13,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL),
- (251,126,8,'a_b',6,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (252,126,8,'b_a',73,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL),
- (253,127,8,'a_b',13,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (254,127,8,'b_a',73,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
- (255,128,8,'a_b',62,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (256,128,8,'b_a',73,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL),
- (257,129,7,'a_b',198,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL),
- (258,129,7,'b_a',73,'Head of Household is',198,'Head of Household for',0,NULL,NULL,NULL),
- (259,130,2,'a_b',6,'Spouse of',198,'Spouse of',0,NULL,NULL,NULL),
- (260,130,2,'b_a',198,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL),
- (261,131,1,'a_b',99,'Child of',15,'Parent of',1,NULL,NULL,NULL),
- (262,131,1,'b_a',15,'Parent of',99,'Child of',1,NULL,NULL,NULL),
- (263,132,1,'a_b',116,'Child of',15,'Parent of',1,NULL,NULL,NULL),
- (264,132,1,'b_a',15,'Parent of',116,'Child of',1,NULL,NULL,NULL),
- (265,133,1,'a_b',99,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (266,133,1,'b_a',137,'Parent of',99,'Child of',1,NULL,NULL,NULL),
- (267,134,1,'a_b',116,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (268,134,1,'b_a',137,'Parent of',116,'Child of',1,NULL,NULL,NULL),
- (269,135,4,'a_b',116,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL),
- (270,135,4,'b_a',99,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL),
- (271,136,8,'a_b',137,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (272,136,8,'b_a',88,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL),
- (273,137,8,'a_b',99,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (274,137,8,'b_a',88,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL),
- (275,138,8,'a_b',116,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (276,138,8,'b_a',88,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL),
- (277,139,7,'a_b',15,'Head of Household for',88,'Head of Household is',1,NULL,NULL,NULL),
- (278,139,7,'b_a',88,'Head of Household is',15,'Head of Household for',1,NULL,NULL,NULL),
- (279,140,2,'a_b',137,'Spouse of',15,'Spouse of',1,NULL,NULL,NULL),
- (280,140,2,'b_a',15,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL),
- (281,141,1,'a_b',114,'Child of',180,'Parent of',1,NULL,NULL,NULL),
- (282,141,1,'b_a',180,'Parent of',114,'Child of',1,NULL,NULL,NULL),
- (283,142,1,'a_b',32,'Child of',180,'Parent of',1,NULL,NULL,NULL),
- (284,142,1,'b_a',180,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (285,143,1,'a_b',114,'Child of',182,'Parent of',1,NULL,NULL,NULL),
- (286,143,1,'b_a',182,'Parent of',114,'Child of',1,NULL,NULL,NULL),
- (287,144,1,'a_b',32,'Child of',182,'Parent of',1,NULL,NULL,NULL),
- (288,144,1,'b_a',182,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (289,145,4,'a_b',32,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL),
- (290,145,4,'b_a',114,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL),
- (291,146,8,'a_b',182,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (292,146,8,'b_a',23,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL),
- (293,147,8,'a_b',114,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (294,147,8,'b_a',23,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL),
- (295,148,8,'a_b',32,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (296,148,8,'b_a',23,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
- (297,149,7,'a_b',180,'Head of Household for',23,'Head of Household is',1,NULL,NULL,NULL),
- (298,149,7,'b_a',23,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL),
- (299,150,2,'a_b',182,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL),
- (300,150,2,'b_a',180,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL),
- (301,151,1,'a_b',39,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (302,151,1,'b_a',18,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (303,152,1,'a_b',41,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (304,152,1,'b_a',18,'Parent of',41,'Child of',1,NULL,NULL,NULL),
- (305,153,1,'a_b',39,'Child of',90,'Parent of',1,NULL,NULL,NULL),
- (306,153,1,'b_a',90,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (307,154,1,'a_b',41,'Child of',90,'Parent of',1,NULL,NULL,NULL),
- (308,154,1,'b_a',90,'Parent of',41,'Child of',1,NULL,NULL,NULL),
- (309,155,4,'a_b',41,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL),
- (310,155,4,'b_a',39,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL),
- (311,156,8,'a_b',90,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (312,156,8,'b_a',51,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL),
- (313,157,8,'a_b',39,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (314,157,8,'b_a',51,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL),
- (315,158,8,'a_b',41,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (316,158,8,'b_a',51,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL),
- (317,159,7,'a_b',18,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL),
- (318,159,7,'b_a',51,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL),
- (319,160,2,'a_b',90,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL),
- (320,160,2,'b_a',18,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL),
- (321,161,1,'a_b',196,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (322,161,1,'b_a',2,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (323,162,1,'a_b',195,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (324,162,1,'b_a',2,'Parent of',195,'Child of',1,NULL,NULL,NULL),
- (325,163,1,'a_b',196,'Child of',121,'Parent of',1,NULL,NULL,NULL),
- (326,163,1,'b_a',121,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (327,164,1,'a_b',195,'Child of',121,'Parent of',1,NULL,NULL,NULL),
- (328,164,1,'b_a',121,'Parent of',195,'Child of',1,NULL,NULL,NULL),
- (329,165,4,'a_b',195,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL),
- (330,165,4,'b_a',196,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL),
- (331,166,8,'a_b',121,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (332,166,8,'b_a',43,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL),
- (333,167,8,'a_b',196,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (334,167,8,'b_a',43,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL),
- (335,168,8,'a_b',195,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (336,168,8,'b_a',43,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL),
- (337,169,7,'a_b',2,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL),
- (338,169,7,'b_a',43,'Head of Household is',2,'Head of Household for',0,NULL,NULL,NULL),
- (339,170,2,'a_b',121,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL),
- (340,170,2,'b_a',2,'Spouse of',121,'Spouse of',0,NULL,NULL,NULL),
- (341,171,1,'a_b',61,'Child of',154,'Parent of',1,NULL,NULL,NULL),
- (342,171,1,'b_a',154,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (343,172,1,'a_b',63,'Child of',154,'Parent of',1,NULL,NULL,NULL),
- (344,172,1,'b_a',154,'Parent of',63,'Child of',1,NULL,NULL,NULL),
- (345,173,1,'a_b',61,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (346,173,1,'b_a',12,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (347,174,1,'a_b',63,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (348,174,1,'b_a',12,'Parent of',63,'Child of',1,NULL,NULL,NULL),
- (349,175,4,'a_b',63,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL),
- (350,175,4,'b_a',61,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL),
- (351,176,8,'a_b',12,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (352,176,8,'b_a',75,'Household Member is',12,'Household Member of',1,NULL,NULL,NULL),
- (353,177,8,'a_b',61,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (354,177,8,'b_a',75,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL),
- (355,178,8,'a_b',63,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (356,178,8,'b_a',75,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL),
- (357,179,7,'a_b',154,'Head of Household for',75,'Head of Household is',1,NULL,NULL,NULL),
- (358,179,7,'b_a',75,'Head of Household is',154,'Head of Household for',1,NULL,NULL,NULL),
- (359,180,2,'a_b',12,'Spouse of',154,'Spouse of',1,NULL,NULL,NULL),
- (360,180,2,'b_a',154,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL),
- (361,181,1,'a_b',175,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (362,181,1,'b_a',47,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (363,182,1,'a_b',85,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (364,182,1,'b_a',47,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (365,183,1,'a_b',175,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (366,183,1,'b_a',181,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (367,184,1,'a_b',85,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (368,184,1,'b_a',181,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (369,185,4,'a_b',85,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL),
- (370,185,4,'b_a',175,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL),
- (371,186,8,'a_b',181,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (372,186,8,'b_a',65,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
- (373,187,8,'a_b',175,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (374,187,8,'b_a',65,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL),
- (375,188,8,'a_b',85,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (376,188,8,'b_a',65,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL),
- (377,189,7,'a_b',47,'Head of Household for',65,'Head of Household is',0,NULL,NULL,NULL),
- (378,189,7,'b_a',65,'Head of Household is',47,'Head of Household for',0,NULL,NULL,NULL),
- (379,190,2,'a_b',181,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL),
- (380,190,2,'b_a',47,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL),
- (381,191,1,'a_b',111,'Child of',36,'Parent of',1,NULL,NULL,NULL),
- (382,191,1,'b_a',36,'Parent of',111,'Child of',1,NULL,NULL,NULL),
- (383,192,1,'a_b',152,'Child of',36,'Parent of',1,NULL,NULL,NULL),
- (384,192,1,'b_a',36,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (385,193,1,'a_b',111,'Child of',118,'Parent of',1,NULL,NULL,NULL),
- (386,193,1,'b_a',118,'Parent of',111,'Child of',1,NULL,NULL,NULL),
- (387,194,1,'a_b',152,'Child of',118,'Parent of',1,NULL,NULL,NULL),
- (388,194,1,'b_a',118,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (389,195,4,'a_b',152,'Sibling of',111,'Sibling of',1,NULL,NULL,NULL),
- (390,195,4,'b_a',111,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL),
- (391,196,8,'a_b',118,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (392,196,8,'b_a',159,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL),
- (393,197,8,'a_b',111,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (394,197,8,'b_a',159,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL),
- (395,198,8,'a_b',152,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (396,198,8,'b_a',159,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL),
- (397,199,7,'a_b',36,'Head of Household for',159,'Head of Household is',0,NULL,NULL,NULL),
- (398,199,7,'b_a',159,'Head of Household is',36,'Head of Household for',0,NULL,NULL,NULL),
- (399,200,2,'a_b',118,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL),
- (400,200,2,'b_a',36,'Spouse of',118,'Spouse of',0,NULL,NULL,NULL),
- (401,201,5,'a_b',15,'Employee of',7,'Employer of',1,NULL,NULL,NULL),
- (402,201,5,'b_a',7,'Employer of',15,'Employee of',1,NULL,NULL,NULL),
- (403,202,5,'a_b',129,'Employee of',19,'Employer of',1,NULL,NULL,NULL),
- (404,202,5,'b_a',19,'Employer of',129,'Employee of',1,NULL,NULL,NULL),
- (405,203,5,'a_b',33,'Employee of',22,'Employer of',1,NULL,NULL,NULL),
- (406,203,5,'b_a',22,'Employer of',33,'Employee of',1,NULL,NULL,NULL),
- (407,204,5,'a_b',74,'Employee of',50,'Employer of',1,NULL,NULL,NULL),
- (408,204,5,'b_a',50,'Employer of',74,'Employee of',1,NULL,NULL,NULL),
- (409,205,5,'a_b',109,'Employee of',52,'Employer of',1,NULL,NULL,NULL),
- (410,205,5,'b_a',52,'Employer of',109,'Employee of',1,NULL,NULL,NULL),
- (411,206,5,'a_b',185,'Employee of',59,'Employer of',1,NULL,NULL,NULL),
- (412,206,5,'b_a',59,'Employer of',185,'Employee of',1,NULL,NULL,NULL),
- (413,207,5,'a_b',184,'Employee of',64,'Employer of',1,NULL,NULL,NULL),
- (414,207,5,'b_a',64,'Employer of',184,'Employee of',1,NULL,NULL,NULL),
- (415,208,5,'a_b',76,'Employee of',67,'Employer of',1,NULL,NULL,NULL),
- (416,208,5,'b_a',67,'Employer of',76,'Employee of',1,NULL,NULL,NULL),
- (417,209,5,'a_b',85,'Employee of',68,'Employer of',1,NULL,NULL,NULL),
- (418,209,5,'b_a',68,'Employer of',85,'Employee of',1,NULL,NULL,NULL),
- (419,210,5,'a_b',4,'Employee of',69,'Employer of',1,NULL,NULL,NULL),
- (420,210,5,'b_a',69,'Employer of',4,'Employee of',1,NULL,NULL,NULL),
- (421,211,5,'a_b',81,'Employee of',77,'Employer of',1,NULL,NULL,NULL),
- (422,211,5,'b_a',77,'Employer of',81,'Employee of',1,NULL,NULL,NULL),
- (423,212,5,'a_b',187,'Employee of',103,'Employer of',1,NULL,NULL,NULL),
- (424,212,5,'b_a',103,'Employer of',187,'Employee of',1,NULL,NULL,NULL),
- (425,213,5,'a_b',18,'Employee of',122,'Employer of',1,NULL,NULL,NULL),
- (426,213,5,'b_a',122,'Employer of',18,'Employee of',1,NULL,NULL,NULL),
- (427,214,5,'a_b',72,'Employee of',133,'Employer of',1,NULL,NULL,NULL),
- (428,214,5,'b_a',133,'Employer of',72,'Employee of',1,NULL,NULL,NULL),
- (429,215,5,'a_b',115,'Employee of',135,'Employer of',1,NULL,NULL,NULL),
- (430,215,5,'b_a',135,'Employer of',115,'Employee of',1,NULL,NULL,NULL),
- (431,216,5,'a_b',197,'Employee of',139,'Employer of',1,NULL,NULL,NULL),
- (432,216,5,'b_a',139,'Employer of',197,'Employee of',1,NULL,NULL,NULL),
- (433,217,5,'a_b',178,'Employee of',146,'Employer of',1,NULL,NULL,NULL),
- (434,217,5,'b_a',146,'Employer of',178,'Employee of',1,NULL,NULL,NULL),
- (435,218,5,'a_b',96,'Employee of',148,'Employer of',1,NULL,NULL,NULL),
- (436,218,5,'b_a',148,'Employer of',96,'Employee of',1,NULL,NULL,NULL);
+ (1,1,1,'a_b',156,'Child of',170,'Parent of',1,NULL,NULL,NULL),
+ (2,1,1,'b_a',170,'Parent of',156,'Child of',1,NULL,NULL,NULL),
+ (3,2,1,'a_b',144,'Child of',170,'Parent of',1,NULL,NULL,NULL),
+ (4,2,1,'b_a',170,'Parent of',144,'Child of',1,NULL,NULL,NULL),
+ (5,3,1,'a_b',156,'Child of',13,'Parent of',1,NULL,NULL,NULL),
+ (6,3,1,'b_a',13,'Parent of',156,'Child of',1,NULL,NULL,NULL),
+ (7,4,1,'a_b',144,'Child of',13,'Parent of',1,NULL,NULL,NULL),
+ (8,4,1,'b_a',13,'Parent of',144,'Child of',1,NULL,NULL,NULL),
+ (9,5,4,'a_b',144,'Sibling of',156,'Sibling of',1,NULL,NULL,NULL),
+ (10,5,4,'b_a',156,'Sibling of',144,'Sibling of',1,NULL,NULL,NULL),
+ (11,6,8,'a_b',13,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (12,6,8,'b_a',3,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
+ (13,7,8,'a_b',156,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (14,7,8,'b_a',3,'Household Member is',156,'Household Member of',1,NULL,NULL,NULL),
+ (15,8,8,'a_b',144,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (16,8,8,'b_a',3,'Household Member is',144,'Household Member of',1,NULL,NULL,NULL),
+ (17,9,7,'a_b',170,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL),
+ (18,9,7,'b_a',3,'Head of Household is',170,'Head of Household for',1,NULL,NULL,NULL),
+ (19,10,2,'a_b',13,'Spouse of',170,'Spouse of',1,NULL,NULL,NULL),
+ (20,10,2,'b_a',170,'Spouse of',13,'Spouse of',1,NULL,NULL,NULL),
+ (21,11,1,'a_b',187,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (22,11,1,'b_a',34,'Parent of',187,'Child of',1,NULL,NULL,NULL),
+ (23,12,1,'a_b',140,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (24,12,1,'b_a',34,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (25,13,1,'a_b',187,'Child of',75,'Parent of',1,NULL,NULL,NULL),
+ (26,13,1,'b_a',75,'Parent of',187,'Child of',1,NULL,NULL,NULL),
+ (27,14,1,'a_b',140,'Child of',75,'Parent of',1,NULL,NULL,NULL),
+ (28,14,1,'b_a',75,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (29,15,4,'a_b',140,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL),
+ (30,15,4,'b_a',187,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL),
+ (31,16,8,'a_b',75,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (32,16,8,'b_a',111,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL),
+ (33,17,8,'a_b',187,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (34,17,8,'b_a',111,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL),
+ (35,18,8,'a_b',140,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (36,18,8,'b_a',111,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL),
+ (37,19,7,'a_b',34,'Head of Household for',111,'Head of Household is',1,NULL,NULL,NULL),
+ (38,19,7,'b_a',111,'Head of Household is',34,'Head of Household for',1,NULL,NULL,NULL),
+ (39,20,2,'a_b',75,'Spouse of',34,'Spouse of',1,NULL,NULL,NULL),
+ (40,20,2,'b_a',34,'Spouse of',75,'Spouse of',1,NULL,NULL,NULL),
+ (41,21,1,'a_b',139,'Child of',81,'Parent of',1,NULL,NULL,NULL),
+ (42,21,1,'b_a',81,'Parent of',139,'Child of',1,NULL,NULL,NULL),
+ (43,22,1,'a_b',98,'Child of',81,'Parent of',1,NULL,NULL,NULL),
+ (44,22,1,'b_a',81,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (45,23,1,'a_b',139,'Child of',14,'Parent of',1,NULL,NULL,NULL),
+ (46,23,1,'b_a',14,'Parent of',139,'Child of',1,NULL,NULL,NULL),
+ (47,24,1,'a_b',98,'Child of',14,'Parent of',1,NULL,NULL,NULL),
+ (48,24,1,'b_a',14,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (49,25,4,'a_b',98,'Sibling of',139,'Sibling of',1,NULL,NULL,NULL),
+ (50,25,4,'b_a',139,'Sibling of',98,'Sibling of',1,NULL,NULL,NULL),
+ (51,26,8,'a_b',14,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (52,26,8,'b_a',92,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL),
+ (53,27,8,'a_b',139,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (54,27,8,'b_a',92,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL),
+ (55,28,8,'a_b',98,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (56,28,8,'b_a',92,'Household Member is',98,'Household Member of',1,NULL,NULL,NULL),
+ (57,29,7,'a_b',81,'Head of Household for',92,'Head of Household is',1,NULL,NULL,NULL),
+ (58,29,7,'b_a',92,'Head of Household is',81,'Head of Household for',1,NULL,NULL,NULL),
+ (59,30,2,'a_b',14,'Spouse of',81,'Spouse of',1,NULL,NULL,NULL),
+ (60,30,2,'b_a',81,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL),
+ (61,31,1,'a_b',141,'Child of',168,'Parent of',1,NULL,NULL,NULL),
+ (62,31,1,'b_a',168,'Parent of',141,'Child of',1,NULL,NULL,NULL),
+ (63,32,1,'a_b',103,'Child of',168,'Parent of',1,NULL,NULL,NULL),
+ (64,32,1,'b_a',168,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (65,33,1,'a_b',141,'Child of',196,'Parent of',1,NULL,NULL,NULL),
+ (66,33,1,'b_a',196,'Parent of',141,'Child of',1,NULL,NULL,NULL),
+ (67,34,1,'a_b',103,'Child of',196,'Parent of',1,NULL,NULL,NULL),
+ (68,34,1,'b_a',196,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (69,35,4,'a_b',103,'Sibling of',141,'Sibling of',1,NULL,NULL,NULL),
+ (70,35,4,'b_a',141,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL),
+ (71,36,8,'a_b',196,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (72,36,8,'b_a',61,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL),
+ (73,37,8,'a_b',141,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (74,37,8,'b_a',61,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL),
+ (75,38,8,'a_b',103,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (76,38,8,'b_a',61,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
+ (77,39,7,'a_b',168,'Head of Household for',61,'Head of Household is',0,NULL,NULL,NULL),
+ (78,39,7,'b_a',61,'Head of Household is',168,'Head of Household for',0,NULL,NULL,NULL),
+ (79,40,2,'a_b',196,'Spouse of',168,'Spouse of',0,NULL,NULL,NULL),
+ (80,40,2,'b_a',168,'Spouse of',196,'Spouse of',0,NULL,NULL,NULL),
+ (81,41,1,'a_b',185,'Child of',6,'Parent of',1,NULL,NULL,NULL),
+ (82,41,1,'b_a',6,'Parent of',185,'Child of',1,NULL,NULL,NULL),
+ (83,42,1,'a_b',127,'Child of',6,'Parent of',1,NULL,NULL,NULL),
+ (84,42,1,'b_a',6,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (85,43,1,'a_b',185,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (86,43,1,'b_a',58,'Parent of',185,'Child of',1,NULL,NULL,NULL),
+ (87,44,1,'a_b',127,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (88,44,1,'b_a',58,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (89,45,4,'a_b',127,'Sibling of',185,'Sibling of',1,NULL,NULL,NULL),
+ (90,45,4,'b_a',185,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL),
+ (91,46,8,'a_b',58,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (92,46,8,'b_a',106,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL),
+ (93,47,8,'a_b',185,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (94,47,8,'b_a',106,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL),
+ (95,48,8,'a_b',127,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (96,48,8,'b_a',106,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL),
+ (97,49,7,'a_b',6,'Head of Household for',106,'Head of Household is',1,NULL,NULL,NULL),
+ (98,49,7,'b_a',106,'Head of Household is',6,'Head of Household for',1,NULL,NULL,NULL),
+ (99,50,2,'a_b',58,'Spouse of',6,'Spouse of',1,NULL,NULL,NULL),
+ (100,50,2,'b_a',6,'Spouse of',58,'Spouse of',1,NULL,NULL,NULL),
+ (101,51,1,'a_b',171,'Child of',132,'Parent of',1,NULL,NULL,NULL),
+ (102,51,1,'b_a',132,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (103,52,1,'a_b',49,'Child of',132,'Parent of',1,NULL,NULL,NULL),
+ (104,52,1,'b_a',132,'Parent of',49,'Child of',1,NULL,NULL,NULL),
+ (105,53,1,'a_b',171,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (106,53,1,'b_a',145,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (107,54,1,'a_b',49,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (108,54,1,'b_a',145,'Parent of',49,'Child of',1,NULL,NULL,NULL),
+ (109,55,4,'a_b',49,'Sibling of',171,'Sibling of',1,NULL,NULL,NULL),
+ (110,55,4,'b_a',171,'Sibling of',49,'Sibling of',1,NULL,NULL,NULL),
+ (111,56,8,'a_b',145,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (112,56,8,'b_a',56,'Household Member is',145,'Household Member of',1,NULL,NULL,NULL),
+ (113,57,8,'a_b',171,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (114,57,8,'b_a',56,'Household Member is',171,'Household Member of',1,NULL,NULL,NULL),
+ (115,58,8,'a_b',49,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (116,58,8,'b_a',56,'Household Member is',49,'Household Member of',1,NULL,NULL,NULL),
+ (117,59,7,'a_b',132,'Head of Household for',56,'Head of Household is',0,NULL,NULL,NULL),
+ (118,59,7,'b_a',56,'Head of Household is',132,'Head of Household for',0,NULL,NULL,NULL),
+ (119,60,2,'a_b',145,'Spouse of',132,'Spouse of',0,NULL,NULL,NULL),
+ (120,60,2,'b_a',132,'Spouse of',145,'Spouse of',0,NULL,NULL,NULL),
+ (121,61,1,'a_b',69,'Child of',157,'Parent of',1,NULL,NULL,NULL),
+ (122,61,1,'b_a',157,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (123,62,1,'a_b',166,'Child of',157,'Parent of',1,NULL,NULL,NULL),
+ (124,62,1,'b_a',157,'Parent of',166,'Child of',1,NULL,NULL,NULL),
+ (125,63,1,'a_b',69,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (126,63,1,'b_a',183,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (127,64,1,'a_b',166,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (128,64,1,'b_a',183,'Parent of',166,'Child of',1,NULL,NULL,NULL),
+ (129,65,4,'a_b',166,'Sibling of',69,'Sibling of',1,NULL,NULL,NULL),
+ (130,65,4,'b_a',69,'Sibling of',166,'Sibling of',1,NULL,NULL,NULL),
+ (131,66,8,'a_b',183,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (132,66,8,'b_a',193,'Household Member is',183,'Household Member of',1,NULL,NULL,NULL),
+ (133,67,8,'a_b',69,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (134,67,8,'b_a',193,'Household Member is',69,'Household Member of',1,NULL,NULL,NULL),
+ (135,68,8,'a_b',166,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (136,68,8,'b_a',193,'Household Member is',166,'Household Member of',1,NULL,NULL,NULL),
+ (137,69,7,'a_b',157,'Head of Household for',193,'Head of Household is',0,NULL,NULL,NULL),
+ (138,69,7,'b_a',193,'Head of Household is',157,'Head of Household for',0,NULL,NULL,NULL),
+ (139,70,2,'a_b',183,'Spouse of',157,'Spouse of',0,NULL,NULL,NULL),
+ (140,70,2,'b_a',157,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL),
+ (141,71,1,'a_b',33,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (142,71,1,'b_a',195,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (143,72,1,'a_b',55,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (144,72,1,'b_a',195,'Parent of',55,'Child of',1,NULL,NULL,NULL),
+ (145,73,1,'a_b',33,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (146,73,1,'b_a',22,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (147,74,1,'a_b',55,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (148,74,1,'b_a',22,'Parent of',55,'Child of',1,NULL,NULL,NULL),
+ (149,75,4,'a_b',55,'Sibling of',33,'Sibling of',1,NULL,NULL,NULL),
+ (150,75,4,'b_a',33,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL),
+ (151,76,8,'a_b',22,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (152,76,8,'b_a',151,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL),
+ (153,77,8,'a_b',33,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (154,77,8,'b_a',151,'Household Member is',33,'Household Member of',1,NULL,NULL,NULL),
+ (155,78,8,'a_b',55,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (156,78,8,'b_a',151,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL),
+ (157,79,7,'a_b',195,'Head of Household for',151,'Head of Household is',0,NULL,NULL,NULL),
+ (158,79,7,'b_a',151,'Head of Household is',195,'Head of Household for',0,NULL,NULL,NULL),
+ (159,80,2,'a_b',22,'Spouse of',195,'Spouse of',0,NULL,NULL,NULL),
+ (160,80,2,'b_a',195,'Spouse of',22,'Spouse of',0,NULL,NULL,NULL),
+ (161,81,1,'a_b',54,'Child of',128,'Parent of',1,NULL,NULL,NULL),
+ (162,81,1,'b_a',128,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (163,82,1,'a_b',89,'Child of',128,'Parent of',1,NULL,NULL,NULL),
+ (164,82,1,'b_a',128,'Parent of',89,'Child of',1,NULL,NULL,NULL),
+ (165,83,1,'a_b',54,'Child of',8,'Parent of',1,NULL,NULL,NULL),
+ (166,83,1,'b_a',8,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (167,84,1,'a_b',89,'Child of',8,'Parent of',1,NULL,NULL,NULL),
+ (168,84,1,'b_a',8,'Parent of',89,'Child of',1,NULL,NULL,NULL),
+ (169,85,4,'a_b',89,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL),
+ (170,85,4,'b_a',54,'Sibling of',89,'Sibling of',1,NULL,NULL,NULL),
+ (171,86,8,'a_b',8,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (172,86,8,'b_a',97,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL),
+ (173,87,8,'a_b',54,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (174,87,8,'b_a',97,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL),
+ (175,88,8,'a_b',89,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (176,88,8,'b_a',97,'Household Member is',89,'Household Member of',1,NULL,NULL,NULL),
+ (177,89,7,'a_b',128,'Head of Household for',97,'Head of Household is',0,NULL,NULL,NULL),
+ (178,89,7,'b_a',97,'Head of Household is',128,'Head of Household for',0,NULL,NULL,NULL),
+ (179,90,2,'a_b',8,'Spouse of',128,'Spouse of',0,NULL,NULL,NULL),
+ (180,90,2,'b_a',128,'Spouse of',8,'Spouse of',0,NULL,NULL,NULL),
+ (181,91,1,'a_b',83,'Child of',62,'Parent of',1,NULL,NULL,NULL),
+ (182,91,1,'b_a',62,'Parent of',83,'Child of',1,NULL,NULL,NULL),
+ (183,92,1,'a_b',130,'Child of',62,'Parent of',1,NULL,NULL,NULL),
+ (184,92,1,'b_a',62,'Parent of',130,'Child of',1,NULL,NULL,NULL),
+ (185,93,1,'a_b',83,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (186,93,1,'b_a',7,'Parent of',83,'Child of',1,NULL,NULL,NULL),
+ (187,94,1,'a_b',130,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (188,94,1,'b_a',7,'Parent of',130,'Child of',1,NULL,NULL,NULL),
+ (189,95,4,'a_b',130,'Sibling of',83,'Sibling of',1,NULL,NULL,NULL),
+ (190,95,4,'b_a',83,'Sibling of',130,'Sibling of',1,NULL,NULL,NULL),
+ (191,96,8,'a_b',7,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (192,96,8,'b_a',53,'Household Member is',7,'Household Member of',1,NULL,NULL,NULL),
+ (193,97,8,'a_b',83,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (194,97,8,'b_a',53,'Household Member is',83,'Household Member of',1,NULL,NULL,NULL),
+ (195,98,8,'a_b',130,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (196,98,8,'b_a',53,'Household Member is',130,'Household Member of',1,NULL,NULL,NULL),
+ (197,99,7,'a_b',62,'Head of Household for',53,'Head of Household is',1,NULL,NULL,NULL),
+ (198,99,7,'b_a',53,'Head of Household is',62,'Head of Household for',1,NULL,NULL,NULL),
+ (199,100,2,'a_b',7,'Spouse of',62,'Spouse of',1,NULL,NULL,NULL),
+ (200,100,2,'b_a',62,'Spouse of',7,'Spouse of',1,NULL,NULL,NULL),
+ (201,101,1,'a_b',150,'Child of',143,'Parent of',1,NULL,NULL,NULL),
+ (202,101,1,'b_a',143,'Parent of',150,'Child of',1,NULL,NULL,NULL),
+ (203,102,1,'a_b',50,'Child of',143,'Parent of',1,NULL,NULL,NULL),
+ (204,102,1,'b_a',143,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (205,103,1,'a_b',150,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (206,103,1,'b_a',173,'Parent of',150,'Child of',1,NULL,NULL,NULL),
+ (207,104,1,'a_b',50,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (208,104,1,'b_a',173,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (209,105,4,'a_b',50,'Sibling of',150,'Sibling of',1,NULL,NULL,NULL),
+ (210,105,4,'b_a',150,'Sibling of',50,'Sibling of',1,NULL,NULL,NULL),
+ (211,106,8,'a_b',173,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (212,106,8,'b_a',138,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL),
+ (213,107,8,'a_b',150,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (214,107,8,'b_a',138,'Household Member is',150,'Household Member of',1,NULL,NULL,NULL),
+ (215,108,8,'a_b',50,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (216,108,8,'b_a',138,'Household Member is',50,'Household Member of',1,NULL,NULL,NULL),
+ (217,109,7,'a_b',143,'Head of Household for',138,'Head of Household is',0,NULL,NULL,NULL),
+ (218,109,7,'b_a',138,'Head of Household is',143,'Head of Household for',0,NULL,NULL,NULL),
+ (219,110,2,'a_b',173,'Spouse of',143,'Spouse of',0,NULL,NULL,NULL),
+ (220,110,2,'b_a',143,'Spouse of',173,'Spouse of',0,NULL,NULL,NULL),
+ (221,111,1,'a_b',84,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (222,111,1,'b_a',180,'Parent of',84,'Child of',1,NULL,NULL,NULL),
+ (223,112,1,'a_b',119,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (224,112,1,'b_a',180,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (225,113,1,'a_b',84,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (226,113,1,'b_a',177,'Parent of',84,'Child of',1,NULL,NULL,NULL),
+ (227,114,1,'a_b',119,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (228,114,1,'b_a',177,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (229,115,4,'a_b',119,'Sibling of',84,'Sibling of',1,NULL,NULL,NULL),
+ (230,115,4,'b_a',84,'Sibling of',119,'Sibling of',1,NULL,NULL,NULL),
+ (231,116,8,'a_b',177,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (232,116,8,'b_a',199,'Household Member is',177,'Household Member of',1,NULL,NULL,NULL),
+ (233,117,8,'a_b',84,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (234,117,8,'b_a',199,'Household Member is',84,'Household Member of',1,NULL,NULL,NULL),
+ (235,118,8,'a_b',119,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (236,118,8,'b_a',199,'Household Member is',119,'Household Member of',1,NULL,NULL,NULL),
+ (237,119,7,'a_b',180,'Head of Household for',199,'Head of Household is',0,NULL,NULL,NULL),
+ (238,119,7,'b_a',199,'Head of Household is',180,'Head of Household for',0,NULL,NULL,NULL),
+ (239,120,2,'a_b',177,'Spouse of',180,'Spouse of',0,NULL,NULL,NULL),
+ (240,120,2,'b_a',180,'Spouse of',177,'Spouse of',0,NULL,NULL,NULL),
+ (241,121,1,'a_b',59,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (242,121,1,'b_a',133,'Parent of',59,'Child of',1,NULL,NULL,NULL),
+ (243,122,1,'a_b',27,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (244,122,1,'b_a',133,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (245,123,1,'a_b',59,'Child of',194,'Parent of',1,NULL,NULL,NULL),
+ (246,123,1,'b_a',194,'Parent of',59,'Child of',1,NULL,NULL,NULL),
+ (247,124,1,'a_b',27,'Child of',194,'Parent of',1,NULL,NULL,NULL),
+ (248,124,1,'b_a',194,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (249,125,4,'a_b',27,'Sibling of',59,'Sibling of',1,NULL,NULL,NULL),
+ (250,125,4,'b_a',59,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL),
+ (251,126,8,'a_b',194,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (252,126,8,'b_a',172,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL),
+ (253,127,8,'a_b',59,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (254,127,8,'b_a',172,'Household Member is',59,'Household Member of',1,NULL,NULL,NULL),
+ (255,128,8,'a_b',27,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (256,128,8,'b_a',172,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL),
+ (257,129,7,'a_b',133,'Head of Household for',172,'Head of Household is',1,NULL,NULL,NULL),
+ (258,129,7,'b_a',172,'Head of Household is',133,'Head of Household for',1,NULL,NULL,NULL),
+ (259,130,2,'a_b',194,'Spouse of',133,'Spouse of',1,NULL,NULL,NULL),
+ (260,130,2,'b_a',133,'Spouse of',194,'Spouse of',1,NULL,NULL,NULL),
+ (261,131,1,'a_b',52,'Child of',91,'Parent of',1,NULL,NULL,NULL),
+ (262,131,1,'b_a',91,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (263,132,1,'a_b',31,'Child of',91,'Parent of',1,NULL,NULL,NULL),
+ (264,132,1,'b_a',91,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (265,133,1,'a_b',52,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (266,133,1,'b_a',32,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (267,134,1,'a_b',31,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (268,134,1,'b_a',32,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (269,135,4,'a_b',31,'Sibling of',52,'Sibling of',1,NULL,NULL,NULL),
+ (270,135,4,'b_a',52,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL),
+ (271,136,8,'a_b',32,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (272,136,8,'b_a',186,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
+ (273,137,8,'a_b',52,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (274,137,8,'b_a',186,'Household Member is',52,'Household Member of',1,NULL,NULL,NULL),
+ (275,138,8,'a_b',31,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (276,138,8,'b_a',186,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL),
+ (277,139,7,'a_b',91,'Head of Household for',186,'Head of Household is',1,NULL,NULL,NULL),
+ (278,139,7,'b_a',186,'Head of Household is',91,'Head of Household for',1,NULL,NULL,NULL),
+ (279,140,2,'a_b',32,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL),
+ (280,140,2,'b_a',91,'Spouse of',32,'Spouse of',1,NULL,NULL,NULL),
+ (281,141,1,'a_b',11,'Child of',80,'Parent of',1,NULL,NULL,NULL),
+ (282,141,1,'b_a',80,'Parent of',11,'Child of',1,NULL,NULL,NULL),
+ (283,142,1,'a_b',24,'Child of',80,'Parent of',1,NULL,NULL,NULL),
+ (284,142,1,'b_a',80,'Parent of',24,'Child of',1,NULL,NULL,NULL),
+ (285,143,1,'a_b',11,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (286,143,1,'b_a',155,'Parent of',11,'Child of',1,NULL,NULL,NULL),
+ (287,144,1,'a_b',24,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (288,144,1,'b_a',155,'Parent of',24,'Child of',1,NULL,NULL,NULL),
+ (289,145,4,'a_b',24,'Sibling of',11,'Sibling of',1,NULL,NULL,NULL),
+ (290,145,4,'b_a',11,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL),
+ (291,146,8,'a_b',155,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (292,146,8,'b_a',167,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL),
+ (293,147,8,'a_b',11,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (294,147,8,'b_a',167,'Household Member is',11,'Household Member of',1,NULL,NULL,NULL),
+ (295,148,8,'a_b',24,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (296,148,8,'b_a',167,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL),
+ (297,149,7,'a_b',80,'Head of Household for',167,'Head of Household is',1,NULL,NULL,NULL),
+ (298,149,7,'b_a',167,'Head of Household is',80,'Head of Household for',1,NULL,NULL,NULL),
+ (299,150,2,'a_b',155,'Spouse of',80,'Spouse of',1,NULL,NULL,NULL),
+ (300,150,2,'b_a',80,'Spouse of',155,'Spouse of',1,NULL,NULL,NULL),
+ (301,151,1,'a_b',109,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (302,151,1,'b_a',93,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (303,152,1,'a_b',163,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (304,152,1,'b_a',93,'Parent of',163,'Child of',1,NULL,NULL,NULL),
+ (305,153,1,'a_b',109,'Child of',73,'Parent of',1,NULL,NULL,NULL),
+ (306,153,1,'b_a',73,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (307,154,1,'a_b',163,'Child of',73,'Parent of',1,NULL,NULL,NULL),
+ (308,154,1,'b_a',73,'Parent of',163,'Child of',1,NULL,NULL,NULL),
+ (309,155,4,'a_b',163,'Sibling of',109,'Sibling of',1,NULL,NULL,NULL),
+ (310,155,4,'b_a',109,'Sibling of',163,'Sibling of',1,NULL,NULL,NULL),
+ (311,156,8,'a_b',73,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (312,156,8,'b_a',2,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL),
+ (313,157,8,'a_b',109,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (314,157,8,'b_a',2,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
+ (315,158,8,'a_b',163,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (316,158,8,'b_a',2,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
+ (317,159,7,'a_b',93,'Head of Household for',2,'Head of Household is',1,NULL,NULL,NULL),
+ (318,159,7,'b_a',2,'Head of Household is',93,'Head of Household for',1,NULL,NULL,NULL),
+ (319,160,2,'a_b',73,'Spouse of',93,'Spouse of',1,NULL,NULL,NULL),
+ (320,160,2,'b_a',93,'Spouse of',73,'Spouse of',1,NULL,NULL,NULL),
+ (321,161,1,'a_b',4,'Child of',5,'Parent of',1,NULL,NULL,NULL),
+ (322,161,1,'b_a',5,'Parent of',4,'Child of',1,NULL,NULL,NULL),
+ (323,162,1,'a_b',169,'Child of',5,'Parent of',1,NULL,NULL,NULL),
+ (324,162,1,'b_a',5,'Parent of',169,'Child of',1,NULL,NULL,NULL),
+ (325,163,1,'a_b',4,'Child of',134,'Parent of',1,NULL,NULL,NULL),
+ (326,163,1,'b_a',134,'Parent of',4,'Child of',1,NULL,NULL,NULL),
+ (327,164,1,'a_b',169,'Child of',134,'Parent of',1,NULL,NULL,NULL),
+ (328,164,1,'b_a',134,'Parent of',169,'Child of',1,NULL,NULL,NULL),
+ (329,165,4,'a_b',169,'Sibling of',4,'Sibling of',1,NULL,NULL,NULL),
+ (330,165,4,'b_a',4,'Sibling of',169,'Sibling of',1,NULL,NULL,NULL),
+ (331,166,8,'a_b',134,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (332,166,8,'b_a',68,'Household Member is',134,'Household Member of',1,NULL,NULL,NULL),
+ (333,167,8,'a_b',4,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (334,167,8,'b_a',68,'Household Member is',4,'Household Member of',1,NULL,NULL,NULL),
+ (335,168,8,'a_b',169,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (336,168,8,'b_a',68,'Household Member is',169,'Household Member of',1,NULL,NULL,NULL),
+ (337,169,7,'a_b',5,'Head of Household for',68,'Head of Household is',0,NULL,NULL,NULL),
+ (338,169,7,'b_a',68,'Head of Household is',5,'Head of Household for',0,NULL,NULL,NULL),
+ (339,170,2,'a_b',134,'Spouse of',5,'Spouse of',0,NULL,NULL,NULL),
+ (340,170,2,'b_a',5,'Spouse of',134,'Spouse of',0,NULL,NULL,NULL),
+ (341,171,1,'a_b',20,'Child of',42,'Parent of',1,NULL,NULL,NULL),
+ (342,171,1,'b_a',42,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (343,172,1,'a_b',104,'Child of',42,'Parent of',1,NULL,NULL,NULL),
+ (344,172,1,'b_a',42,'Parent of',104,'Child of',1,NULL,NULL,NULL),
+ (345,173,1,'a_b',20,'Child of',90,'Parent of',1,NULL,NULL,NULL),
+ (346,173,1,'b_a',90,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (347,174,1,'a_b',104,'Child of',90,'Parent of',1,NULL,NULL,NULL),
+ (348,174,1,'b_a',90,'Parent of',104,'Child of',1,NULL,NULL,NULL),
+ (349,175,4,'a_b',104,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
+ (350,175,4,'b_a',20,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL),
+ (351,176,8,'a_b',90,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (352,176,8,'b_a',25,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL),
+ (353,177,8,'a_b',20,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (354,177,8,'b_a',25,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
+ (355,178,8,'a_b',104,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (356,178,8,'b_a',25,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
+ (357,179,7,'a_b',42,'Head of Household for',25,'Head of Household is',0,NULL,NULL,NULL),
+ (358,179,7,'b_a',25,'Head of Household is',42,'Head of Household for',0,NULL,NULL,NULL),
+ (359,180,2,'a_b',90,'Spouse of',42,'Spouse of',0,NULL,NULL,NULL),
+ (360,180,2,'b_a',42,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL),
+ (361,181,1,'a_b',152,'Child of',28,'Parent of',1,NULL,NULL,NULL),
+ (362,181,1,'b_a',28,'Parent of',152,'Child of',1,NULL,NULL,NULL),
+ (363,182,1,'a_b',129,'Child of',28,'Parent of',1,NULL,NULL,NULL),
+ (364,182,1,'b_a',28,'Parent of',129,'Child of',1,NULL,NULL,NULL),
+ (365,183,1,'a_b',152,'Child of',184,'Parent of',1,NULL,NULL,NULL),
+ (366,183,1,'b_a',184,'Parent of',152,'Child of',1,NULL,NULL,NULL),
+ (367,184,1,'a_b',129,'Child of',184,'Parent of',1,NULL,NULL,NULL),
+ (368,184,1,'b_a',184,'Parent of',129,'Child of',1,NULL,NULL,NULL),
+ (369,185,4,'a_b',129,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL),
+ (370,185,4,'b_a',152,'Sibling of',129,'Sibling of',1,NULL,NULL,NULL),
+ (371,186,8,'a_b',184,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (372,186,8,'b_a',39,'Household Member is',184,'Household Member of',1,NULL,NULL,NULL),
+ (373,187,8,'a_b',152,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (374,187,8,'b_a',39,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL),
+ (375,188,8,'a_b',129,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (376,188,8,'b_a',39,'Household Member is',129,'Household Member of',1,NULL,NULL,NULL),
+ (377,189,7,'a_b',28,'Head of Household for',39,'Head of Household is',0,NULL,NULL,NULL),
+ (378,189,7,'b_a',39,'Head of Household is',28,'Head of Household for',0,NULL,NULL,NULL),
+ (379,190,2,'a_b',184,'Spouse of',28,'Spouse of',0,NULL,NULL,NULL),
+ (380,190,2,'b_a',28,'Spouse of',184,'Spouse of',0,NULL,NULL,NULL),
+ (381,191,1,'a_b',181,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (382,191,1,'b_a',165,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (383,192,1,'a_b',87,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (384,192,1,'b_a',165,'Parent of',87,'Child of',1,NULL,NULL,NULL),
+ (385,193,1,'a_b',181,'Child of',174,'Parent of',1,NULL,NULL,NULL),
+ (386,193,1,'b_a',174,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (387,194,1,'a_b',87,'Child of',174,'Parent of',1,NULL,NULL,NULL),
+ (388,194,1,'b_a',174,'Parent of',87,'Child of',1,NULL,NULL,NULL),
+ (389,195,4,'a_b',87,'Sibling of',181,'Sibling of',1,NULL,NULL,NULL),
+ (390,195,4,'b_a',181,'Sibling of',87,'Sibling of',1,NULL,NULL,NULL),
+ (391,196,8,'a_b',174,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (392,196,8,'b_a',125,'Household Member is',174,'Household Member of',1,NULL,NULL,NULL),
+ (393,197,8,'a_b',181,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (394,197,8,'b_a',125,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
+ (395,198,8,'a_b',87,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (396,198,8,'b_a',125,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL),
+ (397,199,7,'a_b',165,'Head of Household for',125,'Head of Household is',1,NULL,NULL,NULL),
+ (398,199,7,'b_a',125,'Head of Household is',165,'Head of Household for',1,NULL,NULL,NULL),
+ (399,200,2,'a_b',174,'Spouse of',165,'Spouse of',1,NULL,NULL,NULL),
+ (400,200,2,'b_a',165,'Spouse of',174,'Spouse of',1,NULL,NULL,NULL),
+ (401,201,5,'a_b',146,'Employee of',9,'Employer of',1,NULL,NULL,NULL),
+ (402,201,5,'b_a',9,'Employer of',146,'Employee of',1,NULL,NULL,NULL),
+ (403,202,5,'a_b',32,'Employee of',15,'Employer of',1,NULL,NULL,NULL),
+ (404,202,5,'b_a',15,'Employer of',32,'Employee of',1,NULL,NULL,NULL),
+ (405,203,5,'a_b',77,'Employee of',17,'Employer of',1,NULL,NULL,NULL),
+ (406,203,5,'b_a',17,'Employer of',77,'Employee of',1,NULL,NULL,NULL),
+ (407,204,5,'a_b',66,'Employee of',18,'Employer of',1,NULL,NULL,NULL),
+ (408,204,5,'b_a',18,'Employer of',66,'Employee of',1,NULL,NULL,NULL),
+ (409,205,5,'a_b',145,'Employee of',26,'Employer of',1,NULL,NULL,NULL),
+ (410,205,5,'b_a',26,'Employer of',145,'Employee of',1,NULL,NULL,NULL),
+ (411,206,5,'a_b',152,'Employee of',35,'Employer of',1,NULL,NULL,NULL),
+ (412,206,5,'b_a',35,'Employer of',152,'Employee of',1,NULL,NULL,NULL),
+ (413,207,5,'a_b',20,'Employee of',46,'Employer of',1,NULL,NULL,NULL),
+ (414,207,5,'b_a',46,'Employer of',20,'Employee of',1,NULL,NULL,NULL),
+ (415,208,5,'a_b',187,'Employee of',47,'Employer of',1,NULL,NULL,NULL),
+ (416,208,5,'b_a',47,'Employer of',187,'Employee of',1,NULL,NULL,NULL),
+ (417,209,5,'a_b',150,'Employee of',51,'Employer of',1,NULL,NULL,NULL),
+ (418,209,5,'b_a',51,'Employer of',150,'Employee of',1,NULL,NULL,NULL),
+ (419,210,5,'a_b',109,'Employee of',60,'Employer of',1,NULL,NULL,NULL),
+ (420,210,5,'b_a',60,'Employer of',109,'Employee of',1,NULL,NULL,NULL),
+ (421,211,5,'a_b',185,'Employee of',64,'Employer of',1,NULL,NULL,NULL),
+ (422,211,5,'b_a',64,'Employer of',185,'Employee of',1,NULL,NULL,NULL),
+ (423,212,5,'a_b',200,'Employee of',71,'Employer of',1,NULL,NULL,NULL),
+ (424,212,5,'b_a',71,'Employer of',200,'Employee of',1,NULL,NULL,NULL),
+ (425,213,5,'a_b',8,'Employee of',115,'Employer of',1,NULL,NULL,NULL),
+ (426,213,5,'b_a',115,'Employer of',8,'Employee of',1,NULL,NULL,NULL),
+ (427,214,5,'a_b',55,'Employee of',162,'Employer of',1,NULL,NULL,NULL),
+ (428,214,5,'b_a',162,'Employer of',55,'Employee of',1,NULL,NULL,NULL),
+ (429,215,5,'a_b',41,'Employee of',197,'Employer of',1,NULL,NULL,NULL),
+ (430,215,5,'b_a',197,'Employer of',41,'Employee of',1,NULL,NULL,NULL),
+ (431,216,5,'a_b',114,'Employee of',201,'Employer of',1,NULL,NULL,NULL),
+ (432,216,5,'b_a',201,'Employer of',114,'Employee of',1,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -8031,9 +8027,13 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_saved_search` WRITE;
 /*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */;
 INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES
- (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL),
- (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL),
- (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL);
+ (1,'Administer_Campaigns','Administer Campaigns',NULL,NULL,NULL,'Campaign','{\"version\":4,\"select\":[\"id\",\"title\",\"description\",\"is_active\",\"start_date\",\"end_date\",\"campaign_type_id:label\",\"status_id:label\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (2,'Administer_Petitions','Administer Petitions',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"is_active\",\"is_default\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (3,'Administer_Survey_Options','Administer Survey Options',NULL,NULL,NULL,'OptionValue','{\"version\":4,\"select\":[\"label\",\"value\",\"filter\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (4,'Administer_Surveys','Administer Surveys',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"activity_type_id:label\",\"release_frequency\",\"default_number_of_contacts\",\"max_number_of_contacts\",\"is_active\",\"is_default\",\"result_id:label\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"!=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (5,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (6,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (7,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL);
 /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -8113,4009 +8113,4015 @@ INSERT INTO `civicrm_state_province` (`id`, `name`, `abbreviation`, `country_id`
  (1048,'Wisconsin','WI',1228,1),
  (1049,'Wyoming','WY',1228,1),
  (1050,'District of Columbia','DC',1228,1),
- (1052,'American Samoa','AS',1228,1),
- (1053,'Guam','GU',1228,1),
- (1055,'Northern Mariana Islands','MP',1228,1),
- (1056,'Puerto Rico','PR',1228,1),
- (1057,'Virgin Islands','VI',1228,1),
- (1058,'United States Minor Outlying Islands','UM',1228,1),
- (1059,'Armed Forces Europe','AE',1228,1),
- (1060,'Armed Forces Americas','AA',1228,1),
- (1061,'Armed Forces Pacific','AP',1228,1),
- (1100,'Alberta','AB',1039,1),
- (1101,'British Columbia','BC',1039,1),
- (1102,'Manitoba','MB',1039,1),
- (1103,'New Brunswick','NB',1039,1),
- (1104,'Newfoundland and Labrador','NL',1039,1),
- (1105,'Northwest Territories','NT',1039,1),
- (1106,'Nova Scotia','NS',1039,1),
- (1107,'Nunavut','NU',1039,1),
- (1108,'Ontario','ON',1039,1),
- (1109,'Prince Edward Island','PE',1039,1),
- (1110,'Quebec','QC',1039,1),
- (1111,'Saskatchewan','SK',1039,1),
- (1112,'Yukon Territory','YT',1039,1),
- (1200,'Maharashtra','MH',1101,1),
- (1201,'Karnataka','KA',1101,1),
- (1202,'Andhra Pradesh','AP',1101,1),
- (1203,'Arunachal Pradesh','AR',1101,1),
- (1204,'Assam','AS',1101,1),
- (1205,'Bihar','BR',1101,1),
- (1206,'Chhattisgarh','CG',1101,1),
- (1207,'Goa','GA',1101,1),
- (1208,'Gujarat','GJ',1101,1),
- (1209,'Haryana','HR',1101,1),
- (1210,'Himachal Pradesh','HP',1101,1),
- (1211,'Jammu and Kashmir','JK',1101,1),
- (1212,'Jharkhand','JH',1101,1),
- (1213,'Kerala','KL',1101,1),
- (1214,'Madhya Pradesh','MP',1101,1),
- (1215,'Manipur','MN',1101,1),
- (1216,'Meghalaya','ML',1101,1),
- (1217,'Mizoram','MZ',1101,1),
- (1218,'Nagaland','NL',1101,1),
- (1219,'Orissa','OR',1101,1),
- (1220,'Punjab','PB',1101,1),
- (1221,'Rajasthan','RJ',1101,1),
- (1222,'Sikkim','SK',1101,1),
- (1223,'Tamil Nadu','TN',1101,1),
- (1224,'Tripura','TR',1101,1),
- (1225,'Uttarakhand','UT',1101,1),
- (1226,'Uttar Pradesh','UP',1101,1),
- (1227,'West Bengal','WB',1101,1),
- (1228,'Andaman and Nicobar Islands','AN',1101,1),
- (1231,'Delhi','DL',1101,1),
- (1232,'Lakshadweep','LD',1101,1),
- (1233,'Pondicherry','PY',1101,1),
- (1300,'mazowieckie','MZ',1172,1),
- (1301,'pomorskie','PM',1172,1),
- (1302,'dolnośląskie','DS',1172,1),
- (1303,'kujawsko-pomorskie','KP',1172,1),
- (1304,'lubelskie','LU',1172,1),
- (1305,'lubuskie','LB',1172,1),
- (1306,'łódzkie','LD',1172,1),
- (1307,'małopolskie','MA',1172,1),
- (1308,'opolskie','OP',1172,1),
- (1309,'podkarpackie','PK',1172,1),
- (1310,'podlaskie','PD',1172,1),
- (1311,'śląskie','SL',1172,1),
- (1312,'świętokrzyskie','SK',1172,1),
- (1313,'warmińsko-mazurskie','WN',1172,1),
- (1314,'wielkopolskie','WP',1172,1),
- (1315,'zachodniopomorskie','ZP',1172,1),
- (1500,'Abu Zaby','AZ',1225,1),
- (1501,'\'Ajman','AJ',1225,1),
- (1502,'Al Fujayrah','FU',1225,1),
- (1503,'Ash Shariqah','SH',1225,1),
- (1504,'Dubayy','DU',1225,1),
- (1505,'Ra\'s al Khaymah','RK',1225,1),
- (1506,'Dac Lac','33',1233,1),
- (1507,'Umm al Qaywayn','UQ',1225,1),
- (1508,'Badakhshan','BDS',1001,1),
- (1509,'Badghis','BDG',1001,1),
- (1510,'Baghlan','BGL',1001,1),
- (1511,'Balkh','BAL',1001,1),
- (1512,'Bamian','BAM',1001,1),
- (1513,'Farah','FRA',1001,1),
- (1514,'Faryab','FYB',1001,1),
- (1515,'Ghazni','GHA',1001,1),
- (1516,'Ghowr','GHO',1001,1),
- (1517,'Helmand','HEL',1001,1),
- (1518,'Herat','HER',1001,1),
- (1519,'Jowzjan','JOW',1001,1),
- (1520,'Kabul','KAB',1001,1),
- (1521,'Kandahar','KAN',1001,1),
- (1522,'Kapisa','KAP',1001,1),
- (1523,'Khowst','KHO',1001,1),
- (1524,'Konar','KNR',1001,1),
- (1525,'Kondoz','KDZ',1001,1),
- (1526,'Laghman','LAG',1001,1),
- (1527,'Lowgar','LOW',1001,1),
- (1528,'Nangrahar','NAN',1001,1),
- (1529,'Nimruz','NIM',1001,1),
- (1530,'Nurestan','NUR',1001,1),
- (1531,'Oruzgan','ORU',1001,1),
- (1532,'Paktia','PIA',1001,1),
- (1533,'Paktika','PKA',1001,1),
- (1534,'Parwan','PAR',1001,1),
- (1535,'Samangan','SAM',1001,1),
- (1536,'Sar-e Pol','SAR',1001,1),
- (1537,'Takhar','TAK',1001,1),
- (1538,'Wardak','WAR',1001,1),
- (1539,'Zabol','ZAB',1001,1),
- (1540,'Berat','BR',1002,1),
- (1541,'Bulqizë','BU',1002,1),
- (1542,'Delvinë','DL',1002,1),
- (1543,'Devoll','DV',1002,1),
- (1544,'Dibër','DI',1002,1),
- (1545,'Durrës','DR',1002,1),
- (1546,'Elbasan','EL',1002,1),
- (1547,'Fier','FR',1002,1),
- (1548,'Gramsh','GR',1002,1),
- (1549,'Gjirokastër','GJ',1002,1),
- (1550,'Has','HA',1002,1),
- (1551,'Kavajë','KA',1002,1),
- (1552,'Kolonjë','ER',1002,1),
- (1553,'Korçë','KO',1002,1),
- (1554,'Krujë','KR',1002,1),
- (1555,'Kuçovë','KC',1002,1),
- (1556,'Kukës','KU',1002,1),
- (1557,'Kurbin','KB',1002,1),
- (1558,'Lezhë','LE',1002,1),
- (1559,'Librazhd','LB',1002,1),
- (1560,'Lushnjë','LU',1002,1),
- (1561,'Malësi e Madhe','MM',1002,1),
- (1562,'Mallakastër','MK',1002,1),
- (1563,'Mat','MT',1002,1),
- (1564,'Mirditë','MR',1002,1),
- (1565,'Peqin','PQ',1002,1),
- (1566,'Përmet','PR',1002,1),
- (1567,'Pogradec','PG',1002,1),
- (1568,'Pukë','PU',1002,1),
- (1569,'Sarandë','SR',1002,1),
- (1570,'Skrapar','SK',1002,1),
- (1571,'Shkodër','SH',1002,1),
- (1572,'Tepelenë','TE',1002,1),
- (1573,'Tiranë','TR',1002,1),
- (1574,'Tropojë','TP',1002,1),
- (1575,'Vlorë','VL',1002,1),
- (1576,'Erevan','ER',1011,1),
- (1577,'Aragacotn','AG',1011,1),
- (1578,'Ararat','AR',1011,1),
- (1579,'Armavir','AV',1011,1),
- (1580,'Gegarkunik\'','GR',1011,1),
- (1581,'Kotayk\'','KT',1011,1),
- (1582,'Lory','LO',1011,1),
- (1583,'Sirak','SH',1011,1),
- (1584,'Syunik\'','SU',1011,1),
- (1585,'Tavus','TV',1011,1),
- (1586,'Vayoc Jor','VD',1011,1),
- (1587,'Bengo','BGO',1006,1),
- (1588,'Benguela','BGU',1006,1),
- (1589,'Bie','BIE',1006,1),
- (1590,'Cabinda','CAB',1006,1),
- (1591,'Cuando-Cubango','CCU',1006,1),
- (1592,'Cuanza Norte','CNO',1006,1),
- (1593,'Cuanza Sul','CUS',1006,1),
- (1594,'Cunene','CNN',1006,1),
- (1595,'Huambo','HUA',1006,1),
- (1596,'Huila','HUI',1006,1),
- (1597,'Luanda','LUA',1006,1),
- (1598,'Lunda Norte','LNO',1006,1),
- (1599,'Lunda Sul','LSU',1006,1),
- (1600,'Malange','MAL',1006,1),
- (1601,'Moxico','MOX',1006,1),
- (1602,'Namibe','NAM',1006,1),
- (1603,'Uige','UIG',1006,1),
- (1604,'Zaire','ZAI',1006,1),
- (1605,'Capital federal','C',1010,1),
- (1606,'Buenos Aires','B',1010,1),
- (1607,'Catamarca','K',1010,1),
- (1608,'Cordoba','X',1010,1),
- (1609,'Corrientes','W',1010,1),
- (1610,'Chaco','H',1010,1),
- (1611,'Chubut','U',1010,1),
- (1612,'Entre Rios','E',1010,1),
- (1613,'Formosa','P',1010,1),
- (1614,'Jujuy','Y',1010,1),
- (1615,'La Pampa','L',1010,1),
- (1616,'Mendoza','M',1010,1),
- (1617,'Misiones','N',1010,1),
- (1618,'Neuquen','Q',1010,1),
- (1619,'Rio Negro','R',1010,1),
- (1620,'Salta','A',1010,1),
- (1621,'San Juan','J',1010,1),
- (1622,'San Luis','D',1010,1),
- (1623,'Santa Cruz','Z',1010,1),
- (1624,'Santa Fe','S',1010,1),
- (1625,'Santiago del Estero','G',1010,1),
- (1626,'Tierra del Fuego','V',1010,1),
- (1627,'Tucuman','T',1010,1),
- (1628,'Burgenland','1',1014,1),
- (1629,'Kärnten','2',1014,1),
- (1630,'Niederösterreich','3',1014,1),
- (1631,'Oberösterreich','4',1014,1),
- (1632,'Salzburg','5',1014,1),
- (1633,'Steiermark','6',1014,1),
- (1634,'Tirol','7',1014,1),
- (1635,'Vorarlberg','8',1014,1),
- (1636,'Wien','9',1014,1),
- (1637,'Australian Antarctic Territory','AAT',1008,1),
- (1638,'Australian Capital Territory','ACT',1013,1),
- (1639,'Northern Territory','NT',1013,1),
- (1640,'New South Wales','NSW',1013,1),
- (1641,'Queensland','QLD',1013,1),
- (1642,'South Australia','SA',1013,1),
- (1643,'Tasmania','TAS',1013,1),
- (1644,'Victoria','VIC',1013,1),
- (1645,'Western Australia','WA',1013,1),
- (1646,'Naxcivan','NX',1015,1),
- (1647,'Ali Bayramli','AB',1015,1),
- (1648,'Baki','BA',1015,1),
- (1649,'Ganca','GA',1015,1),
- (1650,'Lankaran','LA',1015,1),
- (1651,'Mingacevir','MI',1015,1),
- (1652,'Naftalan','NA',1015,1),
- (1653,'Saki','SA',1015,1),
- (1654,'Sumqayit','SM',1015,1),
- (1655,'Susa','SS',1015,1),
- (1656,'Xankandi','XA',1015,1),
- (1657,'Yevlax','YE',1015,1),
- (1658,'Abseron','ABS',1015,1),
- (1659,'Agcabadi','AGC',1015,1),
- (1660,'Agdam','AGM',1015,1),
- (1661,'Agdas','AGS',1015,1),
- (1662,'Agstafa','AGA',1015,1),
- (1663,'Agsu','AGU',1015,1),
- (1664,'Astara','AST',1015,1),
- (1665,'Babak','BAB',1015,1),
- (1666,'Balakan','BAL',1015,1),
- (1667,'Barda','BAR',1015,1),
- (1668,'Beylagan','BEY',1015,1),
- (1669,'Bilasuvar','BIL',1015,1),
- (1670,'Cabrayll','CAB',1015,1),
- (1671,'Calilabad','CAL',1015,1),
- (1672,'Culfa','CUL',1015,1),
- (1673,'Daskasan','DAS',1015,1),
- (1674,'Davaci','DAV',1015,1),
- (1675,'Fuzuli','FUZ',1015,1),
- (1676,'Gadabay','GAD',1015,1),
- (1677,'Goranboy','GOR',1015,1),
- (1678,'Goycay','GOY',1015,1),
- (1679,'Haciqabul','HAC',1015,1),
- (1680,'Imisli','IMI',1015,1),
- (1681,'Ismayilli','ISM',1015,1),
- (1682,'Kalbacar','KAL',1015,1),
- (1683,'Kurdamir','KUR',1015,1),
- (1684,'Lacin','LAC',1015,1),
- (1685,'Lerik','LER',1015,1),
- (1686,'Masalli','MAS',1015,1),
- (1687,'Neftcala','NEF',1015,1),
- (1688,'Oguz','OGU',1015,1),
- (1689,'Ordubad','ORD',1015,1),
- (1690,'Qabala','QAB',1015,1),
- (1691,'Qax','QAX',1015,1),
- (1692,'Qazax','QAZ',1015,1),
- (1693,'Qobustan','QOB',1015,1),
- (1694,'Quba','QBA',1015,1),
- (1695,'Qubadli','QBI',1015,1),
- (1696,'Qusar','QUS',1015,1),
- (1697,'Saatli','SAT',1015,1),
- (1698,'Sabirabad','SAB',1015,1),
- (1699,'Sadarak','SAD',1015,1),
- (1700,'Sahbuz','SAH',1015,1),
- (1701,'Salyan','SAL',1015,1),
- (1702,'Samaxi','SMI',1015,1),
- (1703,'Samkir','SKR',1015,1),
- (1704,'Samux','SMX',1015,1),
- (1705,'Sarur','SAR',1015,1),
- (1706,'Siyazan','SIY',1015,1),
- (1707,'Tartar','TAR',1015,1),
- (1708,'Tovuz','TOV',1015,1),
- (1709,'Ucar','UCA',1015,1),
- (1710,'Xacmaz','XAC',1015,1),
- (1711,'Xanlar','XAN',1015,1),
- (1712,'Xizi','XIZ',1015,1),
- (1713,'Xocali','XCI',1015,1),
- (1714,'Xocavand','XVD',1015,1),
- (1715,'Yardimli','YAR',1015,1),
- (1716,'Zangilan','ZAN',1015,1),
- (1717,'Zaqatala','ZAQ',1015,1),
- (1718,'Zardab','ZAR',1015,1),
- (1719,'Federacija Bosna i Hercegovina','BIH',1026,1),
- (1720,'Republika Srpska','SRP',1026,1),
- (1721,'Bagerhat zila','05',1017,1),
- (1722,'Bandarban zila','01',1017,1),
- (1723,'Barguna zila','02',1017,1),
- (1724,'Barisal zila','06',1017,1),
- (1725,'Bhola zila','07',1017,1),
- (1726,'Bogra zila','03',1017,1),
- (1727,'Brahmanbaria zila','04',1017,1),
- (1728,'Chandpur zila','09',1017,1),
- (1729,'Chittagong zila','10',1017,1),
- (1730,'Chuadanga zila','12',1017,1),
- (1731,'Comilla zila','08',1017,1),
- (1732,'Cox\'s Bazar zila','11',1017,1),
- (1733,'Dhaka zila','13',1017,1),
- (1734,'Dinajpur zila','14',1017,1),
- (1735,'Faridpur zila','15',1017,1),
- (1736,'Feni zila','16',1017,1),
- (1737,'Gaibandha zila','19',1017,1),
- (1738,'Gazipur zila','18',1017,1),
- (1739,'Gopalganj zila','17',1017,1),
- (1740,'Habiganj zila','20',1017,1),
- (1741,'Jaipurhat zila','24',1017,1),
- (1742,'Jamalpur zila','21',1017,1),
- (1743,'Jessore zila','22',1017,1),
- (1744,'Jhalakati zila','25',1017,1),
- (1745,'Jhenaidah zila','23',1017,1),
- (1746,'Khagrachari zila','29',1017,1),
- (1747,'Khulna zila','27',1017,1),
- (1748,'Kishorganj zila','26',1017,1),
- (1749,'Kurigram zila','28',1017,1),
- (1750,'Kushtia zila','30',1017,1),
- (1751,'Lakshmipur zila','31',1017,1),
- (1752,'Lalmonirhat zila','32',1017,1),
- (1753,'Madaripur zila','36',1017,1),
- (1754,'Magura zila','37',1017,1),
- (1755,'Manikganj zila','33',1017,1),
- (1756,'Meherpur zila','39',1017,1),
- (1757,'Moulvibazar zila','38',1017,1),
- (1758,'Munshiganj zila','35',1017,1),
- (1759,'Mymensingh zila','34',1017,1),
- (1760,'Naogaon zila','48',1017,1),
- (1761,'Narail zila','43',1017,1),
- (1762,'Narayanganj zila','40',1017,1),
- (1763,'Narsingdi zila','42',1017,1),
- (1764,'Natore zila','44',1017,1),
- (1765,'Nawabganj zila','45',1017,1),
- (1766,'Netrakona zila','41',1017,1),
- (1767,'Nilphamari zila','46',1017,1),
- (1768,'Noakhali zila','47',1017,1),
- (1769,'Pabna zila','49',1017,1),
- (1770,'Panchagarh zila','52',1017,1),
- (1771,'Patuakhali zila','51',1017,1),
- (1772,'Pirojpur zila','50',1017,1),
- (1773,'Rajbari zila','53',1017,1),
- (1774,'Rajshahi zila','54',1017,1),
- (1775,'Rangamati zila','56',1017,1),
- (1776,'Rangpur zila','55',1017,1),
- (1777,'Satkhira zila','58',1017,1),
- (1778,'Shariatpur zila','62',1017,1),
- (1779,'Sherpur zila','57',1017,1),
- (1780,'Sirajganj zila','59',1017,1),
- (1781,'Sunamganj zila','61',1017,1),
- (1782,'Sylhet zila','60',1017,1),
- (1783,'Tangail zila','63',1017,1),
- (1784,'Thakurgaon zila','64',1017,1),
- (1785,'Antwerpen','VAN',1020,1),
- (1786,'Brabant Wallon','WBR',1020,1),
- (1787,'Hainaut','WHT',1020,1),
- (1788,'Liege','WLG',1020,1),
- (1789,'Limburg','VLI',1020,1),
- (1790,'Luxembourg','WLX',1020,1),
- (1791,'Namur','WNA',1020,1),
- (1792,'Oost-Vlaanderen','VOV',1020,1),
- (1793,'Vlaams-Brabant','VBR',1020,1),
- (1794,'West-Vlaanderen','VWV',1020,1),
- (1795,'Bale','BAL',1034,1),
- (1796,'Bam','BAM',1034,1),
- (1797,'Banwa','BAN',1034,1),
- (1798,'Bazega','BAZ',1034,1),
- (1799,'Bougouriba','BGR',1034,1),
- (1800,'Boulgou','BLG',1034,1),
- (1801,'Boulkiemde','BLK',1034,1),
- (1802,'Comoe','COM',1034,1),
- (1803,'Ganzourgou','GAN',1034,1),
- (1804,'Gnagna','GNA',1034,1),
- (1805,'Gourma','GOU',1034,1),
- (1806,'Houet','HOU',1034,1),
- (1807,'Ioba','IOB',1034,1),
- (1808,'Kadiogo','KAD',1034,1),
- (1809,'Kenedougou','KEN',1034,1),
- (1810,'Komondjari','KMD',1034,1),
- (1811,'Kompienga','KMP',1034,1),
- (1812,'Kossi','KOS',1034,1),
- (1813,'Koulpulogo','KOP',1034,1),
- (1814,'Kouritenga','KOT',1034,1),
- (1815,'Kourweogo','KOW',1034,1),
- (1816,'Leraba','LER',1034,1),
- (1817,'Loroum','LOR',1034,1),
- (1818,'Mouhoun','MOU',1034,1),
- (1819,'Nahouri','NAO',1034,1),
- (1820,'Namentenga','NAM',1034,1),
- (1821,'Nayala','NAY',1034,1),
- (1822,'Noumbiel','NOU',1034,1),
- (1823,'Oubritenga','OUB',1034,1),
- (1824,'Oudalan','OUD',1034,1),
- (1825,'Passore','PAS',1034,1),
- (1826,'Poni','PON',1034,1),
- (1827,'Sanguie','SNG',1034,1),
- (1828,'Sanmatenga','SMT',1034,1),
- (1829,'Seno','SEN',1034,1),
- (1830,'Siasili','SIS',1034,1),
- (1831,'Soum','SOM',1034,1),
- (1832,'Sourou','SOR',1034,1),
- (1833,'Tapoa','TAP',1034,1),
- (1834,'Tui','TUI',1034,1),
- (1835,'Yagha','YAG',1034,1),
- (1836,'Yatenga','YAT',1034,1),
- (1837,'Ziro','ZIR',1034,1),
- (1838,'Zondoma','ZON',1034,1),
- (1839,'Zoundweogo','ZOU',1034,1),
- (1840,'Blagoevgrad','01',1033,1),
- (1841,'Burgas','02',1033,1),
- (1842,'Dobrich','08',1033,1),
- (1843,'Gabrovo','07',1033,1),
- (1844,'Haskovo','26',1033,1),
- (1845,'Yambol','28',1033,1),
- (1846,'Kardzhali','09',1033,1),
- (1847,'Kyustendil','10',1033,1),
- (1848,'Lovech','11',1033,1),
- (1849,'Montana','12',1033,1),
- (1850,'Pazardzhik','13',1033,1),
- (1851,'Pernik','14',1033,1),
- (1852,'Pleven','15',1033,1),
- (1853,'Plovdiv','16',1033,1),
- (1854,'Razgrad','17',1033,1),
- (1855,'Ruse','18',1033,1),
- (1856,'Silistra','19',1033,1),
- (1857,'Sliven','20',1033,1),
- (1858,'Smolyan','21',1033,1),
- (1859,'Sofia','23',1033,1),
- (1860,'Stara Zagora','24',1033,1),
- (1861,'Shumen','27',1033,1),
- (1862,'Targovishte','25',1033,1),
- (1863,'Varna','03',1033,1),
- (1864,'Veliko Tarnovo','04',1033,1),
- (1865,'Vidin','05',1033,1),
- (1866,'Vratsa','06',1033,1),
- (1867,'Al Hadd','01',1016,1),
- (1868,'Al Manamah','03',1016,1),
- (1869,'Al Mintaqah al Gharbiyah','10',1016,1),
- (1870,'Al Mintagah al Wusta','07',1016,1),
- (1871,'Al Mintaqah ash Shamaliyah','05',1016,1),
- (1872,'Al Muharraq','02',1016,1),
- (1873,'Ar Rifa','09',1016,1),
- (1874,'Jidd Hafs','04',1016,1),
- (1875,'Madluat Jamad','12',1016,1),
- (1876,'Madluat Isa','08',1016,1),
- (1877,'Mintaqat Juzur tawar','11',1016,1),
- (1878,'Sitrah','06',1016,1),
- (1879,'Bubanza','BB',1036,1),
- (1880,'Bujumbura','BJ',1036,1),
- (1881,'Bururi','BR',1036,1),
- (1882,'Cankuzo','CA',1036,1),
- (1883,'Cibitoke','CI',1036,1),
- (1884,'Gitega','GI',1036,1),
- (1885,'Karuzi','KR',1036,1),
- (1886,'Kayanza','KY',1036,1),
- (1887,'Makamba','MA',1036,1),
- (1888,'Muramvya','MU',1036,1),
- (1889,'Mwaro','MW',1036,1),
- (1890,'Ngozi','NG',1036,1),
- (1891,'Rutana','RT',1036,1),
- (1892,'Ruyigi','RY',1036,1),
- (1893,'Alibori','AL',1022,1),
- (1894,'Atakora','AK',1022,1),
- (1895,'Atlantique','AQ',1022,1),
- (1896,'Borgou','BO',1022,1),
- (1897,'Collines','CO',1022,1),
- (1898,'Donga','DO',1022,1),
- (1899,'Kouffo','KO',1022,1),
- (1900,'Littoral','LI',1022,1),
- (1901,'Mono','MO',1022,1),
- (1902,'Oueme','OU',1022,1),
- (1903,'Plateau','PL',1022,1),
- (1904,'Zou','ZO',1022,1),
- (1905,'Belait','BE',1032,1),
- (1906,'Brunei-Muara','BM',1032,1),
- (1907,'Temburong','TE',1032,1),
- (1908,'Tutong','TU',1032,1),
- (1909,'Cochabamba','C',1025,1),
- (1910,'Chuquisaca','H',1025,1),
- (1911,'El Beni','B',1025,1),
- (1912,'La Paz','L',1025,1),
- (1913,'Oruro','O',1025,1),
- (1914,'Pando','N',1025,1),
- (1915,'Potosi','P',1025,1),
- (1916,'Tarija','T',1025,1),
- (1917,'Acre','AC',1029,1),
- (1918,'Alagoas','AL',1029,1),
- (1919,'Amazonas','AM',1029,1),
- (1920,'Amapa','AP',1029,1),
- (1921,'Bahia','BA',1029,1),
- (1922,'Ceara','CE',1029,1),
- (1923,'Distrito Federal','DF',1029,1),
- (1924,'Espirito Santo','ES',1029,1),
- (1926,'Goias','GO',1029,1),
- (1927,'Maranhao','MA',1029,1),
- (1928,'Minas Gerais','MG',1029,1),
- (1929,'Mato Grosso do Sul','MS',1029,1),
- (1930,'Mato Grosso','MT',1029,1),
- (1931,'Para','PA',1029,1),
- (1932,'Paraiba','PB',1029,1),
- (1933,'Pernambuco','PE',1029,1),
- (1934,'Piaui','PI',1029,1),
- (1935,'Parana','PR',1029,1),
- (1936,'Rio de Janeiro','RJ',1029,1),
- (1937,'Rio Grande do Norte','RN',1029,1),
- (1938,'Rondonia','RO',1029,1),
- (1939,'Roraima','RR',1029,1),
- (1940,'Rio Grande do Sul','RS',1029,1),
- (1941,'Santa Catarina','SC',1029,1),
- (1942,'Sergipe','SE',1029,1),
- (1943,'Sao Paulo','SP',1029,1),
- (1944,'Tocantins','TO',1029,1),
- (1945,'Acklins and Crooked Islands','AC',1212,1),
- (1946,'Bimini','BI',1212,1),
- (1947,'Cat Island','CI',1212,1),
- (1948,'Exuma','EX',1212,1),
- (1955,'Inagua','IN',1212,1),
- (1957,'Long Island','LI',1212,1),
- (1959,'Mayaguana','MG',1212,1),
- (1960,'New Providence','NP',1212,1),
- (1962,'Ragged Island','RI',1212,1),
- (1966,'Bumthang','33',1024,1),
- (1967,'Chhukha','12',1024,1),
- (1968,'Dagana','22',1024,1),
- (1969,'Gasa','GA',1024,1),
- (1970,'Ha','13',1024,1),
- (1971,'Lhuentse','44',1024,1),
- (1972,'Monggar','42',1024,1),
- (1973,'Paro','11',1024,1),
- (1974,'Pemagatshel','43',1024,1),
- (1975,'Punakha','23',1024,1),
- (1976,'Samdrup Jongkha','45',1024,1),
- (1977,'Samtee','14',1024,1),
- (1978,'Sarpang','31',1024,1),
- (1979,'Thimphu','15',1024,1),
- (1980,'Trashigang','41',1024,1),
- (1981,'Trashi Yangtse','TY',1024,1),
- (1982,'Trongsa','32',1024,1),
- (1983,'Tsirang','21',1024,1),
- (1984,'Wangdue Phodrang','24',1024,1),
- (1985,'Zhemgang','34',1024,1),
- (1986,'Central','CE',1027,1),
- (1987,'Ghanzi','GH',1027,1),
- (1988,'Kgalagadi','KG',1027,1),
- (1989,'Kgatleng','KL',1027,1),
- (1990,'Kweneng','KW',1027,1),
- (1991,'Ngamiland','NG',1027,1),
- (1992,'North-East','NE',1027,1),
- (1993,'North-West','NW',1027,1),
- (1994,'South-East','SE',1027,1),
- (1995,'Southern','SO',1027,1),
- (1996,'Brèsckaja voblasc\'','BR',1019,1),
- (1997,'Homel\'skaja voblasc\'','HO',1019,1),
- (1998,'Hrodzenskaja voblasc\'','HR',1019,1),
- (1999,'Mahilëuskaja voblasc\'','MA',1019,1),
- (2000,'Minskaja voblasc\'','MI',1019,1),
- (2001,'Vicebskaja voblasc\'','VI',1019,1),
- (2002,'Belize','BZ',1021,1),
- (2003,'Cayo','CY',1021,1),
- (2004,'Corozal','CZL',1021,1),
- (2005,'Orange Walk','OW',1021,1),
- (2006,'Stann Creek','SC',1021,1),
- (2007,'Toledo','TOL',1021,1),
- (2008,'Kinshasa','KN',1050,1),
- (2011,'Equateur','EQ',1050,1),
- (2014,'Kasai-Oriental','KE',1050,1),
- (2016,'Maniema','MA',1050,1),
- (2017,'Nord-Kivu','NK',1050,1),
- (2019,'Sud-Kivu','SK',1050,1),
- (2020,'Bangui','BGF',1042,1),
- (2021,'Bamingui-Bangoran','BB',1042,1),
- (2022,'Basse-Kotto','BK',1042,1),
- (2023,'Haute-Kotto','HK',1042,1),
- (2024,'Haut-Mbomou','HM',1042,1),
- (2025,'Kemo','KG',1042,1),
- (2026,'Lobaye','LB',1042,1),
- (2027,'Mambere-Kadei','HS',1042,1),
- (2028,'Mbomou','MB',1042,1),
- (2029,'Nana-Grebizi','KB',1042,1),
- (2030,'Nana-Mambere','NM',1042,1),
- (2031,'Ombella-Mpoko','MP',1042,1),
- (2032,'Ouaka','UK',1042,1),
- (2033,'Ouham','AC',1042,1),
- (2034,'Ouham-Pende','OP',1042,1),
- (2035,'Sangha-Mbaere','SE',1042,1),
- (2036,'Vakaga','VR',1042,1),
- (2037,'Brazzaville','BZV',1051,1),
- (2038,'Bouenza','11',1051,1),
- (2039,'Cuvette','8',1051,1),
- (2040,'Cuvette-Ouest','15',1051,1),
- (2041,'Kouilou','5',1051,1),
- (2042,'Lekoumou','2',1051,1),
- (2043,'Likouala','7',1051,1),
- (2044,'Niari','9',1051,1),
- (2045,'Plateaux','14',1051,1),
- (2046,'Pool','12',1051,1),
- (2047,'Sangha','13',1051,1),
- (2048,'Aargau','AG',1205,1),
- (2049,'Appenzell Innerrhoden','AI',1205,1),
- (2050,'Appenzell Ausserrhoden','AR',1205,1),
- (2051,'Bern','BE',1205,1),
- (2052,'Basel-Landschaft','BL',1205,1),
- (2053,'Basel-Stadt','BS',1205,1),
- (2054,'Fribourg','FR',1205,1),
- (2055,'Geneva','GE',1205,1),
- (2056,'Glarus','GL',1205,1),
- (2057,'Graubunden','GR',1205,1),
- (2058,'Jura','JU',1205,1),
- (2059,'Luzern','LU',1205,1),
- (2060,'Neuchatel','NE',1205,1),
- (2061,'Nidwalden','NW',1205,1),
- (2062,'Obwalden','OW',1205,1),
- (2063,'Sankt Gallen','SG',1205,1),
- (2064,'Schaffhausen','SH',1205,1),
- (2065,'Solothurn','SO',1205,1),
- (2066,'Schwyz','SZ',1205,1),
- (2067,'Thurgau','TG',1205,1),
- (2068,'Ticino','TI',1205,1),
- (2069,'Uri','UR',1205,1),
- (2070,'Vaud','VD',1205,1),
- (2071,'Valais','VS',1205,1),
- (2072,'Zug','ZG',1205,1),
- (2073,'Zurich','ZH',1205,1),
- (2074,'18 Montagnes','06',1054,1),
- (2075,'Agnebi','16',1054,1),
- (2076,'Bas-Sassandra','09',1054,1),
- (2077,'Denguele','10',1054,1),
- (2078,'Haut-Sassandra','02',1054,1),
- (2079,'Lacs','07',1054,1),
- (2080,'Lagunes','01',1054,1),
- (2081,'Marahoue','12',1054,1),
- (2082,'Moyen-Comoe','05',1054,1),
- (2083,'Nzi-Comoe','11',1054,1),
- (2084,'Savanes','03',1054,1),
- (2085,'Sud-Bandama','15',1054,1),
- (2086,'Sud-Comoe','13',1054,1),
- (2087,'Vallee du Bandama','04',1054,1),
- (2088,'Worodouqou','14',1054,1),
- (2089,'Zanzan','08',1054,1),
- (2090,'Aisen del General Carlos Ibanez del Campo','AI',1044,1),
- (2091,'Antofagasta','AN',1044,1),
- (2092,'Araucania','AR',1044,1),
- (2093,'Atacama','AT',1044,1),
- (2094,'Bio-Bio','BI',1044,1),
- (2095,'Coquimbo','CO',1044,1),
- (2096,'Libertador General Bernardo O\'Higgins','LI',1044,1),
- (2097,'Los Lagos','LL',1044,1),
- (2098,'Magallanes','MA',1044,1),
- (2099,'Maule','ML',1044,1),
- (2100,'Santiago Metropolitan','SM',1044,1),
- (2101,'Tarapaca','TA',1044,1),
- (2102,'Valparaiso','VS',1044,1),
- (2103,'Adamaoua','AD',1038,1),
- (2104,'Centre','CE',1038,1),
- (2105,'East','ES',1038,1),
- (2106,'Far North','EN',1038,1),
- (2107,'North','NO',1038,1),
- (2108,'South','SW',1038,1),
- (2109,'South-West','SW',1038,1),
- (2110,'West','OU',1038,1),
- (2111,'Beijing','11',1045,1),
- (2112,'Chongqing','50',1045,1),
- (2113,'Shanghai','31',1045,1),
- (2114,'Tianjin','12',1045,1),
- (2115,'Anhui','34',1045,1),
- (2116,'Fujian','35',1045,1),
- (2117,'Gansu','62',1045,1),
- (2118,'Guangdong','44',1045,1),
- (2119,'Guizhou','52',1045,1),
- (2120,'Hainan','46',1045,1),
- (2121,'Hebei','13',1045,1),
- (2122,'Heilongjiang','23',1045,1),
- (2123,'Henan','41',1045,1),
- (2124,'Hubei','42',1045,1),
- (2125,'Hunan','43',1045,1),
- (2126,'Jiangsu','32',1045,1),
- (2127,'Jiangxi','36',1045,1),
- (2128,'Jilin','22',1045,1),
- (2129,'Liaoning','21',1045,1),
- (2130,'Qinghai','63',1045,1),
- (2131,'Shaanxi','61',1045,1),
- (2132,'Shandong','37',1045,1),
- (2133,'Shanxi','14',1045,1),
- (2134,'Sichuan','51',1045,1),
- (2135,'Taiwan','71',1045,1),
- (2136,'Yunnan','53',1045,1),
- (2137,'Zhejiang','33',1045,1),
- (2138,'Guangxi','45',1045,1),
- (2139,'Neia Mongol (mn)','15',1045,1),
- (2140,'Xinjiang','65',1045,1),
- (2141,'Xizang','54',1045,1),
- (2142,'Hong Kong','91',1045,1),
- (2143,'Macau','92',1045,1),
- (2144,'Distrito Capital de Bogotá','DC',1048,1),
- (2145,'Amazonea','AMA',1048,1),
- (2146,'Antioquia','ANT',1048,1),
- (2147,'Arauca','ARA',1048,1),
- (2148,'Atlántico','ATL',1048,1),
- (2149,'Bolívar','BOL',1048,1),
- (2150,'Boyacá','BOY',1048,1),
- (2151,'Caldea','CAL',1048,1),
- (2152,'Caquetá','CAQ',1048,1),
- (2153,'Casanare','CAS',1048,1),
- (2154,'Cauca','CAU',1048,1),
- (2155,'Cesar','CES',1048,1),
- (2156,'Córdoba','COR',1048,1),
- (2157,'Cundinamarca','CUN',1048,1),
- (2158,'Chocó','CHO',1048,1),
- (2159,'Guainía','GUA',1048,1),
- (2160,'Guaviare','GUV',1048,1),
- (2161,'La Guajira','LAG',1048,1),
- (2162,'Magdalena','MAG',1048,1),
- (2163,'Meta','MET',1048,1),
- (2164,'Nariño','NAR',1048,1),
- (2165,'Norte de Santander','NSA',1048,1),
- (2166,'Putumayo','PUT',1048,1),
- (2167,'Quindio','QUI',1048,1),
- (2168,'Risaralda','RIS',1048,1),
- (2169,'San Andrés, Providencia y Santa Catalina','SAP',1048,1),
- (2170,'Santander','SAN',1048,1),
- (2171,'Sucre','SUC',1048,1),
- (2172,'Tolima','TOL',1048,1),
- (2173,'Valle del Cauca','VAC',1048,1),
- (2174,'Vaupés','VAU',1048,1),
- (2175,'Vichada','VID',1048,1),
- (2176,'Alajuela','A',1053,1),
- (2177,'Cartago','C',1053,1),
- (2178,'Guanacaste','G',1053,1),
- (2179,'Heredia','H',1053,1),
- (2180,'Limon','L',1053,1),
- (2181,'Puntarenas','P',1053,1),
- (2182,'San Jose','SJ',1053,1),
- (2183,'Camagey','09',1056,1),
- (2184,'Ciego de `vila','08',1056,1),
- (2185,'Cienfuegos','06',1056,1),
- (2186,'Ciudad de La Habana','03',1056,1),
- (2187,'Granma','12',1056,1),
- (2188,'Guantanamo','14',1056,1),
- (2189,'Holquin','11',1056,1),
- (2190,'La Habana','02',1056,1),
- (2191,'Las Tunas','10',1056,1),
- (2192,'Matanzas','04',1056,1),
- (2193,'Pinar del Rio','01',1056,1),
- (2194,'Sancti Spiritus','07',1056,1),
- (2195,'Santiago de Cuba','13',1056,1),
- (2196,'Villa Clara','05',1056,1),
- (2197,'Isla de la Juventud','99',1056,1),
- (2198,'Pinar del Roo','PR',1056,1),
- (2199,'Ciego de Avila','CA',1056,1),
- (2200,'Camagoey','CG',1056,1),
- (2201,'Holgun','HO',1056,1),
- (2202,'Sancti Spritus','SS',1056,1),
- (2203,'Municipio Especial Isla de la Juventud','IJ',1056,1),
- (2204,'Boa Vista','BV',1040,1),
- (2205,'Brava','BR',1040,1),
- (2206,'Calheta de Sao Miguel','CS',1040,1),
- (2207,'Fogo','FO',1040,1),
- (2208,'Maio','MA',1040,1),
- (2209,'Mosteiros','MO',1040,1),
- (2210,'Paul','PA',1040,1),
- (2211,'Porto Novo','PN',1040,1),
- (2212,'Praia','PR',1040,1),
- (2213,'Ribeira Grande','RG',1040,1),
- (2214,'Sal','SL',1040,1),
- (2215,'Sao Domingos','SD',1040,1),
- (2216,'Sao Filipe','SF',1040,1),
- (2217,'Sao Nicolau','SN',1040,1),
- (2218,'Sao Vicente','SV',1040,1),
- (2219,'Tarrafal','TA',1040,1),
- (2220,'Ammochostos Magusa','04',1057,1),
- (2221,'Keryneia','06',1057,1),
- (2222,'Larnaka','03',1057,1),
- (2223,'Lefkosia','01',1057,1),
- (2224,'Lemesos','02',1057,1),
- (2225,'Pafos','05',1057,1),
- (2226,'Jihočeský kraj','JC',1058,1),
- (2227,'Jihomoravský kraj','JM',1058,1),
- (2228,'Karlovarský kraj','KA',1058,1),
- (2229,'Královéhradecký kraj','KR',1058,1),
- (2230,'Liberecký kraj','LI',1058,1),
- (2231,'Moravskoslezský kraj','MO',1058,1),
- (2232,'Olomoucký kraj','OL',1058,1),
- (2233,'Pardubický kraj','PA',1058,1),
- (2234,'Plzeňský kraj','PL',1058,1),
- (2235,'Praha, hlavní město','PR',1058,1),
- (2236,'Středočeský kraj','ST',1058,1),
- (2237,'Ústecký kraj','US',1058,1),
- (2238,'Vysočina','VY',1058,1),
- (2239,'Zlínský kraj','ZL',1058,1),
- (2240,'Baden-Württemberg','BW',1082,1),
- (2241,'Bayern','BY',1082,1),
- (2242,'Bremen','HB',1082,1),
- (2243,'Hamburg','HH',1082,1),
- (2244,'Hessen','HE',1082,1),
- (2245,'Niedersachsen','NI',1082,1),
- (2246,'Nordrhein-Westfalen','NW',1082,1),
- (2247,'Rheinland-Pfalz','RP',1082,1),
- (2248,'Saarland','SL',1082,1),
- (2249,'Schleswig-Holstein','SH',1082,1),
- (2250,'Berlin','BE',1082,1),
- (2251,'Brandenburg','BB',1082,1),
- (2252,'Mecklenburg-Vorpommern','MV',1082,1),
- (2253,'Sachsen','SN',1082,1),
- (2254,'Sachsen-Anhalt','ST',1082,1),
- (2255,'Thüringen','TH',1082,1),
- (2256,'Ali Sabiah','AS',1060,1),
- (2257,'Dikhil','DI',1060,1),
- (2258,'Djibouti','DJ',1060,1),
- (2259,'Obock','OB',1060,1),
- (2260,'Tadjoura','TA',1060,1),
- (2261,'Frederiksberg','147',1059,1),
- (2262,'Copenhagen City','101',1059,1),
- (2263,'Copenhagen','015',1059,1),
- (2264,'Frederiksborg','020',1059,1),
- (2265,'Roskilde','025',1059,1),
- (2266,'Vestsjælland','030',1059,1),
- (2267,'Storstrøm','035',1059,1),
- (2268,'Bornholm','040',1059,1),
- (2269,'Fyn','042',1059,1),
- (2270,'South Jutland','050',1059,1),
- (2271,'Ribe','055',1059,1),
- (2272,'Vejle','060',1059,1),
- (2273,'Ringkjøbing','065',1059,1),
- (2274,'Ã…rhus','070',1059,1),
- (2275,'Viborg','076',1059,1),
- (2276,'North Jutland','080',1059,1),
- (2277,'Distrito Nacional (Santo Domingo)','01',1062,1),
- (2278,'Azua','02',1062,1),
- (2279,'Bahoruco','03',1062,1),
- (2280,'Barahona','04',1062,1),
- (2281,'Dajabón','05',1062,1),
- (2282,'Duarte','06',1062,1),
- (2283,'El Seybo [El Seibo]','08',1062,1),
- (2284,'Espaillat','09',1062,1),
- (2285,'Hato Mayor','30',1062,1),
- (2286,'Independencia','10',1062,1),
- (2287,'La Altagracia','11',1062,1),
- (2288,'La Estrelleta [Elias Pina]','07',1062,1),
- (2289,'La Romana','12',1062,1),
- (2290,'La Vega','13',1062,1),
- (2291,'Maroia Trinidad Sánchez','14',1062,1),
- (2292,'Monseñor Nouel','28',1062,1),
- (2293,'Monte Cristi','15',1062,1),
- (2294,'Monte Plata','29',1062,1),
- (2295,'Pedernales','16',1062,1),
- (2296,'Peravia','17',1062,1),
- (2297,'Puerto Plata','18',1062,1),
- (2298,'Salcedo','19',1062,1),
- (2299,'Samaná','20',1062,1),
- (2300,'San Cristóbal','21',1062,1),
- (2301,'San Pedro de Macorís','23',1062,1),
- (2302,'Sánchez Ramírez','24',1062,1),
- (2303,'Santiago','25',1062,1),
- (2304,'Santiago Rodríguez','26',1062,1),
- (2305,'Valverde','27',1062,1),
- (2306,'Adrar','01',1003,1),
- (2307,'Ain Defla','44',1003,1),
- (2308,'Ain Tmouchent','46',1003,1),
- (2309,'Alger','16',1003,1),
- (2310,'Annaba','23',1003,1),
- (2311,'Batna','05',1003,1),
- (2312,'Bechar','08',1003,1),
- (2313,'Bejaia','06',1003,1),
- (2314,'Biskra','07',1003,1),
- (2315,'Blida','09',1003,1),
- (2316,'Bordj Bou Arreridj','34',1003,1),
- (2317,'Bouira','10',1003,1),
- (2318,'Boumerdes','35',1003,1),
- (2319,'Chlef','02',1003,1),
- (2320,'Constantine','25',1003,1),
- (2321,'Djelfa','17',1003,1),
- (2322,'El Bayadh','32',1003,1),
- (2323,'El Oued','39',1003,1),
- (2324,'El Tarf','36',1003,1),
- (2325,'Ghardaia','47',1003,1),
- (2326,'Guelma','24',1003,1),
- (2327,'Illizi','33',1003,1),
- (2328,'Jijel','18',1003,1),
- (2329,'Khenchela','40',1003,1),
- (2330,'Laghouat','03',1003,1),
- (2331,'Mascara','29',1003,1),
- (2332,'Medea','26',1003,1),
- (2333,'Mila','43',1003,1),
- (2334,'Mostaganem','27',1003,1),
- (2335,'Msila','28',1003,1),
- (2336,'Naama','45',1003,1),
- (2337,'Oran','31',1003,1),
- (2338,'Ouargla','30',1003,1),
- (2339,'Oum el Bouaghi','04',1003,1),
- (2340,'Relizane','48',1003,1),
- (2341,'Saida','20',1003,1),
- (2342,'Setif','19',1003,1),
- (2343,'Sidi Bel Abbes','22',1003,1),
- (2344,'Skikda','21',1003,1),
- (2345,'Souk Ahras','41',1003,1),
- (2346,'Tamanghasset','11',1003,1),
- (2347,'Tebessa','12',1003,1),
- (2348,'Tiaret','14',1003,1),
- (2349,'Tindouf','37',1003,1),
- (2350,'Tipaza','42',1003,1),
- (2351,'Tissemsilt','38',1003,1),
- (2352,'Tizi Ouzou','15',1003,1),
- (2353,'Tlemcen','13',1003,1),
- (2354,'Azuay','A',1064,1),
- (2355,'Bolivar','B',1064,1),
- (2356,'Canar','F',1064,1),
- (2357,'Carchi','C',1064,1),
- (2358,'Cotopaxi','X',1064,1),
- (2359,'Chimborazo','H',1064,1),
- (2360,'El Oro','O',1064,1),
- (2361,'Esmeraldas','E',1064,1),
- (2362,'Galapagos','W',1064,1),
- (2363,'Guayas','G',1064,1),
- (2364,'Imbabura','I',1064,1),
- (2365,'Loja','L',1064,1),
- (2366,'Los Rios','R',1064,1),
- (2367,'Manabi','M',1064,1),
- (2368,'Morona-Santiago','S',1064,1),
- (2369,'Napo','N',1064,1),
- (2370,'Orellana','D',1064,1),
- (2371,'Pastaza','Y',1064,1),
- (2372,'Pichincha','P',1064,1),
- (2373,'Sucumbios','U',1064,1),
- (2374,'Tungurahua','T',1064,1),
- (2375,'Zamora-Chinchipe','Z',1064,1),
- (2376,'Harjumaa','37',1069,1),
- (2377,'Hiiumaa','39',1069,1),
- (2378,'Ida-Virumaa','44',1069,1),
- (2379,'Jõgevamaa','49',1069,1),
- (2380,'Järvamaa','51',1069,1),
- (2381,'Läänemaa','57',1069,1),
- (2382,'Lääne-Virumaa','59',1069,1),
- (2383,'Põlvamaa','65',1069,1),
- (2384,'Pärnumaa','67',1069,1),
- (2385,'Raplamaa','70',1069,1),
- (2386,'Saaremaa','74',1069,1),
- (2387,'Tartumaa','7B',1069,1),
- (2388,'Valgamaa','82',1069,1),
- (2389,'Viljandimaa','84',1069,1),
- (2390,'Võrumaa','86',1069,1),
- (2391,'Ad Daqahllyah','DK',1065,1),
- (2392,'Al Bahr al Ahmar','BA',1065,1),
- (2393,'Al Buhayrah','BH',1065,1),
- (2394,'Al Fayym','FYM',1065,1),
- (2395,'Al Gharbiyah','GH',1065,1),
- (2396,'Al Iskandarlyah','ALX',1065,1),
- (2397,'Al Isma illyah','IS',1065,1),
- (2398,'Al Jizah','GZ',1065,1),
- (2399,'Al Minuflyah','MNF',1065,1),
- (2400,'Al Minya','MN',1065,1),
- (2401,'Al Qahirah','C',1065,1),
- (2402,'Al Qalyublyah','KB',1065,1),
- (2403,'Al Wadi al Jadid','WAD',1065,1),
- (2404,'Ash Sharqiyah','SHR',1065,1),
- (2405,'As Suways','SUZ',1065,1),
- (2406,'Aswan','ASN',1065,1),
- (2407,'Asyut','AST',1065,1),
- (2408,'Bani Suwayf','BNS',1065,1),
- (2409,'Bur Sa\'id','PTS',1065,1),
- (2410,'Dumyat','DT',1065,1),
- (2411,'Janub Sina\'','JS',1065,1),
- (2412,'Kafr ash Shaykh','KFS',1065,1),
- (2413,'Matruh','MT',1065,1),
- (2414,'Qina','KN',1065,1),
- (2415,'Shamal Sina\'','SIN',1065,1),
- (2416,'Suhaj','SHG',1065,1),
- (2417,'Anseba','AN',1068,1),
- (2418,'Debub','DU',1068,1),
- (2419,'Debubawi Keyih Bahri [Debub-Keih-Bahri]','DK',1068,1),
- (2420,'Gash-Barka','GB',1068,1),
- (2421,'Maakel [Maekel]','MA',1068,1),
- (2422,'Semenawi Keyih Bahri [Semien-Keih-Bahri]','SK',1068,1),
- (2423,'Álava','VI',1198,1),
- (2424,'Albacete','AB',1198,1),
- (2425,'Alicante','A',1198,1),
- (2426,'Almería','AL',1198,1),
- (2427,'Asturias','O',1198,1),
- (2428,'Ávila','AV',1198,1),
- (2429,'Badajoz','BA',1198,1),
- (2430,'Baleares','PM',1198,1),
- (2431,'Barcelona','B',1198,1),
- (2432,'Burgos','BU',1198,1),
- (2433,'Cáceres','CC',1198,1),
- (2434,'Cádiz','CA',1198,1),
- (2435,'Cantabria','S',1198,1),
- (2436,'Castellón','CS',1198,1),
- (2437,'Ciudad Real','CR',1198,1),
- (2438,'Cuenca','CU',1198,1),
- (2439,'Girona [Gerona]','GE',1198,1),
- (2440,'Granada','GR',1198,1),
- (2441,'Guadalajara','GU',1198,1),
- (2442,'Guipúzcoa','SS',1198,1),
- (2443,'Huelva','H',1198,1),
- (2444,'Huesca','HU',1198,1),
- (2445,'Jaén','J',1198,1),
- (2446,'La Coruña','C',1198,1),
- (2447,'La Rioja','LO',1198,1),
- (2448,'Las Palmas','GC',1198,1),
- (2449,'León','LE',1198,1),
- (2450,'Lleida [Lérida]','L',1198,1),
- (2451,'Lugo','LU',1198,1),
- (2452,'Madrid','M',1198,1),
- (2453,'Málaga','MA',1198,1),
- (2454,'Murcia','MU',1198,1),
- (2455,'Navarra','NA',1198,1),
- (2456,'Ourense','OR',1198,1),
- (2457,'Palencia','P',1198,1),
- (2458,'Pontevedra','PO',1198,1),
- (2459,'Salamanca','SA',1198,1),
- (2460,'Santa Cruz de Tenerife','TF',1198,1),
- (2461,'Segovia','SG',1198,1),
- (2462,'Sevilla','SE',1198,1),
- (2463,'Soria','SO',1198,1),
- (2464,'Tarragona','T',1198,1),
- (2465,'Teruel','TE',1198,1),
- (2466,'Valencia','V',1198,1),
- (2467,'Valladolid','VA',1198,1),
- (2468,'Vizcaya','BI',1198,1),
- (2469,'Zamora','ZA',1198,1),
- (2470,'Zaragoza','Z',1198,1),
- (2471,'Ceuta','CE',1198,1),
- (2472,'Melilla','ML',1198,1),
- (2473,'Addis Ababa','AA',1070,1),
- (2474,'Dire Dawa','DD',1070,1),
- (2475,'Afar','AF',1070,1),
- (2476,'Amara','AM',1070,1),
- (2477,'Benshangul-Gumaz','BE',1070,1),
- (2478,'Gambela Peoples','GA',1070,1),
- (2479,'Harari People','HA',1070,1),
- (2480,'Oromia','OR',1070,1),
- (2481,'Somali','SO',1070,1),
- (2482,'Southern Nations, Nationalities and Peoples','SN',1070,1),
- (2483,'Tigrai','TI',1070,1),
- (2490,'Eastern','E',1074,1),
- (2491,'Northern','N',1074,1),
- (2492,'Western','W',1074,1),
- (2493,'Rotuma','R',1074,1),
- (2494,'Chuuk','TRK',1141,1),
- (2495,'Kosrae','KSA',1141,1),
- (2496,'Pohnpei','PNI',1141,1),
- (2497,'Yap','YAP',1141,1),
- (2498,'Ain','01',1076,1),
- (2499,'Aisne','02',1076,1),
- (2500,'Allier','03',1076,1),
- (2501,'Alpes-de-Haute-Provence','04',1076,1),
- (2502,'Alpes-Maritimes','06',1076,1),
- (2503,'Ardèche','07',1076,1),
- (2504,'Ardennes','08',1076,1),
- (2505,'Ariège','09',1076,1),
- (2506,'Aube','10',1076,1),
- (2507,'Aude','11',1076,1),
- (2508,'Aveyron','12',1076,1),
- (2509,'Bas-Rhin','67',1076,1),
- (2510,'Bouches-du-Rhône','13',1076,1),
- (2511,'Calvados','14',1076,1),
- (2512,'Cantal','15',1076,1),
- (2513,'Charente','16',1076,1),
- (2514,'Charente-Maritime','17',1076,1),
- (2515,'Cher','18',1076,1),
- (2516,'Corrèze','19',1076,1),
- (2517,'Corse-du-Sud','20A',1076,1),
- (2518,'Côte-d\'Or','21',1076,1),
- (2519,'Côtes-d\'Armor','22',1076,1),
- (2520,'Creuse','23',1076,1),
- (2521,'Deux-Sèvres','79',1076,1),
- (2522,'Dordogne','24',1076,1),
- (2523,'Doubs','25',1076,1),
- (2524,'Drôme','26',1076,1),
- (2525,'Essonne','91',1076,1),
- (2526,'Eure','27',1076,1),
- (2527,'Eure-et-Loir','28',1076,1),
- (2528,'Finistère','29',1076,1),
- (2529,'Gard','30',1076,1),
- (2530,'Gers','32',1076,1),
- (2531,'Gironde','33',1076,1),
- (2532,'Haut-Rhin','68',1076,1),
- (2533,'Haute-Corse','20B',1076,1),
- (2534,'Haute-Garonne','31',1076,1),
- (2535,'Haute-Loire','43',1076,1),
- (2536,'Haute-Saône','70',1076,1),
- (2537,'Haute-Savoie','74',1076,1),
- (2538,'Haute-Vienne','87',1076,1),
- (2539,'Hautes-Alpes','05',1076,1),
- (2540,'Hautes-Pyrénées','65',1076,1),
- (2541,'Hauts-de-Seine','92',1076,1),
- (2542,'Hérault','34',1076,1),
- (2543,'Indre','36',1076,1),
- (2544,'Ille-et-Vilaine','35',1076,1),
- (2545,'Indre-et-Loire','37',1076,1),
- (2546,'Isère','38',1076,1),
- (2547,'Landes','40',1076,1),
- (2548,'Loir-et-Cher','41',1076,1),
- (2549,'Loire','42',1076,1),
- (2550,'Loire-Atlantique','44',1076,1),
- (2551,'Loiret','45',1076,1),
- (2552,'Lot','46',1076,1),
- (2553,'Lot-et-Garonne','47',1076,1),
- (2554,'Lozère','48',1076,1),
- (2555,'Maine-et-Loire','49',1076,1),
- (2556,'Manche','50',1076,1),
- (2557,'Marne','51',1076,1),
- (2558,'Mayenne','53',1076,1),
- (2559,'Meurthe-et-Moselle','54',1076,1),
- (2560,'Meuse','55',1076,1),
- (2561,'Morbihan','56',1076,1),
- (2562,'Moselle','57',1076,1),
- (2563,'Nièvre','58',1076,1),
- (2564,'Nord','59',1076,1),
- (2565,'Oise','60',1076,1),
- (2566,'Orne','61',1076,1),
- (2567,'Paris','75',1076,1),
- (2568,'Pas-de-Calais','62',1076,1),
- (2569,'Puy-de-Dôme','63',1076,1),
- (2570,'Pyrénées-Atlantiques','64',1076,1),
- (2571,'Pyrénées-Orientales','66',1076,1),
- (2572,'Rhône','69',1076,1),
- (2573,'Saône-et-Loire','71',1076,1),
- (2574,'Sarthe','72',1076,1),
- (2575,'Savoie','73',1076,1),
- (2576,'Seine-et-Marne','77',1076,1),
- (2577,'Seine-Maritime','76',1076,1),
- (2578,'Seine-Saint-Denis','93',1076,1),
- (2579,'Somme','80',1076,1),
- (2580,'Tarn','81',1076,1),
- (2581,'Tarn-et-Garonne','82',1076,1),
- (2582,'Val d\'Oise','95',1076,1),
- (2583,'Territoire de Belfort','90',1076,1),
- (2584,'Val-de-Marne','94',1076,1),
- (2585,'Var','83',1076,1),
- (2586,'Vaucluse','84',1076,1),
- (2587,'Vendée','85',1076,1),
- (2588,'Vienne','86',1076,1),
- (2589,'Vosges','88',1076,1),
- (2590,'Yonne','89',1076,1),
- (2591,'Yvelines','78',1076,1),
- (2592,'Aberdeen City','ABE',1226,1),
- (2593,'Aberdeenshire','ABD',1226,1),
- (2594,'Angus','ANS',1226,1),
- (2595,'Co Antrim','ANT',1226,1),
- (2597,'Argyll and Bute','AGB',1226,1),
- (2598,'Co Armagh','ARM',1226,1),
- (2606,'Bedfordshire','BDF',1226,1),
- (2612,'Blaenau Gwent','BGW',1226,1),
- (2620,'Bristol, City of','BST',1226,1),
- (2622,'Buckinghamshire','BKM',1226,1),
- (2626,'Cambridgeshire','CAM',1226,1),
- (2634,'Cheshire','CHS',1226,1),
- (2635,'Clackmannanshire','CLK',1226,1),
- (2639,'Cornwall','CON',1226,1),
- (2643,'Cumbria','CMA',1226,1),
- (2647,'Derbyshire','DBY',1226,1),
- (2648,'Co Londonderry','DRY',1226,1),
- (2649,'Devon','DEV',1226,1),
- (2651,'Dorset','DOR',1226,1),
- (2652,'Co Down','DOW',1226,1),
- (2654,'Dumfries and Galloway','DGY',1226,1),
- (2655,'Dundee City','DND',1226,1),
- (2657,'County Durham','DUR',1226,1),
- (2659,'East Ayrshire','EAY',1226,1),
- (2660,'East Dunbartonshire','EDU',1226,1),
- (2661,'East Lothian','ELN',1226,1),
- (2662,'East Renfrewshire','ERW',1226,1),
- (2663,'East Riding of Yorkshire','ERY',1226,1),
- (2664,'East Sussex','ESX',1226,1),
- (2665,'Edinburgh, City of','EDH',1226,1),
- (2666,'Na h-Eileanan Siar','ELS',1226,1),
- (2668,'Essex','ESS',1226,1),
- (2669,'Falkirk','FAL',1226,1),
- (2670,'Co Fermanagh','FER',1226,1),
- (2671,'Fife','FIF',1226,1),
- (2674,'Glasgow City','GLG',1226,1),
- (2675,'Gloucestershire','GLS',1226,1),
- (2678,'Gwynedd','GWN',1226,1),
- (2682,'Hampshire','HAM',1226,1),
- (2687,'Herefordshire','HEF',1226,1),
- (2688,'Hertfordshire','HRT',1226,1),
- (2689,'Highland','HED',1226,1),
- (2692,'Inverclyde','IVC',1226,1),
- (2694,'Isle of Wight','IOW',1226,1),
- (2699,'Kent','KEN',1226,1),
- (2705,'Lancashire','LAN',1226,1),
- (2709,'Leicestershire','LEC',1226,1),
- (2712,'Lincolnshire','LIN',1226,1),
- (2723,'Midlothian','MLN',1226,1),
- (2726,'Moray','MRY',1226,1),
- (2734,'Norfolk','NFK',1226,1),
- (2735,'North Ayrshire','NAY',1226,1),
- (2738,'North Lanarkshire','NLK',1226,1),
- (2742,'North Yorkshire','NYK',1226,1),
- (2743,'Northamptonshire','NTH',1226,1),
- (2744,'Northumberland','NBL',1226,1),
- (2746,'Nottinghamshire','NTT',1226,1),
- (2747,'Oldham','OLD',1226,1),
- (2748,'Omagh','OMH',1226,1),
- (2749,'Orkney Islands','ORR',1226,1),
- (2750,'Oxfordshire','OXF',1226,1),
- (2752,'Perth and Kinross','PKN',1226,1),
- (2757,'Powys','POW',1226,1),
- (2761,'Renfrewshire','RFW',1226,1),
- (2766,'Rutland','RUT',1226,1),
- (2770,'Scottish Borders','SCB',1226,1),
- (2773,'Shetland Islands','ZET',1226,1),
- (2774,'Shropshire','SHR',1226,1),
- (2777,'Somerset','SOM',1226,1),
- (2778,'South Ayrshire','SAY',1226,1),
- (2779,'South Gloucestershire','SGC',1226,1),
- (2780,'South Lanarkshire','SLK',1226,1),
- (2785,'Staffordshire','STS',1226,1),
- (2786,'Stirling','STG',1226,1),
- (2791,'Suffolk','SFK',1226,1),
- (2793,'Surrey','SRY',1226,1),
- (2804,'Vale of Glamorgan, The','VGL',1226,1),
- (2811,'Warwickshire','WAR',1226,1),
- (2813,'West Dunbartonshire','WDU',1226,1),
- (2814,'West Lothian','WLN',1226,1),
- (2815,'West Sussex','WSX',1226,1),
- (2818,'Wiltshire','WIL',1226,1),
- (2823,'Worcestershire','WOR',1226,1),
- (2826,'Ashanti','AH',1083,1),
- (2827,'Brong-Ahafo','BA',1083,1),
- (2828,'Greater Accra','AA',1083,1),
- (2829,'Upper East','UE',1083,1),
- (2830,'Upper West','UW',1083,1),
- (2831,'Volta','TV',1083,1),
- (2832,'Banjul','B',1213,1),
- (2833,'Lower River','L',1213,1),
- (2834,'MacCarthy Island','M',1213,1),
- (2835,'North Bank','N',1213,1),
- (2836,'Upper River','U',1213,1),
- (2837,'Beyla','BE',1091,1),
- (2838,'Boffa','BF',1091,1),
- (2839,'Boke','BK',1091,1),
- (2840,'Coyah','CO',1091,1),
- (2841,'Dabola','DB',1091,1),
- (2842,'Dalaba','DL',1091,1),
- (2843,'Dinguiraye','DI',1091,1),
- (2844,'Dubreka','DU',1091,1),
- (2845,'Faranah','FA',1091,1),
- (2846,'Forecariah','FO',1091,1),
- (2847,'Fria','FR',1091,1),
- (2848,'Gaoual','GA',1091,1),
- (2849,'Guekedou','GU',1091,1),
- (2850,'Kankan','KA',1091,1),
- (2851,'Kerouane','KE',1091,1),
- (2852,'Kindia','KD',1091,1),
- (2853,'Kissidougou','KS',1091,1),
- (2854,'Koubia','KB',1091,1),
- (2855,'Koundara','KN',1091,1),
- (2856,'Kouroussa','KO',1091,1),
- (2857,'Labe','LA',1091,1),
- (2858,'Lelouma','LE',1091,1),
- (2859,'Lola','LO',1091,1),
- (2860,'Macenta','MC',1091,1),
- (2861,'Mali','ML',1091,1),
- (2862,'Mamou','MM',1091,1),
- (2863,'Mandiana','MD',1091,1),
- (2864,'Nzerekore','NZ',1091,1),
- (2865,'Pita','PI',1091,1),
- (2866,'Siguiri','SI',1091,1),
- (2867,'Telimele','TE',1091,1),
- (2868,'Tougue','TO',1091,1),
- (2869,'Yomou','YO',1091,1),
- (2870,'Region Continental','C',1067,1),
- (2871,'Region Insular','I',1067,1),
- (2872,'Annobon','AN',1067,1),
- (2873,'Bioko Norte','BN',1067,1),
- (2874,'Bioko Sur','BS',1067,1),
- (2875,'Centro Sur','CS',1067,1),
- (2876,'Kie-Ntem','KN',1067,1),
- (2877,'Litoral','LI',1067,1),
- (2878,'Wele-Nzas','WN',1067,1),
- (2879,'Achaïa','13',1085,1),
- (2880,'Aitolia-Akarnania','01',1085,1),
- (2881,'Argolis','11',1085,1),
- (2882,'Arkadia','12',1085,1),
- (2883,'Arta','31',1085,1),
- (2884,'Attiki','A1',1085,1),
- (2885,'Chalkidiki','64',1085,1),
- (2886,'Chania','94',1085,1),
- (2887,'Chios','85',1085,1),
- (2888,'Dodekanisos','81',1085,1),
- (2889,'Drama','52',1085,1),
- (2890,'Evros','71',1085,1),
- (2891,'Evrytania','05',1085,1),
- (2892,'Evvoia','04',1085,1),
- (2893,'Florina','63',1085,1),
- (2894,'Fokis','07',1085,1),
- (2895,'Fthiotis','06',1085,1),
- (2896,'Grevena','51',1085,1),
- (2897,'Ileia','14',1085,1),
- (2898,'Imathia','53',1085,1),
- (2899,'Ioannina','33',1085,1),
- (2900,'Irakleion','91',1085,1),
- (2901,'Karditsa','41',1085,1),
- (2902,'Kastoria','56',1085,1),
- (2903,'Kavalla','55',1085,1),
- (2904,'Kefallinia','23',1085,1),
- (2905,'Kerkyra','22',1085,1),
- (2906,'Kilkis','57',1085,1),
- (2907,'Korinthia','15',1085,1),
- (2908,'Kozani','58',1085,1),
- (2909,'Kyklades','82',1085,1),
- (2910,'Lakonia','16',1085,1),
- (2911,'Larisa','42',1085,1),
- (2912,'Lasithion','92',1085,1),
- (2913,'Lefkas','24',1085,1),
- (2914,'Lesvos','83',1085,1),
- (2915,'Magnisia','43',1085,1),
- (2916,'Messinia','17',1085,1),
- (2917,'Pella','59',1085,1),
- (2918,'Preveza','34',1085,1),
- (2919,'Rethymnon','93',1085,1),
- (2920,'Rodopi','73',1085,1),
- (2921,'Samos','84',1085,1),
- (2922,'Serrai','62',1085,1),
- (2923,'Thesprotia','32',1085,1),
- (2924,'Thessaloniki','54',1085,1),
- (2925,'Trikala','44',1085,1),
- (2926,'Voiotia','03',1085,1),
- (2927,'Xanthi','72',1085,1),
- (2928,'Zakynthos','21',1085,1),
- (2929,'Agio Oros','69',1085,1),
- (2930,'Alta Verapaz','AV',1090,1),
- (2931,'Baja Verapaz','BV',1090,1),
- (2932,'Chimaltenango','CM',1090,1),
- (2933,'Chiquimula','CQ',1090,1),
- (2934,'El Progreso','PR',1090,1),
- (2935,'Escuintla','ES',1090,1),
- (2936,'Guatemala','GU',1090,1),
- (2937,'Huehuetenango','HU',1090,1),
- (2938,'Izabal','IZ',1090,1),
- (2939,'Jalapa','JA',1090,1),
- (2940,'Jutiapa','JU',1090,1),
- (2941,'Peten','PE',1090,1),
- (2942,'Quetzaltenango','QZ',1090,1),
- (2943,'Quiche','QC',1090,1),
- (2944,'Retalhuleu','RE',1090,1),
- (2945,'Sacatepequez','SA',1090,1),
- (2946,'San Marcos','SM',1090,1),
- (2947,'Santa Rosa','SR',1090,1),
- (2948,'Sololá','SO',1090,1),
- (2949,'Suchitepequez','SU',1090,1),
- (2950,'Totonicapan','TO',1090,1),
- (2951,'Zacapa','ZA',1090,1),
- (2952,'Bissau','BS',1092,1),
- (2953,'Bafata','BA',1092,1),
- (2954,'Biombo','BM',1092,1),
- (2955,'Bolama','BL',1092,1),
- (2956,'Cacheu','CA',1092,1),
- (2957,'Gabu','GA',1092,1),
- (2958,'Oio','OI',1092,1),
- (2959,'Quloara','QU',1092,1),
- (2960,'Tombali S','TO',1092,1),
- (2961,'Barima-Waini','BA',1093,1),
- (2962,'Cuyuni-Mazaruni','CU',1093,1),
- (2963,'Demerara-Mahaica','DE',1093,1),
- (2964,'East Berbice-Corentyne','EB',1093,1),
- (2965,'Essequibo Islands-West Demerara','ES',1093,1),
- (2966,'Mahaica-Berbice','MA',1093,1),
- (2967,'Pomeroon-Supenaam','PM',1093,1),
- (2968,'Potaro-Siparuni','PT',1093,1),
- (2969,'Upper Demerara-Berbice','UD',1093,1),
- (2970,'Upper Takutu-Upper Essequibo','UT',1093,1),
- (2971,'Atlantida','AT',1097,1),
- (2972,'Colon','CL',1097,1),
- (2973,'Comayagua','CM',1097,1),
- (2974,'Copan','CP',1097,1),
- (2975,'Cortes','CR',1097,1),
- (2976,'Choluteca','CH',1097,1),
- (2977,'El Paraiso','EP',1097,1),
- (2978,'Francisco Morazan','FM',1097,1),
- (2979,'Gracias a Dios','GD',1097,1),
- (2980,'Intibuca','IN',1097,1),
- (2981,'Islas de la Bahia','IB',1097,1),
- (2982,'Lempira','LE',1097,1),
- (2983,'Ocotepeque','OC',1097,1),
- (2984,'Olancho','OL',1097,1),
- (2985,'Santa Barbara','SB',1097,1),
- (2986,'Valle','VA',1097,1),
- (2987,'Yoro','YO',1097,1),
- (2988,'Bjelovarsko-bilogorska zupanija','07',1055,1),
- (2989,'Brodsko-posavska zupanija','12',1055,1),
- (2990,'Dubrovacko-neretvanska zupanija','19',1055,1),
- (2991,'Istarska zupanija','18',1055,1),
- (2992,'Karlovacka zupanija','04',1055,1),
- (2993,'Koprivnickco-krizevacka zupanija','06',1055,1),
- (2994,'Krapinako-zagorska zupanija','02',1055,1),
- (2995,'Licko-senjska zupanija','09',1055,1),
- (2996,'Medimurska zupanija','20',1055,1),
- (2997,'Osjecko-baranjska zupanija','14',1055,1),
- (2998,'Pozesko-slavonska zupanija','11',1055,1),
- (2999,'Primorsko-goranska zupanija','08',1055,1),
- (3000,'Sisacko-moelavacka Iupanija','03',1055,1),
- (3001,'Splitako-dalmatinska zupanija','17',1055,1),
- (3002,'Sibenako-kninska zupanija','15',1055,1),
- (3003,'Varaidinska zupanija','05',1055,1),
- (3004,'VirovitiEko-podravska zupanija','10',1055,1),
- (3005,'VuRovarako-srijemska zupanija','16',1055,1),
- (3006,'Zadaraka','13',1055,1),
- (3007,'Zagrebacka zupanija','01',1055,1),
- (3008,'Grande-Anse','GA',1094,1),
- (3009,'Nord-Est','NE',1094,1),
- (3010,'Nord-Ouest','NO',1094,1),
- (3011,'Ouest','OU',1094,1),
- (3012,'Sud','SD',1094,1),
- (3013,'Sud-Est','SE',1094,1),
- (3014,'Budapest','BU',1099,1),
- (3015,'Bács-Kiskun','BK',1099,1),
- (3016,'Baranya','BA',1099,1),
- (3017,'Békés','BE',1099,1),
- (3018,'Borsod-Abaúj-Zemplén','BZ',1099,1),
- (3019,'Csongrád','CS',1099,1),
- (3020,'Fejér','FE',1099,1),
- (3021,'Győr-Moson-Sopron','GS',1099,1),
- (3022,'Hajdu-Bihar','HB',1099,1),
- (3023,'Heves','HE',1099,1),
- (3024,'Jász-Nagykun-Szolnok','JN',1099,1),
- (3025,'Komárom-Esztergom','KE',1099,1),
- (3026,'Nográd','NO',1099,1),
- (3027,'Pest','PE',1099,1),
- (3028,'Somogy','SO',1099,1),
- (3029,'Szabolcs-Szatmár-Bereg','SZ',1099,1),
- (3030,'Tolna','TO',1099,1),
- (3031,'Vas','VA',1099,1),
- (3032,'Veszprém','VE',1099,1),
- (3033,'Zala','ZA',1099,1),
- (3034,'Békéscsaba','BC',1099,1),
- (3035,'Debrecen','DE',1099,1),
- (3036,'Dunaújváros','DU',1099,1),
- (3037,'Eger','EG',1099,1),
- (3038,'Győr','GY',1099,1),
- (3039,'Hódmezővásárhely','HV',1099,1),
- (3040,'Kaposvár','KV',1099,1),
- (3041,'Kecskemét','KM',1099,1),
- (3042,'Miskolc','MI',1099,1),
- (3043,'Nagykanizsa','NK',1099,1),
- (3044,'Nyiregyháza','NY',1099,1),
- (3045,'Pécs','PS',1099,1),
- (3046,'Salgótarján','ST',1099,1),
- (3047,'Sopron','SN',1099,1),
- (3048,'Szeged','SD',1099,1),
- (3049,'Székesfehérvár','SF',1099,1),
- (3050,'Szekszárd','SS',1099,1),
- (3051,'Szolnok','SK',1099,1),
- (3052,'Szombathely','SH',1099,1),
- (3053,'Tatabánya','TB',1099,1),
- (3054,'Zalaegerszeg','ZE',1099,1),
- (3055,'Bali','BA',1102,1),
- (3056,'Kepulauan Bangka Belitung','BB',1102,1),
- (3057,'Banten','BT',1102,1),
- (3058,'Bengkulu','BE',1102,1),
- (3059,'Gorontalo','GO',1102,1),
- (3060,'Papua Barat','PB',1102,1),
- (3061,'Jambi','JA',1102,1),
- (3062,'Jawa Barat','JB',1102,1),
- (3063,'Jawa Tengah','JT',1102,1),
- (3064,'Jawa Timur','JI',1102,1),
- (3065,'Kalimantan Barat','KB',1102,1),
- (3066,'Kalimantan Timur','KI',1102,1),
- (3067,'Kalimantan Selatan','KS',1102,1),
- (3068,'Kepulauan Riau','KR',1102,1),
- (3069,'Lampung','LA',1102,1),
- (3070,'Maluku','MA',1102,1),
- (3071,'Maluku Utara','MU',1102,1),
- (3072,'Nusa Tenggara Barat','NB',1102,1),
- (3073,'Nusa Tenggara Timur','NT',1102,1),
- (3074,'Papua','PA',1102,1),
- (3075,'Riau','RI',1102,1),
- (3076,'Sulawesi Selatan','SN',1102,1),
- (3077,'Sulawesi Tengah','ST',1102,1),
- (3078,'Sulawesi Tenggara','SG',1102,1),
- (3079,'Sulawesi Utara','SA',1102,1),
- (3080,'Sumatra Barat','SB',1102,1),
- (3081,'Sumatra Selatan','SS',1102,1),
- (3082,'Sumatera Utara','SU',1102,1),
- (3083,'DKI Jakarta','JK',1102,1),
- (3084,'Aceh','AC',1102,1),
- (3085,'DI Yogyakarta','YO',1102,1),
- (3086,'Cork','C',1105,1),
- (3087,'Clare','CE',1105,1),
- (3088,'Cavan','CN',1105,1),
- (3089,'Carlow','CW',1105,1),
- (3090,'Dublin','D',1105,1),
- (3091,'Donegal','DL',1105,1),
- (3092,'Galway','G',1105,1),
- (3093,'Kildare','KE',1105,1),
- (3094,'Kilkenny','KK',1105,1),
- (3095,'Kerry','KY',1105,1),
- (3096,'Longford','LD',1105,1),
- (3097,'Louth','LH',1105,1),
- (3098,'Limerick','LK',1105,1),
- (3099,'Leitrim','LM',1105,1),
- (3100,'Laois','LS',1105,1),
- (3101,'Meath','MH',1105,1),
- (3102,'Monaghan','MN',1105,1),
- (3103,'Mayo','MO',1105,1),
- (3104,'Offaly','OY',1105,1),
- (3105,'Roscommon','RN',1105,1),
- (3106,'Sligo','SO',1105,1),
- (3107,'Tipperary','TA',1105,1),
- (3108,'Waterford','WD',1105,1),
- (3109,'Westmeath','WH',1105,1),
- (3110,'Wicklow','WW',1105,1),
- (3111,'Wexford','WX',1105,1),
- (3112,'HaDarom','D',1106,1),
- (3113,'HaMerkaz','M',1106,1),
- (3114,'HaZafon','Z',1106,1),
- (3115,'Haifa','HA',1106,1),
- (3116,'Tel-Aviv','TA',1106,1),
- (3117,'Jerusalem','JM',1106,1),
- (3118,'Al Anbar','AN',1104,1),
- (3119,'Al Ba,rah','BA',1104,1),
- (3120,'Al Muthanna','MU',1104,1),
- (3121,'Al Qadisiyah','QA',1104,1),
- (3122,'An Najef','NA',1104,1),
- (3123,'Arbil','AR',1104,1),
- (3124,'As Sulaymaniyah','SW',1104,1),
- (3125,'At Ta\'mim','TS',1104,1),
- (3126,'Babil','BB',1104,1),
- (3127,'Baghdad','BG',1104,1),
- (3128,'Dahuk','DA',1104,1),
- (3129,'Dhi Qar','DQ',1104,1),
- (3130,'Diyala','DI',1104,1),
- (3131,'Karbala\'','KA',1104,1),
- (3132,'Maysan','MA',1104,1),
- (3133,'Ninawa','NI',1104,1),
- (3134,'Salah ad Din','SD',1104,1),
- (3135,'Wasit','WA',1104,1),
- (3136,'Ardabil','03',1103,1),
- (3137,'Azarbayjan-e Gharbi','02',1103,1),
- (3138,'Azarbayjan-e Sharqi','01',1103,1),
- (3139,'Bushehr','06',1103,1),
- (3140,'Chahar Mahall va Bakhtiari','08',1103,1),
- (3141,'Esfahan','04',1103,1),
- (3142,'Fars','14',1103,1),
- (3143,'Gilan','19',1103,1),
- (3144,'Golestan','27',1103,1),
- (3145,'Hamadan','24',1103,1),
- (3146,'Hormozgan','23',1103,1),
- (3147,'Iiam','05',1103,1),
- (3148,'Kerman','15',1103,1),
- (3149,'Kermanshah','17',1103,1),
- (3150,'Khorasan','09',1103,1),
- (3151,'Khuzestan','10',1103,1),
- (3152,'Kohjiluyeh va Buyer Ahmad','18',1103,1),
- (3153,'Kordestan','16',1103,1),
- (3154,'Lorestan','20',1103,1),
- (3155,'Markazi','22',1103,1),
- (3156,'Mazandaran','21',1103,1),
- (3157,'Qazvin','28',1103,1),
- (3158,'Qom','26',1103,1),
- (3159,'Semnan','12',1103,1),
- (3160,'Sistan va Baluchestan','13',1103,1),
- (3161,'Tehran','07',1103,1),
- (3162,'Yazd','25',1103,1),
- (3163,'Zanjan','11',1103,1),
- (3164,'Austurland','7',1100,1),
- (3165,'Hofuoborgarsvaeoi utan Reykjavikur','1',1100,1),
- (3166,'Norourland eystra','6',1100,1),
- (3167,'Norourland vestra','5',1100,1),
- (3168,'Reykjavik','0',1100,1),
- (3169,'Suourland','8',1100,1),
- (3170,'Suournes','2',1100,1),
- (3171,'Vestfirolr','4',1100,1),
- (3172,'Vesturland','3',1100,1),
- (3173,'Agrigento','AG',1107,1),
- (3174,'Alessandria','AL',1107,1),
- (3175,'Ancona','AN',1107,1),
- (3176,'Aosta','AO',1107,1),
- (3177,'Arezzo','AR',1107,1),
- (3178,'Ascoli Piceno','AP',1107,1),
- (3179,'Asti','AT',1107,1),
- (3180,'Avellino','AV',1107,1),
- (3181,'Bari','BA',1107,1),
- (3182,'Belluno','BL',1107,1),
- (3183,'Benevento','BN',1107,1),
- (3184,'Bergamo','BG',1107,1),
- (3185,'Biella','BI',1107,1),
- (3186,'Bologna','BO',1107,1),
- (3187,'Bolzano','BZ',1107,1),
- (3188,'Brescia','BS',1107,1),
- (3189,'Brindisi','BR',1107,1),
- (3190,'Cagliari','CA',1107,1),
- (3191,'Caltanissetta','CL',1107,1),
- (3192,'Campobasso','CB',1107,1),
- (3193,'Caserta','CE',1107,1),
- (3194,'Catania','CT',1107,1),
- (3195,'Catanzaro','CZ',1107,1),
- (3196,'Chieti','CH',1107,1),
- (3197,'Como','CO',1107,1),
- (3198,'Cosenza','CS',1107,1),
- (3199,'Cremona','CR',1107,1),
- (3200,'Crotone','KR',1107,1),
- (3201,'Cuneo','CN',1107,1),
- (3202,'Enna','EN',1107,1),
- (3203,'Ferrara','FE',1107,1),
- (3204,'Firenze','FI',1107,1),
- (3205,'Foggia','FG',1107,1),
- (3206,'Forlì-Cesena','FC',1107,1),
- (3207,'Frosinone','FR',1107,1),
- (3208,'Genova','GE',1107,1),
- (3209,'Gorizia','GO',1107,1),
- (3210,'Grosseto','GR',1107,1),
- (3211,'Imperia','IM',1107,1),
- (3212,'Isernia','IS',1107,1),
- (3213,'L\'Aquila','AQ',1107,1),
- (3214,'La Spezia','SP',1107,1),
- (3215,'Latina','LT',1107,1),
- (3216,'Lecce','LE',1107,1),
- (3217,'Lecco','LC',1107,1),
- (3218,'Livorno','LI',1107,1),
- (3219,'Lodi','LO',1107,1),
- (3220,'Lucca','LU',1107,1),
- (3221,'Macerata','MC',1107,1),
- (3222,'Mantova','MN',1107,1),
- (3223,'Massa-Carrara','MS',1107,1),
- (3224,'Matera','MT',1107,1),
- (3225,'Messina','ME',1107,1),
- (3226,'Milano','MI',1107,1),
- (3227,'Modena','MO',1107,1),
- (3228,'Napoli','NA',1107,1),
- (3229,'Novara','NO',1107,1),
- (3230,'Nuoro','NU',1107,1),
- (3231,'Oristano','OR',1107,1),
- (3232,'Padova','PD',1107,1),
- (3233,'Palermo','PA',1107,1),
- (3234,'Parma','PR',1107,1),
- (3235,'Pavia','PV',1107,1),
- (3236,'Perugia','PG',1107,1),
- (3237,'Pesaro e Urbino','PU',1107,1),
- (3238,'Pescara','PE',1107,1),
- (3239,'Piacenza','PC',1107,1),
- (3240,'Pisa','PI',1107,1),
- (3241,'Pistoia','PT',1107,1),
- (3242,'Pordenone','PN',1107,1),
- (3243,'Potenza','PZ',1107,1),
- (3244,'Prato','PO',1107,1),
- (3245,'Ragusa','RG',1107,1),
- (3246,'Ravenna','RA',1107,1),
- (3247,'Reggio Calabria','RC',1107,1),
- (3248,'Reggio Emilia','RE',1107,1),
- (3249,'Rieti','RI',1107,1),
- (3250,'Rimini','RN',1107,1),
- (3251,'Roma','RM',1107,1),
- (3252,'Rovigo','RO',1107,1),
- (3253,'Salerno','SA',1107,1),
- (3254,'Sassari','SS',1107,1),
- (3255,'Savona','SV',1107,1),
- (3256,'Siena','SI',1107,1),
- (3257,'Siracusa','SR',1107,1),
- (3258,'Sondrio','SO',1107,1),
- (3259,'Taranto','TA',1107,1),
- (3260,'Teramo','TE',1107,1),
- (3261,'Terni','TR',1107,1),
- (3262,'Torino','TO',1107,1),
- (3263,'Trapani','TP',1107,1),
- (3264,'Trento','TN',1107,1),
- (3265,'Treviso','TV',1107,1),
- (3266,'Trieste','TS',1107,1),
- (3267,'Udine','UD',1107,1),
- (3268,'Varese','VA',1107,1),
- (3269,'Venezia','VE',1107,1),
- (3270,'Verbano-Cusio-Ossola','VB',1107,1),
- (3271,'Vercelli','VC',1107,1),
- (3272,'Verona','VR',1107,1),
- (3273,'Vibo Valentia','VV',1107,1),
- (3274,'Vicenza','VI',1107,1),
- (3275,'Viterbo','VT',1107,1),
- (3276,'Aichi','23',1109,1),
- (3277,'Akita','05',1109,1),
- (3278,'Aomori','02',1109,1),
- (3279,'Chiba','12',1109,1),
- (3280,'Ehime','38',1109,1),
- (3281,'Fukui','18',1109,1),
- (3282,'Fukuoka','40',1109,1),
- (3283,'Fukusima','07',1109,1),
- (3284,'Gifu','21',1109,1),
- (3285,'Gunma','10',1109,1),
- (3286,'Hiroshima','34',1109,1),
- (3287,'Hokkaido','01',1109,1),
- (3288,'Hyogo','28',1109,1),
- (3289,'Ibaraki','08',1109,1),
- (3290,'Ishikawa','17',1109,1),
- (3291,'Iwate','03',1109,1),
- (3292,'Kagawa','37',1109,1),
- (3293,'Kagoshima','46',1109,1),
- (3294,'Kanagawa','14',1109,1),
- (3295,'Kochi','39',1109,1),
- (3296,'Kumamoto','43',1109,1),
- (3297,'Kyoto','26',1109,1),
- (3298,'Mie','24',1109,1),
- (3299,'Miyagi','04',1109,1),
- (3300,'Miyazaki','45',1109,1),
- (3301,'Nagano','20',1109,1),
- (3302,'Nagasaki','42',1109,1),
- (3303,'Nara','29',1109,1),
- (3304,'Niigata','15',1109,1),
- (3305,'Oita','44',1109,1),
- (3306,'Okayama','33',1109,1),
- (3307,'Okinawa','47',1109,1),
- (3308,'Osaka','27',1109,1),
- (3309,'Saga','41',1109,1),
- (3310,'Saitama','11',1109,1),
- (3311,'Shiga','25',1109,1),
- (3312,'Shimane','32',1109,1),
- (3313,'Shizuoka','22',1109,1),
- (3314,'Tochigi','09',1109,1),
- (3315,'Tokushima','36',1109,1),
- (3316,'Tokyo','13',1109,1),
- (3317,'Tottori','31',1109,1),
- (3318,'Toyama','16',1109,1),
- (3319,'Wakayama','30',1109,1),
- (3320,'Yamagata','06',1109,1),
- (3321,'Yamaguchi','35',1109,1),
- (3322,'Yamanashi','19',1109,1),
- (3323,'Clarendon','CN',1108,1),
- (3324,'Hanover','HR',1108,1),
- (3325,'Kingston','KN',1108,1),
- (3326,'Portland','PD',1108,1),
- (3327,'Saint Andrew','AW',1108,1),
- (3328,'Saint Ann','AN',1108,1),
- (3329,'Saint Catherine','CE',1108,1),
- (3330,'Saint Elizabeth','EH',1108,1),
- (3331,'Saint James','JS',1108,1),
- (3332,'Saint Mary','MY',1108,1),
- (3333,'Saint Thomas','TS',1108,1),
- (3334,'Trelawny','TY',1108,1),
- (3335,'Westmoreland','WD',1108,1),
- (3336,'Ajln','AJ',1110,1),
- (3337,'Al \'Aqaba','AQ',1110,1),
- (3338,'Al Balqa\'','BA',1110,1),
- (3339,'Al Karak','KA',1110,1),
- (3340,'Al Mafraq','MA',1110,1),
- (3341,'Amman','AM',1110,1),
- (3342,'At Tafilah','AT',1110,1),
- (3343,'Az Zarga','AZ',1110,1),
- (3344,'Irbid','JR',1110,1),
- (3345,'Jarash','JA',1110,1),
- (3346,'Ma\'an','MN',1110,1),
- (3347,'Madaba','MD',1110,1),
- (3353,'Bishkek','GB',1117,1),
- (3354,'Batken','B',1117,1),
- (3355,'Chu','C',1117,1),
- (3356,'Jalal-Abad','J',1117,1),
- (3357,'Naryn','N',1117,1),
- (3358,'Osh','O',1117,1),
- (3359,'Talas','T',1117,1),
- (3360,'Ysyk-Kol','Y',1117,1),
- (3361,'Krong Kaeb','23',1037,1),
- (3362,'Krong Pailin','24',1037,1),
- (3363,'Xrong Preah Sihanouk','18',1037,1),
- (3364,'Phnom Penh','12',1037,1),
- (3365,'Baat Dambang','2',1037,1),
- (3366,'Banteay Mean Chey','1',1037,1),
- (3367,'Rampong Chaam','3',1037,1),
- (3368,'Kampong Chhnang','4',1037,1),
- (3369,'Kampong Spueu','5',1037,1),
- (3370,'Kampong Thum','6',1037,1),
- (3371,'Kampot','7',1037,1),
- (3372,'Kandaal','8',1037,1),
- (3373,'Kach Kong','9',1037,1),
- (3374,'Krachoh','10',1037,1),
- (3375,'Mondol Kiri','11',1037,1),
- (3376,'Otdar Mean Chey','22',1037,1),
- (3377,'Pousaat','15',1037,1),
- (3378,'Preah Vihear','13',1037,1),
- (3379,'Prey Veaeng','14',1037,1),
- (3380,'Rotanak Kiri','16',1037,1),
- (3381,'Siem Reab','17',1037,1),
- (3382,'Stueng Traeng','19',1037,1),
- (3383,'Svaay Rieng','20',1037,1),
- (3384,'Taakaev','21',1037,1),
- (3385,'Gilbert Islands','G',1113,1),
- (3386,'Line Islands','L',1113,1),
- (3387,'Phoenix Islands','P',1113,1),
- (3388,'Anjouan Ndzouani','A',1049,1),
- (3389,'Grande Comore Ngazidja','G',1049,1),
- (3390,'Moheli Moili','M',1049,1),
- (3391,'Kaesong-si','KAE',1114,1),
- (3392,'Nampo-si','NAM',1114,1),
- (3393,'Pyongyang-ai','PYO',1114,1),
- (3394,'Chagang-do','CHA',1114,1),
- (3395,'Hamgyongbuk-do','HAB',1114,1),
- (3396,'Hamgyongnam-do','HAN',1114,1),
- (3397,'Hwanghaebuk-do','HWB',1114,1),
- (3398,'Hwanghaenam-do','HWN',1114,1),
- (3399,'Kangwon-do','KAN',1114,1),
- (3400,'Pyonganbuk-do','PYB',1114,1),
- (3401,'Pyongannam-do','PYN',1114,1),
- (3402,'Yanggang-do','YAN',1114,1),
- (3403,'Najin Sonbong-si','NAJ',1114,1),
- (3404,'Seoul Teugbyeolsi','11',1115,1),
- (3405,'Busan Gwang\'yeogsi','26',1115,1),
- (3406,'Daegu Gwang\'yeogsi','27',1115,1),
- (3407,'Daejeon Gwang\'yeogsi','30',1115,1),
- (3408,'Gwangju Gwang\'yeogsi','29',1115,1),
- (3409,'Incheon Gwang\'yeogsi','28',1115,1),
- (3410,'Ulsan Gwang\'yeogsi','31',1115,1),
- (3411,'Chungcheongbugdo','43',1115,1),
- (3412,'Chungcheongnamdo','44',1115,1),
- (3413,'Gang\'weondo','42',1115,1),
- (3414,'Gyeonggido','41',1115,1),
- (3415,'Gyeongsangbugdo','47',1115,1),
- (3416,'Gyeongsangnamdo','48',1115,1),
- (3417,'Jejudo','49',1115,1),
- (3418,'Jeonrabugdo','45',1115,1),
- (3419,'Jeonranamdo','46',1115,1),
- (3420,'Al Ahmadi','AH',1116,1),
- (3421,'Al Farwanlyah','FA',1116,1),
- (3422,'Al Jahrah','JA',1116,1),
- (3423,'Al Kuwayt','KU',1116,1),
- (3424,'Hawalli','HA',1116,1),
- (3425,'Almaty','ALA',1111,1),
- (3426,'Astana','AST',1111,1),
- (3427,'Almaty oblysy','ALM',1111,1),
- (3428,'Aqmola oblysy','AKM',1111,1),
- (3429,'Aqtobe oblysy','AKT',1111,1),
- (3430,'Atyrau oblyfiy','ATY',1111,1),
- (3431,'Batys Quzaqstan oblysy','ZAP',1111,1),
- (3432,'Mangghystau oblysy','MAN',1111,1),
- (3433,'Ongtustik Quzaqstan oblysy','YUZ',1111,1),
- (3434,'Pavlodar oblysy','PAV',1111,1),
- (3435,'Qaraghandy oblysy','KAR',1111,1),
- (3436,'Qostanay oblysy','KUS',1111,1),
- (3437,'Qyzylorda oblysy','KZY',1111,1),
- (3438,'Shyghys Quzaqstan oblysy','VOS',1111,1),
- (3439,'Soltustik Quzaqstan oblysy','SEV',1111,1),
- (3440,'Zhambyl oblysy Zhambylskaya oblast\'','ZHA',1111,1),
- (3441,'Vientiane','VT',1118,1),
- (3442,'Attapu','AT',1118,1),
- (3443,'Bokeo','BK',1118,1),
- (3444,'Bolikhamxai','BL',1118,1),
- (3445,'Champasak','CH',1118,1),
- (3446,'Houaphan','HO',1118,1),
- (3447,'Khammouan','KH',1118,1),
- (3448,'Louang Namtha','LM',1118,1),
- (3449,'Louangphabang','LP',1118,1),
- (3450,'Oudomxai','OU',1118,1),
- (3451,'Phongsali','PH',1118,1),
- (3452,'Salavan','SL',1118,1),
- (3453,'Savannakhet','SV',1118,1),
- (3454,'Xaignabouli','XA',1118,1),
- (3455,'Xiasomboun','XN',1118,1),
- (3456,'Xekong','XE',1118,1),
- (3457,'Xiangkhoang','XI',1118,1),
- (3458,'Beirut','BA',1120,1),
- (3459,'Beqaa','BI',1120,1),
- (3460,'Mount Lebanon','JL',1120,1),
- (3461,'North Lebanon','AS',1120,1),
- (3462,'South Lebanon','JA',1120,1),
- (3463,'Nabatieh','NA',1120,1),
- (3464,'Ampara','52',1199,1),
- (3465,'Anuradhapura','71',1199,1),
- (3466,'Badulla','81',1199,1),
- (3467,'Batticaloa','51',1199,1),
- (3468,'Colombo','11',1199,1),
- (3469,'Galle','31',1199,1),
- (3470,'Gampaha','12',1199,1),
- (3471,'Hambantota','33',1199,1),
- (3472,'Jaffna','41',1199,1),
- (3473,'Kalutara','13',1199,1),
- (3474,'Kandy','21',1199,1),
- (3475,'Kegalla','92',1199,1),
- (3476,'Kilinochchi','42',1199,1),
- (3477,'Kurunegala','61',1199,1),
- (3478,'Mannar','43',1199,1),
- (3479,'Matale','22',1199,1),
- (3480,'Matara','32',1199,1),
- (3481,'Monaragala','82',1199,1),
- (3482,'Mullaittivu','45',1199,1),
- (3483,'Nuwara Eliya','23',1199,1),
- (3484,'Polonnaruwa','72',1199,1),
- (3485,'Puttalum','62',1199,1),
- (3486,'Ratnapura','91',1199,1),
- (3487,'Trincomalee','53',1199,1),
- (3488,'VavunLya','44',1199,1),
- (3489,'Bomi','BM',1122,1),
- (3490,'Bong','BG',1122,1),
- (3491,'Grand Basaa','GB',1122,1),
- (3492,'Grand Cape Mount','CM',1122,1),
- (3493,'Grand Gedeh','GG',1122,1),
- (3494,'Grand Kru','GK',1122,1),
- (3495,'Lofa','LO',1122,1),
- (3496,'Margibi','MG',1122,1),
- (3497,'Maryland','MY',1122,1),
- (3498,'Montserrado','MO',1122,1),
- (3499,'Nimba','NI',1122,1),
- (3500,'Rivercess','RI',1122,1),
- (3501,'Sinoe','SI',1122,1),
- (3502,'Berea','D',1121,1),
- (3503,'Butha-Buthe','B',1121,1),
- (3504,'Leribe','C',1121,1),
- (3505,'Mafeteng','E',1121,1),
- (3506,'Maseru','A',1121,1),
- (3507,'Mohale\'s Hoek','F',1121,1),
- (3508,'Mokhotlong','J',1121,1),
- (3509,'Qacha\'s Nek','H',1121,1),
- (3510,'Quthing','G',1121,1),
- (3511,'Thaba-Tseka','K',1121,1),
- (3512,'Alytaus Apskritis','AL',1125,1),
- (3513,'Kauno Apskritis','KU',1125,1),
- (3514,'KlaipÄ—dos Apskritis','KL',1125,1),
- (3515,'MarijampolÄ—s Apskritis','MR',1125,1),
- (3516,'Panevėžio Apskritis','PN',1125,1),
- (3517,'Šiaulių Apskritis','SA',1125,1),
- (3518,'TauragÄ—s Apskritis','TA',1125,1),
- (3519,'Telšių Apskritis','TE',1125,1),
- (3520,'Utenos Apskritis','UT',1125,1),
- (3521,'Vilniaus Apskritis','VL',1125,1),
- (3522,'Diekirch','DI',1126,1),
- (3523,'Grevenmacher','GR',1126,1),
- (3550,'Daugavpils','DGV',1119,1),
- (3551,'Jelgava','JEL',1119,1),
- (3552,'JÅ«rmala','JUR',1119,1),
- (3553,'Liepāja','LPX',1119,1),
- (3554,'RÄ“zekne','REZ',1119,1),
- (3555,'RÄ«ga','RIX',1119,1),
- (3556,'Ventspils','VEN',1119,1),
- (3557,'Ajdābiyā','AJ',1123,1),
- (3558,'Al Buţnān','BU',1123,1),
- (3559,'Al Hizām al Akhdar','HZ',1123,1),
- (3560,'Al Jabal al Akhdar','JA',1123,1),
- (3561,'Al Jifārah','JI',1123,1),
- (3562,'Al Jufrah','JU',1123,1),
- (3563,'Al Kufrah','KF',1123,1),
- (3564,'Al Marj','MJ',1123,1),
- (3565,'Al Marqab','MB',1123,1),
- (3566,'Al Qaţrūn','QT',1123,1),
- (3567,'Al Qubbah','QB',1123,1),
- (3568,'Al Wāhah','WA',1123,1),
- (3569,'An Nuqaţ al Khams','NQ',1123,1),
- (3570,'Ash Shāţi\'','SH',1123,1),
- (3571,'Az Zāwiyah','ZA',1123,1),
- (3572,'Banghāzī','BA',1123,1),
- (3573,'Banī Walīd','BW',1123,1),
- (3574,'Darnah','DR',1123,1),
- (3575,'Ghadāmis','GD',1123,1),
- (3576,'Gharyān','GR',1123,1),
- (3577,'Ghāt','GT',1123,1),
- (3578,'Jaghbūb','JB',1123,1),
- (3579,'Mişrātah','MI',1123,1),
- (3580,'Mizdah','MZ',1123,1),
- (3581,'Murzuq','MQ',1123,1),
- (3582,'Nālūt','NL',1123,1),
- (3583,'Sabhā','SB',1123,1),
- (3584,'Şabrātah Şurmān','SS',1123,1),
- (3585,'Surt','SR',1123,1),
- (3586,'Tājūrā\' wa an Nawāhī al Arbāh','TN',1123,1),
- (3587,'Ţarābulus','TB',1123,1),
- (3588,'Tarhūnah-Masallātah','TM',1123,1),
- (3589,'Wādī al hayāt','WD',1123,1),
- (3590,'Yafran-Jādū','YJ',1123,1),
- (3591,'Agadir','AGD',1146,1),
- (3592,'Aït Baha','BAH',1146,1),
- (3593,'Aït Melloul','MEL',1146,1),
- (3594,'Al Haouz','HAO',1146,1),
- (3595,'Al Hoceïma','HOC',1146,1),
- (3596,'Assa-Zag','ASZ',1146,1),
- (3597,'Azilal','AZI',1146,1),
- (3598,'Beni Mellal','BEM',1146,1),
- (3599,'Ben Sllmane','BES',1146,1),
- (3600,'Berkane','BER',1146,1),
- (3601,'Boujdour','BOD',1146,1),
- (3602,'Boulemane','BOM',1146,1),
- (3603,'Casablanca  [Dar el Beïda]','CAS',1146,1),
- (3604,'Chefchaouene','CHE',1146,1),
- (3605,'Chichaoua','CHI',1146,1),
- (3606,'El Hajeb','HAJ',1146,1),
- (3607,'El Jadida','JDI',1146,1),
- (3608,'Errachidia','ERR',1146,1),
- (3609,'Essaouira','ESI',1146,1),
- (3610,'Es Smara','ESM',1146,1),
- (3611,'Fès','FES',1146,1),
- (3612,'Figuig','FIG',1146,1),
- (3613,'Guelmim','GUE',1146,1),
- (3614,'Ifrane','IFR',1146,1),
- (3615,'Jerada','JRA',1146,1),
- (3616,'Kelaat Sraghna','KES',1146,1),
- (3617,'Kénitra','KEN',1146,1),
- (3618,'Khemisaet','KHE',1146,1),
- (3619,'Khenifra','KHN',1146,1),
- (3620,'Khouribga','KHO',1146,1),
- (3621,'Laâyoune (EH)','LAA',1146,1),
- (3622,'Larache','LAP',1146,1),
- (3623,'Marrakech','MAR',1146,1),
- (3624,'Meknsès','MEK',1146,1),
- (3625,'Nador','NAD',1146,1),
- (3626,'Ouarzazate','OUA',1146,1),
- (3627,'Oued ed Dahab (EH)','OUD',1146,1),
- (3628,'Oujda','OUJ',1146,1),
- (3629,'Rabat-Salé','RBA',1146,1),
- (3630,'Safi','SAF',1146,1),
- (3631,'Sefrou','SEF',1146,1),
- (3632,'Settat','SET',1146,1),
- (3633,'Sidl Kacem','SIK',1146,1),
- (3634,'Tanger','TNG',1146,1),
- (3635,'Tan-Tan','TNT',1146,1),
- (3636,'Taounate','TAO',1146,1),
- (3637,'Taroudannt','TAR',1146,1),
- (3638,'Tata','TAT',1146,1),
- (3639,'Taza','TAZ',1146,1),
- (3640,'Tétouan','TET',1146,1),
- (3641,'Tiznit','TIZ',1146,1),
- (3642,'Gagauzia, Unitate Teritoriala Autonoma','GA',1142,1),
- (3643,'Chisinau','CU',1142,1),
- (3644,'Stinga Nistrului, unitatea teritoriala din','SN',1142,1),
- (3645,'Balti','BA',1142,1),
- (3646,'Cahul','CA',1142,1),
- (3647,'Edinet','ED',1142,1),
- (3648,'Lapusna','LA',1142,1),
- (3649,'Orhei','OR',1142,1),
- (3650,'Soroca','SO',1142,1),
- (3651,'Taraclia','TA',1142,1),
- (3652,'Tighina [Bender]','TI',1142,1),
- (3653,'Ungheni','UN',1142,1),
- (3654,'Antananarivo','T',1129,1),
- (3655,'Antsiranana','D',1129,1),
- (3656,'Fianarantsoa','F',1129,1),
- (3657,'Mahajanga','M',1129,1),
- (3658,'Toamasina','A',1129,1),
- (3659,'Toliara','U',1129,1),
- (3660,'Ailinglapalap','ALL',1135,1),
- (3661,'Ailuk','ALK',1135,1),
- (3662,'Arno','ARN',1135,1),
- (3663,'Aur','AUR',1135,1),
- (3664,'Ebon','EBO',1135,1),
- (3665,'Eniwetok','ENI',1135,1),
- (3666,'Jaluit','JAL',1135,1),
- (3667,'Kili','KIL',1135,1),
- (3668,'Kwajalein','KWA',1135,1),
- (3669,'Lae','LAE',1135,1),
- (3670,'Lib','LIB',1135,1),
- (3671,'Likiep','LIK',1135,1),
- (3672,'Majuro','MAJ',1135,1),
- (3673,'Maloelap','MAL',1135,1),
- (3674,'Mejit','MEJ',1135,1),
- (3675,'Mili','MIL',1135,1),
- (3676,'Namorik','NMK',1135,1),
- (3677,'Namu','NMU',1135,1),
- (3678,'Rongelap','RON',1135,1),
- (3679,'Ujae','UJA',1135,1),
- (3680,'Ujelang','UJL',1135,1),
- (3681,'Utirik','UTI',1135,1),
- (3682,'Wotho','WTN',1135,1),
- (3683,'Wotje','WTJ',1135,1),
- (3684,'Bamako','BK0',1133,1),
- (3685,'Gao','7',1133,1),
- (3686,'Kayes','1',1133,1),
- (3687,'Kidal','8',1133,1),
- (3688,'Xoulikoro','2',1133,1),
- (3689,'Mopti','5',1133,1),
- (3690,'S69ou','4',1133,1),
- (3691,'Sikasso','3',1133,1),
- (3692,'Tombouctou','6',1133,1),
- (3693,'Ayeyarwady','07',1035,1),
- (3694,'Bago','02',1035,1),
- (3695,'Magway','03',1035,1),
- (3696,'Mandalay','04',1035,1),
- (3697,'Sagaing','01',1035,1),
- (3698,'Tanintharyi','05',1035,1),
- (3699,'Yangon','06',1035,1),
- (3700,'Chin','14',1035,1),
- (3701,'Kachin','11',1035,1),
- (3702,'Kayah','12',1035,1),
- (3703,'Kayin','13',1035,1),
- (3704,'Mon','15',1035,1),
- (3705,'Rakhine','16',1035,1),
- (3706,'Shan','17',1035,1),
- (3707,'Ulaanbaatar','1',1144,1),
- (3708,'Arhangay','073',1144,1),
- (3709,'Bayanhongor','069',1144,1),
- (3710,'Bayan-Olgiy','071',1144,1),
- (3711,'Bulgan','067',1144,1),
- (3712,'Darhan uul','037',1144,1),
- (3713,'Dornod','061',1144,1),
- (3714,'Dornogov,','063',1144,1),
- (3715,'DundgovL','059',1144,1),
- (3716,'Dzavhan','057',1144,1),
- (3717,'Govi-Altay','065',1144,1),
- (3718,'Govi-Smber','064',1144,1),
- (3719,'Hentiy','039',1144,1),
- (3720,'Hovd','043',1144,1),
- (3721,'Hovsgol','041',1144,1),
- (3722,'Omnogovi','053',1144,1),
- (3723,'Orhon','035',1144,1),
- (3724,'Ovorhangay','055',1144,1),
- (3725,'Selenge','049',1144,1),
- (3726,'Shbaatar','051',1144,1),
- (3727,'Tov','047',1144,1),
- (3728,'Uvs','046',1144,1),
- (3729,'Nouakchott','NKC',1137,1),
- (3730,'Assaba','03',1137,1),
- (3731,'Brakna','05',1137,1),
- (3732,'Dakhlet Nouadhibou','08',1137,1),
- (3733,'Gorgol','04',1137,1),
- (3734,'Guidimaka','10',1137,1),
- (3735,'Hodh ech Chargui','01',1137,1),
- (3736,'Hodh el Charbi','02',1137,1),
- (3737,'Inchiri','12',1137,1),
- (3738,'Tagant','09',1137,1),
- (3739,'Tiris Zemmour','11',1137,1),
- (3740,'Trarza','06',1137,1),
- (3741,'Beau Bassin-Rose Hill','BR',1138,1),
- (3742,'Curepipe','CU',1138,1),
- (3743,'Port Louis','PU',1138,1),
- (3744,'Quatre Bornes','QB',1138,1),
- (3745,'Vacosa-Phoenix','VP',1138,1),
- (3746,'Black River','BL',1138,1),
- (3747,'Flacq','FL',1138,1),
- (3748,'Grand Port','GP',1138,1),
- (3749,'Moka','MO',1138,1),
- (3750,'Pamplemousses','PA',1138,1),
- (3751,'Plaines Wilhems','PW',1138,1),
- (3752,'Riviere du Rempart','RP',1138,1),
- (3753,'Savanne','SA',1138,1),
- (3754,'Agalega Islands','AG',1138,1),
- (3755,'Cargados Carajos Shoals','CC',1138,1),
- (3756,'Rodrigues Island','RO',1138,1),
- (3757,'Male','MLE',1132,1),
- (3758,'Alif','02',1132,1),
- (3759,'Baa','20',1132,1),
- (3760,'Dhaalu','17',1132,1),
- (3761,'Faafu','14',1132,1),
- (3762,'Gaaf Alif','27',1132,1),
- (3763,'Gaefu Dhaalu','28',1132,1),
- (3764,'Gnaviyani','29',1132,1),
- (3765,'Haa Alif','07',1132,1),
- (3766,'Haa Dhaalu','23',1132,1),
- (3767,'Kaafu','26',1132,1),
- (3768,'Laamu','05',1132,1),
- (3769,'Lhaviyani','03',1132,1),
- (3770,'Meemu','12',1132,1),
- (3771,'Noonu','25',1132,1),
- (3772,'Raa','13',1132,1),
- (3773,'Seenu','01',1132,1),
- (3774,'Shaviyani','24',1132,1),
- (3775,'Thaa','08',1132,1),
- (3776,'Vaavu','04',1132,1),
- (3777,'Balaka','BA',1130,1),
- (3778,'Blantyre','BL',1130,1),
- (3779,'Chikwawa','CK',1130,1),
- (3780,'Chiradzulu','CR',1130,1),
- (3781,'Chitipa','CT',1130,1),
- (3782,'Dedza','DE',1130,1),
- (3783,'Dowa','DO',1130,1),
- (3784,'Karonga','KR',1130,1),
- (3785,'Kasungu','KS',1130,1),
- (3786,'Likoma Island','LK',1130,1),
- (3787,'Lilongwe','LI',1130,1),
- (3788,'Machinga','MH',1130,1),
- (3789,'Mangochi','MG',1130,1),
- (3790,'Mchinji','MC',1130,1),
- (3791,'Mulanje','MU',1130,1),
- (3792,'Mwanza','MW',1130,1),
- (3793,'Mzimba','MZ',1130,1),
- (3794,'Nkhata Bay','NB',1130,1),
- (3795,'Nkhotakota','NK',1130,1),
- (3796,'Nsanje','NS',1130,1),
- (3797,'Ntcheu','NU',1130,1),
- (3798,'Ntchisi','NI',1130,1),
- (3799,'Phalomba','PH',1130,1),
- (3800,'Rumphi','RU',1130,1),
- (3801,'Salima','SA',1130,1),
- (3802,'Thyolo','TH',1130,1),
- (3803,'Zomba','ZO',1130,1),
- (3804,'Aguascalientes','AGU',1140,1),
- (3805,'Baja California','BCN',1140,1),
- (3806,'Baja California Sur','BCS',1140,1),
- (3807,'Campeche','CAM',1140,1),
- (3808,'Coahuila','COA',1140,1),
- (3809,'Colima','COL',1140,1),
- (3810,'Chiapas','CHP',1140,1),
- (3811,'Chihuahua','CHH',1140,1),
- (3812,'Durango','DUR',1140,1),
- (3813,'Guanajuato','GUA',1140,1),
- (3814,'Guerrero','GRO',1140,1),
- (3815,'Hidalgo','HID',1140,1),
- (3816,'Jalisco','JAL',1140,1),
- (3817,'Mexico','MEX',1140,1),
- (3818,'Michoacin','MIC',1140,1),
- (3819,'Morelos','MOR',1140,1),
- (3820,'Nayarit','NAY',1140,1),
- (3821,'Nuevo Leon','NLE',1140,1),
- (3822,'Oaxaca','OAX',1140,1),
- (3823,'Puebla','PUE',1140,1),
- (3824,'Queretaro','QUE',1140,1),
- (3825,'Quintana Roo','ROO',1140,1),
- (3826,'San Luis Potosi','SLP',1140,1),
- (3827,'Sinaloa','SIN',1140,1),
- (3828,'Sonora','SON',1140,1),
- (3829,'Tabasco','TAB',1140,1),
- (3830,'Tamaulipas','TAM',1140,1),
- (3831,'Tlaxcala','TLA',1140,1),
- (3832,'Veracruz','VER',1140,1),
- (3833,'Yucatan','YUC',1140,1),
- (3834,'Zacatecas','ZAC',1140,1),
- (3835,'Wilayah Persekutuan Kuala Lumpur','14',1131,1),
- (3836,'Wilayah Persekutuan Labuan','15',1131,1),
- (3837,'Wilayah Persekutuan Putrajaya','16',1131,1),
- (3838,'Johor','01',1131,1),
- (3839,'Kedah','02',1131,1),
- (3840,'Kelantan','03',1131,1),
- (3841,'Melaka','04',1131,1),
- (3842,'Negeri Sembilan','05',1131,1),
- (3843,'Pahang','06',1131,1),
- (3844,'Perak','08',1131,1),
- (3845,'Perlis','09',1131,1),
- (3846,'Pulau Pinang','07',1131,1),
- (3847,'Sabah','12',1131,1),
- (3848,'Sarawak','13',1131,1),
- (3849,'Selangor','10',1131,1),
- (3850,'Terengganu','11',1131,1),
- (3851,'Maputo','MPM',1147,1),
- (3852,'Cabo Delgado','P',1147,1),
- (3853,'Gaza','G',1147,1),
- (3854,'Inhambane','I',1147,1),
- (3855,'Manica','B',1147,1),
- (3856,'Numpula','N',1147,1),
- (3857,'Niaaea','A',1147,1),
- (3858,'Sofala','S',1147,1),
- (3859,'Tete','T',1147,1),
- (3860,'Zambezia','Q',1147,1),
- (3861,'Caprivi','CA',1148,1),
- (3862,'Erongo','ER',1148,1),
- (3863,'Hardap','HA',1148,1),
- (3864,'Karas','KA',1148,1),
- (3865,'Khomas','KH',1148,1),
- (3866,'Kunene','KU',1148,1),
- (3867,'Ohangwena','OW',1148,1),
- (3868,'Okavango','OK',1148,1),
- (3869,'Omaheke','OH',1148,1),
- (3870,'Omusati','OS',1148,1),
- (3871,'Oshana','ON',1148,1),
- (3872,'Oshikoto','OT',1148,1),
- (3873,'Otjozondjupa','OD',1148,1),
- (3874,'Niamey','8',1156,1),
- (3875,'Agadez','1',1156,1),
- (3876,'Diffa','2',1156,1),
- (3877,'Dosso','3',1156,1),
- (3878,'Maradi','4',1156,1),
- (3879,'Tahoua','S',1156,1),
- (3880,'Tillaberi','6',1156,1),
- (3881,'Zinder','7',1156,1),
- (3882,'Abuja Federal Capital Territory','FC',1157,1),
- (3883,'Abia','AB',1157,1),
- (3884,'Adamawa','AD',1157,1),
- (3885,'Akwa Ibom','AK',1157,1),
- (3886,'Anambra','AN',1157,1),
- (3887,'Bauchi','BA',1157,1),
- (3888,'Bayelsa','BY',1157,1),
- (3889,'Benue','BE',1157,1),
- (3890,'Borno','BO',1157,1),
- (3891,'Cross River','CR',1157,1),
- (3892,'Delta','DE',1157,1),
- (3893,'Ebonyi','EB',1157,1),
- (3894,'Edo','ED',1157,1),
- (3895,'Ekiti','EK',1157,1),
- (3896,'Enugu','EN',1157,1),
- (3897,'Gombe','GO',1157,1),
- (3898,'Imo','IM',1157,1),
- (3899,'Jigawa','JI',1157,1),
- (3900,'Kaduna','KD',1157,1),
- (3901,'Kano','KN',1157,1),
- (3902,'Katsina','KT',1157,1),
- (3903,'Kebbi','KE',1157,1),
- (3904,'Kogi','KO',1157,1),
- (3905,'Kwara','KW',1157,1),
- (3906,'Lagos','LA',1157,1),
- (3907,'Nassarawa','NA',1157,1),
- (3908,'Niger','NI',1157,1),
- (3909,'Ogun','OG',1157,1),
- (3910,'Ondo','ON',1157,1),
- (3911,'Osun','OS',1157,1),
- (3912,'Oyo','OY',1157,1),
- (3913,'Rivers','RI',1157,1),
- (3914,'Sokoto','SO',1157,1),
- (3915,'Taraba','TA',1157,1),
- (3916,'Yobe','YO',1157,1),
- (3917,'Zamfara','ZA',1157,1),
- (3918,'Boaco','BO',1155,1),
- (3919,'Carazo','CA',1155,1),
- (3920,'Chinandega','CI',1155,1),
- (3921,'Chontales','CO',1155,1),
- (3922,'Esteli','ES',1155,1),
- (3923,'Jinotega','JI',1155,1),
- (3924,'Leon','LE',1155,1),
- (3925,'Madriz','MD',1155,1),
- (3926,'Managua','MN',1155,1),
- (3927,'Masaya','MS',1155,1),
- (3928,'Matagalpa','MT',1155,1),
- (3929,'Nueva Segovia','NS',1155,1),
- (3930,'Rio San Juan','SJ',1155,1),
- (3931,'Rivas','RI',1155,1),
- (3932,'Atlantico Norte','AN',1155,1),
- (3933,'Atlantico Sur','AS',1155,1),
- (3934,'Drente','DR',1152,1),
- (3935,'Flevoland','FL',1152,1),
- (3936,'Friesland','FR',1152,1),
- (3937,'Gelderland','GL',1152,1),
- (3938,'Groningen','GR',1152,1),
- (3939,'Noord-Brabant','NB',1152,1),
- (3940,'Noord-Holland','NH',1152,1),
- (3941,'Overijssel','OV',1152,1),
- (3942,'Utrecht','UT',1152,1),
- (3943,'Zuid-Holland','ZH',1152,1),
- (3944,'Zeeland','ZL',1152,1),
- (3945,'Akershus','02',1161,1),
- (3946,'Aust-Agder','09',1161,1),
- (3947,'Buskerud','06',1161,1),
- (3948,'Finnmark','20',1161,1),
- (3949,'Hedmark','04',1161,1),
- (3951,'Møre og Romsdal','15',1161,1),
- (3952,'Nordland','18',1161,1),
- (3953,'Nord-Trøndelag','17',1161,1),
- (3954,'Oppland','05',1161,1),
- (3955,'Oslo','03',1161,1),
- (3956,'Rogaland','11',1161,1),
- (3957,'Sør-Trøndelag','16',1161,1),
- (3958,'Telemark','06',1161,1),
- (3959,'Troms','19',1161,1),
- (3960,'Vest-Agder','10',1161,1),
- (3961,'Vestfold','07',1161,1),
- (3962,'Vestland','46',1161,1),
- (3963,'Østfold','01',1161,1),
- (3964,'Jan Mayen','22',1161,1),
- (3965,'Svalbard','21',1161,1),
- (3966,'Auckland','AUK',1154,1),
- (3967,'Bay of Plenty','BOP',1154,1),
- (3968,'Canterbury','CAN',1154,1),
- (3969,'Gisborne','GIS',1154,1),
- (3970,'Hawkes Bay','HKB',1154,1),
- (3971,'Manawatu-Wanganui','MWT',1154,1),
- (3972,'Marlborough','MBH',1154,1),
- (3973,'Nelson','NSN',1154,1),
- (3974,'Northland','NTL',1154,1),
- (3975,'Otago','OTA',1154,1),
- (3976,'Southland','STL',1154,1),
- (3977,'Taranaki','TKI',1154,1),
- (3978,'Tasman','TAS',1154,1),
- (3979,'Waikato','WKO',1154,1),
- (3980,'Wellington','WGN',1154,1),
- (3981,'West Coast','WTC',1154,1),
- (3982,'Ad Dakhillyah','DA',1162,1),
- (3983,'Al Batinah','BA',1162,1),
- (3984,'Al Janblyah','JA',1162,1),
- (3985,'Al Wusta','WU',1162,1),
- (3986,'Ash Sharqlyah','SH',1162,1),
- (3987,'Az Zahirah','ZA',1162,1),
- (3988,'Masqat','MA',1162,1),
- (3989,'Musandam','MU',1162,1),
- (3990,'Bocas del Toro','1',1166,1),
- (3991,'Cocle','2',1166,1),
- (3992,'Chiriqui','4',1166,1),
- (3993,'Darien','5',1166,1),
- (3994,'Herrera','6',1166,1),
- (3995,'Loa Santoa','7',1166,1),
- (3996,'Panama','8',1166,1),
- (3997,'Veraguas','9',1166,1),
- (3998,'Comarca de San Blas','Q',1166,1),
- (3999,'El Callao','CAL',1169,1),
- (4000,'Ancash','ANC',1169,1),
- (4001,'Apurimac','APU',1169,1),
- (4002,'Arequipa','ARE',1169,1),
- (4003,'Ayacucho','AYA',1169,1),
- (4004,'Cajamarca','CAJ',1169,1),
- (4005,'Cuzco','CUS',1169,1),
- (4006,'Huancavelica','HUV',1169,1),
- (4007,'Huanuco','HUC',1169,1),
- (4008,'Ica','ICA',1169,1),
- (4009,'Junin','JUN',1169,1),
- (4010,'La Libertad','LAL',1169,1),
- (4011,'Lambayeque','LAM',1169,1),
- (4012,'Lima','LIM',1169,1),
- (4013,'Loreto','LOR',1169,1),
- (4014,'Madre de Dios','MDD',1169,1),
- (4015,'Moquegua','MOQ',1169,1),
- (4016,'Pasco','PAS',1169,1),
- (4017,'Piura','PIU',1169,1),
- (4018,'Puno','PUN',1169,1),
- (4019,'San Martin','SAM',1169,1),
- (4020,'Tacna','TAC',1169,1),
- (4021,'Tumbes','TUM',1169,1),
- (4022,'Ucayali','UCA',1169,1),
- (4023,'National Capital District (Port Moresby)','NCD',1167,1),
- (4024,'Chimbu','CPK',1167,1),
- (4025,'Eastern Highlands','EHG',1167,1),
- (4026,'East New Britain','EBR',1167,1),
- (4027,'East Sepik','ESW',1167,1),
- (4028,'Enga','EPW',1167,1),
- (4029,'Gulf','GPK',1167,1),
- (4030,'Madang','MPM',1167,1),
- (4031,'Manus','MRL',1167,1),
- (4032,'Milne Bay','MBA',1167,1),
- (4033,'Morobe','MPL',1167,1),
- (4034,'New Ireland','NIK',1167,1),
- (4035,'North Solomons','NSA',1167,1),
- (4036,'Santaun','SAN',1167,1),
- (4037,'Southern Highlands','SHM',1167,1),
- (4038,'Western Highlands','WHM',1167,1),
- (4039,'West New Britain','WBK',1167,1),
- (4040,'Abra','ABR',1170,1),
- (4041,'Agusan del Norte','AGN',1170,1),
- (4042,'Agusan del Sur','AGS',1170,1),
- (4043,'Aklan','AKL',1170,1),
- (4044,'Albay','ALB',1170,1),
- (4045,'Antique','ANT',1170,1),
- (4046,'Apayao','APA',1170,1),
- (4047,'Aurora','AUR',1170,1),
- (4048,'Basilan','BAS',1170,1),
- (4049,'Bataan','BAN',1170,1),
- (4050,'Batanes','BTN',1170,1),
- (4051,'Batangas','BTG',1170,1),
- (4052,'Benguet','BEN',1170,1),
- (4053,'Biliran','BIL',1170,1),
- (4054,'Bohol','BOH',1170,1),
- (4055,'Bukidnon','BUK',1170,1),
- (4056,'Bulacan','BUL',1170,1),
- (4057,'Cagayan','CAG',1170,1),
- (4058,'Camarines Norte','CAN',1170,1),
- (4059,'Camarines Sur','CAS',1170,1),
- (4060,'Camiguin','CAM',1170,1),
- (4061,'Capiz','CAP',1170,1),
- (4062,'Catanduanes','CAT',1170,1),
- (4063,'Cavite','CAV',1170,1),
- (4064,'Cebu','CEB',1170,1),
- (4065,'Davao de Oro','COM',1170,1),
- (4066,'Davao del Norte','DAV',1170,1),
- (4067,'Davao del Sur','DAS',1170,1),
- (4068,'Davao Oriental','DAO',1170,1),
- (4069,'Eastern Samar','EAS',1170,1),
- (4070,'Guimaras','GUI',1170,1),
- (4071,'Ifugao','IFU',1170,1),
- (4072,'Ilocos Norte','ILN',1170,1),
- (4073,'Ilocos Sur','ILS',1170,1),
- (4074,'Iloilo','ILI',1170,1),
- (4075,'Isabela','ISA',1170,1),
- (4076,'Kalinga','KAL',1170,1),
- (4077,'Laguna','LAG',1170,1),
- (4078,'Lanao del Norte','LAN',1170,1),
- (4079,'Lanao del Sur','LAS',1170,1),
- (4080,'La Union','LUN',1170,1),
- (4081,'Leyte','LEY',1170,1),
- (4082,'Maguindanao','MAG',1170,1),
- (4083,'Marinduque','MAD',1170,1),
- (4084,'Masbate','MAS',1170,1),
- (4085,'Mindoro Occidental','MDC',1170,1),
- (4086,'Mindoro Oriental','MDR',1170,1),
- (4087,'Misamis Occidental','MSC',1170,1),
- (4088,'Misamis Oriental','MSR',1170,1),
- (4089,'Mountain Province','MOU',1170,1),
- (4090,'Negroe Occidental','NEC',1170,1),
- (4091,'Negros Oriental','NER',1170,1),
- (4092,'Cotabato','NCO',1170,1),
- (4093,'Northern Samar','NSA',1170,1),
- (4094,'Nueva Ecija','NUE',1170,1),
- (4095,'Nueva Vizcaya','NUV',1170,1),
- (4096,'Palawan','PLW',1170,1),
- (4097,'Pampanga','PAM',1170,1),
- (4098,'Pangasinan','PAN',1170,1),
- (4099,'Quezon','QUE',1170,1),
- (4100,'Quirino','QUI',1170,1),
- (4101,'Rizal','RIZ',1170,1),
- (4102,'Romblon','ROM',1170,1),
- (4103,'Sarangani','SAR',1170,1),
- (4104,'Siquijor','SIG',1170,1),
- (4105,'Sorsogon','SOR',1170,1),
- (4106,'South Cotabato','SCO',1170,1),
- (4107,'Southern Leyte','SLE',1170,1),
- (4108,'Sultan Kudarat','SUK',1170,1),
- (4109,'Sulu','SLU',1170,1),
- (4110,'Surigao del Norte','SUN',1170,1),
- (4111,'Surigao del Sur','SUR',1170,1),
- (4112,'Tarlac','TAR',1170,1),
- (4113,'Tawi-Tawi','TAW',1170,1),
- (4114,'Western Samar','WSA',1170,1),
- (4115,'Zambales','ZMB',1170,1),
- (4116,'Zamboanga del Norte','ZAN',1170,1),
- (4117,'Zamboanga del Sur','ZAS',1170,1),
- (4118,'Zamboanga Sibiguey','ZSI',1170,1),
- (4119,'Islamabad Federal Capital Area','IS',1163,1),
- (4120,'Baluchistan','BA',1163,1),
- (4121,'Khyber Pakhtun Khawa','NW',1163,1),
- (4122,'Sindh','SD',1163,1),
- (4123,'Federally Administered Tribal Areas','TA',1163,1),
- (4124,'Azad Kashmir','JK',1163,1),
- (4125,'Gilgit-Baltistan','NA',1163,1),
- (4126,'Aveiro','01',1173,1),
- (4127,'Beja','02',1173,1),
- (4128,'Braga','03',1173,1),
- (4129,'Bragança','04',1173,1),
- (4130,'Castelo Branco','05',1173,1),
- (4131,'Coimbra','06',1173,1),
- (4132,'Évora','07',1173,1),
- (4133,'Faro','08',1173,1),
- (4134,'Guarda','09',1173,1),
- (4135,'Leiria','10',1173,1),
- (4136,'Lisboa','11',1173,1),
- (4137,'Portalegre','12',1173,1),
- (4138,'Porto','13',1173,1),
- (4139,'Santarém','14',1173,1),
- (4140,'Setúbal','15',1173,1),
- (4141,'Viana do Castelo','16',1173,1),
- (4142,'Vila Real','17',1173,1),
- (4143,'Viseu','18',1173,1),
- (4144,'Região Autónoma dos Açores','20',1173,1),
- (4145,'Região Autónoma da Madeira','30',1173,1),
- (4146,'Asuncion','ASU',1168,1),
- (4147,'Alto Paraguay','16',1168,1),
- (4148,'Alto Parana','10',1168,1),
- (4149,'Amambay','13',1168,1),
- (4150,'Boqueron','19',1168,1),
- (4151,'Caeguazu','5',1168,1),
- (4152,'Caazapl','6',1168,1),
- (4153,'Canindeyu','14',1168,1),
- (4154,'Concepcion','1',1168,1),
- (4155,'Cordillera','3',1168,1),
- (4156,'Guaira','4',1168,1),
- (4157,'Itapua','7',1168,1),
- (4158,'Miaiones','8',1168,1),
- (4159,'Neembucu','12',1168,1),
- (4160,'Paraguari','9',1168,1),
- (4161,'Presidente Hayes','15',1168,1),
- (4162,'San Pedro','2',1168,1),
- (4163,'Ad Dawhah','DA',1175,1),
- (4164,'Al Ghuwayriyah','GH',1175,1),
- (4165,'Al Jumayliyah','JU',1175,1),
- (4166,'Al Khawr','KH',1175,1),
- (4167,'Al Wakrah','WA',1175,1),
- (4168,'Ar Rayyan','RA',1175,1),
- (4169,'Jariyan al Batnah','JB',1175,1),
- (4170,'Madinat ash Shamal','MS',1175,1),
- (4171,'Umm Salal','US',1175,1),
- (4172,'Bucuresti','B',1176,1),
- (4173,'Alba','AB',1176,1),
- (4174,'Arad','AR',1176,1),
- (4175,'ArgeÈ™','AG',1176,1),
- (4176,'Bacău','BC',1176,1),
- (4177,'Bihor','BH',1176,1),
- (4178,'Bistrița-Năsăud','BN',1176,1),
- (4179,'Botoșani','BT',1176,1),
- (4180,'Brașov','BV',1176,1),
- (4181,'Brăila','BR',1176,1),
- (4182,'Buzău','BZ',1176,1),
- (4183,'CaraÈ™-Severin','CS',1176,1),
- (4184,'Călărași','CL',1176,1),
- (4185,'Cluj','CJ',1176,1),
- (4186,'Constanța','CT',1176,1),
- (4187,'Covasna','CV',1176,1),
- (4188,'Dâmbovița','DB',1176,1),
- (4189,'Dolj','DJ',1176,1),
- (4190,'Galați','GL',1176,1),
- (4191,'Giurgiu','GR',1176,1),
- (4192,'Gorj','GJ',1176,1),
- (4193,'Harghita','HR',1176,1),
- (4194,'Hunedoara','HD',1176,1),
- (4195,'Ialomița','IL',1176,1),
- (4196,'Iași','IS',1176,1),
- (4197,'Ilfov','IF',1176,1),
- (4198,'MaramureÈ™','MM',1176,1),
- (4199,'Mehedinți','MH',1176,1),
- (4200,'MureÈ™','MS',1176,1),
- (4201,'NeamÈ›','NT',1176,1),
- (4202,'Olt','OT',1176,1),
- (4203,'Prahova','PH',1176,1),
- (4204,'Satu Mare','SM',1176,1),
- (4205,'Sălaj','SJ',1176,1),
- (4206,'Sibiu','SB',1176,1),
- (4207,'Suceava','SV',1176,1),
- (4208,'Teleorman','TR',1176,1),
- (4209,'TimiÈ™','TM',1176,1),
- (4210,'Tulcea','TL',1176,1),
- (4211,'Vaslui','VS',1176,1),
- (4212,'Vâlcea','VL',1176,1),
- (4213,'Vrancea','VN',1176,1),
- (4214,'Adygeya, Respublika','AD',1177,1),
- (4215,'Altay, Respublika','AL',1177,1),
- (4216,'Bashkortostan, Respublika','BA',1177,1),
- (4217,'Buryatiya, Respublika','BU',1177,1),
- (4218,'Chechenskaya Respublika','CE',1177,1),
- (4219,'Chuvashskaya Respublika','CU',1177,1),
- (4220,'Dagestan, Respublika','DA',1177,1),
- (4221,'Ingushskaya Respublika','IN',1177,1),
- (4222,'Kabardino-Balkarskaya','KB',1177,1),
- (4223,'Kalmykiya, Respublika','KL',1177,1),
- (4224,'Karachayevo-Cherkesskaya Respublika','KC',1177,1),
- (4225,'Kareliya, Respublika','KR',1177,1),
- (4226,'Khakasiya, Respublika','KK',1177,1),
- (4227,'Komi, Respublika','KO',1177,1),
- (4228,'Mariy El, Respublika','ME',1177,1),
- (4229,'Mordoviya, Respublika','MO',1177,1),
- (4230,'Sakha, Respublika [Yakutiya]','SA',1177,1),
- (4231,'Severnaya Osetiya, Respublika','SE',1177,1),
- (4232,'Tatarstan, Respublika','TA',1177,1),
- (4233,'Tyva, Respublika [Tuva]','TY',1177,1),
- (4234,'Udmurtskaya Respublika','UD',1177,1),
- (4235,'Altayskiy kray','ALT',1177,1),
- (4236,'Khabarovskiy kray','KHA',1177,1),
- (4237,'Krasnodarskiy kray','KDA',1177,1),
- (4238,'Krasnoyarskiy kray','KYA',1177,1),
- (4239,'Primorskiy kray','PRI',1177,1),
- (4240,'Stavropol\'skiy kray','STA',1177,1),
- (4241,'Amurskaya oblast\'','AMU',1177,1),
- (4242,'Arkhangel\'skaya oblast\'','ARK',1177,1),
- (4243,'Astrakhanskaya oblast\'','AST',1177,1),
- (4244,'Belgorodskaya oblast\'','BEL',1177,1),
- (4245,'Bryanskaya oblast\'','BRY',1177,1),
- (4246,'Chelyabinskaya oblast\'','CHE',1177,1),
- (4247,'Zabaykalsky Krai\'','ZSK',1177,1),
- (4248,'Irkutskaya oblast\'','IRK',1177,1),
- (4249,'Ivanovskaya oblast\'','IVA',1177,1),
- (4250,'Kaliningradskaya oblast\'','KGD',1177,1),
- (4251,'Kaluzhskaya oblast\'','KLU',1177,1),
- (4252,'Kamchatka Krai\'','KAM',1177,1),
- (4253,'Kemerovskaya oblast\'','KEM',1177,1),
- (4254,'Kirovskaya oblast\'','KIR',1177,1),
- (4255,'Kostromskaya oblast\'','KOS',1177,1),
- (4256,'Kurganskaya oblast\'','KGN',1177,1),
- (4257,'Kurskaya oblast\'','KRS',1177,1),
- (4258,'Leningradskaya oblast\'','LEN',1177,1),
- (4259,'Lipetskaya oblast\'','LIP',1177,1),
- (4260,'Magadanskaya oblast\'','MAG',1177,1),
- (4261,'Moskovskaya oblast\'','MOS',1177,1),
- (4262,'Murmanskaya oblast\'','MUR',1177,1),
- (4263,'Nizhegorodskaya oblast\'','NIZ',1177,1),
- (4264,'Novgorodskaya oblast\'','NGR',1177,1),
- (4265,'Novosibirskaya oblast\'','NVS',1177,1),
- (4266,'Omskaya oblast\'','OMS',1177,1),
- (4267,'Orenburgskaya oblast\'','ORE',1177,1),
- (4268,'Orlovskaya oblast\'','ORL',1177,1),
- (4269,'Penzenskaya oblast\'','PNZ',1177,1),
- (4270,'Perm krai\'','PEK',1177,1),
- (4271,'Pskovskaya oblast\'','PSK',1177,1),
- (4272,'Rostovskaya oblast\'','ROS',1177,1),
- (4273,'Ryazanskaya oblast\'','RYA',1177,1),
- (4274,'Sakhalinskaya oblast\'','SAK',1177,1),
- (4275,'Samarskaya oblast\'','SAM',1177,1),
- (4276,'Saratovskaya oblast\'','SAR',1177,1),
- (4277,'Smolenskaya oblast\'','SMO',1177,1),
- (4278,'Sverdlovskaya oblast\'','SVE',1177,1),
- (4279,'Tambovskaya oblast\'','TAM',1177,1),
- (4280,'Tomskaya oblast\'','TOM',1177,1),
- (4281,'Tul\'skaya oblast\'','TUL',1177,1),
- (4282,'Tverskaya oblast\'','TVE',1177,1),
- (4283,'Tyumenskaya oblast\'','TYU',1177,1),
- (4284,'Ul\'yanovskaya oblast\'','ULY',1177,1),
- (4285,'Vladimirskaya oblast\'','VLA',1177,1),
- (4286,'Volgogradskaya oblast\'','VGG',1177,1),
- (4287,'Vologodskaya oblast\'','VLG',1177,1),
- (4288,'Voronezhskaya oblast\'','VOR',1177,1),
- (4289,'Yaroslavskaya oblast\'','YAR',1177,1),
- (4290,'Moskva','MOW',1177,1),
- (4291,'Sankt-Peterburg','SPE',1177,1),
- (4292,'Yevreyskaya avtonomnaya oblast\'','YEV',1177,1),
- (4294,'Chukotskiy avtonomnyy okrug','CHU',1177,1),
- (4296,'Khanty-Mansiyskiy avtonomnyy okrug','KHM',1177,1),
- (4299,'Nenetskiy avtonomnyy okrug','NEN',1177,1),
- (4302,'Yamalo-Nenetskiy avtonomnyy okrug','YAN',1177,1),
- (4303,'Butare','C',1178,1),
- (4304,'Byumba','I',1178,1),
- (4305,'Cyangugu','E',1178,1),
- (4306,'Gikongoro','D',1178,1),
- (4307,'Gisenyi','G',1178,1),
- (4308,'Gitarama','B',1178,1),
- (4309,'Kibungo','J',1178,1),
- (4310,'Kibuye','F',1178,1),
- (4311,'Kigali-Rural Kigali y\' Icyaro','K',1178,1),
- (4312,'Kigali-Ville Kigali Ngari','L',1178,1),
- (4313,'Mutara','M',1178,1),
- (4314,'Ruhengeri','H',1178,1),
- (4315,'Al Bahah','11',1187,1),
- (4316,'Al Hudud Ash Shamaliyah','08',1187,1),
- (4317,'Al Jawf','12',1187,1),
- (4318,'Al Madinah','03',1187,1),
- (4319,'Al Qasim','05',1187,1),
- (4320,'Ar Riyad','01',1187,1),
- (4321,'Asir','14',1187,1),
- (4322,'Ha\'il','06',1187,1),
- (4323,'Jlzan','09',1187,1),
- (4324,'Makkah','02',1187,1),
- (4325,'Najran','10',1187,1),
- (4326,'Tabuk','07',1187,1),
- (4327,'Capital Territory (Honiara)','CT',1194,1),
- (4328,'Guadalcanal','GU',1194,1),
- (4329,'Isabel','IS',1194,1),
- (4330,'Makira','MK',1194,1),
- (4331,'Malaita','ML',1194,1),
- (4332,'Temotu','TE',1194,1),
- (4333,'A\'ali an Nil','23',1200,1),
- (4334,'Al Bah al Ahmar','26',1200,1),
- (4335,'Al Buhayrat','18',1200,1),
- (4336,'Al Jazirah','07',1200,1),
- (4337,'Al Khartum','03',1200,1),
- (4338,'Al Qadarif','06',1200,1),
- (4339,'Al Wahdah','22',1200,1),
- (4340,'An Nil','04',1200,1),
- (4341,'An Nil al Abyaq','08',1200,1),
- (4342,'An Nil al Azraq','24',1200,1),
- (4343,'Ash Shamallyah','01',1200,1),
- (4344,'Bahr al Jabal','17',1200,1),
- (4345,'Gharb al Istiwa\'iyah','16',1200,1),
- (4346,'Gharb Ba~r al Ghazal','14',1200,1),
- (4347,'Gharb Darfur','12',1200,1),
- (4348,'Gharb Kurdufan','10',1200,1),
- (4349,'Janub Darfur','11',1200,1),
- (4350,'Janub Rurdufan','13',1200,1),
- (4351,'Jnqall','20',1200,1),
- (4352,'Kassala','05',1200,1),
- (4353,'Shamal Batr al Ghazal','15',1200,1),
- (4354,'Shamal Darfur','02',1200,1),
- (4355,'Shamal Kurdufan','09',1200,1),
- (4356,'Sharq al Istiwa\'iyah','19',1200,1),
- (4357,'Sinnar','25',1200,1),
- (4358,'Warab','21',1200,1),
- (4359,'Blekinge län','K',1204,1),
- (4360,'Dalarnas län','W',1204,1),
- (4361,'Gotlands län','I',1204,1),
- (4362,'Gävleborgs län','X',1204,1),
- (4363,'Hallands län','N',1204,1),
- (4364,'Jämtlands län','Z',1204,1),
- (4365,'Jönkopings län','F',1204,1),
- (4366,'Kalmar län','H',1204,1),
- (4367,'Kronobergs län','G',1204,1),
- (4368,'Norrbottens län','BD',1204,1),
- (4369,'Skåne län','M',1204,1),
- (4370,'Stockholms län','AB',1204,1),
- (4371,'Södermanlands län','D',1204,1),
- (4372,'Uppsala län','C',1204,1),
- (4373,'Värmlands län','S',1204,1),
- (4374,'Västerbottens län','AC',1204,1),
- (4375,'Västernorrlands län','Y',1204,1),
- (4376,'Västmanlands län','U',1204,1),
- (4377,'Västra Götalands län','Q',1204,1),
- (4378,'Örebro län','T',1204,1),
- (4379,'Östergötlands län','E',1204,1),
- (4380,'Saint Helena','SH',1180,1),
- (4381,'Ascension','AC',1180,1),
- (4382,'Tristan da Cunha','TA',1180,1),
- (4383,'Ajdovščina','001',1193,1),
- (4384,'Beltinci','002',1193,1),
- (4385,'Benedikt','148',1193,1),
- (4386,'Bistrica ob Sotli','149',1193,1),
- (4387,'Bled','003',1193,1),
- (4388,'Bloke','150',1193,1),
- (4389,'Bohinj','004',1193,1),
- (4390,'Borovnica','005',1193,1),
- (4391,'Bovec','006',1193,1),
- (4392,'Braslovče','151',1193,1),
- (4393,'Brda','007',1193,1),
- (4394,'Brezovica','008',1193,1),
- (4395,'Brežice','009',1193,1),
- (4396,'Cankova','152',1193,1),
- (4397,'Celje','011',1193,1),
- (4398,'Cerklje na Gorenjskem','012',1193,1),
- (4399,'Cerknica','013',1193,1),
- (4400,'Cerkno','014',1193,1),
- (4401,'Cerkvenjak','153',1193,1),
- (4402,'Črenšovci','015',1193,1),
- (4403,'Črna na Koroškem','016',1193,1),
- (4404,'ÄŒrnomelj','017',1193,1),
- (4405,'Destrnik','018',1193,1),
- (4406,'Divača','019',1193,1),
- (4407,'Dobje','154',1193,1),
- (4408,'Dobrepolje','020',1193,1),
- (4409,'Dobrna','155',1193,1),
- (4410,'Dobrova-Polhov Gradec','021',1193,1),
- (4411,'Dobrovnik','156',1193,1),
- (4412,'Dol pri Ljubljani','022',1193,1),
- (4413,'Dolenjske Toplice','157',1193,1),
- (4414,'Domžale','023',1193,1),
- (4415,'Dornava','024',1193,1),
- (4416,'Dravograd','025',1193,1),
- (4417,'Duplek','026',1193,1),
- (4418,'Gorenja vas-Poljane','027',1193,1),
- (4419,'Gorišnica','028',1193,1),
- (4420,'Gornja Radgona','029',1193,1),
- (4421,'Gornji Grad','030',1193,1),
- (4422,'Gornji Petrovci','031',1193,1),
- (4423,'Grad','158',1193,1),
- (4424,'Grosuplje','032',1193,1),
- (4425,'Hajdina','159',1193,1),
- (4426,'Hoče-Slivnica','160',1193,1),
- (4427,'Hodoš','161',1193,1),
- (4428,'Horjul','162',1193,1),
- (4429,'Hrastnik','034',1193,1),
- (4430,'Hrpelje-Kozina','035',1193,1),
- (4431,'Idrija','036',1193,1),
- (4432,'Ig','037',1193,1),
- (4433,'Ilirska Bistrica','038',1193,1),
- (4434,'Ivančna Gorica','039',1193,1),
- (4435,'Izola','040',1193,1),
- (4436,'Jesenice','041',1193,1),
- (4437,'Jezersko','163',1193,1),
- (4438,'Juršinci','042',1193,1),
- (4439,'Kamnik','043',1193,1),
- (4440,'Kanal','044',1193,1),
- (4441,'Kidričevo','045',1193,1),
- (4442,'Kobarid','046',1193,1),
- (4443,'Kobilje','047',1193,1),
- (4444,'Kočevje','048',1193,1),
- (4445,'Komen','049',1193,1),
- (4446,'Komenda','164',1193,1),
- (4447,'Koper','050',1193,1),
- (4448,'Kostel','165',1193,1),
- (4449,'Kozje','051',1193,1),
- (4450,'Kranj','052',1193,1),
- (4451,'Kranjska Gora','053',1193,1),
- (4452,'Križevci','166',1193,1),
- (4453,'Krško','054',1193,1),
- (4454,'Kungota','055',1193,1),
- (4455,'Kuzma','056',1193,1),
- (4456,'Laško','057',1193,1),
- (4457,'Lenart','058',1193,1),
- (4458,'Lendava','059',1193,1),
- (4459,'Litija','060',1193,1),
- (4460,'Ljubljana','061',1193,1),
- (4461,'Ljubno','062',1193,1),
- (4462,'Ljutomer','063',1193,1),
- (4463,'Logatec','064',1193,1),
- (4464,'Loška dolina','065',1193,1),
- (4465,'Loški Potok','066',1193,1),
- (4466,'Lovrenc na Pohorju','167',1193,1),
- (4467,'Luče','067',1193,1),
- (4468,'Lukovica','068',1193,1),
- (4469,'Majšperk','069',1193,1),
- (4470,'Maribor','070',1193,1),
- (4471,'Markovci','168',1193,1),
- (4472,'Medvode','071',1193,1),
- (4473,'Mengeš','072',1193,1),
- (4474,'Metlika','073',1193,1),
- (4475,'Mežica','074',1193,1),
- (4476,'Miklavž na Dravskem polju','169',1193,1),
- (4477,'Miren-Kostanjevica','075',1193,1),
- (4478,'Mirna Peč','170',1193,1),
- (4479,'Mislinja','076',1193,1),
- (4480,'Moravče','077',1193,1),
- (4481,'Moravske Toplice','078',1193,1),
- (4482,'Mozirje','079',1193,1),
- (4483,'Murska Sobota','080',1193,1),
- (4484,'Muta','081',1193,1),
- (4485,'Naklo','082',1193,1),
- (4486,'Nazarje','083',1193,1),
- (4487,'Nova Gorica','084',1193,1),
- (4488,'Novo mesto','085',1193,1),
- (4489,'Sveta Ana','181',1193,1),
- (4490,'Sveti Andraž v Slovenskih goricah','182',1193,1),
- (4491,'Sveti Jurij','116',1193,1),
- (4492,'Å alovci','033',1193,1),
- (4493,'Å empeter-Vrtojba','183',1193,1),
- (4494,'Šenčur','117',1193,1),
- (4495,'Å entilj','118',1193,1),
- (4496,'Å entjernej','119',1193,1),
- (4497,'Å entjur','120',1193,1),
- (4498,'Å kocjan','121',1193,1),
- (4499,'Å kofja Loka','122',1193,1),
- (4500,'Å kofljica','123',1193,1),
- (4501,'Šmarje pri Jelšah','124',1193,1),
- (4502,'Å martno ob Paki','125',1193,1),
- (4503,'Å martno pri Litiji','194',1193,1),
- (4504,'Šoštanj','126',1193,1),
- (4505,'Å tore','127',1193,1),
- (4506,'Tabor','184',1193,1),
- (4507,'Tišina','010',1193,1),
- (4508,'Tolmin','128',1193,1),
- (4509,'Trbovlje','129',1193,1),
- (4510,'Trebnje','130',1193,1),
- (4511,'Trnovska vas','185',1193,1),
- (4512,'Tržič','131',1193,1),
- (4513,'Trzin','186',1193,1),
- (4514,'Turnišče','132',1193,1),
- (4515,'Velenje','133',1193,1),
- (4516,'Velika Polana','187',1193,1),
- (4517,'Velike Lašče','134',1193,1),
- (4518,'Veržej','188',1193,1),
- (4519,'Videm','135',1193,1),
- (4520,'Vipava','136',1193,1),
- (4521,'Vitanje','137',1193,1),
- (4522,'Vojnik','138',1193,1),
- (4523,'Vransko','189',1193,1),
- (4524,'Vrhnika','140',1193,1),
- (4525,'Vuzenica','141',1193,1),
- (4526,'Zagorje ob Savi','142',1193,1),
- (4527,'Zavrč','143',1193,1),
- (4528,'Zreče','144',1193,1),
- (4529,'Žalec','190',1193,1),
- (4530,'Železniki','146',1193,1),
- (4531,'Žetale','191',1193,1),
- (4532,'Žiri','147',1193,1),
- (4533,'Žirovnica','192',1193,1),
- (4534,'Žužemberk','193',1193,1),
- (4535,'Banskobystrický kraj','BC',1192,1),
- (4536,'Bratislavský kraj','BL',1192,1),
- (4537,'Košický kraj','KI',1192,1),
- (4538,'Nitriansky kraj','NJ',1192,1),
- (4539,'Prešovský kraj','PV',1192,1),
- (4540,'Trenčiansky kraj','TC',1192,1),
- (4541,'Trnavský kraj','TA',1192,1),
- (4542,'Žilinský kraj','ZI',1192,1),
- (4543,'Western Area (Freetown)','W',1190,1),
- (4544,'Dakar','DK',1188,1),
- (4545,'Diourbel','DB',1188,1),
- (4546,'Fatick','FK',1188,1),
- (4547,'Kaolack','KL',1188,1),
- (4548,'Kolda','KD',1188,1),
- (4549,'Louga','LG',1188,1),
- (4550,'Matam','MT',1188,1),
- (4551,'Saint-Louis','SL',1188,1),
- (4552,'Tambacounda','TC',1188,1),
- (4553,'Thies','TH',1188,1),
- (4554,'Ziguinchor','ZG',1188,1),
- (4555,'Awdal','AW',1195,1),
- (4556,'Bakool','BK',1195,1),
- (4557,'Banaadir','BN',1195,1),
- (4558,'Bay','BY',1195,1),
- (4559,'Galguduud','GA',1195,1),
- (4560,'Gedo','GE',1195,1),
- (4561,'Hiirsan','HI',1195,1),
- (4562,'Jubbada Dhexe','JD',1195,1),
- (4563,'Jubbada Hoose','JH',1195,1),
- (4564,'Mudug','MU',1195,1),
- (4565,'Nugaal','NU',1195,1),
- (4566,'Saneag','SA',1195,1),
- (4567,'Shabeellaha Dhexe','SD',1195,1),
- (4568,'Shabeellaha Hoose','SH',1195,1),
- (4569,'Sool','SO',1195,1),
- (4570,'Togdheer','TO',1195,1),
- (4571,'Woqooyi Galbeed','WO',1195,1),
- (4572,'Brokopondo','BR',1201,1),
- (4573,'Commewijne','CM',1201,1),
- (4574,'Coronie','CR',1201,1),
- (4575,'Marowijne','MA',1201,1),
- (4576,'Nickerie','NI',1201,1),
- (4577,'Paramaribo','PM',1201,1),
- (4578,'Saramacca','SA',1201,1),
- (4579,'Sipaliwini','SI',1201,1),
- (4580,'Wanica','WA',1201,1),
- (4581,'Principe','P',1207,1),
- (4582,'Sao Tome','S',1207,1),
- (4583,'Ahuachapan','AH',1066,1),
- (4584,'Cabanas','CA',1066,1),
- (4585,'Cuscatlan','CU',1066,1),
- (4586,'Chalatenango','CH',1066,1),
- (4587,'Morazan','MO',1066,1),
- (4588,'San Miguel','SM',1066,1),
- (4589,'San Salvador','SS',1066,1),
- (4590,'Santa Ana','SA',1066,1),
- (4591,'San Vicente','SV',1066,1),
- (4592,'Sonsonate','SO',1066,1),
- (4593,'Usulutan','US',1066,1),
- (4594,'Al Hasakah','HA',1206,1),
- (4595,'Al Ladhiqiyah','LA',1206,1),
- (4596,'Al Qunaytirah','QU',1206,1),
- (4597,'Ar Raqqah','RA',1206,1),
- (4598,'As Suwayda\'','SU',1206,1),
- (4599,'Dar\'a','DR',1206,1),
- (4600,'Dayr az Zawr','DY',1206,1),
- (4601,'Dimashq','DI',1206,1),
- (4602,'Halab','HL',1206,1),
- (4603,'Hamah','HM',1206,1),
- (4604,'Jim\'','HI',1206,1),
- (4605,'Idlib','ID',1206,1),
- (4606,'Rif Dimashq','RD',1206,1),
- (4607,'Tarts','TA',1206,1),
- (4608,'Hhohho','HH',1203,1),
- (4609,'Lubombo','LU',1203,1),
- (4610,'Manzini','MA',1203,1),
- (4611,'Shiselweni','SH',1203,1),
- (4612,'Batha','BA',1043,1),
- (4613,'Biltine','BI',1043,1),
- (4614,'Borkou-Ennedi-Tibesti','BET',1043,1),
- (4615,'Chari-Baguirmi','CB',1043,1),
- (4616,'Guera','GR',1043,1),
- (4617,'Kanem','KA',1043,1),
- (4618,'Lac','LC',1043,1),
- (4619,'Logone-Occidental','LO',1043,1),
- (4620,'Logone-Oriental','LR',1043,1),
- (4621,'Mayo-Kebbi','MK',1043,1),
- (4622,'Moyen-Chari','MC',1043,1),
- (4623,'Ouaddai','OD',1043,1),
- (4624,'Salamat','SA',1043,1),
- (4625,'Tandjile','TA',1043,1),
- (4626,'Kara','K',1214,1),
- (4627,'Maritime (Region)','M',1214,1),
- (4628,'Savannes','S',1214,1),
- (4629,'Krung Thep Maha Nakhon Bangkok','10',1211,1),
- (4630,'Phatthaya','S',1211,1),
- (4631,'Amnat Charoen','37',1211,1),
- (4632,'Ang Thong','15',1211,1),
- (4633,'Buri Ram','31',1211,1),
- (4634,'Chachoengsao','24',1211,1),
- (4635,'Chai Nat','18',1211,1),
- (4636,'Chaiyaphum','36',1211,1),
- (4637,'Chanthaburi','22',1211,1),
- (4638,'Chiang Mai','50',1211,1),
- (4639,'Chiang Rai','57',1211,1),
- (4640,'Chon Buri','20',1211,1),
- (4641,'Chumphon','86',1211,1),
- (4642,'Kalasin','46',1211,1),
- (4643,'Kamphasng Phet','62',1211,1),
- (4644,'Kanchanaburi','71',1211,1),
- (4645,'Khon Kaen','40',1211,1),
- (4646,'Krabi','81',1211,1),
- (4647,'Lampang','52',1211,1),
- (4648,'Lamphun','51',1211,1),
- (4649,'Loei','42',1211,1),
- (4650,'Lop Buri','16',1211,1),
- (4651,'Mae Hong Son','58',1211,1),
- (4652,'Maha Sarakham','44',1211,1),
- (4653,'Mukdahan','49',1211,1),
- (4654,'Nakhon Nayok','26',1211,1),
- (4655,'Nakhon Pathom','73',1211,1),
- (4656,'Nakhon Phanom','48',1211,1),
- (4657,'Nakhon Ratchasima','30',1211,1),
- (4658,'Nakhon Sawan','60',1211,1),
- (4659,'Nakhon Si Thammarat','80',1211,1),
- (4660,'Nan','55',1211,1),
- (4661,'Narathiwat','96',1211,1),
- (4662,'Nong Bua Lam Phu','39',1211,1),
- (4663,'Nong Khai','43',1211,1),
- (4664,'Nonthaburi','12',1211,1),
- (4665,'Pathum Thani','13',1211,1),
- (4666,'Pattani','94',1211,1),
- (4667,'Phangnga','82',1211,1),
- (4668,'Phatthalung','93',1211,1),
- (4669,'Phayao','56',1211,1),
- (4670,'Phetchabun','67',1211,1),
- (4671,'Phetchaburi','76',1211,1),
- (4672,'Phichit','66',1211,1),
- (4673,'Phitsanulok','65',1211,1),
- (4674,'Phrae','54',1211,1),
- (4675,'Phra Nakhon Si Ayutthaya','14',1211,1),
- (4676,'Phuket','83',1211,1),
- (4677,'Prachin Buri','25',1211,1),
- (4678,'Prachuap Khiri Khan','77',1211,1),
- (4679,'Ranong','85',1211,1),
- (4680,'Ratchaburi','70',1211,1),
- (4681,'Rayong','21',1211,1),
- (4682,'Roi Et','45',1211,1),
- (4683,'Sa Kaeo','27',1211,1),
- (4684,'Sakon Nakhon','47',1211,1),
- (4685,'Samut Prakan','11',1211,1),
- (4686,'Samut Sakhon','74',1211,1),
- (4687,'Samut Songkhram','75',1211,1),
- (4688,'Saraburi','19',1211,1),
- (4689,'Satun','91',1211,1),
- (4690,'Sing Buri','17',1211,1),
- (4691,'Si Sa Ket','33',1211,1),
- (4692,'Songkhla','90',1211,1),
- (4693,'Sukhothai','64',1211,1),
- (4694,'Suphan Buri','72',1211,1),
- (4695,'Surat Thani','84',1211,1),
- (4696,'Surin','32',1211,1),
- (4697,'Tak','63',1211,1),
- (4698,'Trang','92',1211,1),
- (4699,'Trat','23',1211,1),
- (4700,'Ubon Ratchathani','34',1211,1),
- (4701,'Udon Thani','41',1211,1),
- (4702,'Uthai Thani','61',1211,1),
- (4703,'Uttaradit','53',1211,1),
- (4704,'Yala','95',1211,1),
- (4705,'Yasothon','35',1211,1),
- (4706,'Sughd','SU',1209,1),
- (4707,'Khatlon','KT',1209,1),
- (4708,'Gorno-Badakhshan','GB',1209,1),
- (4709,'Ahal','A',1220,1),
- (4710,'Balkan','B',1220,1),
- (4711,'Dasoguz','D',1220,1),
- (4712,'Lebap','L',1220,1),
- (4713,'Mary','M',1220,1),
- (4714,'Béja','31',1218,1),
- (4715,'Ben Arous','13',1218,1),
- (4716,'Bizerte','23',1218,1),
- (4717,'Gabès','81',1218,1),
- (4718,'Gafsa','71',1218,1),
- (4719,'Jendouba','32',1218,1),
- (4720,'Kairouan','41',1218,1),
- (4721,'Rasserine','42',1218,1),
- (4722,'Kebili','73',1218,1),
- (4723,'L\'Ariana','12',1218,1),
- (4724,'Le Ref','33',1218,1),
- (4725,'Mahdia','53',1218,1),
- (4726,'La Manouba','14',1218,1),
- (4727,'Medenine','82',1218,1),
- (4728,'Moneatir','52',1218,1),
- (4729,'Naboul','21',1218,1),
- (4730,'Sfax','61',1218,1),
- (4731,'Sidi Bouxid','43',1218,1),
- (4732,'Siliana','34',1218,1),
- (4733,'Sousse','51',1218,1),
- (4734,'Tataouine','83',1218,1),
- (4735,'Tozeur','72',1218,1),
- (4736,'Tunis','11',1218,1),
- (4737,'Zaghouan','22',1218,1),
- (4738,'Adana','01',1219,1),
- (4739,'Ad yaman','02',1219,1),
- (4740,'Afyon','03',1219,1),
- (4741,'Ag r','04',1219,1),
- (4742,'Aksaray','68',1219,1),
- (4743,'Amasya','05',1219,1),
- (4744,'Ankara','06',1219,1),
- (4745,'Antalya','07',1219,1),
- (4746,'Ardahan','75',1219,1),
- (4747,'Artvin','08',1219,1),
- (4748,'Aydin','09',1219,1),
- (4749,'Bal kesir','10',1219,1),
- (4750,'Bartin','74',1219,1),
- (4751,'Batman','72',1219,1),
- (4752,'Bayburt','69',1219,1),
- (4753,'Bilecik','11',1219,1),
- (4754,'Bingol','12',1219,1),
- (4755,'Bitlis','13',1219,1),
- (4756,'Bolu','14',1219,1),
- (4757,'Burdur','15',1219,1),
- (4758,'Bursa','16',1219,1),
- (4759,'Canakkale','17',1219,1),
- (4760,'Cankir','18',1219,1),
- (4761,'Corum','19',1219,1),
- (4762,'Denizli','20',1219,1),
- (4763,'Diyarbakir','21',1219,1),
- (4764,'Duzce','81',1219,1),
- (4765,'Edirne','22',1219,1),
- (4766,'Elazig','23',1219,1),
- (4767,'Erzincan','24',1219,1),
- (4768,'Erzurum','25',1219,1),
- (4769,'Eskis\'ehir','26',1219,1),
- (4770,'Gaziantep','27',1219,1),
- (4771,'Giresun','28',1219,1),
- (4772,'Gms\'hane','29',1219,1),
- (4773,'Hakkari','30',1219,1),
- (4774,'Hatay','31',1219,1),
- (4775,'Igidir','76',1219,1),
- (4776,'Isparta','32',1219,1),
- (4777,'Icel','33',1219,1),
- (4778,'Istanbul','34',1219,1),
- (4779,'Izmir','35',1219,1),
- (4780,'Kahramanmaras','46',1219,1),
- (4781,'Karabk','78',1219,1),
- (4782,'Karaman','70',1219,1),
- (4783,'Kars','36',1219,1),
- (4784,'Kastamonu','37',1219,1),
- (4785,'Kayseri','38',1219,1),
- (4786,'Kirikkale','71',1219,1),
- (4787,'Kirklareli','39',1219,1),
- (4788,'Kirs\'ehir','40',1219,1),
- (4789,'Kilis','79',1219,1),
- (4790,'Kocaeli','41',1219,1),
- (4791,'Konya','42',1219,1),
- (4792,'Ktahya','43',1219,1),
- (4793,'Malatya','44',1219,1),
- (4794,'Manisa','45',1219,1),
- (4795,'Mardin','47',1219,1),
- (4796,'Mugila','48',1219,1),
- (4797,'Mus','49',1219,1),
- (4798,'Nevs\'ehir','50',1219,1),
- (4799,'Nigide','51',1219,1),
- (4800,'Ordu','52',1219,1),
- (4801,'Osmaniye','80',1219,1),
- (4802,'Rize','53',1219,1),
- (4803,'Sakarya','54',1219,1),
- (4804,'Samsun','55',1219,1),
- (4805,'Siirt','56',1219,1),
- (4806,'Sinop','57',1219,1),
- (4807,'Sivas','58',1219,1),
- (4808,'S\'anliurfa','63',1219,1),
- (4809,'S\'rnak','73',1219,1),
- (4810,'Tekirdag','59',1219,1),
- (4811,'Tokat','60',1219,1),
- (4812,'Trabzon','61',1219,1),
- (4813,'Tunceli','62',1219,1),
- (4814,'Us\'ak','64',1219,1),
- (4815,'Van','65',1219,1),
- (4816,'Yalova','77',1219,1),
- (4817,'Yozgat','66',1219,1),
- (4818,'Zonguldak','67',1219,1),
- (4819,'Couva-Tabaquite-Talparo','CTT',1217,1),
- (4820,'Diego Martin','DMN',1217,1),
- (4821,'Eastern Tobago','ETO',1217,1),
- (4822,'Penal-Debe','PED',1217,1),
- (4823,'Princes Town','PRT',1217,1),
- (4824,'Rio Claro-Mayaro','RCM',1217,1),
- (4825,'Sangre Grande','SGE',1217,1),
- (4826,'San Juan-Laventille','SJL',1217,1),
- (4827,'Siparia','SIP',1217,1),
- (4828,'Tunapuna-Piarco','TUP',1217,1),
- (4829,'Western Tobago','WTO',1217,1),
- (4830,'Arima','ARI',1217,1),
- (4831,'Chaguanas','CHA',1217,1),
- (4832,'Point Fortin','PTF',1217,1),
- (4833,'Port of Spain','POS',1217,1),
- (4834,'San Fernando','SFO',1217,1),
- (4835,'Aileu','AL',1063,1),
- (4836,'Ainaro','AN',1063,1),
- (4837,'Bacucau','BA',1063,1),
- (4838,'Bobonaro','BO',1063,1),
- (4839,'Cova Lima','CO',1063,1),
- (4840,'Dili','DI',1063,1),
- (4841,'Ermera','ER',1063,1),
- (4842,'Laulem','LA',1063,1),
- (4843,'Liquica','LI',1063,1),
- (4844,'Manatuto','MT',1063,1),
- (4845,'Manafahi','MF',1063,1),
- (4846,'Oecussi','OE',1063,1),
- (4847,'Viqueque','VI',1063,1),
- (4848,'Changhua County','CHA',1208,1),
- (4849,'Chiayi County','CYQ',1208,1),
- (4850,'Hsinchu County','HSQ',1208,1),
- (4851,'Hualien County','HUA',1208,1),
- (4852,'Ilan County','ILA',1208,1),
- (4853,'Kaohsiung County','KHQ',1208,1),
- (4854,'Miaoli County','MIA',1208,1),
- (4855,'Nantou County','NAN',1208,1),
- (4856,'Penghu County','PEN',1208,1),
- (4857,'Pingtung County','PIF',1208,1),
- (4858,'Taichung County','TXQ',1208,1),
- (4859,'Tainan County','TNQ',1208,1),
- (4860,'Taipei County','TPQ',1208,1),
- (4861,'Taitung County','TTT',1208,1),
- (4862,'Taoyuan County','TAO',1208,1),
- (4863,'Yunlin County','YUN',1208,1),
- (4864,'Keelung City','KEE',1208,1),
- (4865,'Arusha','01',1210,1),
- (4866,'Dar-es-Salaam','02',1210,1),
- (4867,'Dodoma','03',1210,1),
- (4868,'Iringa','04',1210,1),
- (4869,'Kagera','05',1210,1),
- (4870,'Kaskazini Pemba','06',1210,1),
- (4871,'Kaskazini Unguja','07',1210,1),
- (4872,'Xigoma','08',1210,1),
- (4873,'Kilimanjaro','09',1210,1),
- (4874,'Rusini Pemba','10',1210,1),
- (4875,'Kusini Unguja','11',1210,1),
- (4876,'Lindi','12',1210,1),
- (4877,'Manyara','26',1210,1),
- (4878,'Mara','13',1210,1),
- (4879,'Mbeya','14',1210,1),
- (4880,'Mjini Magharibi','15',1210,1),
- (4881,'Morogoro','16',1210,1),
- (4882,'Mtwara','17',1210,1),
- (4883,'Pwani','19',1210,1),
- (4884,'Rukwa','20',1210,1),
- (4885,'Ruvuma','21',1210,1),
- (4886,'Shinyanga','22',1210,1),
- (4887,'Singida','23',1210,1),
- (4888,'Tabora','24',1210,1),
- (4889,'Tanga','25',1210,1),
- (4890,'Cherkas\'ka Oblast\'','71',1224,1),
- (4891,'Chernihivs\'ka Oblast\'','74',1224,1),
- (4892,'Chernivets\'ka Oblast\'','77',1224,1),
- (4893,'Dnipropetrovs\'ka Oblast\'','12',1224,1),
- (4894,'Donets\'ka Oblast\'','14',1224,1),
- (4895,'Ivano-Frankivs\'ka Oblast\'','26',1224,1),
- (4896,'Kharkivs\'ka Oblast\'','63',1224,1),
- (4897,'Khersons\'ka Oblast\'','65',1224,1),
- (4898,'Khmel\'nyts\'ka Oblast\'','68',1224,1),
- (4899,'Kirovohrads\'ka Oblast\'','35',1224,1),
- (4900,'Kyivs\'ka Oblast\'','32',1224,1),
- (4901,'Luhans\'ka Oblast\'','09',1224,1),
- (4902,'L\'vivs\'ka Oblast\'','46',1224,1),
- (4903,'Mykolaivs\'ka Oblast\'','48',1224,1),
- (4904,'Odes \'ka Oblast\'','51',1224,1),
- (4905,'Poltavs\'ka Oblast\'','53',1224,1),
- (4906,'Rivnens\'ka Oblast\'','56',1224,1),
- (4907,'Sums \'ka Oblast\'','59',1224,1),
- (4908,'Ternopil\'s\'ka Oblast\'','61',1224,1),
- (4909,'Vinnyts\'ka Oblast\'','05',1224,1),
- (4910,'Volyos\'ka Oblast\'','07',1224,1),
- (4911,'Zakarpats\'ka Oblast\'','21',1224,1),
- (4912,'Zaporiz\'ka Oblast\'','23',1224,1),
- (4913,'Zhytomyrs\'ka Oblast\'','18',1224,1),
- (4914,'Respublika Krym','43',1224,1),
- (4915,'Kyiv','30',1224,1),
- (4916,'Sevastopol','40',1224,1),
- (4917,'Adjumani','301',1223,1),
- (4918,'Apac','302',1223,1),
- (4919,'Arua','303',1223,1),
- (4920,'Bugiri','201',1223,1),
- (4921,'Bundibugyo','401',1223,1),
- (4922,'Bushenyi','402',1223,1),
- (4923,'Busia','202',1223,1),
- (4924,'Gulu','304',1223,1),
- (4925,'Hoima','403',1223,1),
- (4926,'Iganga','203',1223,1),
- (4927,'Jinja','204',1223,1),
- (4928,'Kabale','404',1223,1),
- (4929,'Kabarole','405',1223,1),
- (4930,'Kaberamaido','213',1223,1),
- (4931,'Kalangala','101',1223,1),
- (4932,'Kampala','102',1223,1),
- (4933,'Kamuli','205',1223,1),
- (4934,'Kamwenge','413',1223,1),
- (4935,'Kanungu','414',1223,1),
- (4936,'Kapchorwa','206',1223,1),
- (4937,'Kasese','406',1223,1),
- (4938,'Katakwi','207',1223,1),
- (4939,'Kayunga','112',1223,1),
- (4940,'Kibaale','407',1223,1),
- (4941,'Kiboga','103',1223,1),
- (4942,'Kisoro','408',1223,1),
- (4943,'Kitgum','305',1223,1),
- (4944,'Kotido','306',1223,1),
- (4945,'Kumi','208',1223,1),
- (4946,'Kyenjojo','415',1223,1),
- (4947,'Lira','307',1223,1),
- (4948,'Luwero','104',1223,1),
- (4949,'Masaka','105',1223,1),
- (4950,'Masindi','409',1223,1),
- (4951,'Mayuge','214',1223,1),
- (4952,'Mbale','209',1223,1),
- (4953,'Mbarara','410',1223,1),
- (4954,'Moroto','308',1223,1),
- (4955,'Moyo','309',1223,1),
- (4956,'Mpigi','106',1223,1),
- (4957,'Mubende','107',1223,1),
- (4958,'Mukono','108',1223,1),
- (4959,'Nakapiripirit','311',1223,1),
- (4960,'Nakasongola','109',1223,1),
- (4961,'Nebbi','310',1223,1),
- (4962,'Ntungamo','411',1223,1),
- (4963,'Pader','312',1223,1),
- (4964,'Pallisa','210',1223,1),
- (4965,'Rakai','110',1223,1),
- (4966,'Rukungiri','412',1223,1),
- (4967,'Sembabule','111',1223,1),
- (4968,'Sironko','215',1223,1),
- (4969,'Soroti','211',1223,1),
- (4970,'Tororo','212',1223,1),
- (4971,'Wakiso','113',1223,1),
- (4972,'Yumbe','313',1223,1),
- (4973,'Baker Island','81',1227,1),
- (4974,'Howland Island','84',1227,1),
- (4975,'Jarvis Island','86',1227,1),
- (4976,'Johnston Atoll','67',1227,1),
- (4977,'Kingman Reef','89',1227,1),
- (4978,'Midway Islands','71',1227,1),
- (4979,'Navassa Island','76',1227,1),
- (4980,'Palmyra Atoll','95',1227,1),
- (4981,'Wake Island','79',1227,1),
- (4982,'Artigsa','AR',1229,1),
- (4983,'Canelones','CA',1229,1),
- (4984,'Cerro Largo','CL',1229,1),
- (4985,'Colonia','CO',1229,1),
- (4986,'Durazno','DU',1229,1),
- (4987,'Flores','FS',1229,1),
- (4988,'Lavalleja','LA',1229,1),
- (4989,'Maldonado','MA',1229,1),
- (4990,'Montevideo','MO',1229,1),
- (4991,'Paysandu','PA',1229,1),
- (4992,'Rivera','RV',1229,1),
- (4993,'Rocha','RO',1229,1),
- (4994,'Salto','SA',1229,1),
- (4995,'Soriano','SO',1229,1),
- (4996,'Tacuarembo','TA',1229,1),
- (4997,'Treinta y Tres','TT',1229,1),
- (4998,'Toshkent (city)','TK',1230,1),
- (4999,'Qoraqalpogiston Respublikasi','QR',1230,1),
- (5000,'Andijon','AN',1230,1),
- (5001,'Buxoro','BU',1230,1),
- (5002,'Farg\'ona','FA',1230,1),
- (5003,'Jizzax','JI',1230,1),
- (5004,'Khorazm','KH',1230,1),
- (5005,'Namangan','NG',1230,1),
- (5006,'Navoiy','NW',1230,1),
- (5007,'Qashqadaryo','QA',1230,1),
- (5008,'Samarqand','SA',1230,1),
- (5009,'Sirdaryo','SI',1230,1),
- (5010,'Surxondaryo','SU',1230,1),
- (5011,'Toshkent','TO',1230,1),
- (5012,'Xorazm','XO',1230,1),
- (5013,'Distrito Federal','A',1232,1),
- (5014,'Anzoategui','B',1232,1),
- (5015,'Apure','C',1232,1),
- (5016,'Aragua','D',1232,1),
- (5017,'Barinas','E',1232,1),
- (5018,'Carabobo','G',1232,1),
- (5019,'Cojedes','H',1232,1),
- (5020,'Falcon','I',1232,1),
- (5021,'Guarico','J',1232,1),
- (5022,'Lara','K',1232,1),
- (5023,'Merida','L',1232,1),
- (5024,'Miranda','M',1232,1),
- (5025,'Monagas','N',1232,1),
- (5026,'Nueva Esparta','O',1232,1),
- (5027,'Portuguesa','P',1232,1),
- (5028,'Tachira','S',1232,1),
- (5029,'Trujillo','T',1232,1),
- (5030,'Vargas','X',1232,1),
- (5031,'Yaracuy','U',1232,1),
- (5032,'Zulia','V',1232,1),
- (5033,'Delta Amacuro','Y',1232,1),
- (5034,'Dependencias Federales','W',1232,1),
- (5035,'An Giang','44',1233,1),
- (5036,'Ba Ria - Vung Tau','43',1233,1),
- (5037,'Bac Can','53',1233,1),
- (5038,'Bac Giang','54',1233,1),
- (5039,'Bac Lieu','55',1233,1),
- (5040,'Bac Ninh','56',1233,1),
- (5041,'Ben Tre','50',1233,1),
- (5042,'Binh Dinh','31',1233,1),
- (5043,'Binh Duong','57',1233,1),
- (5044,'Binh Phuoc','58',1233,1),
- (5045,'Binh Thuan','40',1233,1),
- (5046,'Ca Mau','59',1233,1),
- (5047,'Can Tho','48',1233,1),
- (5048,'Cao Bang','04',1233,1),
- (5049,'Da Nang, thanh pho','60',1233,1),
- (5050,'Dong Nai','39',1233,1),
- (5051,'Dong Thap','45',1233,1),
- (5052,'Gia Lai','30',1233,1),
- (5053,'Ha Giang','03',1233,1),
- (5054,'Ha Nam','63',1233,1),
- (5055,'Ha Noi, thu do','64',1233,1),
- (5056,'Ha Tay','15',1233,1),
- (5057,'Ha Tinh','23',1233,1),
- (5058,'Hai Duong','61',1233,1),
- (5059,'Hai Phong, thanh pho','62',1233,1),
- (5060,'Hoa Binh','14',1233,1),
- (5061,'Ho Chi Minh, thanh pho [Sai Gon]','65',1233,1),
- (5062,'Hung Yen','66',1233,1),
- (5063,'Khanh Hoa','34',1233,1),
- (5064,'Kien Giang','47',1233,1),
- (5065,'Kon Tum','28',1233,1),
- (5066,'Lai Chau','01',1233,1),
- (5067,'Lam Dong','35',1233,1),
- (5068,'Lang Son','09',1233,1),
- (5069,'Lao Cai','02',1233,1),
- (5070,'Long An','41',1233,1),
- (5071,'Nam Dinh','67',1233,1),
- (5072,'Nghe An','22',1233,1),
- (5073,'Ninh Binh','18',1233,1),
- (5074,'Ninh Thuan','36',1233,1),
- (5075,'Phu Tho','68',1233,1),
- (5076,'Phu Yen','32',1233,1),
- (5077,'Quang Binh','24',1233,1),
- (5078,'Quang Nam','27',1233,1),
- (5079,'Quang Ngai','29',1233,1),
- (5080,'Quang Ninh','13',1233,1),
- (5081,'Quang Tri','25',1233,1),
- (5082,'Soc Trang','52',1233,1),
- (5083,'Son La','05',1233,1),
- (5084,'Tay Ninh','37',1233,1),
- (5085,'Thai Binh','20',1233,1),
- (5086,'Thai Nguyen','69',1233,1),
- (5087,'Thanh Hoa','21',1233,1),
- (5088,'Thua Thien-Hue','26',1233,1),
- (5089,'Tien Giang','46',1233,1),
- (5090,'Tra Vinh','51',1233,1),
- (5091,'Tuyen Quang','07',1233,1),
- (5092,'Vinh Long','49',1233,1),
- (5093,'Vinh Phuc','70',1233,1),
- (5094,'Yen Bai','06',1233,1),
- (5095,'Malampa','MAP',1231,1),
- (5096,'Penama','PAM',1231,1),
- (5097,'Sanma','SAM',1231,1),
- (5098,'Shefa','SEE',1231,1),
- (5099,'Tafea','TAE',1231,1),
- (5100,'Torba','TOB',1231,1),
- (5101,'A\'ana','AA',1185,1),
- (5102,'Aiga-i-le-Tai','AL',1185,1),
- (5103,'Atua','AT',1185,1),
- (5104,'Fa\'aaaleleaga','FA',1185,1),
- (5105,'Gaga\'emauga','GE',1185,1),
- (5106,'Gagaifomauga','GI',1185,1),
- (5107,'Palauli','PA',1185,1),
- (5108,'Satupa\'itea','SA',1185,1),
- (5109,'Tuamasaga','TU',1185,1),
- (5110,'Va\'a-o-Fonoti','VF',1185,1),
- (5111,'Vaisigano','VS',1185,1),
- (5112,'Crna Gora','CG',1243,1),
- (5113,'Srbija','SR',1242,1),
- (5114,'Kosovo-Metohija','KM',1242,1),
- (5115,'Vojvodina','VO',1242,1),
- (5116,'Abyan','AB',1237,1),
- (5117,'Adan','AD',1237,1),
- (5118,'Ad Dali','DA',1237,1),
- (5119,'Al Bayda\'','BA',1237,1),
- (5120,'Al Hudaydah','MU',1237,1),
- (5121,'Al Mahrah','MR',1237,1),
- (5122,'Al Mahwit','MW',1237,1),
- (5123,'Amran','AM',1237,1),
- (5124,'Dhamar','DH',1237,1),
- (5125,'Hadramawt','HD',1237,1),
- (5126,'Hajjah','HJ',1237,1),
- (5127,'Ibb','IB',1237,1),
- (5128,'Lahij','LA',1237,1),
- (5129,'Ma\'rib','MA',1237,1),
- (5130,'Sa\'dah','SD',1237,1),
- (5131,'San\'a\'','SN',1237,1),
- (5132,'Shabwah','SH',1237,1),
- (5133,'Ta\'izz','TA',1237,1),
- (5134,'Eastern Cape','EC',1196,1),
- (5135,'Free State','FS',1196,1),
- (5136,'Gauteng','GT',1196,1),
- (5137,'Kwazulu-Natal','NL',1196,1),
- (5138,'Mpumalanga','MP',1196,1),
- (5139,'Northern Cape','NC',1196,1),
- (5140,'Limpopo','NP',1196,1),
- (5141,'Western Cape','WC',1196,1),
- (5142,'Copperbelt','08',1239,1),
- (5143,'Luapula','04',1239,1),
- (5144,'Lusaka','09',1239,1),
- (5145,'North-Western','06',1239,1),
- (5146,'Bulawayo','BU',1240,1),
- (5147,'Harare','HA',1240,1),
- (5148,'Manicaland','MA',1240,1),
- (5149,'Mashonaland Central','MC',1240,1),
- (5150,'Mashonaland East','ME',1240,1),
- (5151,'Mashonaland West','MW',1240,1),
- (5152,'Masvingo','MV',1240,1),
- (5153,'Matabeleland North','MN',1240,1),
- (5154,'Matabeleland South','MS',1240,1),
- (5155,'Midlands','MI',1240,1),
- (5156,'South Karelia','SK',1075,1),
- (5157,'South Ostrobothnia','SO',1075,1),
- (5158,'Etelä-Savo','ES',1075,1),
- (5159,'Häme','HH',1075,1),
- (5160,'Itä-Uusimaa','IU',1075,1),
- (5161,'Kainuu','KA',1075,1),
- (5162,'Central Ostrobothnia','CO',1075,1),
- (5163,'Central Finland','CF',1075,1),
- (5164,'Kymenlaakso','KY',1075,1),
- (5165,'Lapland','LA',1075,1),
- (5166,'Tampere Region','TR',1075,1),
- (5167,'Ostrobothnia','OB',1075,1),
- (5168,'North Karelia','NK',1075,1),
- (5169,'Northern Ostrobothnia','NO',1075,1),
- (5170,'Northern Savo','NS',1075,1),
- (5171,'Päijät-Häme','PH',1075,1),
- (5172,'Satakunta','SK',1075,1),
- (5173,'Uusimaa','UM',1075,1),
- (5174,'South-West Finland','SW',1075,1),
- (5175,'Ã…land','AL',1075,1),
- (5176,'Limburg','LI',1152,1),
- (5177,'Central and Western','CW',1098,1),
- (5178,'Eastern','EA',1098,1),
- (5179,'Southern','SO',1098,1),
- (5180,'Wan Chai','WC',1098,1),
- (5181,'Kowloon City','KC',1098,1),
- (5182,'Kwun Tong','KU',1098,1),
- (5183,'Sham Shui Po','SS',1098,1),
- (5184,'Wong Tai Sin','WT',1098,1),
- (5185,'Yau Tsim Mong','YT',1098,1),
- (5186,'Islands','IS',1098,1),
- (5187,'Kwai Tsing','KI',1098,1),
- (5188,'North','NO',1098,1),
- (5189,'Sai Kung','SK',1098,1),
- (5190,'Sha Tin','ST',1098,1),
- (5191,'Tai Po','TP',1098,1),
- (5192,'Tsuen Wan','TW',1098,1),
- (5193,'Tuen Mun','TM',1098,1),
- (5194,'Yuen Long','YL',1098,1),
- (5195,'Manchester','MR',1108,1),
- (5196,'Al Manāmah (Al ‘Āşimah)','13',1016,1),
- (5197,'Al Janūbīyah','14',1016,1),
- (5199,'Al Wusţá','16',1016,1),
- (5200,'Ash Shamālīyah','17',1016,1),
- (5201,'Jenin','_A',1165,1),
- (5202,'Tubas','_B',1165,1),
- (5203,'Tulkarm','_C',1165,1),
- (5204,'Nablus','_D',1165,1),
- (5205,'Qalqilya','_E',1165,1),
- (5206,'Salfit','_F',1165,1),
- (5207,'Ramallah and Al-Bireh','_G',1165,1),
- (5208,'Jericho','_H',1165,1),
- (5209,'Jerusalem','_I',1165,1),
- (5210,'Bethlehem','_J',1165,1),
- (5211,'Hebron','_K',1165,1),
- (5212,'North Gaza','_L',1165,1),
- (5213,'Gaza','_M',1165,1),
- (5214,'Deir el-Balah','_N',1165,1),
- (5215,'Khan Yunis','_O',1165,1),
- (5216,'Rafah','_P',1165,1),
- (5217,'Brussels','BRU',1020,1),
- (5218,'Distrito Federal','DIF',1140,1),
- (5219,'Taichung City','TXG',1208,1),
- (5220,'Kaohsiung City','KHH',1208,1),
- (5221,'Taipei City','TPE',1208,1),
- (5222,'Chiayi City','CYI',1208,1),
- (5223,'Hsinchu City','HSZ',1208,1),
- (5224,'Tainan City','TNN',1208,1),
- (9000,'North West','NW',1196,1),
- (9986,'Tyne and Wear','TWR',1226,1),
- (9988,'Greater Manchester','GTM',1226,1),
- (9989,'Co Tyrone','TYR',1226,1),
- (9990,'West Yorkshire','WYK',1226,1),
- (9991,'South Yorkshire','SYK',1226,1),
- (9992,'Merseyside','MSY',1226,1),
- (9993,'Berkshire','BRK',1226,1),
- (9994,'West Midlands','WMD',1226,1),
- (9998,'West Glamorgan','WGM',1226,1),
- (9999,'London','LON',1226,1),
- (10000,'Carbonia-Iglesias','CI',1107,1),
- (10001,'Olbia-Tempio','OT',1107,1),
- (10002,'Medio Campidano','VS',1107,1),
- (10003,'Ogliastra','OG',1107,1),
- (10009,'Jura','39',1076,1),
- (10010,'Barletta-Andria-Trani','BT',1107,1),
- (10011,'Fermo','FM',1107,1),
- (10012,'Monza e Brianza','MB',1107,1),
- (10013,'Clwyd','CWD',1226,1),
- (10015,'South Glamorgan','SGM',1226,1),
- (10016,'Artibonite','AR',1094,1),
- (10017,'Centre','CE',1094,1),
- (10018,'Nippes','NI',1094,1),
- (10019,'Nord','ND',1094,1),
- (10020,'La Rioja','F',1010,1),
- (10021,'Andorra la Vella','07',1005,1),
- (10022,'Canillo','02',1005,1),
- (10023,'Encamp','03',1005,1),
- (10024,'Escaldes-Engordany','08',1005,1),
- (10025,'La Massana','04',1005,1),
- (10026,'Ordino','05',1005,1),
- (10027,'Sant Julia de Loria','06',1005,1),
- (10028,'Abaco Islands','AB',1212,1),
- (10029,'Andros Island','AN',1212,1),
- (10030,'Berry Islands','BR',1212,1),
- (10031,'Eleuthera','EL',1212,1),
- (10032,'Grand Bahama','GB',1212,1),
- (10033,'Rum Cay','RC',1212,1),
- (10034,'San Salvador Island','SS',1212,1),
- (10035,'Kongo central','01',1050,1),
- (10036,'Kwango','02',1050,1),
- (10037,'Kwilu','03',1050,1),
- (10038,'Mai-Ndombe','04',1050,1),
- (10039,'Kasai','05',1050,1),
- (10040,'Lulua','06',1050,1),
- (10041,'Lomami','07',1050,1),
- (10042,'Sankuru','08',1050,1),
- (10043,'Ituri','09',1050,1),
- (10044,'Haut-Uele','10',1050,1),
- (10045,'Tshopo','11',1050,1),
- (10046,'Bas-Uele','12',1050,1),
- (10047,'Nord-Ubangi','13',1050,1),
- (10048,'Mongala','14',1050,1),
- (10049,'Sud-Ubangi','15',1050,1),
- (10050,'Tshuapa','16',1050,1),
- (10051,'Haut-Lomami','17',1050,1),
- (10052,'Lualaba','18',1050,1),
- (10053,'Haut-Katanga','19',1050,1),
- (10054,'Tanganyika','20',1050,1),
- (10055,'Toledo','TO',1198,1),
- (10056,'Córdoba','CO',1198,1),
- (10057,'Metropolitan Manila','MNL',1170,1),
- (10058,'La Paz','LP',1097,1),
- (10059,'Yinchuan','YN',1045,1),
- (10060,'Shizuishan','SZ',1045,1),
- (10061,'Wuzhong','WZ',1045,1),
- (10062,'Guyuan','GY',1045,1),
- (10063,'Zhongwei','ZW',1045,1),
- (10064,'Luxembourg','LU',1126,1),
- (10065,'Aizkraukles novads','002',1119,1),
- (10066,'Jaunjelgavas novads','038',1119,1),
- (10067,'Pļaviņu novads','072',1119,1),
- (10068,'Kokneses novads','046',1119,1),
- (10069,'Neretas novads','065',1119,1),
- (10070,'Skrīveru novads','092',1119,1),
- (10071,'Alūksnes novads','007',1119,1),
- (10072,'Apes novads','009',1119,1),
- (10073,'Balvu novads','015',1119,1),
- (10074,'Viļakas novads','108',1119,1),
- (10075,'Baltinavas novads','014',1119,1),
- (10076,'Rugāju novads','082',1119,1),
- (10077,'Bauskas novads','016',1119,1),
- (10078,'Iecavas novads','034',1119,1),
- (10079,'Rundāles novads','083',1119,1),
- (10080,'Vecumnieku novads','105',1119,1),
- (10081,'CÄ“su novads','022',1119,1),
- (10082,'LÄ«gatnes novads','055',1119,1),
- (10083,'Amatas novads','008',1119,1),
- (10084,'Jaunpiebalgas novads','039',1119,1),
- (10085,'Priekuļu novads','075',1119,1),
- (10086,'Pārgaujas novads','070',1119,1),
- (10087,'Raunas novads','076',1119,1),
- (10088,'Vecpiebalgas novads','104',1119,1),
- (10089,'Daugavpils novads','025',1119,1),
- (10090,'Ilūkstes novads','036',1119,1),
- (10091,'Dobeles novads','026',1119,1),
- (10092,'Auces novads','010',1119,1),
- (10093,'TÄ“rvetes novads','098',1119,1),
- (10094,'Gulbenes novads','033',1119,1),
- (10095,'Jelgavas novads','041',1119,1),
- (10096,'Ozolnieku novads','069',1119,1),
- (10097,'JÄ“kabpils novads','042',1119,1),
- (10098,'Aknīstes novads','004',1119,1),
- (10099,'Viesītes novads','107',1119,1),
- (10100,'Krustpils novads','049',1119,1),
- (10101,'Salas novads','085',1119,1),
- (10102,'Krāslavas novads','047',1119,1),
- (10103,'Dagdas novads','024',1119,1),
- (10104,'Aglonas novads','001',1119,1),
- (10105,'Kuldīgas novads','050',1119,1),
- (10106,'Skrundas novads','093',1119,1),
- (10107,'Alsungas novads','006',1119,1),
- (10108,'Aizputes novads','003',1119,1),
- (10109,'Durbes novads','028',1119,1),
- (10110,'Grobiņas novads','032',1119,1),
- (10111,'Pāvilostas novads','071',1119,1),
- (10112,'Priekules novads','074',1119,1),
- (10113,'NÄ«cas novads','066',1119,1),
- (10114,'Rucavas novads','081',1119,1),
- (10115,'Vaiņodes novads','100',1119,1),
- (10116,'Limbažu novads','054',1119,1),
- (10117,'Alojas novads','005',1119,1),
- (10118,'Salacgrīvas novads','086',1119,1),
- (10119,'Ludzas novads','058',1119,1),
- (10120,'Kārsavas novads','044',1119,1),
- (10121,'Zilupes novads','110',1119,1),
- (10122,'Ciblas novads','023',1119,1),
- (10123,'Madonas novads','059',1119,1),
- (10124,'Cesvaines novads','021',1119,1),
- (10125,'Lubānas novads','057',1119,1),
- (10126,'Varakļānu novads','102',1119,1),
- (10127,'Ērgļu novads','030',1119,1),
- (10128,'Ogres novads','067',1119,1),
- (10129,'Ikšķiles novads','035',1119,1),
- (10130,'Ķeguma novads','051',1119,1),
- (10131,'Lielvārdes novads','053',1119,1),
- (10132,'Preiļu novads','073',1119,1),
- (10133,'Līvānu novads','056',1119,1),
- (10134,'Riebiņu novads','078',1119,1),
- (10135,'Vārkavas novads','103',1119,1),
- (10136,'RÄ“zeknes novads','077',1119,1),
- (10137,'Viļānu novads','109',1119,1),
- (10138,'Baldones novads','013',1119,1),
- (10139,'Ķekavas novads','052',1119,1),
- (10140,'Olaines novads','068',1119,1),
- (10141,'Salaspils novads','087',1119,1),
- (10142,'Saulkrastu novads','089',1119,1),
- (10143,'Siguldas novads','091',1119,1),
- (10144,'Inčukalna novads','037',1119,1),
- (10145,'Ādažu novads','011',1119,1),
- (10146,'Babītes novads','012',1119,1),
- (10147,'Carnikavas novads','020',1119,1),
- (10148,'Garkalnes novads','031',1119,1),
- (10149,'Krimuldas novads','048',1119,1),
- (10150,'Mālpils novads','061',1119,1),
- (10151,'Mārupes novads','062',1119,1),
- (10152,'Ropažu novads','080',1119,1),
- (10153,'SÄ“jas novads','090',1119,1),
- (10154,'Stopiņu novads','095',1119,1),
- (10155,'Saldus novads','088',1119,1),
- (10156,'Brocēnu novads','018',1119,1),
- (10157,'Talsu novads','097',1119,1),
- (10158,'Dundagas novads','027',1119,1),
- (10159,'MÄ“rsraga novads','063',1119,1),
- (10160,'Rojas novads','079',1119,1),
- (10161,'Tukuma novads','099',1119,1),
- (10162,'Kandavas novads','043',1119,1),
- (10163,'Engures novads','029',1119,1),
- (10164,'Jaunpils novads','040',1119,1),
- (10165,'Valkas novads','101',1119,1),
- (10166,'Smiltenes novads','094',1119,1),
- (10167,'Strenču novads','096',1119,1),
- (10168,'Kocēnu novads','045',1119,1),
- (10169,'Mazsalacas novads','060',1119,1),
- (10170,'RÅ«jienas novads','084',1119,1),
- (10171,'Beverīnas novads','017',1119,1),
- (10172,'Burtnieku novads','019',1119,1),
- (10173,'Naukšēnu novads','064',1119,1),
- (10174,'Ventspils novads','106',1119,1),
- (10175,'JÄ“kabpils','JKB',1119,1),
- (10176,'Valmiera','VMR',1119,1),
- (10177,'Florida','FL',1229,1),
- (10178,'Rio Negro','RN',1229,1),
- (10179,'San Jose','SJ',1229,1),
- (10180,'Plateau','PL',1157,1),
- (10181,'Pieria','61',1085,1),
- (10182,'Los Rios','LR',1044,1),
- (10183,'Arica y Parinacota','AP',1044,1),
- (10184,'Amazonas','AMA',1169,1),
- (10185,'Kalimantan Tengah','KT',1102,1),
- (10186,'Sulawesi Barat','SR',1102,1),
- (10187,'Kalimantan Utara','KU',1102,1),
- (10188,'Ankaran','86',1193,1),
- (10189,'Apače','87',1193,1),
- (10190,'Cirkulane','88',1193,1),
- (10191,'Gorje','89',1193,1),
- (10192,'Kostanjevica na Krki','90',1193,1),
- (10193,'Log-Dragomer','91',1193,1),
- (10194,'Makole','92',1193,1),
- (10195,'Mirna','93',1193,1),
- (10196,'Mokronog-Trebelno','94',1193,1),
- (10197,'Odranci','95',1193,1),
- (10198,'Oplotnica','96',1193,1),
- (10199,'Ormož','97',1193,1),
- (10200,'Osilnica','98',1193,1),
- (10201,'Pesnica','99',1193,1),
- (10202,'Piran','100',1193,1),
- (10203,'Pivka','101',1193,1),
- (10204,'Podčetrtek','102',1193,1),
- (10205,'Podlehnik','103',1193,1),
- (10206,'Podvelka','104',1193,1),
- (10207,'Poljčane','105',1193,1),
- (10208,'Polzela','106',1193,1),
- (10209,'Postojna','107',1193,1),
- (10210,'Prebold','108',1193,1),
- (10211,'Preddvor','109',1193,1),
- (10212,'Prevalje','110',1193,1),
- (10213,'Ptuj','111',1193,1),
- (10214,'Puconci','112',1193,1),
- (10215,'Rače-Fram','113',1193,1),
- (10216,'Radeče','114',1193,1),
- (10217,'Radenci','115',1193,1),
- (10218,'Radlje ob Dravi','139',1193,1),
- (10219,'Radovljica','145',1193,1),
- (10220,'Ravne na Koroškem','171',1193,1),
- (10221,'Razkrižje','172',1193,1),
- (10222,'Rečica ob Savinji','173',1193,1),
- (10223,'Renče-Vogrsko','174',1193,1),
- (10224,'Ribnica','175',1193,1),
- (10225,'Ribnica na Pohorju','176',1193,1),
- (10226,'Rogaška Slatina','177',1193,1),
- (10227,'Rogašovci','178',1193,1),
- (10228,'Rogatec','179',1193,1),
- (10229,'Ruše','180',1193,1),
- (10230,'Selnica ob Dravi','195',1193,1),
- (10231,'Semič','196',1193,1),
- (10232,'Å entrupert','197',1193,1),
- (10233,'Sevnica','198',1193,1),
- (10234,'Sežana','199',1193,1),
- (10235,'Slovenj Gradec','200',1193,1),
- (10236,'Slovenska Bistrica','201',1193,1),
- (10237,'Slovenske Konjice','202',1193,1),
- (10238,'Šmarješke Toplice','203',1193,1),
- (10239,'Sodražica','204',1193,1),
- (10240,'Solčava','205',1193,1),
- (10241,'Središče ob Dravi','206',1193,1),
- (10242,'Starše','207',1193,1),
- (10243,'Straža','208',1193,1),
- (10244,'Sveta Trojica v Slovenskih goricah','209',1193,1),
- (10245,'Sveti Jurij v Slovenskih goricah','210',1193,1),
- (10246,'Sveti Tomaž','211',1193,1),
- (10247,'Vodice','212',1193,1),
- (10248,'Abkhazia','AB',1081,1),
- (10249,'Adjara','AJ',1081,1),
- (10250,'Tbilisi','TB',1081,1),
- (10251,'Guria','GU',1081,1),
- (10252,'Imereti','IM',1081,1),
- (10253,'Kakheti','KA',1081,1),
- (10254,'Kvemo Kartli','KK',1081,1),
- (10255,'Mtskheta-Mtianeti','MM',1081,1),
- (10256,'Racha-Lechkhumi and Kvemo Svaneti','RL',1081,1),
- (10257,'Samegrelo-Zemo Svaneti','SZ',1081,1),
- (10258,'Samtskhe-Javakheti','SJ',1081,1),
- (10259,'Shida Kartli','SK',1081,1),
- (10260,'Central','C',1074,1),
- (10261,'Punjab','PB',1163,1),
- (10262,'La Libertad','LI',1066,1),
- (10263,'La Paz','PA',1066,1),
- (10264,'La Union','UN',1066,1),
- (10265,'Littoral','LT',1038,1),
- (10266,'Nord-Ouest','NW',1038,1),
- (10267,'Telangana','TG',1101,1),
- (10268,'Ash Sharqiyah','04',1187,1),
- (10269,'Guadeloupe','GP',1076,1),
- (10270,'Martinique','MQ',1076,1),
- (10271,'Guyane','GF',1076,1),
- (10272,'La Réunion','RE',1076,1),
- (10273,'Mayotte','YT',1076,1),
- (10274,'Baringo','01',1112,1),
- (10275,'Bomet','02',1112,1),
- (10276,'Bungoma','03',1112,1),
- (10277,'Busia','04',1112,1),
- (10278,'Elgeyo/Marakwet','05',1112,1),
- (10279,'Embu','06',1112,1),
- (10280,'Garissa','07',1112,1),
- (10281,'Homa Bay','08',1112,1),
- (10282,'Isiolo','09',1112,1),
- (10283,'Kajiado','10',1112,1),
- (10284,'Kakamega','11',1112,1),
- (10285,'Kericho','12',1112,1),
- (10286,'Kiambu','13',1112,1),
- (10287,'Kilifi','14',1112,1),
- (10288,'Kirinyaga','15',1112,1),
- (10289,'Kisii','16',1112,1),
- (10290,'Kisumu','17',1112,1),
- (10291,'Kitui','18',1112,1),
- (10292,'Kwale','19',1112,1),
- (10293,'Laikipia','20',1112,1),
- (10294,'Lamu','21',1112,1),
- (10295,'Machakos','22',1112,1),
- (10296,'Makueni','23',1112,1),
- (10297,'Mandera','24',1112,1),
- (10298,'Marsabit','25',1112,1),
- (10299,'Meru','26',1112,1),
- (10300,'Migori','27',1112,1),
- (10301,'Mombasa','28',1112,1),
- (10302,'Murang\'a','29',1112,1),
- (10303,'Nairobi City','30',1112,1),
- (10304,'Nakuru','31',1112,1),
- (10305,'Nandi','32',1112,1),
- (10306,'Narok','33',1112,1),
- (10307,'Nyamira','34',1112,1),
- (10308,'Nyandarua','35',1112,1),
- (10309,'Nyeri','36',1112,1),
- (10310,'Samburu','37',1112,1),
- (10311,'Siaya','38',1112,1),
- (10312,'Taita/Taveta','39',1112,1),
- (10313,'Tana River','40',1112,1),
- (10314,'Tharaka-Nithi','41',1112,1),
- (10315,'Trans Nzoia','42',1112,1),
- (10316,'Turkana','43',1112,1),
- (10317,'Uasin Gishu','44',1112,1),
- (10318,'Vihiga','45',1112,1),
- (10319,'Wajir','46',1112,1),
- (10320,'West Pokot','47',1112,1),
- (10321,'Chandigarh','CH',1101,1),
- (10322,'Central','CP',1083,1),
- (10323,'Eastern','EP',1083,1),
- (10324,'Northern','NP',1083,1),
- (10325,'Western','WP',1083,1),
- (10326,'Saint Kitts','K',1181,1),
- (10327,'Nevis','N',1181,1),
- (10328,'Eastern','E',1190,1),
- (10329,'Northern','N',1190,1),
- (10330,'Southern','S',1190,1),
- (10331,'Dushanbe','DU',1209,1),
- (10332,'Nohiyahoi Tobei Jumhurí','RA',1209,1),
- (10333,'Wallis-et-Futuna','WF',1076,1),
- (10334,'Nouvelle-Calédonie','NC',1076,1),
- (10335,'Haute-Marne','52',1076,1),
- (10336,'Saint George','03',1009,1),
- (10337,'Saint John','04',1009,1),
- (10338,'Saint Mary','05',1009,1),
- (10339,'Saint Paul','06',1009,1),
- (10340,'Saint Peter','07',1009,1),
- (10341,'Saint Philip','08',1009,1),
- (10342,'Barbuda','10',1009,1),
- (10343,'Redonda','11',1009,1),
- (10344,'Christ Church','01',1018,1),
- (10345,'Saint Andrew','02',1018,1),
- (10346,'Saint George','03',1018,1),
- (10347,'Saint James','04',1018,1),
- (10348,'Saint John','05',1018,1),
- (10349,'Saint Joseph','06',1018,1),
- (10350,'Saint Lucy','07',1018,1),
- (10351,'Saint Michael','08',1018,1),
- (10352,'Saint Peter','09',1018,1),
- (10353,'Saint Philip','10',1018,1),
- (10354,'Saint Thomas','11',1018,1),
- (10355,'Estuaire','01',1080,1),
- (10356,'Haut-Ogooué','02',1080,1),
- (10357,'Moyen-Ogooué','03',1080,1),
- (10358,'Ngounié','04',1080,1),
- (10359,'Nyanga','05',1080,1),
- (10360,'Ogooué-Ivindo','06',1080,1),
- (10361,'Ogooué-Lolo','07',1080,1),
- (10362,'Ogooué-Maritime','08',1080,1),
- (10363,'Woleu-Ntem','09',1080,1),
- (10364,'Monmouthshire','MON',1226,1),
- (10365,'Antrim and Newtownabbey','ANN',1226,1),
- (10366,'Ards and North Down','AND',1226,1),
- (10367,'Armagh City, Banbridge and Craigavon','ABC',1226,1),
- (10368,'Belfast','BFS',1226,1),
- (10369,'Causeway Coast and Glens','CCG',1226,1),
- (10370,'Derry City and Strabane','DRS',1226,1),
- (10371,'Fermanagh and Omagh','FMO',1226,1),
- (10372,'Lisburn and Castlereagh','LBC',1226,1),
- (10373,'Mid and East Antrim','MEA',1226,1),
- (10374,'Mid Ulster','MUL',1226,1),
- (10375,'Newry, Mourne and Down','NMD',1226,1),
- (10376,'Bridgend','BGE',1226,1),
- (10377,'Caerphilly','CAY',1226,1),
- (10378,'Cardiff','CRF',1226,1),
- (10379,'Carmarthenshire','CMN',1226,1),
- (10380,'Ceredigion','CGN',1226,1),
- (10381,'Conwy','CWY',1226,1),
- (10382,'Denbighshire','DEN',1226,1),
- (10383,'Flintshire','FLN',1226,1),
- (10384,'Isle of Anglesey','AGY',1226,1),
- (10385,'Merthyr Tydfil','MTY',1226,1),
- (10386,'Neath Port Talbot','NTL',1226,1),
- (10387,'Newport','NWP',1226,1),
- (10388,'Pembrokeshire','PEM',1226,1),
- (10389,'Rhondda, Cynon, Taff','RCT',1226,1),
- (10390,'Swansea','SWA',1226,1),
- (10391,'Torfaen','TOF',1226,1),
- (10392,'Wrexham','WRX',1226,1),
- (10393,'Sejong','50',1115,1),
- (10394,'Dinagat Islands','DIN',1170,1),
- (10395,'Huila','HUI',1048,1),
- (10396,'Devonshire','DEV',1023,1),
- (10397,'Hamilton Parish','HAM',1023,1),
- (10398,'City of Hamilton','HA',1023,1),
- (10399,'Paget','PAG',1023,1),
- (10400,'Pembroke','PEM',1023,1),
- (10401,'Town of St. George','SG',1023,1),
- (10402,'Saint George\'s','SGE',1023,1),
- (10403,'Sandys','SAN',1023,1),
- (10404,'Smiths','SMI',1023,1),
- (10405,'Southampton','SOU',1023,1),
- (10406,'Warwick','WAR',1023,1),
- (10407,'Dādra and Nagar Haveli and Damān and Diu','DH',1101,1),
- (10408,'Ladākh','LA',1101,1),
- (10409,'Capellen','CA',1126,1),
- (10410,'Clervaux','CL',1126,1),
- (10411,'Echternach','EC',1126,1),
- (10412,'Esch-sur-Alzette','ES',1126,1),
- (10413,'Mersch','ME',1126,1),
- (10414,'Redange-sur-Attert','RD',1126,1),
- (10415,'Remich','RM',1126,1),
- (10416,'Vianden','VD',1126,1),
- (10417,'Wiltz','WI',1126,1);
+ (1051,'American Samoa','AS',1228,1),
+ (1052,'Guam','GU',1228,1),
+ (1053,'Northern Mariana Islands','MP',1228,1),
+ (1054,'Puerto Rico','PR',1228,1),
+ (1055,'Virgin Islands','VI',1228,1),
+ (1056,'United States Minor Outlying Islands','UM',1228,1),
+ (1057,'Armed Forces Europe','AE',1228,1),
+ (1058,'Armed Forces Americas','AA',1228,1),
+ (1059,'Armed Forces Pacific','AP',1228,1),
+ (1060,'Alberta','AB',1039,1),
+ (1061,'British Columbia','BC',1039,1),
+ (1062,'Manitoba','MB',1039,1),
+ (1063,'New Brunswick','NB',1039,1),
+ (1064,'Newfoundland and Labrador','NL',1039,1),
+ (1065,'Northwest Territories','NT',1039,1),
+ (1066,'Nova Scotia','NS',1039,1),
+ (1067,'Nunavut','NU',1039,1),
+ (1068,'Ontario','ON',1039,1),
+ (1069,'Prince Edward Island','PE',1039,1),
+ (1070,'Quebec','QC',1039,1),
+ (1071,'Saskatchewan','SK',1039,1),
+ (1072,'Yukon Territory','YT',1039,1),
+ (1073,'Maharashtra','MH',1101,1),
+ (1074,'Karnataka','KA',1101,1),
+ (1075,'Andhra Pradesh','AP',1101,1),
+ (1076,'Arunachal Pradesh','AR',1101,1),
+ (1077,'Assam','AS',1101,1),
+ (1078,'Bihar','BR',1101,1),
+ (1079,'Chhattisgarh','CG',1101,1),
+ (1080,'Goa','GA',1101,1),
+ (1081,'Gujarat','GJ',1101,1),
+ (1082,'Haryana','HR',1101,1),
+ (1083,'Himachal Pradesh','HP',1101,1),
+ (1084,'Jammu and Kashmir','JK',1101,1),
+ (1085,'Jharkhand','JH',1101,1),
+ (1086,'Kerala','KL',1101,1),
+ (1087,'Madhya Pradesh','MP',1101,1),
+ (1088,'Manipur','MN',1101,1),
+ (1089,'Meghalaya','ML',1101,1),
+ (1090,'Mizoram','MZ',1101,1),
+ (1091,'Nagaland','NL',1101,1),
+ (1092,'Orissa','OR',1101,1),
+ (1093,'Punjab','PB',1101,1),
+ (1094,'Rajasthan','RJ',1101,1),
+ (1095,'Sikkim','SK',1101,1),
+ (1096,'Tamil Nadu','TN',1101,1),
+ (1097,'Tripura','TR',1101,1),
+ (1098,'Uttarakhand','UT',1101,1),
+ (1099,'Uttar Pradesh','UP',1101,1),
+ (1100,'West Bengal','WB',1101,1),
+ (1101,'Andaman and Nicobar Islands','AN',1101,1),
+ (1102,'Delhi','DL',1101,1),
+ (1103,'Lakshadweep','LD',1101,1),
+ (1104,'Pondicherry','PY',1101,1),
+ (1105,'Telangana','TG',1101,1),
+ (1106,'Dādra and Nagar Haveli and Damān and Diu','DH',1101,1),
+ (1107,'Ladākh','LA',1101,1),
+ (1108,'Chandigarh','CH',1101,1),
+ (1109,'mazowieckie','MZ',1172,1),
+ (1110,'pomorskie','PM',1172,1),
+ (1111,'dolnośląskie','DS',1172,1),
+ (1112,'kujawsko-pomorskie','KP',1172,1),
+ (1113,'lubelskie','LU',1172,1),
+ (1114,'lubuskie','LB',1172,1),
+ (1115,'łódzkie','LD',1172,1),
+ (1116,'małopolskie','MA',1172,1),
+ (1117,'opolskie','OP',1172,1),
+ (1118,'podkarpackie','PK',1172,1),
+ (1119,'podlaskie','PD',1172,1),
+ (1120,'śląskie','SL',1172,1),
+ (1121,'świętokrzyskie','SK',1172,1),
+ (1122,'warmińsko-mazurskie','WN',1172,1),
+ (1123,'wielkopolskie','WP',1172,1),
+ (1124,'zachodniopomorskie','ZP',1172,1),
+ (1125,'Abu Zaby','AZ',1225,1),
+ (1126,'\'Ajman','AJ',1225,1),
+ (1127,'Al Fujayrah','FU',1225,1),
+ (1128,'Ash Shariqah','SH',1225,1),
+ (1129,'Dubayy','DU',1225,1),
+ (1130,'Ra\'s al Khaymah','RK',1225,1),
+ (1131,'Dac Lac','33',1233,1),
+ (1132,'Umm al Qaywayn','UQ',1225,1),
+ (1133,'Badakhshan','BDS',1001,1),
+ (1134,'Badghis','BDG',1001,1),
+ (1135,'Baghlan','BGL',1001,1),
+ (1136,'Balkh','BAL',1001,1),
+ (1137,'Bamian','BAM',1001,1),
+ (1138,'Farah','FRA',1001,1),
+ (1139,'Faryab','FYB',1001,1),
+ (1140,'Ghazni','GHA',1001,1),
+ (1141,'Ghowr','GHO',1001,1),
+ (1142,'Helmand','HEL',1001,1),
+ (1143,'Herat','HER',1001,1),
+ (1144,'Jowzjan','JOW',1001,1),
+ (1145,'Kabul','KAB',1001,1),
+ (1146,'Kandahar','KAN',1001,1),
+ (1147,'Kapisa','KAP',1001,1),
+ (1148,'Khowst','KHO',1001,1),
+ (1149,'Konar','KNR',1001,1),
+ (1150,'Kondoz','KDZ',1001,1),
+ (1151,'Laghman','LAG',1001,1),
+ (1152,'Lowgar','LOW',1001,1),
+ (1153,'Nangrahar','NAN',1001,1),
+ (1154,'Nimruz','NIM',1001,1),
+ (1155,'Nurestan','NUR',1001,1),
+ (1156,'Oruzgan','ORU',1001,1),
+ (1157,'Paktia','PIA',1001,1),
+ (1158,'Paktika','PKA',1001,1),
+ (1159,'Parwan','PAR',1001,1),
+ (1160,'Samangan','SAM',1001,1),
+ (1161,'Sar-e Pol','SAR',1001,1),
+ (1162,'Takhar','TAK',1001,1),
+ (1163,'Wardak','WAR',1001,1),
+ (1164,'Zabol','ZAB',1001,1),
+ (1165,'Berat','BR',1002,1),
+ (1166,'Bulqizë','BU',1002,1),
+ (1167,'Delvinë','DL',1002,1),
+ (1168,'Devoll','DV',1002,1),
+ (1169,'Dibër','DI',1002,1),
+ (1170,'Durrës','DR',1002,1),
+ (1171,'Elbasan','EL',1002,1),
+ (1172,'Fier','FR',1002,1),
+ (1173,'Gramsh','GR',1002,1),
+ (1174,'Gjirokastër','GJ',1002,1),
+ (1175,'Has','HA',1002,1),
+ (1176,'Kavajë','KA',1002,1),
+ (1177,'Kolonjë','ER',1002,1),
+ (1178,'Korçë','KO',1002,1),
+ (1179,'Krujë','KR',1002,1),
+ (1180,'Kuçovë','KC',1002,1),
+ (1181,'Kukës','KU',1002,1),
+ (1182,'Kurbin','KB',1002,1),
+ (1183,'Lezhë','LE',1002,1),
+ (1184,'Librazhd','LB',1002,1),
+ (1185,'Lushnjë','LU',1002,1),
+ (1186,'Malësi e Madhe','MM',1002,1),
+ (1187,'Mallakastër','MK',1002,1),
+ (1188,'Mat','MT',1002,1),
+ (1189,'Mirditë','MR',1002,1),
+ (1190,'Peqin','PQ',1002,1),
+ (1191,'Përmet','PR',1002,1),
+ (1192,'Pogradec','PG',1002,1),
+ (1193,'Pukë','PU',1002,1),
+ (1194,'Sarandë','SR',1002,1),
+ (1195,'Skrapar','SK',1002,1),
+ (1196,'Shkodër','SH',1002,1),
+ (1197,'Tepelenë','TE',1002,1),
+ (1198,'Tiranë','TR',1002,1),
+ (1199,'Tropojë','TP',1002,1),
+ (1200,'Vlorë','VL',1002,1),
+ (1201,'Erevan','ER',1011,1),
+ (1202,'Aragacotn','AG',1011,1),
+ (1203,'Ararat','AR',1011,1),
+ (1204,'Armavir','AV',1011,1),
+ (1205,'Gegarkunik\'','GR',1011,1),
+ (1206,'Kotayk\'','KT',1011,1),
+ (1207,'Lory','LO',1011,1),
+ (1208,'Sirak','SH',1011,1),
+ (1209,'Syunik\'','SU',1011,1),
+ (1210,'Tavus','TV',1011,1),
+ (1211,'Vayoc Jor','VD',1011,1),
+ (1212,'Andorra la Vella','07',1005,1),
+ (1213,'Canillo','02',1005,1),
+ (1214,'Encamp','03',1005,1),
+ (1215,'Escaldes-Engordany','08',1005,1),
+ (1216,'La Massana','04',1005,1),
+ (1217,'Ordino','05',1005,1),
+ (1218,'Sant Julia de Loria','06',1005,1),
+ (1219,'Bengo','BGO',1006,1),
+ (1220,'Benguela','BGU',1006,1),
+ (1221,'Bie','BIE',1006,1),
+ (1222,'Cabinda','CAB',1006,1),
+ (1223,'Cuando-Cubango','CCU',1006,1),
+ (1224,'Cuanza Norte','CNO',1006,1),
+ (1225,'Cuanza Sul','CUS',1006,1),
+ (1226,'Cunene','CNN',1006,1),
+ (1227,'Huambo','HUA',1006,1),
+ (1228,'Huila','HUI',1006,1),
+ (1229,'Luanda','LUA',1006,1),
+ (1230,'Lunda Norte','LNO',1006,1),
+ (1231,'Lunda Sul','LSU',1006,1),
+ (1232,'Malange','MAL',1006,1),
+ (1233,'Moxico','MOX',1006,1),
+ (1234,'Namibe','NAM',1006,1),
+ (1235,'Uige','UIG',1006,1),
+ (1236,'Zaire','ZAI',1006,1),
+ (1237,'Saint George','03',1009,1),
+ (1238,'Saint John','04',1009,1),
+ (1239,'Saint Mary','05',1009,1),
+ (1240,'Saint Paul','06',1009,1),
+ (1241,'Saint Peter','07',1009,1),
+ (1242,'Saint Philip','08',1009,1),
+ (1243,'Barbuda','10',1009,1),
+ (1244,'Redonda','11',1009,1),
+ (1245,'Capital federal','C',1010,1),
+ (1246,'Buenos Aires','B',1010,1),
+ (1247,'Catamarca','K',1010,1),
+ (1248,'Cordoba','X',1010,1),
+ (1249,'Corrientes','W',1010,1),
+ (1250,'Chaco','H',1010,1),
+ (1251,'Chubut','U',1010,1),
+ (1252,'Entre Rios','E',1010,1),
+ (1253,'Formosa','P',1010,1),
+ (1254,'Jujuy','Y',1010,1),
+ (1255,'La Pampa','L',1010,1),
+ (1256,'Mendoza','M',1010,1),
+ (1257,'Misiones','N',1010,1),
+ (1258,'Neuquen','Q',1010,1),
+ (1259,'Rio Negro','R',1010,1),
+ (1260,'Salta','A',1010,1),
+ (1261,'San Juan','J',1010,1),
+ (1262,'San Luis','D',1010,1),
+ (1263,'Santa Cruz','Z',1010,1),
+ (1264,'Santa Fe','S',1010,1),
+ (1265,'Santiago del Estero','G',1010,1),
+ (1266,'Tierra del Fuego','V',1010,1),
+ (1267,'Tucuman','T',1010,1),
+ (1268,'La Rioja','F',1010,1),
+ (1269,'Burgenland','1',1014,1),
+ (1270,'Kärnten','2',1014,1),
+ (1271,'Niederösterreich','3',1014,1),
+ (1272,'Oberösterreich','4',1014,1),
+ (1273,'Salzburg','5',1014,1),
+ (1274,'Steiermark','6',1014,1),
+ (1275,'Tirol','7',1014,1),
+ (1276,'Vorarlberg','8',1014,1),
+ (1277,'Wien','9',1014,1),
+ (1278,'Australian Antarctic Territory','AAT',1008,1),
+ (1279,'Australian Capital Territory','ACT',1013,1),
+ (1280,'Northern Territory','NT',1013,1),
+ (1281,'New South Wales','NSW',1013,1),
+ (1282,'Queensland','QLD',1013,1),
+ (1283,'South Australia','SA',1013,1),
+ (1284,'Tasmania','TAS',1013,1),
+ (1285,'Victoria','VIC',1013,1),
+ (1286,'Western Australia','WA',1013,1),
+ (1287,'Naxcivan','NX',1015,1),
+ (1288,'Ali Bayramli','AB',1015,1),
+ (1289,'Baki','BA',1015,1),
+ (1290,'Ganca','GA',1015,1),
+ (1291,'Lankaran','LA',1015,1),
+ (1292,'Mingacevir','MI',1015,1),
+ (1293,'Naftalan','NA',1015,1),
+ (1294,'Saki','SA',1015,1),
+ (1295,'Sumqayit','SM',1015,1),
+ (1296,'Susa','SS',1015,1),
+ (1297,'Xankandi','XA',1015,1),
+ (1298,'Yevlax','YE',1015,1),
+ (1299,'Abseron','ABS',1015,1),
+ (1300,'Agcabadi','AGC',1015,1),
+ (1301,'Agdam','AGM',1015,1),
+ (1302,'Agdas','AGS',1015,1),
+ (1303,'Agstafa','AGA',1015,1),
+ (1304,'Agsu','AGU',1015,1),
+ (1305,'Astara','AST',1015,1),
+ (1306,'Babak','BAB',1015,1),
+ (1307,'Balakan','BAL',1015,1),
+ (1308,'Barda','BAR',1015,1),
+ (1309,'Beylagan','BEY',1015,1),
+ (1310,'Bilasuvar','BIL',1015,1),
+ (1311,'Cabrayll','CAB',1015,1),
+ (1312,'Calilabad','CAL',1015,1),
+ (1313,'Culfa','CUL',1015,1),
+ (1314,'Daskasan','DAS',1015,1),
+ (1315,'Davaci','DAV',1015,1),
+ (1316,'Fuzuli','FUZ',1015,1),
+ (1317,'Gadabay','GAD',1015,1),
+ (1318,'Goranboy','GOR',1015,1),
+ (1319,'Goycay','GOY',1015,1),
+ (1320,'Haciqabul','HAC',1015,1),
+ (1321,'Imisli','IMI',1015,1),
+ (1322,'Ismayilli','ISM',1015,1),
+ (1323,'Kalbacar','KAL',1015,1),
+ (1324,'Kurdamir','KUR',1015,1),
+ (1325,'Lacin','LAC',1015,1),
+ (1326,'Lerik','LER',1015,1),
+ (1327,'Masalli','MAS',1015,1),
+ (1328,'Neftcala','NEF',1015,1),
+ (1329,'Oguz','OGU',1015,1),
+ (1330,'Ordubad','ORD',1015,1),
+ (1331,'Qabala','QAB',1015,1),
+ (1332,'Qax','QAX',1015,1),
+ (1333,'Qazax','QAZ',1015,1),
+ (1334,'Qobustan','QOB',1015,1),
+ (1335,'Quba','QBA',1015,1),
+ (1336,'Qubadli','QBI',1015,1),
+ (1337,'Qusar','QUS',1015,1),
+ (1338,'Saatli','SAT',1015,1),
+ (1339,'Sabirabad','SAB',1015,1),
+ (1340,'Sadarak','SAD',1015,1),
+ (1341,'Sahbuz','SAH',1015,1),
+ (1342,'Salyan','SAL',1015,1),
+ (1343,'Samaxi','SMI',1015,1),
+ (1344,'Samkir','SKR',1015,1),
+ (1345,'Samux','SMX',1015,1),
+ (1346,'Sarur','SAR',1015,1),
+ (1347,'Siyazan','SIY',1015,1),
+ (1348,'Tartar','TAR',1015,1),
+ (1349,'Tovuz','TOV',1015,1),
+ (1350,'Ucar','UCA',1015,1),
+ (1351,'Xacmaz','XAC',1015,1),
+ (1352,'Xanlar','XAN',1015,1),
+ (1353,'Xizi','XIZ',1015,1),
+ (1354,'Xocali','XCI',1015,1),
+ (1355,'Xocavand','XVD',1015,1),
+ (1356,'Yardimli','YAR',1015,1),
+ (1357,'Zangilan','ZAN',1015,1),
+ (1358,'Zaqatala','ZAQ',1015,1),
+ (1359,'Zardab','ZAR',1015,1),
+ (1360,'Federacija Bosna i Hercegovina','BIH',1026,1),
+ (1361,'Republika Srpska','SRP',1026,1),
+ (1362,'Bagerhat zila','05',1017,1),
+ (1363,'Bandarban zila','01',1017,1),
+ (1364,'Barguna zila','02',1017,1),
+ (1365,'Barisal zila','06',1017,1),
+ (1366,'Bhola zila','07',1017,1),
+ (1367,'Bogra zila','03',1017,1),
+ (1368,'Brahmanbaria zila','04',1017,1),
+ (1369,'Chandpur zila','09',1017,1),
+ (1370,'Chittagong zila','10',1017,1),
+ (1371,'Chuadanga zila','12',1017,1),
+ (1372,'Comilla zila','08',1017,1),
+ (1373,'Cox\'s Bazar zila','11',1017,1),
+ (1374,'Dhaka zila','13',1017,1),
+ (1375,'Dinajpur zila','14',1017,1),
+ (1376,'Faridpur zila','15',1017,1),
+ (1377,'Feni zila','16',1017,1),
+ (1378,'Gaibandha zila','19',1017,1),
+ (1379,'Gazipur zila','18',1017,1),
+ (1380,'Gopalganj zila','17',1017,1),
+ (1381,'Habiganj zila','20',1017,1),
+ (1382,'Jaipurhat zila','24',1017,1),
+ (1383,'Jamalpur zila','21',1017,1),
+ (1384,'Jessore zila','22',1017,1),
+ (1385,'Jhalakati zila','25',1017,1),
+ (1386,'Jhenaidah zila','23',1017,1),
+ (1387,'Khagrachari zila','29',1017,1),
+ (1388,'Khulna zila','27',1017,1),
+ (1389,'Kishorganj zila','26',1017,1),
+ (1390,'Kurigram zila','28',1017,1),
+ (1391,'Kushtia zila','30',1017,1),
+ (1392,'Lakshmipur zila','31',1017,1),
+ (1393,'Lalmonirhat zila','32',1017,1),
+ (1394,'Madaripur zila','36',1017,1),
+ (1395,'Magura zila','37',1017,1),
+ (1396,'Manikganj zila','33',1017,1),
+ (1397,'Meherpur zila','39',1017,1),
+ (1398,'Moulvibazar zila','38',1017,1),
+ (1399,'Munshiganj zila','35',1017,1),
+ (1400,'Mymensingh zila','34',1017,1),
+ (1401,'Naogaon zila','48',1017,1),
+ (1402,'Narail zila','43',1017,1),
+ (1403,'Narayanganj zila','40',1017,1),
+ (1404,'Narsingdi zila','42',1017,1),
+ (1405,'Natore zila','44',1017,1),
+ (1406,'Nawabganj zila','45',1017,1),
+ (1407,'Netrakona zila','41',1017,1),
+ (1408,'Nilphamari zila','46',1017,1),
+ (1409,'Noakhali zila','47',1017,1),
+ (1410,'Pabna zila','49',1017,1),
+ (1411,'Panchagarh zila','52',1017,1),
+ (1412,'Patuakhali zila','51',1017,1),
+ (1413,'Pirojpur zila','50',1017,1),
+ (1414,'Rajbari zila','53',1017,1),
+ (1415,'Rajshahi zila','54',1017,1),
+ (1416,'Rangamati zila','56',1017,1),
+ (1417,'Rangpur zila','55',1017,1),
+ (1418,'Satkhira zila','58',1017,1),
+ (1419,'Shariatpur zila','62',1017,1),
+ (1420,'Sherpur zila','57',1017,1),
+ (1421,'Sirajganj zila','59',1017,1),
+ (1422,'Sunamganj zila','61',1017,1),
+ (1423,'Sylhet zila','60',1017,1),
+ (1424,'Tangail zila','63',1017,1),
+ (1425,'Thakurgaon zila','64',1017,1),
+ (1426,'Christ Church','01',1018,1),
+ (1427,'Saint Andrew','02',1018,1),
+ (1428,'Saint George','03',1018,1),
+ (1429,'Saint James','04',1018,1),
+ (1430,'Saint John','05',1018,1),
+ (1431,'Saint Joseph','06',1018,1),
+ (1432,'Saint Lucy','07',1018,1),
+ (1433,'Saint Michael','08',1018,1),
+ (1434,'Saint Peter','09',1018,1),
+ (1435,'Saint Philip','10',1018,1),
+ (1436,'Saint Thomas','11',1018,1),
+ (1437,'Brussels','BRU',1020,1),
+ (1438,'Antwerpen','VAN',1020,1),
+ (1439,'Brabant Wallon','WBR',1020,1),
+ (1440,'Hainaut','WHT',1020,1),
+ (1441,'Liege','WLG',1020,1),
+ (1442,'Limburg','VLI',1020,1),
+ (1443,'Luxembourg','WLX',1020,1),
+ (1444,'Namur','WNA',1020,1),
+ (1445,'Oost-Vlaanderen','VOV',1020,1),
+ (1446,'Vlaams-Brabant','VBR',1020,1),
+ (1447,'West-Vlaanderen','VWV',1020,1),
+ (1448,'Devonshire','DEV',1023,1),
+ (1449,'Hamilton Parish','HAM',1023,1),
+ (1450,'City of Hamilton','HA',1023,1),
+ (1451,'Paget','PAG',1023,1),
+ (1452,'Pembroke','PEM',1023,1),
+ (1453,'Town of St. George','SG',1023,1),
+ (1454,'Saint George\'s','SGE',1023,1),
+ (1455,'Sandys','SAN',1023,1),
+ (1456,'Smiths','SMI',1023,1),
+ (1457,'Southampton','SOU',1023,1),
+ (1458,'Warwick','WAR',1023,1),
+ (1459,'Bale','BAL',1034,1),
+ (1460,'Bam','BAM',1034,1),
+ (1461,'Banwa','BAN',1034,1),
+ (1462,'Bazega','BAZ',1034,1),
+ (1463,'Bougouriba','BGR',1034,1),
+ (1464,'Boulgou','BLG',1034,1),
+ (1465,'Boulkiemde','BLK',1034,1),
+ (1466,'Comoe','COM',1034,1),
+ (1467,'Ganzourgou','GAN',1034,1),
+ (1468,'Gnagna','GNA',1034,1),
+ (1469,'Gourma','GOU',1034,1),
+ (1470,'Houet','HOU',1034,1),
+ (1471,'Ioba','IOB',1034,1),
+ (1472,'Kadiogo','KAD',1034,1),
+ (1473,'Kenedougou','KEN',1034,1),
+ (1474,'Komondjari','KMD',1034,1),
+ (1475,'Kompienga','KMP',1034,1),
+ (1476,'Kossi','KOS',1034,1),
+ (1477,'Koulpulogo','KOP',1034,1),
+ (1478,'Kouritenga','KOT',1034,1),
+ (1479,'Kourweogo','KOW',1034,1),
+ (1480,'Leraba','LER',1034,1),
+ (1481,'Loroum','LOR',1034,1),
+ (1482,'Mouhoun','MOU',1034,1),
+ (1483,'Nahouri','NAO',1034,1),
+ (1484,'Namentenga','NAM',1034,1),
+ (1485,'Nayala','NAY',1034,1),
+ (1486,'Noumbiel','NOU',1034,1),
+ (1487,'Oubritenga','OUB',1034,1),
+ (1488,'Oudalan','OUD',1034,1),
+ (1489,'Passore','PAS',1034,1),
+ (1490,'Poni','PON',1034,1),
+ (1491,'Sanguie','SNG',1034,1),
+ (1492,'Sanmatenga','SMT',1034,1),
+ (1493,'Seno','SEN',1034,1),
+ (1494,'Siasili','SIS',1034,1),
+ (1495,'Soum','SOM',1034,1),
+ (1496,'Sourou','SOR',1034,1),
+ (1497,'Tapoa','TAP',1034,1),
+ (1498,'Tui','TUI',1034,1),
+ (1499,'Yagha','YAG',1034,1),
+ (1500,'Yatenga','YAT',1034,1),
+ (1501,'Ziro','ZIR',1034,1),
+ (1502,'Zondoma','ZON',1034,1),
+ (1503,'Zoundweogo','ZOU',1034,1),
+ (1504,'Blagoevgrad','01',1033,1),
+ (1505,'Burgas','02',1033,1),
+ (1506,'Dobrich','08',1033,1),
+ (1507,'Gabrovo','07',1033,1),
+ (1508,'Haskovo','26',1033,1),
+ (1509,'Yambol','28',1033,1),
+ (1510,'Kardzhali','09',1033,1),
+ (1511,'Kyustendil','10',1033,1),
+ (1512,'Lovech','11',1033,1),
+ (1513,'Montana','12',1033,1),
+ (1514,'Pazardzhik','13',1033,1),
+ (1515,'Pernik','14',1033,1),
+ (1516,'Pleven','15',1033,1),
+ (1517,'Plovdiv','16',1033,1),
+ (1518,'Razgrad','17',1033,1),
+ (1519,'Ruse','18',1033,1),
+ (1520,'Silistra','19',1033,1),
+ (1521,'Sliven','20',1033,1),
+ (1522,'Smolyan','21',1033,1),
+ (1523,'Sofia','23',1033,1),
+ (1524,'Stara Zagora','24',1033,1),
+ (1525,'Shumen','27',1033,1),
+ (1526,'Targovishte','25',1033,1),
+ (1527,'Varna','03',1033,1),
+ (1528,'Veliko Tarnovo','04',1033,1),
+ (1529,'Vidin','05',1033,1),
+ (1530,'Vratsa','06',1033,1),
+ (1531,'Al Hadd','01',1016,1),
+ (1532,'Al Manamah','03',1016,1),
+ (1533,'Al Mintaqah al Gharbiyah','10',1016,1),
+ (1534,'Al Mintagah al Wusta','07',1016,1),
+ (1535,'Al Mintaqah ash Shamaliyah','05',1016,1),
+ (1536,'Al Muharraq','02',1016,1),
+ (1537,'Ar Rifa','09',1016,1),
+ (1538,'Jidd Hafs','04',1016,1),
+ (1539,'Madluat Jamad','12',1016,1),
+ (1540,'Madluat Isa','08',1016,1),
+ (1541,'Mintaqat Juzur tawar','11',1016,1),
+ (1542,'Sitrah','06',1016,1),
+ (1543,'Bubanza','BB',1036,1),
+ (1544,'Bujumbura','BJ',1036,1),
+ (1545,'Bururi','BR',1036,1),
+ (1546,'Cankuzo','CA',1036,1),
+ (1547,'Cibitoke','CI',1036,1),
+ (1548,'Gitega','GI',1036,1),
+ (1549,'Karuzi','KR',1036,1),
+ (1550,'Kayanza','KY',1036,1),
+ (1551,'Makamba','MA',1036,1),
+ (1552,'Muramvya','MU',1036,1),
+ (1553,'Mwaro','MW',1036,1),
+ (1554,'Ngozi','NG',1036,1),
+ (1555,'Rutana','RT',1036,1),
+ (1556,'Ruyigi','RY',1036,1),
+ (1557,'Alibori','AL',1022,1),
+ (1558,'Atakora','AK',1022,1),
+ (1559,'Atlantique','AQ',1022,1),
+ (1560,'Borgou','BO',1022,1),
+ (1561,'Collines','CO',1022,1),
+ (1562,'Donga','DO',1022,1),
+ (1563,'Kouffo','KO',1022,1),
+ (1564,'Littoral','LI',1022,1),
+ (1565,'Mono','MO',1022,1),
+ (1566,'Oueme','OU',1022,1),
+ (1567,'Plateau','PL',1022,1),
+ (1568,'Zou','ZO',1022,1),
+ (1569,'Belait','BE',1032,1),
+ (1570,'Brunei-Muara','BM',1032,1),
+ (1571,'Temburong','TE',1032,1),
+ (1572,'Tutong','TU',1032,1),
+ (1573,'Cochabamba','C',1025,1),
+ (1574,'Chuquisaca','H',1025,1),
+ (1575,'El Beni','B',1025,1),
+ (1576,'La Paz','L',1025,1),
+ (1577,'Oruro','O',1025,1),
+ (1578,'Pando','N',1025,1),
+ (1579,'Potosi','P',1025,1),
+ (1580,'Tarija','T',1025,1),
+ (1581,'Acre','AC',1029,1),
+ (1582,'Alagoas','AL',1029,1),
+ (1583,'Amazonas','AM',1029,1),
+ (1584,'Amapa','AP',1029,1),
+ (1585,'Bahia','BA',1029,1),
+ (1586,'Ceara','CE',1029,1),
+ (1587,'Distrito Federal','DF',1029,1),
+ (1588,'Espirito Santo','ES',1029,1),
+ (1589,'Goias','GO',1029,1),
+ (1590,'Maranhao','MA',1029,1),
+ (1591,'Minas Gerais','MG',1029,1),
+ (1592,'Mato Grosso do Sul','MS',1029,1),
+ (1593,'Mato Grosso','MT',1029,1),
+ (1594,'Para','PA',1029,1),
+ (1595,'Paraiba','PB',1029,1),
+ (1596,'Pernambuco','PE',1029,1),
+ (1597,'Piaui','PI',1029,1),
+ (1598,'Parana','PR',1029,1),
+ (1599,'Rio de Janeiro','RJ',1029,1),
+ (1600,'Rio Grande do Norte','RN',1029,1),
+ (1601,'Rondonia','RO',1029,1),
+ (1602,'Roraima','RR',1029,1),
+ (1603,'Rio Grande do Sul','RS',1029,1),
+ (1604,'Santa Catarina','SC',1029,1),
+ (1605,'Sergipe','SE',1029,1),
+ (1606,'Sao Paulo','SP',1029,1),
+ (1607,'Tocantins','TO',1029,1),
+ (1608,'Acklins and Crooked Islands','AC',1212,1),
+ (1609,'Bimini','BI',1212,1),
+ (1610,'Cat Island','CI',1212,1),
+ (1611,'Exuma','EX',1212,1),
+ (1612,'Inagua','IN',1212,1),
+ (1613,'Long Island','LI',1212,1),
+ (1614,'Mayaguana','MG',1212,1),
+ (1615,'New Providence','NP',1212,1),
+ (1616,'Ragged Island','RI',1212,1),
+ (1617,'Abaco Islands','AB',1212,1),
+ (1618,'Andros Island','AN',1212,1),
+ (1619,'Berry Islands','BR',1212,1),
+ (1620,'Eleuthera','EL',1212,1),
+ (1621,'Grand Bahama','GB',1212,1),
+ (1622,'Rum Cay','RC',1212,1),
+ (1623,'San Salvador Island','SS',1212,1),
+ (1624,'Bumthang','33',1024,1),
+ (1625,'Chhukha','12',1024,1),
+ (1626,'Dagana','22',1024,1),
+ (1627,'Gasa','GA',1024,1),
+ (1628,'Ha','13',1024,1),
+ (1629,'Lhuentse','44',1024,1),
+ (1630,'Monggar','42',1024,1),
+ (1631,'Paro','11',1024,1),
+ (1632,'Pemagatshel','43',1024,1),
+ (1633,'Punakha','23',1024,1),
+ (1634,'Samdrup Jongkha','45',1024,1),
+ (1635,'Samtee','14',1024,1),
+ (1636,'Sarpang','31',1024,1),
+ (1637,'Thimphu','15',1024,1),
+ (1638,'Trashigang','41',1024,1),
+ (1639,'Trashi Yangtse','TY',1024,1),
+ (1640,'Trongsa','32',1024,1),
+ (1641,'Tsirang','21',1024,1),
+ (1642,'Wangdue Phodrang','24',1024,1),
+ (1643,'Zhemgang','34',1024,1),
+ (1644,'Central','CE',1027,1),
+ (1645,'Ghanzi','GH',1027,1),
+ (1646,'Kgalagadi','KG',1027,1),
+ (1647,'Kgatleng','KL',1027,1),
+ (1648,'Kweneng','KW',1027,1),
+ (1649,'Ngamiland','NG',1027,1),
+ (1650,'North-East','NE',1027,1),
+ (1651,'North-West','NW',1027,1),
+ (1652,'South-East','SE',1027,1),
+ (1653,'Southern','SO',1027,1),
+ (1654,'Brèsckaja voblasc\'','BR',1019,1),
+ (1655,'Homel\'skaja voblasc\'','HO',1019,1),
+ (1656,'Hrodzenskaja voblasc\'','HR',1019,1),
+ (1657,'Mahilëuskaja voblasc\'','MA',1019,1),
+ (1658,'Minskaja voblasc\'','MI',1019,1),
+ (1659,'Vicebskaja voblasc\'','VI',1019,1),
+ (1660,'Belize','BZ',1021,1),
+ (1661,'Cayo','CY',1021,1),
+ (1662,'Corozal','CZL',1021,1),
+ (1663,'Orange Walk','OW',1021,1),
+ (1664,'Stann Creek','SC',1021,1),
+ (1665,'Toledo','TOL',1021,1),
+ (1666,'Kinshasa','KN',1050,1),
+ (1667,'Equateur','EQ',1050,1),
+ (1668,'Kasai-Oriental','KE',1050,1),
+ (1669,'Maniema','MA',1050,1),
+ (1670,'Nord-Kivu','NK',1050,1),
+ (1671,'Sud-Kivu','SK',1050,1),
+ (1672,'Bangui','BGF',1042,1),
+ (1673,'Bamingui-Bangoran','BB',1042,1),
+ (1674,'Basse-Kotto','BK',1042,1),
+ (1675,'Haute-Kotto','HK',1042,1),
+ (1676,'Haut-Mbomou','HM',1042,1),
+ (1677,'Kemo','KG',1042,1),
+ (1678,'Lobaye','LB',1042,1),
+ (1679,'Mambere-Kadei','HS',1042,1),
+ (1680,'Mbomou','MB',1042,1),
+ (1681,'Nana-Grebizi','KB',1042,1),
+ (1682,'Nana-Mambere','NM',1042,1),
+ (1683,'Ombella-Mpoko','MP',1042,1),
+ (1684,'Ouaka','UK',1042,1),
+ (1685,'Ouham','AC',1042,1),
+ (1686,'Ouham-Pende','OP',1042,1),
+ (1687,'Sangha-Mbaere','SE',1042,1),
+ (1688,'Vakaga','VR',1042,1),
+ (1689,'Kongo central','01',1050,1),
+ (1690,'Kwango','02',1050,1),
+ (1691,'Kwilu','03',1050,1),
+ (1692,'Mai-Ndombe','04',1050,1),
+ (1693,'Kasai','05',1050,1),
+ (1694,'Lulua','06',1050,1),
+ (1695,'Lomami','07',1050,1),
+ (1696,'Sankuru','08',1050,1),
+ (1697,'Ituri','09',1050,1),
+ (1698,'Haut-Uele','10',1050,1),
+ (1699,'Tshopo','11',1050,1),
+ (1700,'Bas-Uele','12',1050,1),
+ (1701,'Nord-Ubangi','13',1050,1),
+ (1702,'Mongala','14',1050,1),
+ (1703,'Sud-Ubangi','15',1050,1),
+ (1704,'Tshuapa','16',1050,1),
+ (1705,'Haut-Lomami','17',1050,1),
+ (1706,'Lualaba','18',1050,1),
+ (1707,'Haut-Katanga','19',1050,1),
+ (1708,'Tanganyika','20',1050,1),
+ (1709,'Brazzaville','BZV',1051,1),
+ (1710,'Bouenza','11',1051,1),
+ (1711,'Cuvette','8',1051,1),
+ (1712,'Cuvette-Ouest','15',1051,1),
+ (1713,'Kouilou','5',1051,1),
+ (1714,'Lekoumou','2',1051,1),
+ (1715,'Likouala','7',1051,1),
+ (1716,'Niari','9',1051,1),
+ (1717,'Plateaux','14',1051,1),
+ (1718,'Pool','12',1051,1),
+ (1719,'Sangha','13',1051,1),
+ (1720,'Estuaire','01',1080,1),
+ (1721,'Haut-Ogooué','02',1080,1),
+ (1722,'Moyen-Ogooué','03',1080,1),
+ (1723,'Ngounié','04',1080,1),
+ (1724,'Nyanga','05',1080,1),
+ (1725,'Ogooué-Ivindo','06',1080,1),
+ (1726,'Ogooué-Lolo','07',1080,1),
+ (1727,'Ogooué-Maritime','08',1080,1),
+ (1728,'Woleu-Ntem','09',1080,1),
+ (1729,'Aargau','AG',1205,1),
+ (1730,'Appenzell Innerrhoden','AI',1205,1),
+ (1731,'Appenzell Ausserrhoden','AR',1205,1),
+ (1732,'Bern','BE',1205,1),
+ (1733,'Basel-Landschaft','BL',1205,1),
+ (1734,'Basel-Stadt','BS',1205,1),
+ (1735,'Fribourg','FR',1205,1),
+ (1736,'Geneva','GE',1205,1),
+ (1737,'Glarus','GL',1205,1),
+ (1738,'Graubunden','GR',1205,1),
+ (1739,'Jura','JU',1205,1),
+ (1740,'Luzern','LU',1205,1),
+ (1741,'Neuchatel','NE',1205,1),
+ (1742,'Nidwalden','NW',1205,1),
+ (1743,'Obwalden','OW',1205,1),
+ (1744,'Sankt Gallen','SG',1205,1),
+ (1745,'Schaffhausen','SH',1205,1),
+ (1746,'Solothurn','SO',1205,1),
+ (1747,'Schwyz','SZ',1205,1),
+ (1748,'Thurgau','TG',1205,1),
+ (1749,'Ticino','TI',1205,1),
+ (1750,'Uri','UR',1205,1),
+ (1751,'Vaud','VD',1205,1),
+ (1752,'Valais','VS',1205,1),
+ (1753,'Zug','ZG',1205,1),
+ (1754,'Zurich','ZH',1205,1),
+ (1755,'18 Montagnes','06',1054,1),
+ (1756,'Agnebi','16',1054,1),
+ (1757,'Bas-Sassandra','09',1054,1),
+ (1758,'Denguele','10',1054,1),
+ (1759,'Haut-Sassandra','02',1054,1),
+ (1760,'Lacs','07',1054,1),
+ (1761,'Lagunes','01',1054,1),
+ (1762,'Marahoue','12',1054,1),
+ (1763,'Moyen-Comoe','05',1054,1),
+ (1764,'Nzi-Comoe','11',1054,1),
+ (1765,'Savanes','03',1054,1),
+ (1766,'Sud-Bandama','15',1054,1),
+ (1767,'Sud-Comoe','13',1054,1),
+ (1768,'Vallee du Bandama','04',1054,1),
+ (1769,'Worodouqou','14',1054,1),
+ (1770,'Zanzan','08',1054,1),
+ (1771,'Aisen del General Carlos Ibanez del Campo','AI',1044,1),
+ (1772,'Antofagasta','AN',1044,1),
+ (1773,'Araucania','AR',1044,1),
+ (1774,'Atacama','AT',1044,1),
+ (1775,'Bio-Bio','BI',1044,1),
+ (1776,'Coquimbo','CO',1044,1),
+ (1777,'Libertador General Bernardo O\'Higgins','LI',1044,1),
+ (1778,'Los Lagos','LL',1044,1),
+ (1779,'Magallanes','MA',1044,1),
+ (1780,'Maule','ML',1044,1),
+ (1781,'Santiago Metropolitan','SM',1044,1),
+ (1782,'Tarapaca','TA',1044,1),
+ (1783,'Valparaiso','VS',1044,1),
+ (1784,'Los Rios','LR',1044,1),
+ (1785,'Arica y Parinacota','AP',1044,1),
+ (1786,'Adamaoua','AD',1038,1),
+ (1787,'Centre','CE',1038,1),
+ (1788,'East','ES',1038,1),
+ (1789,'Far North','EN',1038,1),
+ (1790,'North','NO',1038,1),
+ (1791,'South','SW',1038,1),
+ (1792,'South-West','SW',1038,1),
+ (1793,'West','OU',1038,1),
+ (1794,'Littoral','LT',1038,1),
+ (1795,'Nord-Ouest','NW',1038,1),
+ (1796,'Beijing','11',1045,1),
+ (1797,'Chongqing','50',1045,1),
+ (1798,'Shanghai','31',1045,1),
+ (1799,'Tianjin','12',1045,1),
+ (1800,'Anhui','34',1045,1),
+ (1801,'Fujian','35',1045,1),
+ (1802,'Gansu','62',1045,1),
+ (1803,'Guangdong','44',1045,1),
+ (1804,'Guizhou','52',1045,1),
+ (1805,'Hainan','46',1045,1),
+ (1806,'Hebei','13',1045,1),
+ (1807,'Heilongjiang','23',1045,1),
+ (1808,'Henan','41',1045,1),
+ (1809,'Hubei','42',1045,1),
+ (1810,'Hunan','43',1045,1),
+ (1811,'Jiangsu','32',1045,1),
+ (1812,'Jiangxi','36',1045,1),
+ (1813,'Jilin','22',1045,1),
+ (1814,'Liaoning','21',1045,1),
+ (1815,'Qinghai','63',1045,1),
+ (1816,'Shaanxi','61',1045,1),
+ (1817,'Shandong','37',1045,1),
+ (1818,'Shanxi','14',1045,1),
+ (1819,'Sichuan','51',1045,1),
+ (1820,'Taiwan','71',1045,1),
+ (1821,'Yunnan','53',1045,1),
+ (1822,'Zhejiang','33',1045,1),
+ (1823,'Guangxi','45',1045,1),
+ (1824,'Neia Mongol (mn)','15',1045,1),
+ (1825,'Xinjiang','65',1045,1),
+ (1826,'Xizang','54',1045,1),
+ (1827,'Hong Kong','91',1045,1),
+ (1828,'Macau','92',1045,1),
+ (1829,'Yinchuan','YN',1045,1),
+ (1830,'Shizuishan','SZ',1045,1),
+ (1831,'Wuzhong','WZ',1045,1),
+ (1832,'Guyuan','GY',1045,1),
+ (1833,'Zhongwei','ZW',1045,1),
+ (1834,'Distrito Capital de Bogotá','DC',1048,1),
+ (1835,'Amazonea','AMA',1048,1),
+ (1836,'Antioquia','ANT',1048,1),
+ (1837,'Arauca','ARA',1048,1),
+ (1838,'Atlántico','ATL',1048,1),
+ (1839,'Bolívar','BOL',1048,1),
+ (1840,'Boyacá','BOY',1048,1),
+ (1841,'Caldea','CAL',1048,1),
+ (1842,'Caquetá','CAQ',1048,1),
+ (1843,'Casanare','CAS',1048,1),
+ (1844,'Cauca','CAU',1048,1),
+ (1845,'Cesar','CES',1048,1),
+ (1846,'Córdoba','COR',1048,1),
+ (1847,'Cundinamarca','CUN',1048,1),
+ (1848,'Chocó','CHO',1048,1),
+ (1849,'Guainía','GUA',1048,1),
+ (1850,'Guaviare','GUV',1048,1),
+ (1851,'La Guajira','LAG',1048,1),
+ (1852,'Magdalena','MAG',1048,1),
+ (1853,'Meta','MET',1048,1),
+ (1854,'Nariño','NAR',1048,1),
+ (1855,'Norte de Santander','NSA',1048,1),
+ (1856,'Putumayo','PUT',1048,1),
+ (1857,'Quindio','QUI',1048,1),
+ (1858,'Risaralda','RIS',1048,1),
+ (1859,'San Andrés, Providencia y Santa Catalina','SAP',1048,1),
+ (1860,'Santander','SAN',1048,1),
+ (1861,'Sucre','SUC',1048,1),
+ (1862,'Tolima','TOL',1048,1),
+ (1863,'Valle del Cauca','VAC',1048,1),
+ (1864,'Vaupés','VAU',1048,1),
+ (1865,'Vichada','VID',1048,1),
+ (1866,'Huila','HUI',1048,1),
+ (1867,'Alajuela','A',1053,1),
+ (1868,'Cartago','C',1053,1),
+ (1869,'Guanacaste','G',1053,1),
+ (1870,'Heredia','H',1053,1),
+ (1871,'Limon','L',1053,1),
+ (1872,'Puntarenas','P',1053,1),
+ (1873,'San Jose','SJ',1053,1),
+ (1874,'Camagey','09',1056,1),
+ (1875,'Ciego de `vila','08',1056,1),
+ (1876,'Cienfuegos','06',1056,1),
+ (1877,'Ciudad de La Habana','03',1056,1),
+ (1878,'Granma','12',1056,1),
+ (1879,'Guantanamo','14',1056,1),
+ (1880,'Holquin','11',1056,1),
+ (1881,'La Habana','02',1056,1),
+ (1882,'Las Tunas','10',1056,1),
+ (1883,'Matanzas','04',1056,1),
+ (1884,'Pinar del Rio','01',1056,1),
+ (1885,'Sancti Spiritus','07',1056,1),
+ (1886,'Santiago de Cuba','13',1056,1),
+ (1887,'Villa Clara','05',1056,1),
+ (1888,'Isla de la Juventud','99',1056,1),
+ (1889,'Pinar del Roo','PR',1056,1),
+ (1890,'Ciego de Avila','CA',1056,1),
+ (1891,'Camagoey','CG',1056,1),
+ (1892,'Holgun','HO',1056,1),
+ (1893,'Sancti Spritus','SS',1056,1),
+ (1894,'Municipio Especial Isla de la Juventud','IJ',1056,1),
+ (1895,'Boa Vista','BV',1040,1),
+ (1896,'Brava','BR',1040,1),
+ (1897,'Calheta de Sao Miguel','CS',1040,1),
+ (1898,'Fogo','FO',1040,1),
+ (1899,'Maio','MA',1040,1),
+ (1900,'Mosteiros','MO',1040,1),
+ (1901,'Paul','PA',1040,1),
+ (1902,'Porto Novo','PN',1040,1),
+ (1903,'Praia','PR',1040,1),
+ (1904,'Ribeira Grande','RG',1040,1),
+ (1905,'Sal','SL',1040,1),
+ (1906,'Sao Domingos','SD',1040,1),
+ (1907,'Sao Filipe','SF',1040,1),
+ (1908,'Sao Nicolau','SN',1040,1),
+ (1909,'Sao Vicente','SV',1040,1),
+ (1910,'Tarrafal','TA',1040,1),
+ (1911,'Ammochostos Magusa','04',1057,1),
+ (1912,'Keryneia','06',1057,1),
+ (1913,'Larnaka','03',1057,1),
+ (1914,'Lefkosia','01',1057,1),
+ (1915,'Lemesos','02',1057,1),
+ (1916,'Pafos','05',1057,1),
+ (1917,'Jihočeský kraj','JC',1058,1),
+ (1918,'Jihomoravský kraj','JM',1058,1),
+ (1919,'Karlovarský kraj','KA',1058,1),
+ (1920,'Královéhradecký kraj','KR',1058,1),
+ (1921,'Liberecký kraj','LI',1058,1),
+ (1922,'Moravskoslezský kraj','MO',1058,1),
+ (1923,'Olomoucký kraj','OL',1058,1),
+ (1924,'Pardubický kraj','PA',1058,1),
+ (1925,'Plzeňský kraj','PL',1058,1),
+ (1926,'Praha, hlavní město','PR',1058,1),
+ (1927,'Středočeský kraj','ST',1058,1),
+ (1928,'Ústecký kraj','US',1058,1),
+ (1929,'Vysočina','VY',1058,1),
+ (1930,'Zlínský kraj','ZL',1058,1),
+ (1931,'Abkhazia','AB',1081,1),
+ (1932,'Adjara','AJ',1081,1),
+ (1933,'Tbilisi','TB',1081,1),
+ (1934,'Guria','GU',1081,1),
+ (1935,'Imereti','IM',1081,1),
+ (1936,'Kakheti','KA',1081,1),
+ (1937,'Kvemo Kartli','KK',1081,1),
+ (1938,'Mtskheta-Mtianeti','MM',1081,1),
+ (1939,'Racha-Lechkhumi and Kvemo Svaneti','RL',1081,1),
+ (1940,'Samegrelo-Zemo Svaneti','SZ',1081,1),
+ (1941,'Samtskhe-Javakheti','SJ',1081,1),
+ (1942,'Shida Kartli','SK',1081,1),
+ (1943,'Baden-Württemberg','BW',1082,1),
+ (1944,'Bayern','BY',1082,1),
+ (1945,'Bremen','HB',1082,1),
+ (1946,'Hamburg','HH',1082,1),
+ (1947,'Hessen','HE',1082,1),
+ (1948,'Niedersachsen','NI',1082,1),
+ (1949,'Nordrhein-Westfalen','NW',1082,1),
+ (1950,'Rheinland-Pfalz','RP',1082,1),
+ (1951,'Saarland','SL',1082,1),
+ (1952,'Schleswig-Holstein','SH',1082,1),
+ (1953,'Berlin','BE',1082,1),
+ (1954,'Brandenburg','BB',1082,1),
+ (1955,'Mecklenburg-Vorpommern','MV',1082,1),
+ (1956,'Sachsen','SN',1082,1),
+ (1957,'Sachsen-Anhalt','ST',1082,1),
+ (1958,'Thüringen','TH',1082,1),
+ (1959,'Ali Sabiah','AS',1060,1),
+ (1960,'Dikhil','DI',1060,1),
+ (1961,'Djibouti','DJ',1060,1),
+ (1962,'Obock','OB',1060,1),
+ (1963,'Tadjoura','TA',1060,1),
+ (1964,'Frederiksberg','147',1059,1),
+ (1965,'Copenhagen City','101',1059,1),
+ (1966,'Copenhagen','015',1059,1),
+ (1967,'Frederiksborg','020',1059,1),
+ (1968,'Roskilde','025',1059,1),
+ (1969,'Vestsjælland','030',1059,1),
+ (1970,'Storstrøm','035',1059,1),
+ (1971,'Bornholm','040',1059,1),
+ (1972,'Fyn','042',1059,1),
+ (1973,'South Jutland','050',1059,1),
+ (1974,'Ribe','055',1059,1),
+ (1975,'Vejle','060',1059,1),
+ (1976,'Ringkjøbing','065',1059,1),
+ (1977,'Ã…rhus','070',1059,1),
+ (1978,'Viborg','076',1059,1),
+ (1979,'North Jutland','080',1059,1),
+ (1980,'Distrito Nacional (Santo Domingo)','01',1062,1),
+ (1981,'Azua','02',1062,1),
+ (1982,'Bahoruco','03',1062,1),
+ (1983,'Barahona','04',1062,1),
+ (1984,'Dajabón','05',1062,1),
+ (1985,'Duarte','06',1062,1),
+ (1986,'El Seybo [El Seibo]','08',1062,1),
+ (1987,'Espaillat','09',1062,1),
+ (1988,'Hato Mayor','30',1062,1),
+ (1989,'Independencia','10',1062,1),
+ (1990,'La Altagracia','11',1062,1),
+ (1991,'La Estrelleta [Elias Pina]','07',1062,1),
+ (1992,'La Romana','12',1062,1),
+ (1993,'La Vega','13',1062,1),
+ (1994,'Maroia Trinidad Sánchez','14',1062,1),
+ (1995,'Monseñor Nouel','28',1062,1),
+ (1996,'Monte Cristi','15',1062,1),
+ (1997,'Monte Plata','29',1062,1),
+ (1998,'Pedernales','16',1062,1),
+ (1999,'Peravia','17',1062,1),
+ (2000,'Puerto Plata','18',1062,1),
+ (2001,'Salcedo','19',1062,1),
+ (2002,'Samaná','20',1062,1),
+ (2003,'San Cristóbal','21',1062,1),
+ (2004,'San Pedro de Macorís','23',1062,1),
+ (2005,'Sánchez Ramírez','24',1062,1),
+ (2006,'Santiago','25',1062,1),
+ (2007,'Santiago Rodríguez','26',1062,1),
+ (2008,'Valverde','27',1062,1),
+ (2009,'Adrar','01',1003,1),
+ (2010,'Ain Defla','44',1003,1),
+ (2011,'Ain Tmouchent','46',1003,1),
+ (2012,'Alger','16',1003,1),
+ (2013,'Annaba','23',1003,1),
+ (2014,'Batna','05',1003,1),
+ (2015,'Bechar','08',1003,1),
+ (2016,'Bejaia','06',1003,1),
+ (2017,'Biskra','07',1003,1),
+ (2018,'Blida','09',1003,1),
+ (2019,'Bordj Bou Arreridj','34',1003,1),
+ (2020,'Bouira','10',1003,1),
+ (2021,'Boumerdes','35',1003,1),
+ (2022,'Chlef','02',1003,1),
+ (2023,'Constantine','25',1003,1),
+ (2024,'Djelfa','17',1003,1),
+ (2025,'El Bayadh','32',1003,1),
+ (2026,'El Oued','39',1003,1),
+ (2027,'El Tarf','36',1003,1),
+ (2028,'Ghardaia','47',1003,1),
+ (2029,'Guelma','24',1003,1),
+ (2030,'Illizi','33',1003,1),
+ (2031,'Jijel','18',1003,1),
+ (2032,'Khenchela','40',1003,1),
+ (2033,'Laghouat','03',1003,1),
+ (2034,'Mascara','29',1003,1),
+ (2035,'Medea','26',1003,1),
+ (2036,'Mila','43',1003,1),
+ (2037,'Mostaganem','27',1003,1),
+ (2038,'Msila','28',1003,1),
+ (2039,'Naama','45',1003,1),
+ (2040,'Oran','31',1003,1),
+ (2041,'Ouargla','30',1003,1),
+ (2042,'Oum el Bouaghi','04',1003,1),
+ (2043,'Relizane','48',1003,1),
+ (2044,'Saida','20',1003,1),
+ (2045,'Setif','19',1003,1),
+ (2046,'Sidi Bel Abbes','22',1003,1),
+ (2047,'Skikda','21',1003,1),
+ (2048,'Souk Ahras','41',1003,1),
+ (2049,'Tamanghasset','11',1003,1),
+ (2050,'Tebessa','12',1003,1),
+ (2051,'Tiaret','14',1003,1),
+ (2052,'Tindouf','37',1003,1),
+ (2053,'Tipaza','42',1003,1),
+ (2054,'Tissemsilt','38',1003,1),
+ (2055,'Tizi Ouzou','15',1003,1),
+ (2056,'Tlemcen','13',1003,1),
+ (2057,'Azuay','A',1064,1),
+ (2058,'Bolivar','B',1064,1),
+ (2059,'Canar','F',1064,1),
+ (2060,'Carchi','C',1064,1),
+ (2061,'Cotopaxi','X',1064,1),
+ (2062,'Chimborazo','H',1064,1),
+ (2063,'El Oro','O',1064,1),
+ (2064,'Esmeraldas','E',1064,1),
+ (2065,'Galapagos','W',1064,1),
+ (2066,'Guayas','G',1064,1),
+ (2067,'Imbabura','I',1064,1),
+ (2068,'Loja','L',1064,1),
+ (2069,'Los Rios','R',1064,1),
+ (2070,'Manabi','M',1064,1),
+ (2071,'Morona-Santiago','S',1064,1),
+ (2072,'Napo','N',1064,1),
+ (2073,'Orellana','D',1064,1),
+ (2074,'Pastaza','Y',1064,1),
+ (2075,'Pichincha','P',1064,1),
+ (2076,'Sucumbios','U',1064,1),
+ (2077,'Tungurahua','T',1064,1),
+ (2078,'Zamora-Chinchipe','Z',1064,1),
+ (2079,'Harjumaa','37',1069,1),
+ (2080,'Hiiumaa','39',1069,1),
+ (2081,'Ida-Virumaa','44',1069,1),
+ (2082,'Jõgevamaa','49',1069,1),
+ (2083,'Järvamaa','51',1069,1),
+ (2084,'Läänemaa','57',1069,1),
+ (2085,'Lääne-Virumaa','59',1069,1),
+ (2086,'Põlvamaa','65',1069,1),
+ (2087,'Pärnumaa','67',1069,1),
+ (2088,'Raplamaa','70',1069,1),
+ (2089,'Saaremaa','74',1069,1),
+ (2090,'Tartumaa','7B',1069,1),
+ (2091,'Valgamaa','82',1069,1),
+ (2092,'Viljandimaa','84',1069,1),
+ (2093,'Võrumaa','86',1069,1),
+ (2094,'Ad Daqahllyah','DK',1065,1),
+ (2095,'Al Bahr al Ahmar','BA',1065,1),
+ (2096,'Al Buhayrah','BH',1065,1),
+ (2097,'Al Fayym','FYM',1065,1),
+ (2098,'Al Gharbiyah','GH',1065,1),
+ (2099,'Al Iskandarlyah','ALX',1065,1),
+ (2100,'Al Isma illyah','IS',1065,1),
+ (2101,'Al Jizah','GZ',1065,1),
+ (2102,'Al Minuflyah','MNF',1065,1),
+ (2103,'Al Minya','MN',1065,1),
+ (2104,'Al Qahirah','C',1065,1),
+ (2105,'Al Qalyublyah','KB',1065,1),
+ (2106,'Al Wadi al Jadid','WAD',1065,1),
+ (2107,'Ash Sharqiyah','SHR',1065,1),
+ (2108,'As Suways','SUZ',1065,1),
+ (2109,'Aswan','ASN',1065,1),
+ (2110,'Asyut','AST',1065,1),
+ (2111,'Bani Suwayf','BNS',1065,1),
+ (2112,'Bur Sa\'id','PTS',1065,1),
+ (2113,'Dumyat','DT',1065,1),
+ (2114,'Janub Sina\'','JS',1065,1),
+ (2115,'Kafr ash Shaykh','KFS',1065,1),
+ (2116,'Matruh','MT',1065,1),
+ (2117,'Qina','KN',1065,1),
+ (2118,'Shamal Sina\'','SIN',1065,1),
+ (2119,'Suhaj','SHG',1065,1),
+ (2120,'Anseba','AN',1068,1),
+ (2121,'Debub','DU',1068,1),
+ (2122,'Debubawi Keyih Bahri [Debub-Keih-Bahri]','DK',1068,1),
+ (2123,'Gash-Barka','GB',1068,1),
+ (2124,'Maakel [Maekel]','MA',1068,1),
+ (2125,'Semenawi Keyih Bahri [Semien-Keih-Bahri]','SK',1068,1),
+ (2126,'Álava','VI',1198,1),
+ (2127,'Albacete','AB',1198,1),
+ (2128,'Alicante','A',1198,1),
+ (2129,'Almería','AL',1198,1),
+ (2130,'Asturias','O',1198,1),
+ (2131,'Ávila','AV',1198,1),
+ (2132,'Badajoz','BA',1198,1),
+ (2133,'Baleares','PM',1198,1),
+ (2134,'Barcelona','B',1198,1),
+ (2135,'Burgos','BU',1198,1),
+ (2136,'Cáceres','CC',1198,1),
+ (2137,'Cádiz','CA',1198,1),
+ (2138,'Cantabria','S',1198,1),
+ (2139,'Castellón','CS',1198,1),
+ (2140,'Ciudad Real','CR',1198,1),
+ (2141,'Cuenca','CU',1198,1),
+ (2142,'Girona [Gerona]','GE',1198,1),
+ (2143,'Granada','GR',1198,1),
+ (2144,'Guadalajara','GU',1198,1),
+ (2145,'Guipúzcoa','SS',1198,1),
+ (2146,'Huelva','H',1198,1),
+ (2147,'Huesca','HU',1198,1),
+ (2148,'Jaén','J',1198,1),
+ (2149,'La Coruña','C',1198,1),
+ (2150,'La Rioja','LO',1198,1),
+ (2151,'Las Palmas','GC',1198,1),
+ (2152,'León','LE',1198,1),
+ (2153,'Lleida [Lérida]','L',1198,1),
+ (2154,'Lugo','LU',1198,1),
+ (2155,'Madrid','M',1198,1),
+ (2156,'Málaga','MA',1198,1),
+ (2157,'Murcia','MU',1198,1),
+ (2158,'Navarra','NA',1198,1),
+ (2159,'Ourense','OR',1198,1),
+ (2160,'Palencia','P',1198,1),
+ (2161,'Pontevedra','PO',1198,1),
+ (2162,'Salamanca','SA',1198,1),
+ (2163,'Santa Cruz de Tenerife','TF',1198,1),
+ (2164,'Segovia','SG',1198,1),
+ (2165,'Sevilla','SE',1198,1),
+ (2166,'Soria','SO',1198,1),
+ (2167,'Tarragona','T',1198,1),
+ (2168,'Teruel','TE',1198,1),
+ (2169,'Valencia','V',1198,1),
+ (2170,'Valladolid','VA',1198,1),
+ (2171,'Vizcaya','BI',1198,1),
+ (2172,'Zamora','ZA',1198,1),
+ (2173,'Zaragoza','Z',1198,1),
+ (2174,'Ceuta','CE',1198,1),
+ (2175,'Melilla','ML',1198,1),
+ (2176,'Toledo','TO',1198,1),
+ (2177,'Córdoba','CO',1198,1),
+ (2178,'Addis Ababa','AA',1070,1),
+ (2179,'Dire Dawa','DD',1070,1),
+ (2180,'Afar','AF',1070,1),
+ (2181,'Amara','AM',1070,1),
+ (2182,'Benshangul-Gumaz','BE',1070,1),
+ (2183,'Gambela Peoples','GA',1070,1),
+ (2184,'Harari People','HA',1070,1),
+ (2185,'Oromia','OR',1070,1),
+ (2186,'Somali','SO',1070,1),
+ (2187,'Southern Nations, Nationalities and Peoples','SN',1070,1),
+ (2188,'Tigrai','TI',1070,1),
+ (2189,'Eastern','E',1074,1),
+ (2190,'Northern','N',1074,1),
+ (2191,'Western','W',1074,1),
+ (2192,'Rotuma','R',1074,1),
+ (2193,'Central','C',1074,1),
+ (2194,'Chuuk','TRK',1141,1),
+ (2195,'Kosrae','KSA',1141,1),
+ (2196,'Pohnpei','PNI',1141,1),
+ (2197,'Yap','YAP',1141,1),
+ (2198,'Ain','01',1076,1),
+ (2199,'Aisne','02',1076,1),
+ (2200,'Allier','03',1076,1),
+ (2201,'Alpes-de-Haute-Provence','04',1076,1),
+ (2202,'Alpes-Maritimes','06',1076,1),
+ (2203,'Ardèche','07',1076,1),
+ (2204,'Ardennes','08',1076,1),
+ (2205,'Ariège','09',1076,1),
+ (2206,'Aube','10',1076,1),
+ (2207,'Aude','11',1076,1),
+ (2208,'Aveyron','12',1076,1),
+ (2209,'Bas-Rhin','67',1076,1),
+ (2210,'Bouches-du-Rhône','13',1076,1),
+ (2211,'Calvados','14',1076,1),
+ (2212,'Cantal','15',1076,1),
+ (2213,'Charente','16',1076,1),
+ (2214,'Charente-Maritime','17',1076,1),
+ (2215,'Cher','18',1076,1),
+ (2216,'Corrèze','19',1076,1),
+ (2217,'Corse-du-Sud','20A',1076,1),
+ (2218,'Côte-d\'Or','21',1076,1),
+ (2219,'Côtes-d\'Armor','22',1076,1),
+ (2220,'Creuse','23',1076,1),
+ (2221,'Deux-Sèvres','79',1076,1),
+ (2222,'Dordogne','24',1076,1),
+ (2223,'Doubs','25',1076,1),
+ (2224,'Drôme','26',1076,1),
+ (2225,'Essonne','91',1076,1),
+ (2226,'Eure','27',1076,1),
+ (2227,'Eure-et-Loir','28',1076,1),
+ (2228,'Finistère','29',1076,1),
+ (2229,'Gard','30',1076,1),
+ (2230,'Gers','32',1076,1),
+ (2231,'Gironde','33',1076,1),
+ (2232,'Haut-Rhin','68',1076,1),
+ (2233,'Haute-Corse','20B',1076,1),
+ (2234,'Haute-Garonne','31',1076,1),
+ (2235,'Haute-Loire','43',1076,1),
+ (2236,'Haute-Saône','70',1076,1),
+ (2237,'Haute-Savoie','74',1076,1),
+ (2238,'Haute-Vienne','87',1076,1),
+ (2239,'Hautes-Alpes','05',1076,1),
+ (2240,'Hautes-Pyrénées','65',1076,1),
+ (2241,'Hauts-de-Seine','92',1076,1),
+ (2242,'Hérault','34',1076,1),
+ (2243,'Indre','36',1076,1),
+ (2244,'Ille-et-Vilaine','35',1076,1),
+ (2245,'Indre-et-Loire','37',1076,1),
+ (2246,'Isère','38',1076,1),
+ (2247,'Landes','40',1076,1),
+ (2248,'Loir-et-Cher','41',1076,1),
+ (2249,'Loire','42',1076,1),
+ (2250,'Loire-Atlantique','44',1076,1),
+ (2251,'Loiret','45',1076,1),
+ (2252,'Lot','46',1076,1),
+ (2253,'Lot-et-Garonne','47',1076,1),
+ (2254,'Lozère','48',1076,1),
+ (2255,'Maine-et-Loire','49',1076,1),
+ (2256,'Manche','50',1076,1),
+ (2257,'Marne','51',1076,1),
+ (2258,'Mayenne','53',1076,1),
+ (2259,'Meurthe-et-Moselle','54',1076,1),
+ (2260,'Meuse','55',1076,1),
+ (2261,'Morbihan','56',1076,1),
+ (2262,'Moselle','57',1076,1),
+ (2263,'Nièvre','58',1076,1),
+ (2264,'Nord','59',1076,1),
+ (2265,'Oise','60',1076,1),
+ (2266,'Orne','61',1076,1),
+ (2267,'Paris','75',1076,1),
+ (2268,'Pas-de-Calais','62',1076,1),
+ (2269,'Puy-de-Dôme','63',1076,1),
+ (2270,'Pyrénées-Atlantiques','64',1076,1),
+ (2271,'Pyrénées-Orientales','66',1076,1),
+ (2272,'Rhône','69',1076,1),
+ (2273,'Saône-et-Loire','71',1076,1),
+ (2274,'Sarthe','72',1076,1),
+ (2275,'Savoie','73',1076,1),
+ (2276,'Seine-et-Marne','77',1076,1),
+ (2277,'Seine-Maritime','76',1076,1),
+ (2278,'Seine-Saint-Denis','93',1076,1),
+ (2279,'Somme','80',1076,1),
+ (2280,'Tarn','81',1076,1),
+ (2281,'Tarn-et-Garonne','82',1076,1),
+ (2282,'Val d\'Oise','95',1076,1),
+ (2283,'Territoire de Belfort','90',1076,1),
+ (2284,'Val-de-Marne','94',1076,1),
+ (2285,'Var','83',1076,1),
+ (2286,'Vaucluse','84',1076,1),
+ (2287,'Vendée','85',1076,1),
+ (2288,'Vienne','86',1076,1),
+ (2289,'Vosges','88',1076,1),
+ (2290,'Yonne','89',1076,1),
+ (2291,'Yvelines','78',1076,1),
+ (2292,'Guadeloupe','GP',1076,1),
+ (2293,'Martinique','MQ',1076,1),
+ (2294,'Guyane','GF',1076,1),
+ (2295,'La Réunion','RE',1076,1),
+ (2296,'Mayotte','YT',1076,1),
+ (2297,'Wallis-et-Futuna','WF',1076,1),
+ (2298,'Nouvelle-Calédonie','NC',1076,1),
+ (2299,'Haute-Marne','52',1076,1),
+ (2300,'Jura','39',1076,1),
+ (2301,'Aberdeen City','ABE',1226,1),
+ (2302,'Aberdeenshire','ABD',1226,1),
+ (2303,'Angus','ANS',1226,1),
+ (2304,'Co Antrim','ANT',1226,1),
+ (2305,'Argyll and Bute','AGB',1226,1),
+ (2306,'Co Armagh','ARM',1226,1),
+ (2307,'Bedfordshire','BDF',1226,1),
+ (2308,'Blaenau Gwent','BGW',1226,1),
+ (2309,'Bristol, City of','BST',1226,1),
+ (2310,'Buckinghamshire','BKM',1226,1),
+ (2311,'Cambridgeshire','CAM',1226,1),
+ (2312,'Cheshire','CHS',1226,1),
+ (2313,'Clackmannanshire','CLK',1226,1),
+ (2314,'Cornwall','CON',1226,1),
+ (2315,'Cumbria','CMA',1226,1),
+ (2316,'Derbyshire','DBY',1226,1),
+ (2317,'Co Londonderry','DRY',1226,1),
+ (2318,'Devon','DEV',1226,1),
+ (2319,'Dorset','DOR',1226,1),
+ (2320,'Co Down','DOW',1226,1),
+ (2321,'Dumfries and Galloway','DGY',1226,1),
+ (2322,'Dundee City','DND',1226,1),
+ (2323,'County Durham','DUR',1226,1),
+ (2324,'East Ayrshire','EAY',1226,1),
+ (2325,'East Dunbartonshire','EDU',1226,1),
+ (2326,'East Lothian','ELN',1226,1),
+ (2327,'East Renfrewshire','ERW',1226,1),
+ (2328,'East Riding of Yorkshire','ERY',1226,1),
+ (2329,'East Sussex','ESX',1226,1),
+ (2330,'Edinburgh, City of','EDH',1226,1),
+ (2331,'Na h-Eileanan Siar','ELS',1226,1),
+ (2332,'Essex','ESS',1226,1),
+ (2333,'Falkirk','FAL',1226,1),
+ (2334,'Co Fermanagh','FER',1226,1),
+ (2335,'Fife','FIF',1226,1),
+ (2336,'Glasgow City','GLG',1226,1),
+ (2337,'Gloucestershire','GLS',1226,1),
+ (2338,'Gwynedd','GWN',1226,1),
+ (2339,'Hampshire','HAM',1226,1),
+ (2340,'Herefordshire','HEF',1226,1),
+ (2341,'Hertfordshire','HRT',1226,1),
+ (2342,'Highland','HED',1226,1),
+ (2343,'Inverclyde','IVC',1226,1),
+ (2344,'Isle of Wight','IOW',1226,1),
+ (2345,'Kent','KEN',1226,1),
+ (2346,'Lancashire','LAN',1226,1),
+ (2347,'Leicestershire','LEC',1226,1),
+ (2348,'Lincolnshire','LIN',1226,1),
+ (2349,'Midlothian','MLN',1226,1),
+ (2350,'Moray','MRY',1226,1),
+ (2351,'Norfolk','NFK',1226,1),
+ (2352,'North Ayrshire','NAY',1226,1),
+ (2353,'North Lanarkshire','NLK',1226,1),
+ (2354,'North Yorkshire','NYK',1226,1),
+ (2355,'Northamptonshire','NTH',1226,1),
+ (2356,'Northumberland','NBL',1226,1),
+ (2357,'Nottinghamshire','NTT',1226,1),
+ (2358,'Oldham','OLD',1226,1),
+ (2359,'Omagh','OMH',1226,1),
+ (2360,'Orkney Islands','ORR',1226,1),
+ (2361,'Oxfordshire','OXF',1226,1),
+ (2362,'Perth and Kinross','PKN',1226,1),
+ (2363,'Powys','POW',1226,1),
+ (2364,'Renfrewshire','RFW',1226,1),
+ (2365,'Rutland','RUT',1226,1),
+ (2366,'Scottish Borders','SCB',1226,1),
+ (2367,'Shetland Islands','ZET',1226,1),
+ (2368,'Shropshire','SHR',1226,1),
+ (2369,'Somerset','SOM',1226,1),
+ (2370,'South Ayrshire','SAY',1226,1),
+ (2371,'South Gloucestershire','SGC',1226,1),
+ (2372,'South Lanarkshire','SLK',1226,1),
+ (2373,'Staffordshire','STS',1226,1),
+ (2374,'Stirling','STG',1226,1),
+ (2375,'Suffolk','SFK',1226,1),
+ (2376,'Surrey','SRY',1226,1),
+ (2377,'Vale of Glamorgan, The','VGL',1226,1),
+ (2378,'Warwickshire','WAR',1226,1),
+ (2379,'West Dunbartonshire','WDU',1226,1),
+ (2380,'West Lothian','WLN',1226,1),
+ (2381,'West Sussex','WSX',1226,1),
+ (2382,'Wiltshire','WIL',1226,1),
+ (2383,'Worcestershire','WOR',1226,1),
+ (2384,'Antrim and Newtownabbey','ANN',1226,1),
+ (2385,'Ards and North Down','AND',1226,1),
+ (2386,'Armagh City, Banbridge and Craigavon','ABC',1226,1),
+ (2387,'Belfast','BFS',1226,1),
+ (2388,'Causeway Coast and Glens','CCG',1226,1),
+ (2389,'Derry City and Strabane','DRS',1226,1),
+ (2390,'Fermanagh and Omagh','FMO',1226,1),
+ (2391,'Lisburn and Castlereagh','LBC',1226,1),
+ (2392,'Mid and East Antrim','MEA',1226,1),
+ (2393,'Mid Ulster','MUL',1226,1),
+ (2394,'Newry, Mourne and Down','NMD',1226,1),
+ (2395,'Bridgend','BGE',1226,1),
+ (2396,'Caerphilly','CAY',1226,1),
+ (2397,'Cardiff','CRF',1226,1),
+ (2398,'Carmarthenshire','CMN',1226,1),
+ (2399,'Ceredigion','CGN',1226,1),
+ (2400,'Conwy','CWY',1226,1),
+ (2401,'Denbighshire','DEN',1226,1),
+ (2402,'Flintshire','FLN',1226,1),
+ (2403,'Isle of Anglesey','AGY',1226,1),
+ (2404,'Merthyr Tydfil','MTY',1226,1),
+ (2405,'Neath Port Talbot','NTL',1226,1),
+ (2406,'Newport','NWP',1226,1),
+ (2407,'Pembrokeshire','PEM',1226,1),
+ (2408,'Rhondda, Cynon, Taff','RCT',1226,1),
+ (2409,'Swansea','SWA',1226,1),
+ (2410,'Torfaen','TOF',1226,1),
+ (2411,'Wrexham','WRX',1226,1),
+ (2412,'Monmouthshire','MON',1226,1),
+ (2413,'Tyne and Wear','TWR',1226,1),
+ (2414,'Greater Manchester','GTM',1226,1),
+ (2415,'Co Tyrone','TYR',1226,1),
+ (2416,'West Yorkshire','WYK',1226,1),
+ (2417,'South Yorkshire','SYK',1226,1),
+ (2418,'Merseyside','MSY',1226,1),
+ (2419,'Berkshire','BRK',1226,1),
+ (2420,'West Midlands','WMD',1226,1),
+ (2421,'West Glamorgan','WGM',1226,1),
+ (2422,'London','LON',1226,1),
+ (2423,'Clwyd','CWD',1226,1),
+ (2424,'South Glamorgan','SGM',1226,1),
+ (2425,'Ashanti','AH',1083,1),
+ (2426,'Brong-Ahafo','BA',1083,1),
+ (2427,'Greater Accra','AA',1083,1),
+ (2428,'Upper East','UE',1083,1),
+ (2429,'Upper West','UW',1083,1),
+ (2430,'Volta','TV',1083,1),
+ (2431,'Central','CP',1083,1),
+ (2432,'Eastern','EP',1083,1),
+ (2433,'Northern','NP',1083,1),
+ (2434,'Western','WP',1083,1),
+ (2435,'Banjul','B',1213,1),
+ (2436,'Lower River','L',1213,1),
+ (2437,'MacCarthy Island','M',1213,1),
+ (2438,'North Bank','N',1213,1),
+ (2439,'Upper River','U',1213,1),
+ (2440,'Beyla','BE',1091,1),
+ (2441,'Boffa','BF',1091,1),
+ (2442,'Boke','BK',1091,1),
+ (2443,'Coyah','CO',1091,1),
+ (2444,'Dabola','DB',1091,1),
+ (2445,'Dalaba','DL',1091,1),
+ (2446,'Dinguiraye','DI',1091,1),
+ (2447,'Dubreka','DU',1091,1),
+ (2448,'Faranah','FA',1091,1),
+ (2449,'Forecariah','FO',1091,1),
+ (2450,'Fria','FR',1091,1),
+ (2451,'Gaoual','GA',1091,1),
+ (2452,'Guekedou','GU',1091,1),
+ (2453,'Kankan','KA',1091,1),
+ (2454,'Kerouane','KE',1091,1),
+ (2455,'Kindia','KD',1091,1),
+ (2456,'Kissidougou','KS',1091,1),
+ (2457,'Koubia','KB',1091,1),
+ (2458,'Koundara','KN',1091,1),
+ (2459,'Kouroussa','KO',1091,1),
+ (2460,'Labe','LA',1091,1),
+ (2461,'Lelouma','LE',1091,1),
+ (2462,'Lola','LO',1091,1),
+ (2463,'Macenta','MC',1091,1),
+ (2464,'Mali','ML',1091,1),
+ (2465,'Mamou','MM',1091,1),
+ (2466,'Mandiana','MD',1091,1),
+ (2467,'Nzerekore','NZ',1091,1),
+ (2468,'Pita','PI',1091,1),
+ (2469,'Siguiri','SI',1091,1),
+ (2470,'Telimele','TE',1091,1),
+ (2471,'Tougue','TO',1091,1),
+ (2472,'Yomou','YO',1091,1),
+ (2473,'Region Continental','C',1067,1),
+ (2474,'Region Insular','I',1067,1),
+ (2475,'Annobon','AN',1067,1),
+ (2476,'Bioko Norte','BN',1067,1),
+ (2477,'Bioko Sur','BS',1067,1),
+ (2478,'Centro Sur','CS',1067,1),
+ (2479,'Kie-Ntem','KN',1067,1),
+ (2480,'Litoral','LI',1067,1),
+ (2481,'Wele-Nzas','WN',1067,1),
+ (2482,'Achaïa','13',1085,1),
+ (2483,'Aitolia-Akarnania','01',1085,1),
+ (2484,'Argolis','11',1085,1),
+ (2485,'Arkadia','12',1085,1),
+ (2486,'Arta','31',1085,1),
+ (2487,'Attiki','A1',1085,1),
+ (2488,'Chalkidiki','64',1085,1),
+ (2489,'Chania','94',1085,1),
+ (2490,'Chios','85',1085,1),
+ (2491,'Dodekanisos','81',1085,1),
+ (2492,'Drama','52',1085,1),
+ (2493,'Evros','71',1085,1),
+ (2494,'Evrytania','05',1085,1),
+ (2495,'Evvoia','04',1085,1),
+ (2496,'Florina','63',1085,1),
+ (2497,'Fokis','07',1085,1),
+ (2498,'Fthiotis','06',1085,1),
+ (2499,'Grevena','51',1085,1),
+ (2500,'Ileia','14',1085,1),
+ (2501,'Imathia','53',1085,1),
+ (2502,'Ioannina','33',1085,1),
+ (2503,'Irakleion','91',1085,1),
+ (2504,'Karditsa','41',1085,1),
+ (2505,'Kastoria','56',1085,1),
+ (2506,'Kavalla','55',1085,1),
+ (2507,'Kefallinia','23',1085,1),
+ (2508,'Kerkyra','22',1085,1),
+ (2509,'Kilkis','57',1085,1),
+ (2510,'Korinthia','15',1085,1),
+ (2511,'Kozani','58',1085,1),
+ (2512,'Kyklades','82',1085,1),
+ (2513,'Lakonia','16',1085,1),
+ (2514,'Larisa','42',1085,1),
+ (2515,'Lasithion','92',1085,1),
+ (2516,'Lefkas','24',1085,1),
+ (2517,'Lesvos','83',1085,1),
+ (2518,'Magnisia','43',1085,1),
+ (2519,'Messinia','17',1085,1),
+ (2520,'Pella','59',1085,1),
+ (2521,'Preveza','34',1085,1),
+ (2522,'Rethymnon','93',1085,1),
+ (2523,'Rodopi','73',1085,1),
+ (2524,'Samos','84',1085,1),
+ (2525,'Serrai','62',1085,1),
+ (2526,'Thesprotia','32',1085,1),
+ (2527,'Thessaloniki','54',1085,1),
+ (2528,'Trikala','44',1085,1),
+ (2529,'Voiotia','03',1085,1),
+ (2530,'Xanthi','72',1085,1),
+ (2531,'Zakynthos','21',1085,1),
+ (2532,'Agio Oros','69',1085,1),
+ (2533,'Pieria','61',1085,1),
+ (2534,'Alta Verapaz','AV',1090,1),
+ (2535,'Baja Verapaz','BV',1090,1),
+ (2536,'Chimaltenango','CM',1090,1),
+ (2537,'Chiquimula','CQ',1090,1),
+ (2538,'El Progreso','PR',1090,1),
+ (2539,'Escuintla','ES',1090,1),
+ (2540,'Guatemala','GU',1090,1),
+ (2541,'Huehuetenango','HU',1090,1),
+ (2542,'Izabal','IZ',1090,1),
+ (2543,'Jalapa','JA',1090,1),
+ (2544,'Jutiapa','JU',1090,1),
+ (2545,'Peten','PE',1090,1),
+ (2546,'Quetzaltenango','QZ',1090,1),
+ (2547,'Quiche','QC',1090,1),
+ (2548,'Retalhuleu','RE',1090,1),
+ (2549,'Sacatepequez','SA',1090,1),
+ (2550,'San Marcos','SM',1090,1),
+ (2551,'Santa Rosa','SR',1090,1),
+ (2552,'Sololá','SO',1090,1),
+ (2553,'Suchitepequez','SU',1090,1),
+ (2554,'Totonicapan','TO',1090,1),
+ (2555,'Zacapa','ZA',1090,1),
+ (2556,'Bissau','BS',1092,1),
+ (2557,'Bafata','BA',1092,1),
+ (2558,'Biombo','BM',1092,1),
+ (2559,'Bolama','BL',1092,1),
+ (2560,'Cacheu','CA',1092,1),
+ (2561,'Gabu','GA',1092,1),
+ (2562,'Oio','OI',1092,1),
+ (2563,'Quloara','QU',1092,1),
+ (2564,'Tombali S','TO',1092,1),
+ (2565,'Barima-Waini','BA',1093,1),
+ (2566,'Cuyuni-Mazaruni','CU',1093,1),
+ (2567,'Demerara-Mahaica','DE',1093,1),
+ (2568,'East Berbice-Corentyne','EB',1093,1),
+ (2569,'Essequibo Islands-West Demerara','ES',1093,1),
+ (2570,'Mahaica-Berbice','MA',1093,1),
+ (2571,'Pomeroon-Supenaam','PM',1093,1),
+ (2572,'Potaro-Siparuni','PT',1093,1),
+ (2573,'Upper Demerara-Berbice','UD',1093,1),
+ (2574,'Upper Takutu-Upper Essequibo','UT',1093,1),
+ (2575,'Atlantida','AT',1097,1),
+ (2576,'Colon','CL',1097,1),
+ (2577,'Comayagua','CM',1097,1),
+ (2578,'Copan','CP',1097,1),
+ (2579,'Cortes','CR',1097,1),
+ (2580,'Choluteca','CH',1097,1),
+ (2581,'El Paraiso','EP',1097,1),
+ (2582,'Francisco Morazan','FM',1097,1),
+ (2583,'Gracias a Dios','GD',1097,1),
+ (2584,'Intibuca','IN',1097,1),
+ (2585,'Islas de la Bahia','IB',1097,1),
+ (2586,'Lempira','LE',1097,1),
+ (2587,'Ocotepeque','OC',1097,1),
+ (2588,'Olancho','OL',1097,1),
+ (2589,'Santa Barbara','SB',1097,1),
+ (2590,'Valle','VA',1097,1),
+ (2591,'Yoro','YO',1097,1),
+ (2592,'La Paz','LP',1097,1),
+ (2593,'Bjelovarsko-bilogorska zupanija','07',1055,1),
+ (2594,'Brodsko-posavska zupanija','12',1055,1),
+ (2595,'Dubrovacko-neretvanska zupanija','19',1055,1),
+ (2596,'Istarska zupanija','18',1055,1),
+ (2597,'Karlovacka zupanija','04',1055,1),
+ (2598,'Koprivnickco-krizevacka zupanija','06',1055,1),
+ (2599,'Krapinako-zagorska zupanija','02',1055,1),
+ (2600,'Licko-senjska zupanija','09',1055,1),
+ (2601,'Medimurska zupanija','20',1055,1),
+ (2602,'Osjecko-baranjska zupanija','14',1055,1),
+ (2603,'Pozesko-slavonska zupanija','11',1055,1),
+ (2604,'Primorsko-goranska zupanija','08',1055,1),
+ (2605,'Sisacko-moelavacka Iupanija','03',1055,1),
+ (2606,'Splitako-dalmatinska zupanija','17',1055,1),
+ (2607,'Sibenako-kninska zupanija','15',1055,1),
+ (2608,'Varaidinska zupanija','05',1055,1),
+ (2609,'VirovitiEko-podravska zupanija','10',1055,1),
+ (2610,'VuRovarako-srijemska zupanija','16',1055,1),
+ (2611,'Zadaraka','13',1055,1),
+ (2612,'Zagrebacka zupanija','01',1055,1),
+ (2613,'Grande-Anse','GA',1094,1),
+ (2614,'Nord-Est','NE',1094,1),
+ (2615,'Nord-Ouest','NO',1094,1),
+ (2616,'Ouest','OU',1094,1),
+ (2617,'Sud','SD',1094,1),
+ (2618,'Sud-Est','SE',1094,1),
+ (2619,'Artibonite','AR',1094,1),
+ (2620,'Centre','CE',1094,1),
+ (2621,'Nippes','NI',1094,1),
+ (2622,'Nord','ND',1094,1),
+ (2623,'Budapest','BU',1099,1),
+ (2624,'Bács-Kiskun','BK',1099,1),
+ (2625,'Baranya','BA',1099,1),
+ (2626,'Békés','BE',1099,1),
+ (2627,'Borsod-Abaúj-Zemplén','BZ',1099,1),
+ (2628,'Csongrád','CS',1099,1),
+ (2629,'Fejér','FE',1099,1),
+ (2630,'Győr-Moson-Sopron','GS',1099,1),
+ (2631,'Hajdu-Bihar','HB',1099,1),
+ (2632,'Heves','HE',1099,1),
+ (2633,'Jász-Nagykun-Szolnok','JN',1099,1),
+ (2634,'Komárom-Esztergom','KE',1099,1),
+ (2635,'Nográd','NO',1099,1),
+ (2636,'Pest','PE',1099,1),
+ (2637,'Somogy','SO',1099,1),
+ (2638,'Szabolcs-Szatmár-Bereg','SZ',1099,1),
+ (2639,'Tolna','TO',1099,1),
+ (2640,'Vas','VA',1099,1),
+ (2641,'Veszprém','VE',1099,1),
+ (2642,'Zala','ZA',1099,1),
+ (2643,'Békéscsaba','BC',1099,1),
+ (2644,'Debrecen','DE',1099,1),
+ (2645,'Dunaújváros','DU',1099,1),
+ (2646,'Eger','EG',1099,1),
+ (2647,'Győr','GY',1099,1),
+ (2648,'Hódmezővásárhely','HV',1099,1),
+ (2649,'Kaposvár','KV',1099,1),
+ (2650,'Kecskemét','KM',1099,1),
+ (2651,'Miskolc','MI',1099,1),
+ (2652,'Nagykanizsa','NK',1099,1),
+ (2653,'Nyiregyháza','NY',1099,1),
+ (2654,'Pécs','PS',1099,1),
+ (2655,'Salgótarján','ST',1099,1),
+ (2656,'Sopron','SN',1099,1),
+ (2657,'Szeged','SD',1099,1),
+ (2658,'Székesfehérvár','SF',1099,1),
+ (2659,'Szekszárd','SS',1099,1),
+ (2660,'Szolnok','SK',1099,1),
+ (2661,'Szombathely','SH',1099,1),
+ (2662,'Tatabánya','TB',1099,1),
+ (2663,'Zalaegerszeg','ZE',1099,1),
+ (2664,'Bali','BA',1102,1),
+ (2665,'Kepulauan Bangka Belitung','BB',1102,1),
+ (2666,'Banten','BT',1102,1),
+ (2667,'Bengkulu','BE',1102,1),
+ (2668,'Gorontalo','GO',1102,1),
+ (2669,'Papua Barat','PB',1102,1),
+ (2670,'Jambi','JA',1102,1),
+ (2671,'Jawa Barat','JB',1102,1),
+ (2672,'Jawa Tengah','JT',1102,1),
+ (2673,'Jawa Timur','JI',1102,1),
+ (2674,'Kalimantan Barat','KB',1102,1),
+ (2675,'Kalimantan Timur','KI',1102,1),
+ (2676,'Kalimantan Selatan','KS',1102,1),
+ (2677,'Kepulauan Riau','KR',1102,1),
+ (2678,'Lampung','LA',1102,1),
+ (2679,'Maluku','MA',1102,1),
+ (2680,'Maluku Utara','MU',1102,1),
+ (2681,'Nusa Tenggara Barat','NB',1102,1),
+ (2682,'Nusa Tenggara Timur','NT',1102,1),
+ (2683,'Papua','PA',1102,1),
+ (2684,'Riau','RI',1102,1),
+ (2685,'Sulawesi Selatan','SN',1102,1),
+ (2686,'Sulawesi Tengah','ST',1102,1),
+ (2687,'Sulawesi Tenggara','SG',1102,1),
+ (2688,'Sulawesi Utara','SA',1102,1),
+ (2689,'Sumatra Barat','SB',1102,1),
+ (2690,'Sumatra Selatan','SS',1102,1),
+ (2691,'Sumatera Utara','SU',1102,1),
+ (2692,'DKI Jakarta','JK',1102,1),
+ (2693,'Aceh','AC',1102,1),
+ (2694,'DI Yogyakarta','YO',1102,1),
+ (2695,'Kalimantan Tengah','KT',1102,1),
+ (2696,'Sulawesi Barat','SR',1102,1),
+ (2697,'Kalimantan Utara','KU',1102,1),
+ (2698,'Cork','C',1105,1),
+ (2699,'Clare','CE',1105,1),
+ (2700,'Cavan','CN',1105,1),
+ (2701,'Carlow','CW',1105,1),
+ (2702,'Dublin','D',1105,1),
+ (2703,'Donegal','DL',1105,1),
+ (2704,'Galway','G',1105,1),
+ (2705,'Kildare','KE',1105,1),
+ (2706,'Kilkenny','KK',1105,1),
+ (2707,'Kerry','KY',1105,1),
+ (2708,'Longford','LD',1105,1),
+ (2709,'Louth','LH',1105,1),
+ (2710,'Limerick','LK',1105,1),
+ (2711,'Leitrim','LM',1105,1),
+ (2712,'Laois','LS',1105,1),
+ (2713,'Meath','MH',1105,1),
+ (2714,'Monaghan','MN',1105,1),
+ (2715,'Mayo','MO',1105,1),
+ (2716,'Offaly','OY',1105,1),
+ (2717,'Roscommon','RN',1105,1),
+ (2718,'Sligo','SO',1105,1),
+ (2719,'Tipperary','TA',1105,1),
+ (2720,'Waterford','WD',1105,1),
+ (2721,'Westmeath','WH',1105,1),
+ (2722,'Wicklow','WW',1105,1),
+ (2723,'Wexford','WX',1105,1),
+ (2724,'HaDarom','D',1106,1),
+ (2725,'HaMerkaz','M',1106,1),
+ (2726,'HaZafon','Z',1106,1),
+ (2727,'Haifa','HA',1106,1),
+ (2728,'Tel-Aviv','TA',1106,1),
+ (2729,'Jerusalem','JM',1106,1),
+ (2730,'Al Anbar','AN',1104,1),
+ (2731,'Al Ba,rah','BA',1104,1),
+ (2732,'Al Muthanna','MU',1104,1),
+ (2733,'Al Qadisiyah','QA',1104,1),
+ (2734,'An Najef','NA',1104,1),
+ (2735,'Arbil','AR',1104,1),
+ (2736,'As Sulaymaniyah','SW',1104,1),
+ (2737,'At Ta\'mim','TS',1104,1),
+ (2738,'Babil','BB',1104,1),
+ (2739,'Baghdad','BG',1104,1),
+ (2740,'Dahuk','DA',1104,1),
+ (2741,'Dhi Qar','DQ',1104,1),
+ (2742,'Diyala','DI',1104,1),
+ (2743,'Karbala\'','KA',1104,1),
+ (2744,'Maysan','MA',1104,1),
+ (2745,'Ninawa','NI',1104,1),
+ (2746,'Salah ad Din','SD',1104,1),
+ (2747,'Wasit','WA',1104,1),
+ (2748,'Ardabil','03',1103,1),
+ (2749,'Azarbayjan-e Gharbi','02',1103,1),
+ (2750,'Azarbayjan-e Sharqi','01',1103,1),
+ (2751,'Bushehr','06',1103,1),
+ (2752,'Chahar Mahall va Bakhtiari','08',1103,1),
+ (2753,'Esfahan','04',1103,1),
+ (2754,'Fars','14',1103,1),
+ (2755,'Gilan','19',1103,1),
+ (2756,'Golestan','27',1103,1),
+ (2757,'Hamadan','24',1103,1),
+ (2758,'Hormozgan','23',1103,1),
+ (2759,'Iiam','05',1103,1),
+ (2760,'Kerman','15',1103,1),
+ (2761,'Kermanshah','17',1103,1),
+ (2762,'Khorasan','09',1103,1),
+ (2763,'Khuzestan','10',1103,1),
+ (2764,'Kohjiluyeh va Buyer Ahmad','18',1103,1),
+ (2765,'Kordestan','16',1103,1),
+ (2766,'Lorestan','20',1103,1),
+ (2767,'Markazi','22',1103,1),
+ (2768,'Mazandaran','21',1103,1),
+ (2769,'Qazvin','28',1103,1),
+ (2770,'Qom','26',1103,1),
+ (2771,'Semnan','12',1103,1),
+ (2772,'Sistan va Baluchestan','13',1103,1),
+ (2773,'Tehran','07',1103,1),
+ (2774,'Yazd','25',1103,1),
+ (2775,'Zanjan','11',1103,1),
+ (2776,'Austurland','7',1100,1),
+ (2777,'Hofuoborgarsvaeoi utan Reykjavikur','1',1100,1),
+ (2778,'Norourland eystra','6',1100,1),
+ (2779,'Norourland vestra','5',1100,1),
+ (2780,'Reykjavik','0',1100,1),
+ (2781,'Suourland','8',1100,1),
+ (2782,'Suournes','2',1100,1),
+ (2783,'Vestfirolr','4',1100,1),
+ (2784,'Vesturland','3',1100,1),
+ (2785,'Agrigento','AG',1107,1),
+ (2786,'Alessandria','AL',1107,1),
+ (2787,'Ancona','AN',1107,1),
+ (2788,'Aosta','AO',1107,1),
+ (2789,'Arezzo','AR',1107,1),
+ (2790,'Ascoli Piceno','AP',1107,1),
+ (2791,'Asti','AT',1107,1),
+ (2792,'Avellino','AV',1107,1),
+ (2793,'Bari','BA',1107,1),
+ (2794,'Belluno','BL',1107,1),
+ (2795,'Benevento','BN',1107,1),
+ (2796,'Bergamo','BG',1107,1),
+ (2797,'Biella','BI',1107,1),
+ (2798,'Bologna','BO',1107,1),
+ (2799,'Bolzano','BZ',1107,1),
+ (2800,'Brescia','BS',1107,1),
+ (2801,'Brindisi','BR',1107,1),
+ (2802,'Cagliari','CA',1107,1),
+ (2803,'Caltanissetta','CL',1107,1),
+ (2804,'Campobasso','CB',1107,1),
+ (2805,'Caserta','CE',1107,1),
+ (2806,'Catania','CT',1107,1),
+ (2807,'Catanzaro','CZ',1107,1),
+ (2808,'Chieti','CH',1107,1),
+ (2809,'Como','CO',1107,1),
+ (2810,'Cosenza','CS',1107,1),
+ (2811,'Cremona','CR',1107,1),
+ (2812,'Crotone','KR',1107,1),
+ (2813,'Cuneo','CN',1107,1),
+ (2814,'Enna','EN',1107,1),
+ (2815,'Ferrara','FE',1107,1),
+ (2816,'Firenze','FI',1107,1),
+ (2817,'Foggia','FG',1107,1),
+ (2818,'Forlì-Cesena','FC',1107,1),
+ (2819,'Frosinone','FR',1107,1),
+ (2820,'Genova','GE',1107,1),
+ (2821,'Gorizia','GO',1107,1),
+ (2822,'Grosseto','GR',1107,1),
+ (2823,'Imperia','IM',1107,1),
+ (2824,'Isernia','IS',1107,1),
+ (2825,'L\'Aquila','AQ',1107,1),
+ (2826,'La Spezia','SP',1107,1),
+ (2827,'Latina','LT',1107,1),
+ (2828,'Lecce','LE',1107,1),
+ (2829,'Lecco','LC',1107,1),
+ (2830,'Livorno','LI',1107,1),
+ (2831,'Lodi','LO',1107,1),
+ (2832,'Lucca','LU',1107,1),
+ (2833,'Macerata','MC',1107,1),
+ (2834,'Mantova','MN',1107,1),
+ (2835,'Massa-Carrara','MS',1107,1),
+ (2836,'Matera','MT',1107,1),
+ (2837,'Messina','ME',1107,1),
+ (2838,'Milano','MI',1107,1),
+ (2839,'Modena','MO',1107,1),
+ (2840,'Napoli','NA',1107,1),
+ (2841,'Novara','NO',1107,1),
+ (2842,'Nuoro','NU',1107,1),
+ (2843,'Oristano','OR',1107,1),
+ (2844,'Padova','PD',1107,1),
+ (2845,'Palermo','PA',1107,1),
+ (2846,'Parma','PR',1107,1),
+ (2847,'Pavia','PV',1107,1),
+ (2848,'Perugia','PG',1107,1),
+ (2849,'Pesaro e Urbino','PU',1107,1),
+ (2850,'Pescara','PE',1107,1),
+ (2851,'Piacenza','PC',1107,1),
+ (2852,'Pisa','PI',1107,1),
+ (2853,'Pistoia','PT',1107,1),
+ (2854,'Pordenone','PN',1107,1),
+ (2855,'Potenza','PZ',1107,1),
+ (2856,'Prato','PO',1107,1),
+ (2857,'Ragusa','RG',1107,1),
+ (2858,'Ravenna','RA',1107,1),
+ (2859,'Reggio Calabria','RC',1107,1),
+ (2860,'Reggio Emilia','RE',1107,1),
+ (2861,'Rieti','RI',1107,1),
+ (2862,'Rimini','RN',1107,1),
+ (2863,'Roma','RM',1107,1),
+ (2864,'Rovigo','RO',1107,1),
+ (2865,'Salerno','SA',1107,1),
+ (2866,'Sassari','SS',1107,1),
+ (2867,'Savona','SV',1107,1),
+ (2868,'Siena','SI',1107,1),
+ (2869,'Siracusa','SR',1107,1),
+ (2870,'Sondrio','SO',1107,1),
+ (2871,'Taranto','TA',1107,1),
+ (2872,'Teramo','TE',1107,1),
+ (2873,'Terni','TR',1107,1),
+ (2874,'Torino','TO',1107,1),
+ (2875,'Trapani','TP',1107,1),
+ (2876,'Trento','TN',1107,1),
+ (2877,'Treviso','TV',1107,1),
+ (2878,'Trieste','TS',1107,1),
+ (2879,'Udine','UD',1107,1),
+ (2880,'Varese','VA',1107,1),
+ (2881,'Venezia','VE',1107,1),
+ (2882,'Verbano-Cusio-Ossola','VB',1107,1),
+ (2883,'Vercelli','VC',1107,1),
+ (2884,'Verona','VR',1107,1),
+ (2885,'Vibo Valentia','VV',1107,1),
+ (2886,'Vicenza','VI',1107,1),
+ (2887,'Viterbo','VT',1107,1),
+ (2888,'Barletta-Andria-Trani','BT',1107,1),
+ (2889,'Fermo','FM',1107,1),
+ (2890,'Monza e Brianza','MB',1107,1),
+ (2891,'Carbonia-Iglesias','CI',1107,1),
+ (2892,'Olbia-Tempio','OT',1107,1),
+ (2893,'Medio Campidano','VS',1107,1),
+ (2894,'Ogliastra','OG',1107,1),
+ (2895,'Aichi','23',1109,1),
+ (2896,'Akita','05',1109,1),
+ (2897,'Aomori','02',1109,1),
+ (2898,'Chiba','12',1109,1),
+ (2899,'Ehime','38',1109,1),
+ (2900,'Fukui','18',1109,1),
+ (2901,'Fukuoka','40',1109,1),
+ (2902,'Fukusima','07',1109,1),
+ (2903,'Gifu','21',1109,1),
+ (2904,'Gunma','10',1109,1),
+ (2905,'Hiroshima','34',1109,1),
+ (2906,'Hokkaido','01',1109,1),
+ (2907,'Hyogo','28',1109,1),
+ (2908,'Ibaraki','08',1109,1),
+ (2909,'Ishikawa','17',1109,1),
+ (2910,'Iwate','03',1109,1),
+ (2911,'Kagawa','37',1109,1),
+ (2912,'Kagoshima','46',1109,1),
+ (2913,'Kanagawa','14',1109,1),
+ (2914,'Kochi','39',1109,1),
+ (2915,'Kumamoto','43',1109,1),
+ (2916,'Kyoto','26',1109,1),
+ (2917,'Mie','24',1109,1),
+ (2918,'Miyagi','04',1109,1),
+ (2919,'Miyazaki','45',1109,1),
+ (2920,'Nagano','20',1109,1),
+ (2921,'Nagasaki','42',1109,1),
+ (2922,'Nara','29',1109,1),
+ (2923,'Niigata','15',1109,1),
+ (2924,'Oita','44',1109,1),
+ (2925,'Okayama','33',1109,1),
+ (2926,'Okinawa','47',1109,1),
+ (2927,'Osaka','27',1109,1),
+ (2928,'Saga','41',1109,1),
+ (2929,'Saitama','11',1109,1),
+ (2930,'Shiga','25',1109,1),
+ (2931,'Shimane','32',1109,1),
+ (2932,'Shizuoka','22',1109,1),
+ (2933,'Tochigi','09',1109,1),
+ (2934,'Tokushima','36',1109,1),
+ (2935,'Tokyo','13',1109,1),
+ (2936,'Tottori','31',1109,1),
+ (2937,'Toyama','16',1109,1),
+ (2938,'Wakayama','30',1109,1),
+ (2939,'Yamagata','06',1109,1),
+ (2940,'Yamaguchi','35',1109,1),
+ (2941,'Yamanashi','19',1109,1),
+ (2942,'Clarendon','CN',1108,1),
+ (2943,'Hanover','HR',1108,1),
+ (2944,'Kingston','KN',1108,1),
+ (2945,'Portland','PD',1108,1),
+ (2946,'Saint Andrew','AW',1108,1),
+ (2947,'Saint Ann','AN',1108,1),
+ (2948,'Saint Catherine','CE',1108,1),
+ (2949,'Saint Elizabeth','EH',1108,1),
+ (2950,'Saint James','JS',1108,1),
+ (2951,'Saint Mary','MY',1108,1),
+ (2952,'Saint Thomas','TS',1108,1),
+ (2953,'Trelawny','TY',1108,1),
+ (2954,'Westmoreland','WD',1108,1),
+ (2955,'Ajln','AJ',1110,1),
+ (2956,'Al \'Aqaba','AQ',1110,1),
+ (2957,'Al Balqa\'','BA',1110,1),
+ (2958,'Al Karak','KA',1110,1),
+ (2959,'Al Mafraq','MA',1110,1),
+ (2960,'Amman','AM',1110,1),
+ (2961,'At Tafilah','AT',1110,1),
+ (2962,'Az Zarga','AZ',1110,1),
+ (2963,'Irbid','JR',1110,1),
+ (2964,'Jarash','JA',1110,1),
+ (2965,'Ma\'an','MN',1110,1),
+ (2966,'Madaba','MD',1110,1),
+ (2967,'Baringo','01',1112,1),
+ (2968,'Bomet','02',1112,1),
+ (2969,'Bungoma','03',1112,1),
+ (2970,'Busia','04',1112,1),
+ (2971,'Elgeyo/Marakwet','05',1112,1),
+ (2972,'Embu','06',1112,1),
+ (2973,'Garissa','07',1112,1),
+ (2974,'Homa Bay','08',1112,1),
+ (2975,'Isiolo','09',1112,1),
+ (2976,'Kajiado','10',1112,1),
+ (2977,'Kakamega','11',1112,1),
+ (2978,'Kericho','12',1112,1),
+ (2979,'Kiambu','13',1112,1),
+ (2980,'Kilifi','14',1112,1),
+ (2981,'Kirinyaga','15',1112,1),
+ (2982,'Kisii','16',1112,1),
+ (2983,'Kisumu','17',1112,1),
+ (2984,'Kitui','18',1112,1),
+ (2985,'Kwale','19',1112,1),
+ (2986,'Laikipia','20',1112,1),
+ (2987,'Lamu','21',1112,1),
+ (2988,'Machakos','22',1112,1),
+ (2989,'Makueni','23',1112,1),
+ (2990,'Mandera','24',1112,1),
+ (2991,'Marsabit','25',1112,1),
+ (2992,'Meru','26',1112,1),
+ (2993,'Migori','27',1112,1),
+ (2994,'Mombasa','28',1112,1),
+ (2995,'Murang\'a','29',1112,1),
+ (2996,'Nairobi City','30',1112,1),
+ (2997,'Nakuru','31',1112,1),
+ (2998,'Nandi','32',1112,1),
+ (2999,'Narok','33',1112,1),
+ (3000,'Nyamira','34',1112,1),
+ (3001,'Nyandarua','35',1112,1),
+ (3002,'Nyeri','36',1112,1),
+ (3003,'Samburu','37',1112,1),
+ (3004,'Siaya','38',1112,1),
+ (3005,'Taita/Taveta','39',1112,1),
+ (3006,'Tana River','40',1112,1),
+ (3007,'Tharaka-Nithi','41',1112,1),
+ (3008,'Trans Nzoia','42',1112,1),
+ (3009,'Turkana','43',1112,1),
+ (3010,'Uasin Gishu','44',1112,1),
+ (3011,'Vihiga','45',1112,1),
+ (3012,'Wajir','46',1112,1),
+ (3013,'West Pokot','47',1112,1),
+ (3014,'Bishkek','GB',1117,1),
+ (3015,'Batken','B',1117,1),
+ (3016,'Chu','C',1117,1),
+ (3017,'Jalal-Abad','J',1117,1),
+ (3018,'Naryn','N',1117,1),
+ (3019,'Osh','O',1117,1),
+ (3020,'Talas','T',1117,1),
+ (3021,'Ysyk-Kol','Y',1117,1),
+ (3022,'Krong Kaeb','23',1037,1),
+ (3023,'Krong Pailin','24',1037,1),
+ (3024,'Xrong Preah Sihanouk','18',1037,1),
+ (3025,'Phnom Penh','12',1037,1),
+ (3026,'Baat Dambang','2',1037,1),
+ (3027,'Banteay Mean Chey','1',1037,1),
+ (3028,'Rampong Chaam','3',1037,1),
+ (3029,'Kampong Chhnang','4',1037,1),
+ (3030,'Kampong Spueu','5',1037,1),
+ (3031,'Kampong Thum','6',1037,1),
+ (3032,'Kampot','7',1037,1),
+ (3033,'Kandaal','8',1037,1),
+ (3034,'Kach Kong','9',1037,1),
+ (3035,'Krachoh','10',1037,1),
+ (3036,'Mondol Kiri','11',1037,1),
+ (3037,'Otdar Mean Chey','22',1037,1),
+ (3038,'Pousaat','15',1037,1),
+ (3039,'Preah Vihear','13',1037,1),
+ (3040,'Prey Veaeng','14',1037,1),
+ (3041,'Rotanak Kiri','16',1037,1),
+ (3042,'Siem Reab','17',1037,1),
+ (3043,'Stueng Traeng','19',1037,1),
+ (3044,'Svaay Rieng','20',1037,1),
+ (3045,'Taakaev','21',1037,1),
+ (3046,'Gilbert Islands','G',1113,1),
+ (3047,'Line Islands','L',1113,1),
+ (3048,'Phoenix Islands','P',1113,1),
+ (3049,'Anjouan Ndzouani','A',1049,1),
+ (3050,'Grande Comore Ngazidja','G',1049,1),
+ (3051,'Moheli Moili','M',1049,1),
+ (3052,'Kaesong-si','KAE',1114,1),
+ (3053,'Nampo-si','NAM',1114,1),
+ (3054,'Pyongyang-ai','PYO',1114,1),
+ (3055,'Chagang-do','CHA',1114,1),
+ (3056,'Hamgyongbuk-do','HAB',1114,1),
+ (3057,'Hamgyongnam-do','HAN',1114,1),
+ (3058,'Hwanghaebuk-do','HWB',1114,1),
+ (3059,'Hwanghaenam-do','HWN',1114,1),
+ (3060,'Kangwon-do','KAN',1114,1),
+ (3061,'Pyonganbuk-do','PYB',1114,1),
+ (3062,'Pyongannam-do','PYN',1114,1),
+ (3063,'Yanggang-do','YAN',1114,1),
+ (3064,'Najin Sonbong-si','NAJ',1114,1),
+ (3065,'Seoul Teugbyeolsi','11',1115,1),
+ (3066,'Busan Gwang\'yeogsi','26',1115,1),
+ (3067,'Daegu Gwang\'yeogsi','27',1115,1),
+ (3068,'Daejeon Gwang\'yeogsi','30',1115,1),
+ (3069,'Gwangju Gwang\'yeogsi','29',1115,1),
+ (3070,'Incheon Gwang\'yeogsi','28',1115,1),
+ (3071,'Ulsan Gwang\'yeogsi','31',1115,1),
+ (3072,'Chungcheongbugdo','43',1115,1),
+ (3073,'Chungcheongnamdo','44',1115,1),
+ (3074,'Gang\'weondo','42',1115,1),
+ (3075,'Gyeonggido','41',1115,1),
+ (3076,'Gyeongsangbugdo','47',1115,1),
+ (3077,'Gyeongsangnamdo','48',1115,1),
+ (3078,'Jejudo','49',1115,1),
+ (3079,'Jeonrabugdo','45',1115,1),
+ (3080,'Jeonranamdo','46',1115,1),
+ (3081,'Sejong','50',1115,1),
+ (3082,'Al Ahmadi','AH',1116,1),
+ (3083,'Al Farwanlyah','FA',1116,1),
+ (3084,'Al Jahrah','JA',1116,1),
+ (3085,'Al Kuwayt','KU',1116,1),
+ (3086,'Hawalli','HA',1116,1),
+ (3087,'Almaty','ALA',1111,1),
+ (3088,'Astana','AST',1111,1),
+ (3089,'Almaty oblysy','ALM',1111,1),
+ (3090,'Aqmola oblysy','AKM',1111,1),
+ (3091,'Aqtobe oblysy','AKT',1111,1),
+ (3092,'Atyrau oblyfiy','ATY',1111,1),
+ (3093,'Batys Quzaqstan oblysy','ZAP',1111,1),
+ (3094,'Mangghystau oblysy','MAN',1111,1),
+ (3095,'Ongtustik Quzaqstan oblysy','YUZ',1111,1),
+ (3096,'Pavlodar oblysy','PAV',1111,1),
+ (3097,'Qaraghandy oblysy','KAR',1111,1),
+ (3098,'Qostanay oblysy','KUS',1111,1),
+ (3099,'Qyzylorda oblysy','KZY',1111,1),
+ (3100,'Shyghys Quzaqstan oblysy','VOS',1111,1),
+ (3101,'Soltustik Quzaqstan oblysy','SEV',1111,1),
+ (3102,'Zhambyl oblysy Zhambylskaya oblast\'','ZHA',1111,1),
+ (3103,'Vientiane','VT',1118,1),
+ (3104,'Attapu','AT',1118,1),
+ (3105,'Bokeo','BK',1118,1),
+ (3106,'Bolikhamxai','BL',1118,1),
+ (3107,'Champasak','CH',1118,1),
+ (3108,'Houaphan','HO',1118,1),
+ (3109,'Khammouan','KH',1118,1),
+ (3110,'Louang Namtha','LM',1118,1),
+ (3111,'Louangphabang','LP',1118,1),
+ (3112,'Oudomxai','OU',1118,1),
+ (3113,'Phongsali','PH',1118,1),
+ (3114,'Salavan','SL',1118,1),
+ (3115,'Savannakhet','SV',1118,1),
+ (3116,'Xaignabouli','XA',1118,1),
+ (3117,'Xiasomboun','XN',1118,1),
+ (3118,'Xekong','XE',1118,1),
+ (3119,'Xiangkhoang','XI',1118,1),
+ (3120,'Beirut','BA',1120,1),
+ (3121,'Beqaa','BI',1120,1),
+ (3122,'Mount Lebanon','JL',1120,1),
+ (3123,'North Lebanon','AS',1120,1),
+ (3124,'South Lebanon','JA',1120,1),
+ (3125,'Nabatieh','NA',1120,1),
+ (3126,'Ampara','52',1199,1),
+ (3127,'Anuradhapura','71',1199,1),
+ (3128,'Badulla','81',1199,1),
+ (3129,'Batticaloa','51',1199,1),
+ (3130,'Colombo','11',1199,1),
+ (3131,'Galle','31',1199,1),
+ (3132,'Gampaha','12',1199,1),
+ (3133,'Hambantota','33',1199,1),
+ (3134,'Jaffna','41',1199,1),
+ (3135,'Kalutara','13',1199,1),
+ (3136,'Kandy','21',1199,1),
+ (3137,'Kegalla','92',1199,1),
+ (3138,'Kilinochchi','42',1199,1),
+ (3139,'Kurunegala','61',1199,1),
+ (3140,'Mannar','43',1199,1),
+ (3141,'Matale','22',1199,1),
+ (3142,'Matara','32',1199,1),
+ (3143,'Monaragala','82',1199,1),
+ (3144,'Mullaittivu','45',1199,1),
+ (3145,'Nuwara Eliya','23',1199,1),
+ (3146,'Polonnaruwa','72',1199,1),
+ (3147,'Puttalum','62',1199,1),
+ (3148,'Ratnapura','91',1199,1),
+ (3149,'Trincomalee','53',1199,1),
+ (3150,'VavunLya','44',1199,1),
+ (3151,'Bomi','BM',1122,1),
+ (3152,'Bong','BG',1122,1),
+ (3153,'Grand Basaa','GB',1122,1),
+ (3154,'Grand Cape Mount','CM',1122,1),
+ (3155,'Grand Gedeh','GG',1122,1),
+ (3156,'Grand Kru','GK',1122,1),
+ (3157,'Lofa','LO',1122,1),
+ (3158,'Margibi','MG',1122,1),
+ (3159,'Maryland','MY',1122,1),
+ (3160,'Montserrado','MO',1122,1),
+ (3161,'Nimba','NI',1122,1),
+ (3162,'Rivercess','RI',1122,1),
+ (3163,'Sinoe','SI',1122,1),
+ (3164,'Berea','D',1121,1),
+ (3165,'Butha-Buthe','B',1121,1),
+ (3166,'Leribe','C',1121,1),
+ (3167,'Mafeteng','E',1121,1),
+ (3168,'Maseru','A',1121,1),
+ (3169,'Mohale\'s Hoek','F',1121,1),
+ (3170,'Mokhotlong','J',1121,1),
+ (3171,'Qacha\'s Nek','H',1121,1),
+ (3172,'Quthing','G',1121,1),
+ (3173,'Thaba-Tseka','K',1121,1),
+ (3174,'Alytaus Apskritis','AL',1125,1),
+ (3175,'Kauno Apskritis','KU',1125,1),
+ (3176,'KlaipÄ—dos Apskritis','KL',1125,1),
+ (3177,'MarijampolÄ—s Apskritis','MR',1125,1),
+ (3178,'Panevėžio Apskritis','PN',1125,1),
+ (3179,'Šiaulių Apskritis','SA',1125,1),
+ (3180,'TauragÄ—s Apskritis','TA',1125,1),
+ (3181,'Telšių Apskritis','TE',1125,1),
+ (3182,'Utenos Apskritis','UT',1125,1),
+ (3183,'Vilniaus Apskritis','VL',1125,1),
+ (3184,'Luxembourg','LU',1126,1),
+ (3185,'Diekirch','DI',1126,1),
+ (3186,'Grevenmacher','GR',1126,1),
+ (3187,'Capellen','CA',1126,1),
+ (3188,'Clervaux','CL',1126,1),
+ (3189,'Echternach','EC',1126,1),
+ (3190,'Esch-sur-Alzette','ES',1126,1),
+ (3191,'Mersch','ME',1126,1),
+ (3192,'Redange-sur-Attert','RD',1126,1),
+ (3193,'Remich','RM',1126,1),
+ (3194,'Vianden','VD',1126,1),
+ (3195,'Wiltz','WI',1126,1),
+ (3196,'Daugavpils','DGV',1119,1),
+ (3197,'Jelgava','JEL',1119,1),
+ (3198,'JÅ«rmala','JUR',1119,1),
+ (3199,'Liepāja','LPX',1119,1),
+ (3200,'RÄ“zekne','REZ',1119,1),
+ (3201,'RÄ«ga','RIX',1119,1),
+ (3202,'Ventspils','VEN',1119,1),
+ (3203,'Aizkraukles novads','002',1119,1),
+ (3204,'Jaunjelgavas novads','038',1119,1),
+ (3205,'Pļaviņu novads','072',1119,1),
+ (3206,'Kokneses novads','046',1119,1),
+ (3207,'Neretas novads','065',1119,1),
+ (3208,'Skrīveru novads','092',1119,1),
+ (3209,'Alūksnes novads','007',1119,1),
+ (3210,'Apes novads','009',1119,1),
+ (3211,'Balvu novads','015',1119,1),
+ (3212,'Viļakas novads','108',1119,1),
+ (3213,'Baltinavas novads','014',1119,1),
+ (3214,'Rugāju novads','082',1119,1),
+ (3215,'Bauskas novads','016',1119,1),
+ (3216,'Iecavas novads','034',1119,1),
+ (3217,'Rundāles novads','083',1119,1),
+ (3218,'Vecumnieku novads','105',1119,1),
+ (3219,'CÄ“su novads','022',1119,1),
+ (3220,'LÄ«gatnes novads','055',1119,1),
+ (3221,'Amatas novads','008',1119,1),
+ (3222,'Jaunpiebalgas novads','039',1119,1),
+ (3223,'Priekuļu novads','075',1119,1),
+ (3224,'Pārgaujas novads','070',1119,1),
+ (3225,'Raunas novads','076',1119,1),
+ (3226,'Vecpiebalgas novads','104',1119,1),
+ (3227,'Daugavpils novads','025',1119,1),
+ (3228,'Ilūkstes novads','036',1119,1),
+ (3229,'Dobeles novads','026',1119,1),
+ (3230,'Auces novads','010',1119,1),
+ (3231,'TÄ“rvetes novads','098',1119,1),
+ (3232,'Gulbenes novads','033',1119,1),
+ (3233,'Jelgavas novads','041',1119,1),
+ (3234,'Ozolnieku novads','069',1119,1),
+ (3235,'JÄ“kabpils novads','042',1119,1),
+ (3236,'Aknīstes novads','004',1119,1),
+ (3237,'Viesītes novads','107',1119,1),
+ (3238,'Krustpils novads','049',1119,1),
+ (3239,'Salas novads','085',1119,1),
+ (3240,'Krāslavas novads','047',1119,1),
+ (3241,'Dagdas novads','024',1119,1),
+ (3242,'Aglonas novads','001',1119,1),
+ (3243,'Kuldīgas novads','050',1119,1),
+ (3244,'Skrundas novads','093',1119,1),
+ (3245,'Alsungas novads','006',1119,1),
+ (3246,'Aizputes novads','003',1119,1),
+ (3247,'Durbes novads','028',1119,1),
+ (3248,'Grobiņas novads','032',1119,1),
+ (3249,'Pāvilostas novads','071',1119,1),
+ (3250,'Priekules novads','074',1119,1),
+ (3251,'NÄ«cas novads','066',1119,1),
+ (3252,'Rucavas novads','081',1119,1),
+ (3253,'Vaiņodes novads','100',1119,1),
+ (3254,'Limbažu novads','054',1119,1),
+ (3255,'Alojas novads','005',1119,1),
+ (3256,'Salacgrīvas novads','086',1119,1),
+ (3257,'Ludzas novads','058',1119,1),
+ (3258,'Kārsavas novads','044',1119,1),
+ (3259,'Zilupes novads','110',1119,1),
+ (3260,'Ciblas novads','023',1119,1),
+ (3261,'Madonas novads','059',1119,1),
+ (3262,'Cesvaines novads','021',1119,1),
+ (3263,'Lubānas novads','057',1119,1),
+ (3264,'Varakļānu novads','102',1119,1),
+ (3265,'Ērgļu novads','030',1119,1),
+ (3266,'Ogres novads','067',1119,1),
+ (3267,'Ikšķiles novads','035',1119,1),
+ (3268,'Ķeguma novads','051',1119,1),
+ (3269,'Lielvārdes novads','053',1119,1),
+ (3270,'Preiļu novads','073',1119,1),
+ (3271,'Līvānu novads','056',1119,1),
+ (3272,'Riebiņu novads','078',1119,1),
+ (3273,'Vārkavas novads','103',1119,1),
+ (3274,'RÄ“zeknes novads','077',1119,1),
+ (3275,'Viļānu novads','109',1119,1),
+ (3276,'Baldones novads','013',1119,1),
+ (3277,'Ķekavas novads','052',1119,1),
+ (3278,'Olaines novads','068',1119,1),
+ (3279,'Salaspils novads','087',1119,1),
+ (3280,'Saulkrastu novads','089',1119,1),
+ (3281,'Siguldas novads','091',1119,1),
+ (3282,'Inčukalna novads','037',1119,1),
+ (3283,'Ādažu novads','011',1119,1),
+ (3284,'Babītes novads','012',1119,1),
+ (3285,'Carnikavas novads','020',1119,1),
+ (3286,'Garkalnes novads','031',1119,1),
+ (3287,'Krimuldas novads','048',1119,1),
+ (3288,'Mālpils novads','061',1119,1),
+ (3289,'Mārupes novads','062',1119,1),
+ (3290,'Ropažu novads','080',1119,1),
+ (3291,'SÄ“jas novads','090',1119,1),
+ (3292,'Stopiņu novads','095',1119,1),
+ (3293,'Saldus novads','088',1119,1),
+ (3294,'Brocēnu novads','018',1119,1),
+ (3295,'Talsu novads','097',1119,1),
+ (3296,'Dundagas novads','027',1119,1),
+ (3297,'MÄ“rsraga novads','063',1119,1),
+ (3298,'Rojas novads','079',1119,1),
+ (3299,'Tukuma novads','099',1119,1),
+ (3300,'Kandavas novads','043',1119,1),
+ (3301,'Engures novads','029',1119,1),
+ (3302,'Jaunpils novads','040',1119,1),
+ (3303,'Valkas novads','101',1119,1),
+ (3304,'Smiltenes novads','094',1119,1),
+ (3305,'Strenču novads','096',1119,1),
+ (3306,'Kocēnu novads','045',1119,1),
+ (3307,'Mazsalacas novads','060',1119,1),
+ (3308,'RÅ«jienas novads','084',1119,1),
+ (3309,'Beverīnas novads','017',1119,1),
+ (3310,'Burtnieku novads','019',1119,1),
+ (3311,'Naukšēnu novads','064',1119,1),
+ (3312,'Ventspils novads','106',1119,1),
+ (3313,'JÄ“kabpils','JKB',1119,1),
+ (3314,'Valmiera','VMR',1119,1),
+ (3315,'Ajdābiyā','AJ',1123,1),
+ (3316,'Al Buţnān','BU',1123,1),
+ (3317,'Al Hizām al Akhdar','HZ',1123,1),
+ (3318,'Al Jabal al Akhdar','JA',1123,1),
+ (3319,'Al Jifārah','JI',1123,1),
+ (3320,'Al Jufrah','JU',1123,1),
+ (3321,'Al Kufrah','KF',1123,1),
+ (3322,'Al Marj','MJ',1123,1),
+ (3323,'Al Marqab','MB',1123,1),
+ (3324,'Al Qaţrūn','QT',1123,1),
+ (3325,'Al Qubbah','QB',1123,1),
+ (3326,'Al Wāhah','WA',1123,1),
+ (3327,'An Nuqaţ al Khams','NQ',1123,1),
+ (3328,'Ash Shāţi\'','SH',1123,1),
+ (3329,'Az Zāwiyah','ZA',1123,1),
+ (3330,'Banghāzī','BA',1123,1),
+ (3331,'Banī Walīd','BW',1123,1),
+ (3332,'Darnah','DR',1123,1),
+ (3333,'Ghadāmis','GD',1123,1),
+ (3334,'Gharyān','GR',1123,1),
+ (3335,'Ghāt','GT',1123,1),
+ (3336,'Jaghbūb','JB',1123,1),
+ (3337,'Mişrātah','MI',1123,1),
+ (3338,'Mizdah','MZ',1123,1),
+ (3339,'Murzuq','MQ',1123,1),
+ (3340,'Nālūt','NL',1123,1),
+ (3341,'Sabhā','SB',1123,1),
+ (3342,'Şabrātah Şurmān','SS',1123,1),
+ (3343,'Surt','SR',1123,1),
+ (3344,'Tājūrā\' wa an Nawāhī al Arbāh','TN',1123,1),
+ (3345,'Ţarābulus','TB',1123,1),
+ (3346,'Tarhūnah-Masallātah','TM',1123,1),
+ (3347,'Wādī al hayāt','WD',1123,1),
+ (3348,'Yafran-Jādū','YJ',1123,1),
+ (3349,'Agadir','AGD',1146,1),
+ (3350,'Aït Baha','BAH',1146,1),
+ (3351,'Aït Melloul','MEL',1146,1),
+ (3352,'Al Haouz','HAO',1146,1),
+ (3353,'Al Hoceïma','HOC',1146,1),
+ (3354,'Assa-Zag','ASZ',1146,1),
+ (3355,'Azilal','AZI',1146,1),
+ (3356,'Beni Mellal','BEM',1146,1),
+ (3357,'Ben Sllmane','BES',1146,1),
+ (3358,'Berkane','BER',1146,1),
+ (3359,'Boujdour','BOD',1146,1),
+ (3360,'Boulemane','BOM',1146,1),
+ (3361,'Casablanca  [Dar el Beïda]','CAS',1146,1),
+ (3362,'Chefchaouene','CHE',1146,1),
+ (3363,'Chichaoua','CHI',1146,1),
+ (3364,'El Hajeb','HAJ',1146,1),
+ (3365,'El Jadida','JDI',1146,1),
+ (3366,'Errachidia','ERR',1146,1),
+ (3367,'Essaouira','ESI',1146,1),
+ (3368,'Es Smara','ESM',1146,1),
+ (3369,'Fès','FES',1146,1),
+ (3370,'Figuig','FIG',1146,1),
+ (3371,'Guelmim','GUE',1146,1),
+ (3372,'Ifrane','IFR',1146,1),
+ (3373,'Jerada','JRA',1146,1),
+ (3374,'Kelaat Sraghna','KES',1146,1),
+ (3375,'Kénitra','KEN',1146,1),
+ (3376,'Khemisaet','KHE',1146,1),
+ (3377,'Khenifra','KHN',1146,1),
+ (3378,'Khouribga','KHO',1146,1),
+ (3379,'Laâyoune (EH)','LAA',1146,1),
+ (3380,'Larache','LAP',1146,1),
+ (3381,'Marrakech','MAR',1146,1),
+ (3382,'Meknsès','MEK',1146,1),
+ (3383,'Nador','NAD',1146,1),
+ (3384,'Ouarzazate','OUA',1146,1),
+ (3385,'Oued ed Dahab (EH)','OUD',1146,1),
+ (3386,'Oujda','OUJ',1146,1),
+ (3387,'Rabat-Salé','RBA',1146,1),
+ (3388,'Safi','SAF',1146,1),
+ (3389,'Sefrou','SEF',1146,1),
+ (3390,'Settat','SET',1146,1),
+ (3391,'Sidl Kacem','SIK',1146,1),
+ (3392,'Tanger','TNG',1146,1),
+ (3393,'Tan-Tan','TNT',1146,1),
+ (3394,'Taounate','TAO',1146,1),
+ (3395,'Taroudannt','TAR',1146,1),
+ (3396,'Tata','TAT',1146,1),
+ (3397,'Taza','TAZ',1146,1),
+ (3398,'Tétouan','TET',1146,1),
+ (3399,'Tiznit','TIZ',1146,1),
+ (3400,'Gagauzia, Unitate Teritoriala Autonoma','GA',1142,1),
+ (3401,'Chisinau','CU',1142,1),
+ (3402,'Stinga Nistrului, unitatea teritoriala din','SN',1142,1),
+ (3403,'Balti','BA',1142,1),
+ (3404,'Cahul','CA',1142,1),
+ (3405,'Edinet','ED',1142,1),
+ (3406,'Lapusna','LA',1142,1),
+ (3407,'Orhei','OR',1142,1),
+ (3408,'Soroca','SO',1142,1),
+ (3409,'Taraclia','TA',1142,1),
+ (3410,'Tighina [Bender]','TI',1142,1),
+ (3411,'Ungheni','UN',1142,1),
+ (3412,'Antananarivo','T',1129,1),
+ (3413,'Antsiranana','D',1129,1),
+ (3414,'Fianarantsoa','F',1129,1),
+ (3415,'Mahajanga','M',1129,1),
+ (3416,'Toamasina','A',1129,1),
+ (3417,'Toliara','U',1129,1),
+ (3418,'Ailinglapalap','ALL',1135,1),
+ (3419,'Ailuk','ALK',1135,1),
+ (3420,'Arno','ARN',1135,1),
+ (3421,'Aur','AUR',1135,1),
+ (3422,'Ebon','EBO',1135,1),
+ (3423,'Eniwetok','ENI',1135,1),
+ (3424,'Jaluit','JAL',1135,1),
+ (3425,'Kili','KIL',1135,1),
+ (3426,'Kwajalein','KWA',1135,1),
+ (3427,'Lae','LAE',1135,1),
+ (3428,'Lib','LIB',1135,1),
+ (3429,'Likiep','LIK',1135,1),
+ (3430,'Majuro','MAJ',1135,1),
+ (3431,'Maloelap','MAL',1135,1),
+ (3432,'Mejit','MEJ',1135,1),
+ (3433,'Mili','MIL',1135,1),
+ (3434,'Namorik','NMK',1135,1),
+ (3435,'Namu','NMU',1135,1),
+ (3436,'Rongelap','RON',1135,1),
+ (3437,'Ujae','UJA',1135,1),
+ (3438,'Ujelang','UJL',1135,1),
+ (3439,'Utirik','UTI',1135,1),
+ (3440,'Wotho','WTN',1135,1),
+ (3441,'Wotje','WTJ',1135,1),
+ (3442,'Bamako','BK0',1133,1),
+ (3443,'Gao','7',1133,1),
+ (3444,'Kayes','1',1133,1),
+ (3445,'Kidal','8',1133,1),
+ (3446,'Xoulikoro','2',1133,1),
+ (3447,'Mopti','5',1133,1),
+ (3448,'S69ou','4',1133,1),
+ (3449,'Sikasso','3',1133,1),
+ (3450,'Tombouctou','6',1133,1),
+ (3451,'Ayeyarwady','07',1035,1),
+ (3452,'Bago','02',1035,1),
+ (3453,'Magway','03',1035,1),
+ (3454,'Mandalay','04',1035,1),
+ (3455,'Sagaing','01',1035,1),
+ (3456,'Tanintharyi','05',1035,1),
+ (3457,'Yangon','06',1035,1),
+ (3458,'Chin','14',1035,1),
+ (3459,'Kachin','11',1035,1),
+ (3460,'Kayah','12',1035,1),
+ (3461,'Kayin','13',1035,1),
+ (3462,'Mon','15',1035,1),
+ (3463,'Rakhine','16',1035,1),
+ (3464,'Shan','17',1035,1),
+ (3465,'Ulaanbaatar','1',1144,1),
+ (3466,'Arhangay','073',1144,1),
+ (3467,'Bayanhongor','069',1144,1),
+ (3468,'Bayan-Olgiy','071',1144,1),
+ (3469,'Bulgan','067',1144,1),
+ (3470,'Darhan uul','037',1144,1),
+ (3471,'Dornod','061',1144,1),
+ (3472,'Dornogov,','063',1144,1),
+ (3473,'DundgovL','059',1144,1),
+ (3474,'Dzavhan','057',1144,1),
+ (3475,'Govi-Altay','065',1144,1),
+ (3476,'Govi-Smber','064',1144,1),
+ (3477,'Hentiy','039',1144,1),
+ (3478,'Hovd','043',1144,1),
+ (3479,'Hovsgol','041',1144,1),
+ (3480,'Omnogovi','053',1144,1),
+ (3481,'Orhon','035',1144,1),
+ (3482,'Ovorhangay','055',1144,1),
+ (3483,'Selenge','049',1144,1),
+ (3484,'Shbaatar','051',1144,1),
+ (3485,'Tov','047',1144,1),
+ (3486,'Uvs','046',1144,1),
+ (3487,'Nouakchott','NKC',1137,1),
+ (3488,'Assaba','03',1137,1),
+ (3489,'Brakna','05',1137,1),
+ (3490,'Dakhlet Nouadhibou','08',1137,1),
+ (3491,'Gorgol','04',1137,1),
+ (3492,'Guidimaka','10',1137,1),
+ (3493,'Hodh ech Chargui','01',1137,1),
+ (3494,'Hodh el Charbi','02',1137,1),
+ (3495,'Inchiri','12',1137,1),
+ (3496,'Tagant','09',1137,1),
+ (3497,'Tiris Zemmour','11',1137,1),
+ (3498,'Trarza','06',1137,1),
+ (3499,'Beau Bassin-Rose Hill','BR',1138,1),
+ (3500,'Curepipe','CU',1138,1),
+ (3501,'Port Louis','PU',1138,1),
+ (3502,'Quatre Bornes','QB',1138,1),
+ (3503,'Vacosa-Phoenix','VP',1138,1),
+ (3504,'Black River','BL',1138,1),
+ (3505,'Flacq','FL',1138,1),
+ (3506,'Grand Port','GP',1138,1),
+ (3507,'Moka','MO',1138,1),
+ (3508,'Pamplemousses','PA',1138,1),
+ (3509,'Plaines Wilhems','PW',1138,1),
+ (3510,'Riviere du Rempart','RP',1138,1),
+ (3511,'Savanne','SA',1138,1),
+ (3512,'Agalega Islands','AG',1138,1),
+ (3513,'Cargados Carajos Shoals','CC',1138,1),
+ (3514,'Rodrigues Island','RO',1138,1),
+ (3515,'Male','MLE',1132,1),
+ (3516,'Alif','02',1132,1),
+ (3517,'Baa','20',1132,1),
+ (3518,'Dhaalu','17',1132,1),
+ (3519,'Faafu','14',1132,1),
+ (3520,'Gaaf Alif','27',1132,1),
+ (3521,'Gaefu Dhaalu','28',1132,1),
+ (3522,'Gnaviyani','29',1132,1),
+ (3523,'Haa Alif','07',1132,1),
+ (3524,'Haa Dhaalu','23',1132,1),
+ (3525,'Kaafu','26',1132,1),
+ (3526,'Laamu','05',1132,1),
+ (3527,'Lhaviyani','03',1132,1),
+ (3528,'Meemu','12',1132,1),
+ (3529,'Noonu','25',1132,1),
+ (3530,'Raa','13',1132,1),
+ (3531,'Seenu','01',1132,1),
+ (3532,'Shaviyani','24',1132,1),
+ (3533,'Thaa','08',1132,1),
+ (3534,'Vaavu','04',1132,1),
+ (3535,'Balaka','BA',1130,1),
+ (3536,'Blantyre','BL',1130,1),
+ (3537,'Chikwawa','CK',1130,1),
+ (3538,'Chiradzulu','CR',1130,1),
+ (3539,'Chitipa','CT',1130,1),
+ (3540,'Dedza','DE',1130,1),
+ (3541,'Dowa','DO',1130,1),
+ (3542,'Karonga','KR',1130,1),
+ (3543,'Kasungu','KS',1130,1),
+ (3544,'Likoma Island','LK',1130,1),
+ (3545,'Lilongwe','LI',1130,1),
+ (3546,'Machinga','MH',1130,1),
+ (3547,'Mangochi','MG',1130,1),
+ (3548,'Mchinji','MC',1130,1),
+ (3549,'Mulanje','MU',1130,1),
+ (3550,'Mwanza','MW',1130,1),
+ (3551,'Mzimba','MZ',1130,1),
+ (3552,'Nkhata Bay','NB',1130,1),
+ (3553,'Nkhotakota','NK',1130,1),
+ (3554,'Nsanje','NS',1130,1),
+ (3555,'Ntcheu','NU',1130,1),
+ (3556,'Ntchisi','NI',1130,1),
+ (3557,'Phalomba','PH',1130,1),
+ (3558,'Rumphi','RU',1130,1),
+ (3559,'Salima','SA',1130,1),
+ (3560,'Thyolo','TH',1130,1),
+ (3561,'Zomba','ZO',1130,1),
+ (3562,'Aguascalientes','AGU',1140,1),
+ (3563,'Baja California','BCN',1140,1),
+ (3564,'Baja California Sur','BCS',1140,1),
+ (3565,'Campeche','CAM',1140,1),
+ (3566,'Coahuila','COA',1140,1),
+ (3567,'Colima','COL',1140,1),
+ (3568,'Chiapas','CHP',1140,1),
+ (3569,'Chihuahua','CHH',1140,1),
+ (3570,'Durango','DUR',1140,1),
+ (3571,'Guanajuato','GUA',1140,1),
+ (3572,'Guerrero','GRO',1140,1),
+ (3573,'Hidalgo','HID',1140,1),
+ (3574,'Jalisco','JAL',1140,1),
+ (3575,'Mexico','MEX',1140,1),
+ (3576,'Michoacin','MIC',1140,1),
+ (3577,'Morelos','MOR',1140,1),
+ (3578,'Nayarit','NAY',1140,1),
+ (3579,'Nuevo Leon','NLE',1140,1),
+ (3580,'Oaxaca','OAX',1140,1),
+ (3581,'Puebla','PUE',1140,1),
+ (3582,'Queretaro','QUE',1140,1),
+ (3583,'Quintana Roo','ROO',1140,1),
+ (3584,'San Luis Potosi','SLP',1140,1),
+ (3585,'Sinaloa','SIN',1140,1),
+ (3586,'Sonora','SON',1140,1),
+ (3587,'Tabasco','TAB',1140,1),
+ (3588,'Tamaulipas','TAM',1140,1),
+ (3589,'Tlaxcala','TLA',1140,1),
+ (3590,'Veracruz','VER',1140,1),
+ (3591,'Yucatan','YUC',1140,1),
+ (3592,'Zacatecas','ZAC',1140,1),
+ (3593,'Distrito Federal','DIF',1140,1),
+ (3594,'Wilayah Persekutuan Kuala Lumpur','14',1131,1),
+ (3595,'Wilayah Persekutuan Labuan','15',1131,1),
+ (3596,'Wilayah Persekutuan Putrajaya','16',1131,1),
+ (3597,'Johor','01',1131,1),
+ (3598,'Kedah','02',1131,1),
+ (3599,'Kelantan','03',1131,1),
+ (3600,'Melaka','04',1131,1),
+ (3601,'Negeri Sembilan','05',1131,1),
+ (3602,'Pahang','06',1131,1),
+ (3603,'Perak','08',1131,1),
+ (3604,'Perlis','09',1131,1),
+ (3605,'Pulau Pinang','07',1131,1),
+ (3606,'Sabah','12',1131,1),
+ (3607,'Sarawak','13',1131,1),
+ (3608,'Selangor','10',1131,1),
+ (3609,'Terengganu','11',1131,1),
+ (3610,'Maputo','MPM',1147,1),
+ (3611,'Cabo Delgado','P',1147,1),
+ (3612,'Gaza','G',1147,1),
+ (3613,'Inhambane','I',1147,1),
+ (3614,'Manica','B',1147,1),
+ (3615,'Numpula','N',1147,1),
+ (3616,'Niaaea','A',1147,1),
+ (3617,'Sofala','S',1147,1),
+ (3618,'Tete','T',1147,1),
+ (3619,'Zambezia','Q',1147,1),
+ (3620,'Caprivi','CA',1148,1),
+ (3621,'Erongo','ER',1148,1),
+ (3622,'Hardap','HA',1148,1),
+ (3623,'Karas','KA',1148,1),
+ (3624,'Khomas','KH',1148,1),
+ (3625,'Kunene','KU',1148,1),
+ (3626,'Ohangwena','OW',1148,1),
+ (3627,'Okavango','OK',1148,1),
+ (3628,'Omaheke','OH',1148,1),
+ (3629,'Omusati','OS',1148,1),
+ (3630,'Oshana','ON',1148,1),
+ (3631,'Oshikoto','OT',1148,1),
+ (3632,'Otjozondjupa','OD',1148,1),
+ (3633,'Niamey','8',1156,1),
+ (3634,'Agadez','1',1156,1),
+ (3635,'Diffa','2',1156,1),
+ (3636,'Dosso','3',1156,1),
+ (3637,'Maradi','4',1156,1),
+ (3638,'Tahoua','S',1156,1),
+ (3639,'Tillaberi','6',1156,1),
+ (3640,'Zinder','7',1156,1),
+ (3641,'Abuja Federal Capital Territory','FC',1157,1),
+ (3642,'Abia','AB',1157,1),
+ (3643,'Adamawa','AD',1157,1),
+ (3644,'Akwa Ibom','AK',1157,1),
+ (3645,'Anambra','AN',1157,1),
+ (3646,'Bauchi','BA',1157,1),
+ (3647,'Bayelsa','BY',1157,1),
+ (3648,'Benue','BE',1157,1),
+ (3649,'Borno','BO',1157,1),
+ (3650,'Cross River','CR',1157,1),
+ (3651,'Delta','DE',1157,1),
+ (3652,'Ebonyi','EB',1157,1),
+ (3653,'Edo','ED',1157,1),
+ (3654,'Ekiti','EK',1157,1),
+ (3655,'Enugu','EN',1157,1),
+ (3656,'Gombe','GO',1157,1),
+ (3657,'Imo','IM',1157,1),
+ (3658,'Jigawa','JI',1157,1),
+ (3659,'Kaduna','KD',1157,1),
+ (3660,'Kano','KN',1157,1),
+ (3661,'Katsina','KT',1157,1),
+ (3662,'Kebbi','KE',1157,1),
+ (3663,'Kogi','KO',1157,1),
+ (3664,'Kwara','KW',1157,1),
+ (3665,'Lagos','LA',1157,1),
+ (3666,'Nassarawa','NA',1157,1),
+ (3667,'Niger','NI',1157,1),
+ (3668,'Ogun','OG',1157,1),
+ (3669,'Ondo','ON',1157,1),
+ (3670,'Osun','OS',1157,1),
+ (3671,'Oyo','OY',1157,1),
+ (3672,'Rivers','RI',1157,1),
+ (3673,'Sokoto','SO',1157,1),
+ (3674,'Taraba','TA',1157,1),
+ (3675,'Yobe','YO',1157,1),
+ (3676,'Zamfara','ZA',1157,1),
+ (3677,'Plateau','PL',1157,1),
+ (3678,'Boaco','BO',1155,1),
+ (3679,'Carazo','CA',1155,1),
+ (3680,'Chinandega','CI',1155,1),
+ (3681,'Chontales','CO',1155,1),
+ (3682,'Esteli','ES',1155,1),
+ (3683,'Jinotega','JI',1155,1),
+ (3684,'Leon','LE',1155,1),
+ (3685,'Madriz','MD',1155,1),
+ (3686,'Managua','MN',1155,1),
+ (3687,'Masaya','MS',1155,1),
+ (3688,'Matagalpa','MT',1155,1),
+ (3689,'Nueva Segovia','NS',1155,1),
+ (3690,'Rio San Juan','SJ',1155,1),
+ (3691,'Rivas','RI',1155,1),
+ (3692,'Atlantico Norte','AN',1155,1),
+ (3693,'Atlantico Sur','AS',1155,1),
+ (3694,'Drente','DR',1152,1),
+ (3695,'Flevoland','FL',1152,1),
+ (3696,'Friesland','FR',1152,1),
+ (3697,'Gelderland','GL',1152,1),
+ (3698,'Groningen','GR',1152,1),
+ (3699,'Noord-Brabant','NB',1152,1),
+ (3700,'Noord-Holland','NH',1152,1),
+ (3701,'Overijssel','OV',1152,1),
+ (3702,'Utrecht','UT',1152,1),
+ (3703,'Zuid-Holland','ZH',1152,1),
+ (3704,'Zeeland','ZL',1152,1),
+ (3705,'Akershus','02',1161,1),
+ (3706,'Aust-Agder','09',1161,1),
+ (3707,'Buskerud','06',1161,1),
+ (3708,'Finnmark','20',1161,1),
+ (3709,'Hedmark','04',1161,1),
+ (3710,'Møre og Romsdal','15',1161,1),
+ (3711,'Nordland','18',1161,1),
+ (3712,'Nord-Trøndelag','17',1161,1),
+ (3713,'Oppland','05',1161,1),
+ (3714,'Oslo','03',1161,1),
+ (3715,'Rogaland','11',1161,1),
+ (3716,'Sør-Trøndelag','16',1161,1),
+ (3717,'Telemark','06',1161,1),
+ (3718,'Troms','19',1161,1),
+ (3719,'Vest-Agder','10',1161,1),
+ (3720,'Vestfold','07',1161,1),
+ (3721,'Vestland','46',1161,1),
+ (3722,'Østfold','01',1161,1),
+ (3723,'Jan Mayen','22',1161,1),
+ (3724,'Svalbard','21',1161,1),
+ (3725,'Auckland','AUK',1154,1),
+ (3726,'Bay of Plenty','BOP',1154,1),
+ (3727,'Canterbury','CAN',1154,1),
+ (3728,'Gisborne','GIS',1154,1),
+ (3729,'Hawkes Bay','HKB',1154,1),
+ (3730,'Manawatu-Wanganui','MWT',1154,1),
+ (3731,'Marlborough','MBH',1154,1),
+ (3732,'Nelson','NSN',1154,1),
+ (3733,'Northland','NTL',1154,1),
+ (3734,'Otago','OTA',1154,1),
+ (3735,'Southland','STL',1154,1),
+ (3736,'Taranaki','TKI',1154,1),
+ (3737,'Tasman','TAS',1154,1),
+ (3738,'Waikato','WKO',1154,1),
+ (3739,'Wellington','WGN',1154,1),
+ (3740,'West Coast','WTC',1154,1),
+ (3741,'Ad Dakhillyah','DA',1162,1),
+ (3742,'Al Batinah','BA',1162,1),
+ (3743,'Al Janblyah','JA',1162,1),
+ (3744,'Al Wusta','WU',1162,1),
+ (3745,'Ash Sharqlyah','SH',1162,1),
+ (3746,'Az Zahirah','ZA',1162,1),
+ (3747,'Masqat','MA',1162,1),
+ (3748,'Musandam','MU',1162,1),
+ (3749,'Jenin','_A',1165,1),
+ (3750,'Tubas','_B',1165,1),
+ (3751,'Tulkarm','_C',1165,1),
+ (3752,'Nablus','_D',1165,1),
+ (3753,'Qalqilya','_E',1165,1),
+ (3754,'Salfit','_F',1165,1),
+ (3755,'Ramallah and Al-Bireh','_G',1165,1),
+ (3756,'Jericho','_H',1165,1),
+ (3757,'Jerusalem','_I',1165,1),
+ (3758,'Bethlehem','_J',1165,1),
+ (3759,'Hebron','_K',1165,1),
+ (3760,'North Gaza','_L',1165,1),
+ (3761,'Gaza','_M',1165,1),
+ (3762,'Deir el-Balah','_N',1165,1),
+ (3763,'Khan Yunis','_O',1165,1),
+ (3764,'Rafah','_P',1165,1),
+ (3765,'Bocas del Toro','1',1166,1),
+ (3766,'Cocle','2',1166,1),
+ (3767,'Chiriqui','4',1166,1),
+ (3768,'Darien','5',1166,1),
+ (3769,'Herrera','6',1166,1),
+ (3770,'Loa Santoa','7',1166,1),
+ (3771,'Panama','8',1166,1),
+ (3772,'Veraguas','9',1166,1),
+ (3773,'Comarca de San Blas','Q',1166,1),
+ (3774,'El Callao','CAL',1169,1),
+ (3775,'Ancash','ANC',1169,1),
+ (3776,'Apurimac','APU',1169,1),
+ (3777,'Arequipa','ARE',1169,1),
+ (3778,'Ayacucho','AYA',1169,1),
+ (3779,'Cajamarca','CAJ',1169,1),
+ (3780,'Cuzco','CUS',1169,1),
+ (3781,'Huancavelica','HUV',1169,1),
+ (3782,'Huanuco','HUC',1169,1),
+ (3783,'Ica','ICA',1169,1),
+ (3784,'Junin','JUN',1169,1),
+ (3785,'La Libertad','LAL',1169,1),
+ (3786,'Lambayeque','LAM',1169,1),
+ (3787,'Lima','LIM',1169,1),
+ (3788,'Loreto','LOR',1169,1),
+ (3789,'Madre de Dios','MDD',1169,1),
+ (3790,'Moquegua','MOQ',1169,1),
+ (3791,'Pasco','PAS',1169,1),
+ (3792,'Piura','PIU',1169,1),
+ (3793,'Puno','PUN',1169,1),
+ (3794,'San Martin','SAM',1169,1),
+ (3795,'Tacna','TAC',1169,1),
+ (3796,'Tumbes','TUM',1169,1),
+ (3797,'Ucayali','UCA',1169,1),
+ (3798,'Amazonas','AMA',1169,1),
+ (3799,'National Capital District (Port Moresby)','NCD',1167,1),
+ (3800,'Chimbu','CPK',1167,1),
+ (3801,'Eastern Highlands','EHG',1167,1),
+ (3802,'East New Britain','EBR',1167,1),
+ (3803,'East Sepik','ESW',1167,1),
+ (3804,'Enga','EPW',1167,1),
+ (3805,'Gulf','GPK',1167,1),
+ (3806,'Madang','MPM',1167,1),
+ (3807,'Manus','MRL',1167,1),
+ (3808,'Milne Bay','MBA',1167,1),
+ (3809,'Morobe','MPL',1167,1),
+ (3810,'New Ireland','NIK',1167,1),
+ (3811,'North Solomons','NSA',1167,1),
+ (3812,'Santaun','SAN',1167,1),
+ (3813,'Southern Highlands','SHM',1167,1),
+ (3814,'Western Highlands','WHM',1167,1),
+ (3815,'West New Britain','WBK',1167,1),
+ (3816,'Abra','ABR',1170,1),
+ (3817,'Agusan del Norte','AGN',1170,1),
+ (3818,'Agusan del Sur','AGS',1170,1),
+ (3819,'Aklan','AKL',1170,1),
+ (3820,'Albay','ALB',1170,1),
+ (3821,'Antique','ANT',1170,1),
+ (3822,'Apayao','APA',1170,1),
+ (3823,'Aurora','AUR',1170,1),
+ (3824,'Basilan','BAS',1170,1),
+ (3825,'Bataan','BAN',1170,1),
+ (3826,'Batanes','BTN',1170,1),
+ (3827,'Batangas','BTG',1170,1),
+ (3828,'Benguet','BEN',1170,1),
+ (3829,'Biliran','BIL',1170,1),
+ (3830,'Bohol','BOH',1170,1),
+ (3831,'Bukidnon','BUK',1170,1),
+ (3832,'Bulacan','BUL',1170,1),
+ (3833,'Cagayan','CAG',1170,1),
+ (3834,'Camarines Norte','CAN',1170,1),
+ (3835,'Camarines Sur','CAS',1170,1),
+ (3836,'Camiguin','CAM',1170,1),
+ (3837,'Capiz','CAP',1170,1),
+ (3838,'Catanduanes','CAT',1170,1),
+ (3839,'Cavite','CAV',1170,1),
+ (3840,'Cebu','CEB',1170,1),
+ (3841,'Davao de Oro','COM',1170,1),
+ (3842,'Davao del Norte','DAV',1170,1),
+ (3843,'Davao del Sur','DAS',1170,1),
+ (3844,'Davao Oriental','DAO',1170,1),
+ (3845,'Eastern Samar','EAS',1170,1),
+ (3846,'Guimaras','GUI',1170,1),
+ (3847,'Ifugao','IFU',1170,1),
+ (3848,'Ilocos Norte','ILN',1170,1),
+ (3849,'Ilocos Sur','ILS',1170,1),
+ (3850,'Iloilo','ILI',1170,1),
+ (3851,'Isabela','ISA',1170,1),
+ (3852,'Kalinga','KAL',1170,1),
+ (3853,'Laguna','LAG',1170,1),
+ (3854,'Lanao del Norte','LAN',1170,1),
+ (3855,'Lanao del Sur','LAS',1170,1),
+ (3856,'La Union','LUN',1170,1),
+ (3857,'Leyte','LEY',1170,1),
+ (3858,'Maguindanao','MAG',1170,1),
+ (3859,'Marinduque','MAD',1170,1),
+ (3860,'Masbate','MAS',1170,1),
+ (3861,'Mindoro Occidental','MDC',1170,1),
+ (3862,'Mindoro Oriental','MDR',1170,1),
+ (3863,'Misamis Occidental','MSC',1170,1),
+ (3864,'Misamis Oriental','MSR',1170,1),
+ (3865,'Mountain Province','MOU',1170,1),
+ (3866,'Negroe Occidental','NEC',1170,1),
+ (3867,'Negros Oriental','NER',1170,1),
+ (3868,'Cotabato','NCO',1170,1),
+ (3869,'Northern Samar','NSA',1170,1),
+ (3870,'Nueva Ecija','NUE',1170,1),
+ (3871,'Nueva Vizcaya','NUV',1170,1),
+ (3872,'Palawan','PLW',1170,1),
+ (3873,'Pampanga','PAM',1170,1),
+ (3874,'Pangasinan','PAN',1170,1),
+ (3875,'Quezon','QUE',1170,1),
+ (3876,'Quirino','QUI',1170,1),
+ (3877,'Rizal','RIZ',1170,1),
+ (3878,'Romblon','ROM',1170,1),
+ (3879,'Sarangani','SAR',1170,1),
+ (3880,'Siquijor','SIG',1170,1),
+ (3881,'Sorsogon','SOR',1170,1),
+ (3882,'South Cotabato','SCO',1170,1),
+ (3883,'Southern Leyte','SLE',1170,1),
+ (3884,'Sultan Kudarat','SUK',1170,1),
+ (3885,'Sulu','SLU',1170,1),
+ (3886,'Surigao del Norte','SUN',1170,1),
+ (3887,'Surigao del Sur','SUR',1170,1),
+ (3888,'Tarlac','TAR',1170,1),
+ (3889,'Tawi-Tawi','TAW',1170,1),
+ (3890,'Western Samar','WSA',1170,1),
+ (3891,'Zambales','ZMB',1170,1),
+ (3892,'Zamboanga del Norte','ZAN',1170,1),
+ (3893,'Zamboanga del Sur','ZAS',1170,1),
+ (3894,'Zamboanga Sibiguey','ZSI',1170,1),
+ (3895,'Dinagat Islands','DIN',1170,1),
+ (3896,'Metropolitan Manila','MNL',1170,1),
+ (3897,'Islamabad Federal Capital Area','IS',1163,1),
+ (3898,'Baluchistan','BA',1163,1),
+ (3899,'Khyber Pakhtun Khawa','NW',1163,1),
+ (3900,'Sindh','SD',1163,1),
+ (3901,'Federally Administered Tribal Areas','TA',1163,1),
+ (3902,'Azad Kashmir','JK',1163,1),
+ (3903,'Gilgit-Baltistan','NA',1163,1),
+ (3904,'Punjab','PB',1163,1),
+ (3905,'Aveiro','01',1173,1),
+ (3906,'Beja','02',1173,1),
+ (3907,'Braga','03',1173,1),
+ (3908,'Bragança','04',1173,1),
+ (3909,'Castelo Branco','05',1173,1),
+ (3910,'Coimbra','06',1173,1),
+ (3911,'Évora','07',1173,1),
+ (3912,'Faro','08',1173,1),
+ (3913,'Guarda','09',1173,1),
+ (3914,'Leiria','10',1173,1),
+ (3915,'Lisboa','11',1173,1),
+ (3916,'Portalegre','12',1173,1),
+ (3917,'Porto','13',1173,1),
+ (3918,'Santarém','14',1173,1),
+ (3919,'Setúbal','15',1173,1),
+ (3920,'Viana do Castelo','16',1173,1),
+ (3921,'Vila Real','17',1173,1),
+ (3922,'Viseu','18',1173,1),
+ (3923,'Região Autónoma dos Açores','20',1173,1),
+ (3924,'Região Autónoma da Madeira','30',1173,1),
+ (3925,'Asuncion','ASU',1168,1),
+ (3926,'Alto Paraguay','16',1168,1),
+ (3927,'Alto Parana','10',1168,1),
+ (3928,'Amambay','13',1168,1),
+ (3929,'Boqueron','19',1168,1),
+ (3930,'Caeguazu','5',1168,1),
+ (3931,'Caazapl','6',1168,1),
+ (3932,'Canindeyu','14',1168,1),
+ (3933,'Concepcion','1',1168,1),
+ (3934,'Cordillera','3',1168,1),
+ (3935,'Guaira','4',1168,1),
+ (3936,'Itapua','7',1168,1),
+ (3937,'Miaiones','8',1168,1),
+ (3938,'Neembucu','12',1168,1),
+ (3939,'Paraguari','9',1168,1),
+ (3940,'Presidente Hayes','15',1168,1),
+ (3941,'San Pedro','2',1168,1),
+ (3942,'Ad Dawhah','DA',1175,1),
+ (3943,'Al Ghuwayriyah','GH',1175,1),
+ (3944,'Al Jumayliyah','JU',1175,1),
+ (3945,'Al Khawr','KH',1175,1),
+ (3946,'Al Wakrah','WA',1175,1),
+ (3947,'Ar Rayyan','RA',1175,1),
+ (3948,'Jariyan al Batnah','JB',1175,1),
+ (3949,'Madinat ash Shamal','MS',1175,1),
+ (3950,'Umm Salal','US',1175,1),
+ (3951,'Bucuresti','B',1176,1),
+ (3952,'Alba','AB',1176,1),
+ (3953,'Arad','AR',1176,1),
+ (3954,'ArgeÈ™','AG',1176,1),
+ (3955,'Bacău','BC',1176,1),
+ (3956,'Bihor','BH',1176,1),
+ (3957,'Bistrița-Năsăud','BN',1176,1),
+ (3958,'Botoșani','BT',1176,1),
+ (3959,'Brașov','BV',1176,1),
+ (3960,'Brăila','BR',1176,1),
+ (3961,'Buzău','BZ',1176,1),
+ (3962,'CaraÈ™-Severin','CS',1176,1),
+ (3963,'Călărași','CL',1176,1),
+ (3964,'Cluj','CJ',1176,1),
+ (3965,'Constanța','CT',1176,1),
+ (3966,'Covasna','CV',1176,1),
+ (3967,'Dâmbovița','DB',1176,1),
+ (3968,'Dolj','DJ',1176,1),
+ (3969,'Galați','GL',1176,1),
+ (3970,'Giurgiu','GR',1176,1),
+ (3971,'Gorj','GJ',1176,1),
+ (3972,'Harghita','HR',1176,1),
+ (3973,'Hunedoara','HD',1176,1),
+ (3974,'Ialomița','IL',1176,1),
+ (3975,'Iași','IS',1176,1),
+ (3976,'Ilfov','IF',1176,1),
+ (3977,'MaramureÈ™','MM',1176,1),
+ (3978,'Mehedinți','MH',1176,1),
+ (3979,'MureÈ™','MS',1176,1),
+ (3980,'NeamÈ›','NT',1176,1),
+ (3981,'Olt','OT',1176,1),
+ (3982,'Prahova','PH',1176,1),
+ (3983,'Satu Mare','SM',1176,1),
+ (3984,'Sălaj','SJ',1176,1),
+ (3985,'Sibiu','SB',1176,1),
+ (3986,'Suceava','SV',1176,1),
+ (3987,'Teleorman','TR',1176,1),
+ (3988,'TimiÈ™','TM',1176,1),
+ (3989,'Tulcea','TL',1176,1),
+ (3990,'Vaslui','VS',1176,1),
+ (3991,'Vâlcea','VL',1176,1),
+ (3992,'Vrancea','VN',1176,1),
+ (3993,'Adygeya, Respublika','AD',1177,1),
+ (3994,'Altay, Respublika','AL',1177,1),
+ (3995,'Bashkortostan, Respublika','BA',1177,1),
+ (3996,'Buryatiya, Respublika','BU',1177,1),
+ (3997,'Chechenskaya Respublika','CE',1177,1),
+ (3998,'Chuvashskaya Respublika','CU',1177,1),
+ (3999,'Dagestan, Respublika','DA',1177,1),
+ (4000,'Ingushskaya Respublika','IN',1177,1),
+ (4001,'Kabardino-Balkarskaya','KB',1177,1),
+ (4002,'Kalmykiya, Respublika','KL',1177,1),
+ (4003,'Karachayevo-Cherkesskaya Respublika','KC',1177,1),
+ (4004,'Kareliya, Respublika','KR',1177,1),
+ (4005,'Khakasiya, Respublika','KK',1177,1),
+ (4006,'Komi, Respublika','KO',1177,1),
+ (4007,'Mariy El, Respublika','ME',1177,1),
+ (4008,'Mordoviya, Respublika','MO',1177,1),
+ (4009,'Sakha, Respublika [Yakutiya]','SA',1177,1),
+ (4010,'Severnaya Osetiya, Respublika','SE',1177,1),
+ (4011,'Tatarstan, Respublika','TA',1177,1),
+ (4012,'Tyva, Respublika [Tuva]','TY',1177,1),
+ (4013,'Udmurtskaya Respublika','UD',1177,1),
+ (4014,'Altayskiy kray','ALT',1177,1),
+ (4015,'Khabarovskiy kray','KHA',1177,1),
+ (4016,'Krasnodarskiy kray','KDA',1177,1),
+ (4017,'Krasnoyarskiy kray','KYA',1177,1),
+ (4018,'Primorskiy kray','PRI',1177,1),
+ (4019,'Stavropol\'skiy kray','STA',1177,1),
+ (4020,'Amurskaya oblast\'','AMU',1177,1),
+ (4021,'Arkhangel\'skaya oblast\'','ARK',1177,1),
+ (4022,'Astrakhanskaya oblast\'','AST',1177,1),
+ (4023,'Belgorodskaya oblast\'','BEL',1177,1),
+ (4024,'Bryanskaya oblast\'','BRY',1177,1),
+ (4025,'Chelyabinskaya oblast\'','CHE',1177,1),
+ (4026,'Zabaykalsky Krai\'','ZSK',1177,1),
+ (4027,'Irkutskaya oblast\'','IRK',1177,1),
+ (4028,'Ivanovskaya oblast\'','IVA',1177,1),
+ (4029,'Kaliningradskaya oblast\'','KGD',1177,1),
+ (4030,'Kaluzhskaya oblast\'','KLU',1177,1),
+ (4031,'Kamchatka Krai\'','KAM',1177,1),
+ (4032,'Kemerovskaya oblast\'','KEM',1177,1),
+ (4033,'Kirovskaya oblast\'','KIR',1177,1),
+ (4034,'Kostromskaya oblast\'','KOS',1177,1),
+ (4035,'Kurganskaya oblast\'','KGN',1177,1),
+ (4036,'Kurskaya oblast\'','KRS',1177,1),
+ (4037,'Leningradskaya oblast\'','LEN',1177,1),
+ (4038,'Lipetskaya oblast\'','LIP',1177,1),
+ (4039,'Magadanskaya oblast\'','MAG',1177,1),
+ (4040,'Moskovskaya oblast\'','MOS',1177,1),
+ (4041,'Murmanskaya oblast\'','MUR',1177,1),
+ (4042,'Nizhegorodskaya oblast\'','NIZ',1177,1),
+ (4043,'Novgorodskaya oblast\'','NGR',1177,1),
+ (4044,'Novosibirskaya oblast\'','NVS',1177,1),
+ (4045,'Omskaya oblast\'','OMS',1177,1),
+ (4046,'Orenburgskaya oblast\'','ORE',1177,1),
+ (4047,'Orlovskaya oblast\'','ORL',1177,1),
+ (4048,'Penzenskaya oblast\'','PNZ',1177,1),
+ (4049,'Perm krai\'','PEK',1177,1),
+ (4050,'Pskovskaya oblast\'','PSK',1177,1),
+ (4051,'Rostovskaya oblast\'','ROS',1177,1),
+ (4052,'Ryazanskaya oblast\'','RYA',1177,1),
+ (4053,'Sakhalinskaya oblast\'','SAK',1177,1),
+ (4054,'Samarskaya oblast\'','SAM',1177,1),
+ (4055,'Saratovskaya oblast\'','SAR',1177,1),
+ (4056,'Smolenskaya oblast\'','SMO',1177,1),
+ (4057,'Sverdlovskaya oblast\'','SVE',1177,1),
+ (4058,'Tambovskaya oblast\'','TAM',1177,1),
+ (4059,'Tomskaya oblast\'','TOM',1177,1),
+ (4060,'Tul\'skaya oblast\'','TUL',1177,1),
+ (4061,'Tverskaya oblast\'','TVE',1177,1),
+ (4062,'Tyumenskaya oblast\'','TYU',1177,1),
+ (4063,'Ul\'yanovskaya oblast\'','ULY',1177,1),
+ (4064,'Vladimirskaya oblast\'','VLA',1177,1),
+ (4065,'Volgogradskaya oblast\'','VGG',1177,1),
+ (4066,'Vologodskaya oblast\'','VLG',1177,1),
+ (4067,'Voronezhskaya oblast\'','VOR',1177,1),
+ (4068,'Yaroslavskaya oblast\'','YAR',1177,1),
+ (4069,'Moskva','MOW',1177,1),
+ (4070,'Sankt-Peterburg','SPE',1177,1),
+ (4071,'Yevreyskaya avtonomnaya oblast\'','YEV',1177,1),
+ (4072,'Chukotskiy avtonomnyy okrug','CHU',1177,1),
+ (4073,'Khanty-Mansiyskiy avtonomnyy okrug','KHM',1177,1),
+ (4074,'Nenetskiy avtonomnyy okrug','NEN',1177,1),
+ (4075,'Yamalo-Nenetskiy avtonomnyy okrug','YAN',1177,1),
+ (4076,'Butare','C',1178,1),
+ (4077,'Byumba','I',1178,1),
+ (4078,'Cyangugu','E',1178,1),
+ (4079,'Gikongoro','D',1178,1),
+ (4080,'Gisenyi','G',1178,1),
+ (4081,'Gitarama','B',1178,1),
+ (4082,'Kibungo','J',1178,1),
+ (4083,'Kibuye','F',1178,1),
+ (4084,'Kigali-Rural Kigali y\' Icyaro','K',1178,1),
+ (4085,'Kigali-Ville Kigali Ngari','L',1178,1),
+ (4086,'Mutara','M',1178,1),
+ (4087,'Ruhengeri','H',1178,1),
+ (4088,'Saint Kitts','K',1181,1),
+ (4089,'Nevis','N',1181,1),
+ (4090,'Al Bahah','11',1187,1),
+ (4091,'Al Hudud Ash Shamaliyah','08',1187,1),
+ (4092,'Al Jawf','12',1187,1),
+ (4093,'Al Madinah','03',1187,1),
+ (4094,'Al Qasim','05',1187,1),
+ (4095,'Ar Riyad','01',1187,1),
+ (4096,'Asir','14',1187,1),
+ (4097,'Ha\'il','06',1187,1),
+ (4098,'Jlzan','09',1187,1),
+ (4099,'Makkah','02',1187,1),
+ (4100,'Najran','10',1187,1),
+ (4101,'Tabuk','07',1187,1),
+ (4102,'Ash Sharqiyah','04',1187,1),
+ (4103,'Capital Territory (Honiara)','CT',1194,1),
+ (4104,'Guadalcanal','GU',1194,1),
+ (4105,'Isabel','IS',1194,1),
+ (4106,'Makira','MK',1194,1),
+ (4107,'Malaita','ML',1194,1),
+ (4108,'Temotu','TE',1194,1),
+ (4109,'A\'ali an Nil','23',1200,1),
+ (4110,'Al Bah al Ahmar','26',1200,1),
+ (4111,'Al Buhayrat','18',1200,1),
+ (4112,'Al Jazirah','07',1200,1),
+ (4113,'Al Khartum','03',1200,1),
+ (4114,'Al Qadarif','06',1200,1),
+ (4115,'Al Wahdah','22',1200,1),
+ (4116,'An Nil','04',1200,1),
+ (4117,'An Nil al Abyaq','08',1200,1),
+ (4118,'An Nil al Azraq','24',1200,1),
+ (4119,'Ash Shamallyah','01',1200,1),
+ (4120,'Bahr al Jabal','17',1200,1),
+ (4121,'Gharb al Istiwa\'iyah','16',1200,1),
+ (4122,'Gharb Ba~r al Ghazal','14',1200,1),
+ (4123,'Gharb Darfur','12',1200,1),
+ (4124,'Gharb Kurdufan','10',1200,1),
+ (4125,'Janub Darfur','11',1200,1),
+ (4126,'Janub Rurdufan','13',1200,1),
+ (4127,'Jnqall','20',1200,1),
+ (4128,'Kassala','05',1200,1),
+ (4129,'Shamal Batr al Ghazal','15',1200,1),
+ (4130,'Shamal Darfur','02',1200,1),
+ (4131,'Shamal Kurdufan','09',1200,1),
+ (4132,'Sharq al Istiwa\'iyah','19',1200,1),
+ (4133,'Sinnar','25',1200,1),
+ (4134,'Warab','21',1200,1),
+ (4135,'Blekinge län','K',1204,1),
+ (4136,'Dalarnas län','W',1204,1),
+ (4137,'Gotlands län','I',1204,1),
+ (4138,'Gävleborgs län','X',1204,1),
+ (4139,'Hallands län','N',1204,1),
+ (4140,'Jämtlands län','Z',1204,1),
+ (4141,'Jönkopings län','F',1204,1),
+ (4142,'Kalmar län','H',1204,1),
+ (4143,'Kronobergs län','G',1204,1),
+ (4144,'Norrbottens län','BD',1204,1),
+ (4145,'Skåne län','M',1204,1),
+ (4146,'Stockholms län','AB',1204,1),
+ (4147,'Södermanlands län','D',1204,1),
+ (4148,'Uppsala län','C',1204,1),
+ (4149,'Värmlands län','S',1204,1),
+ (4150,'Västerbottens län','AC',1204,1),
+ (4151,'Västernorrlands län','Y',1204,1),
+ (4152,'Västmanlands län','U',1204,1),
+ (4153,'Västra Götalands län','Q',1204,1),
+ (4154,'Örebro län','T',1204,1),
+ (4155,'Östergötlands län','E',1204,1),
+ (4156,'Saint Helena','SH',1180,1),
+ (4157,'Ascension','AC',1180,1),
+ (4158,'Tristan da Cunha','TA',1180,1),
+ (4159,'Ajdovščina','001',1193,1),
+ (4160,'Beltinci','002',1193,1),
+ (4161,'Benedikt','148',1193,1),
+ (4162,'Bistrica ob Sotli','149',1193,1),
+ (4163,'Bled','003',1193,1),
+ (4164,'Bloke','150',1193,1),
+ (4165,'Bohinj','004',1193,1),
+ (4166,'Borovnica','005',1193,1),
+ (4167,'Bovec','006',1193,1),
+ (4168,'Braslovče','151',1193,1),
+ (4169,'Brda','007',1193,1),
+ (4170,'Brezovica','008',1193,1),
+ (4171,'Brežice','009',1193,1),
+ (4172,'Cankova','152',1193,1),
+ (4173,'Celje','011',1193,1),
+ (4174,'Cerklje na Gorenjskem','012',1193,1),
+ (4175,'Cerknica','013',1193,1),
+ (4176,'Cerkno','014',1193,1),
+ (4177,'Cerkvenjak','153',1193,1),
+ (4178,'Črenšovci','015',1193,1),
+ (4179,'Črna na Koroškem','016',1193,1),
+ (4180,'ÄŒrnomelj','017',1193,1),
+ (4181,'Destrnik','018',1193,1),
+ (4182,'Divača','019',1193,1),
+ (4183,'Dobje','154',1193,1),
+ (4184,'Dobrepolje','020',1193,1),
+ (4185,'Dobrna','155',1193,1),
+ (4186,'Dobrova-Polhov Gradec','021',1193,1),
+ (4187,'Dobrovnik','156',1193,1),
+ (4188,'Dol pri Ljubljani','022',1193,1),
+ (4189,'Dolenjske Toplice','157',1193,1),
+ (4190,'Domžale','023',1193,1),
+ (4191,'Dornava','024',1193,1),
+ (4192,'Dravograd','025',1193,1),
+ (4193,'Duplek','026',1193,1),
+ (4194,'Gorenja vas-Poljane','027',1193,1),
+ (4195,'Gorišnica','028',1193,1),
+ (4196,'Gornja Radgona','029',1193,1),
+ (4197,'Gornji Grad','030',1193,1),
+ (4198,'Gornji Petrovci','031',1193,1),
+ (4199,'Grad','158',1193,1),
+ (4200,'Grosuplje','032',1193,1),
+ (4201,'Hajdina','159',1193,1),
+ (4202,'Hoče-Slivnica','160',1193,1),
+ (4203,'Hodoš','161',1193,1),
+ (4204,'Horjul','162',1193,1),
+ (4205,'Hrastnik','034',1193,1),
+ (4206,'Hrpelje-Kozina','035',1193,1),
+ (4207,'Idrija','036',1193,1),
+ (4208,'Ig','037',1193,1),
+ (4209,'Ilirska Bistrica','038',1193,1),
+ (4210,'Ivančna Gorica','039',1193,1),
+ (4211,'Izola','040',1193,1),
+ (4212,'Jesenice','041',1193,1),
+ (4213,'Jezersko','163',1193,1),
+ (4214,'Juršinci','042',1193,1),
+ (4215,'Kamnik','043',1193,1),
+ (4216,'Kanal','044',1193,1),
+ (4217,'Kidričevo','045',1193,1),
+ (4218,'Kobarid','046',1193,1),
+ (4219,'Kobilje','047',1193,1),
+ (4220,'Kočevje','048',1193,1),
+ (4221,'Komen','049',1193,1),
+ (4222,'Komenda','164',1193,1),
+ (4223,'Koper','050',1193,1),
+ (4224,'Kostel','165',1193,1),
+ (4225,'Kozje','051',1193,1),
+ (4226,'Kranj','052',1193,1),
+ (4227,'Kranjska Gora','053',1193,1),
+ (4228,'Križevci','166',1193,1),
+ (4229,'Krško','054',1193,1),
+ (4230,'Kungota','055',1193,1),
+ (4231,'Kuzma','056',1193,1),
+ (4232,'Laško','057',1193,1),
+ (4233,'Lenart','058',1193,1),
+ (4234,'Lendava','059',1193,1),
+ (4235,'Litija','060',1193,1),
+ (4236,'Ljubljana','061',1193,1),
+ (4237,'Ljubno','062',1193,1),
+ (4238,'Ljutomer','063',1193,1),
+ (4239,'Logatec','064',1193,1),
+ (4240,'Loška dolina','065',1193,1),
+ (4241,'Loški Potok','066',1193,1),
+ (4242,'Lovrenc na Pohorju','167',1193,1),
+ (4243,'Luče','067',1193,1),
+ (4244,'Lukovica','068',1193,1),
+ (4245,'Majšperk','069',1193,1),
+ (4246,'Maribor','070',1193,1),
+ (4247,'Markovci','168',1193,1),
+ (4248,'Medvode','071',1193,1),
+ (4249,'Mengeš','072',1193,1),
+ (4250,'Metlika','073',1193,1),
+ (4251,'Mežica','074',1193,1),
+ (4252,'Miklavž na Dravskem polju','169',1193,1),
+ (4253,'Miren-Kostanjevica','075',1193,1),
+ (4254,'Mirna Peč','170',1193,1),
+ (4255,'Mislinja','076',1193,1),
+ (4256,'Moravče','077',1193,1),
+ (4257,'Moravske Toplice','078',1193,1),
+ (4258,'Mozirje','079',1193,1),
+ (4259,'Murska Sobota','080',1193,1),
+ (4260,'Muta','081',1193,1),
+ (4261,'Naklo','082',1193,1),
+ (4262,'Nazarje','083',1193,1),
+ (4263,'Nova Gorica','084',1193,1),
+ (4264,'Novo mesto','085',1193,1),
+ (4265,'Sveta Ana','181',1193,1),
+ (4266,'Sveti Andraž v Slovenskih goricah','182',1193,1),
+ (4267,'Sveti Jurij','116',1193,1),
+ (4268,'Å alovci','033',1193,1),
+ (4269,'Å empeter-Vrtojba','183',1193,1),
+ (4270,'Šenčur','117',1193,1),
+ (4271,'Å entilj','118',1193,1),
+ (4272,'Å entjernej','119',1193,1),
+ (4273,'Å entjur','120',1193,1),
+ (4274,'Å kocjan','121',1193,1),
+ (4275,'Å kofja Loka','122',1193,1),
+ (4276,'Å kofljica','123',1193,1),
+ (4277,'Šmarje pri Jelšah','124',1193,1),
+ (4278,'Å martno ob Paki','125',1193,1),
+ (4279,'Å martno pri Litiji','194',1193,1),
+ (4280,'Šoštanj','126',1193,1),
+ (4281,'Å tore','127',1193,1),
+ (4282,'Tabor','184',1193,1),
+ (4283,'Tišina','010',1193,1),
+ (4284,'Tolmin','128',1193,1),
+ (4285,'Trbovlje','129',1193,1),
+ (4286,'Trebnje','130',1193,1),
+ (4287,'Trnovska vas','185',1193,1),
+ (4288,'Tržič','131',1193,1),
+ (4289,'Trzin','186',1193,1),
+ (4290,'Turnišče','132',1193,1),
+ (4291,'Velenje','133',1193,1),
+ (4292,'Velika Polana','187',1193,1),
+ (4293,'Velike Lašče','134',1193,1),
+ (4294,'Veržej','188',1193,1),
+ (4295,'Videm','135',1193,1),
+ (4296,'Vipava','136',1193,1),
+ (4297,'Vitanje','137',1193,1),
+ (4298,'Vojnik','138',1193,1),
+ (4299,'Vransko','189',1193,1),
+ (4300,'Vrhnika','140',1193,1),
+ (4301,'Vuzenica','141',1193,1),
+ (4302,'Zagorje ob Savi','142',1193,1),
+ (4303,'Zavrč','143',1193,1),
+ (4304,'Zreče','144',1193,1),
+ (4305,'Žalec','190',1193,1),
+ (4306,'Železniki','146',1193,1),
+ (4307,'Žetale','191',1193,1),
+ (4308,'Žiri','147',1193,1),
+ (4309,'Žirovnica','192',1193,1),
+ (4310,'Žužemberk','193',1193,1),
+ (4311,'Ankaran','86',1193,1),
+ (4312,'Apače','87',1193,1),
+ (4313,'Cirkulane','88',1193,1),
+ (4314,'Gorje','89',1193,1),
+ (4315,'Kostanjevica na Krki','90',1193,1),
+ (4316,'Log-Dragomer','91',1193,1),
+ (4317,'Makole','92',1193,1),
+ (4318,'Mirna','93',1193,1),
+ (4319,'Mokronog-Trebelno','94',1193,1),
+ (4320,'Odranci','95',1193,1),
+ (4321,'Oplotnica','96',1193,1),
+ (4322,'Ormož','97',1193,1),
+ (4323,'Osilnica','98',1193,1),
+ (4324,'Pesnica','99',1193,1),
+ (4325,'Piran','100',1193,1),
+ (4326,'Pivka','101',1193,1),
+ (4327,'Podčetrtek','102',1193,1),
+ (4328,'Podlehnik','103',1193,1),
+ (4329,'Podvelka','104',1193,1),
+ (4330,'Poljčane','105',1193,1),
+ (4331,'Polzela','106',1193,1),
+ (4332,'Postojna','107',1193,1),
+ (4333,'Prebold','108',1193,1),
+ (4334,'Preddvor','109',1193,1),
+ (4335,'Prevalje','110',1193,1),
+ (4336,'Ptuj','111',1193,1),
+ (4337,'Puconci','112',1193,1),
+ (4338,'Rače-Fram','113',1193,1),
+ (4339,'Radeče','114',1193,1),
+ (4340,'Radenci','115',1193,1),
+ (4341,'Radlje ob Dravi','139',1193,1),
+ (4342,'Radovljica','145',1193,1),
+ (4343,'Ravne na Koroškem','171',1193,1),
+ (4344,'Razkrižje','172',1193,1),
+ (4345,'Rečica ob Savinji','173',1193,1),
+ (4346,'Renče-Vogrsko','174',1193,1),
+ (4347,'Ribnica','175',1193,1),
+ (4348,'Ribnica na Pohorju','176',1193,1),
+ (4349,'Rogaška Slatina','177',1193,1),
+ (4350,'Rogašovci','178',1193,1),
+ (4351,'Rogatec','179',1193,1),
+ (4352,'Ruše','180',1193,1),
+ (4353,'Selnica ob Dravi','195',1193,1),
+ (4354,'Semič','196',1193,1),
+ (4355,'Å entrupert','197',1193,1),
+ (4356,'Sevnica','198',1193,1),
+ (4357,'Sežana','199',1193,1),
+ (4358,'Slovenj Gradec','200',1193,1),
+ (4359,'Slovenska Bistrica','201',1193,1),
+ (4360,'Slovenske Konjice','202',1193,1),
+ (4361,'Šmarješke Toplice','203',1193,1),
+ (4362,'Sodražica','204',1193,1),
+ (4363,'Solčava','205',1193,1),
+ (4364,'Središče ob Dravi','206',1193,1),
+ (4365,'Starše','207',1193,1),
+ (4366,'Straža','208',1193,1),
+ (4367,'Sveta Trojica v Slovenskih goricah','209',1193,1),
+ (4368,'Sveti Jurij v Slovenskih goricah','210',1193,1),
+ (4369,'Sveti Tomaž','211',1193,1),
+ (4370,'Vodice','212',1193,1),
+ (4371,'Banskobystrický kraj','BC',1192,1),
+ (4372,'Bratislavský kraj','BL',1192,1),
+ (4373,'Košický kraj','KI',1192,1),
+ (4374,'Nitriansky kraj','NJ',1192,1),
+ (4375,'Prešovský kraj','PV',1192,1),
+ (4376,'Trenčiansky kraj','TC',1192,1),
+ (4377,'Trnavský kraj','TA',1192,1),
+ (4378,'Žilinský kraj','ZI',1192,1),
+ (4379,'Western Area (Freetown)','W',1190,1),
+ (4380,'Eastern','E',1190,1),
+ (4381,'Northern','N',1190,1),
+ (4382,'Southern','S',1190,1),
+ (4383,'Dakar','DK',1188,1),
+ (4384,'Diourbel','DB',1188,1),
+ (4385,'Fatick','FK',1188,1),
+ (4386,'Kaolack','KL',1188,1),
+ (4387,'Kolda','KD',1188,1),
+ (4388,'Louga','LG',1188,1),
+ (4389,'Matam','MT',1188,1),
+ (4390,'Saint-Louis','SL',1188,1),
+ (4391,'Tambacounda','TC',1188,1),
+ (4392,'Thies','TH',1188,1),
+ (4393,'Ziguinchor','ZG',1188,1),
+ (4394,'Awdal','AW',1195,1),
+ (4395,'Bakool','BK',1195,1),
+ (4396,'Banaadir','BN',1195,1),
+ (4397,'Bay','BY',1195,1),
+ (4398,'Galguduud','GA',1195,1),
+ (4399,'Gedo','GE',1195,1),
+ (4400,'Hiirsan','HI',1195,1),
+ (4401,'Jubbada Dhexe','JD',1195,1),
+ (4402,'Jubbada Hoose','JH',1195,1),
+ (4403,'Mudug','MU',1195,1),
+ (4404,'Nugaal','NU',1195,1),
+ (4405,'Saneag','SA',1195,1),
+ (4406,'Shabeellaha Dhexe','SD',1195,1),
+ (4407,'Shabeellaha Hoose','SH',1195,1),
+ (4408,'Sool','SO',1195,1),
+ (4409,'Togdheer','TO',1195,1),
+ (4410,'Woqooyi Galbeed','WO',1195,1),
+ (4411,'Brokopondo','BR',1201,1),
+ (4412,'Commewijne','CM',1201,1),
+ (4413,'Coronie','CR',1201,1),
+ (4414,'Marowijne','MA',1201,1),
+ (4415,'Nickerie','NI',1201,1),
+ (4416,'Paramaribo','PM',1201,1),
+ (4417,'Saramacca','SA',1201,1),
+ (4418,'Sipaliwini','SI',1201,1),
+ (4419,'Wanica','WA',1201,1),
+ (4420,'Principe','P',1207,1),
+ (4421,'Sao Tome','S',1207,1),
+ (4422,'Ahuachapan','AH',1066,1),
+ (4423,'Cabanas','CA',1066,1),
+ (4424,'Cuscatlan','CU',1066,1),
+ (4425,'Chalatenango','CH',1066,1),
+ (4426,'Morazan','MO',1066,1),
+ (4427,'San Miguel','SM',1066,1),
+ (4428,'San Salvador','SS',1066,1),
+ (4429,'Santa Ana','SA',1066,1),
+ (4430,'San Vicente','SV',1066,1),
+ (4431,'Sonsonate','SO',1066,1),
+ (4432,'Usulutan','US',1066,1),
+ (4433,'La Libertad','LI',1066,1),
+ (4434,'La Paz','PA',1066,1),
+ (4435,'La Union','UN',1066,1),
+ (4436,'Al Hasakah','HA',1206,1),
+ (4437,'Al Ladhiqiyah','LA',1206,1),
+ (4438,'Al Qunaytirah','QU',1206,1),
+ (4439,'Ar Raqqah','RA',1206,1),
+ (4440,'As Suwayda\'','SU',1206,1),
+ (4441,'Dar\'a','DR',1206,1),
+ (4442,'Dayr az Zawr','DY',1206,1),
+ (4443,'Dimashq','DI',1206,1),
+ (4444,'Halab','HL',1206,1),
+ (4445,'Hamah','HM',1206,1),
+ (4446,'Jim\'','HI',1206,1),
+ (4447,'Idlib','ID',1206,1),
+ (4448,'Rif Dimashq','RD',1206,1),
+ (4449,'Tarts','TA',1206,1),
+ (4450,'Hhohho','HH',1203,1),
+ (4451,'Lubombo','LU',1203,1),
+ (4452,'Manzini','MA',1203,1),
+ (4453,'Shiselweni','SH',1203,1),
+ (4454,'Batha','BA',1043,1),
+ (4455,'Biltine','BI',1043,1),
+ (4456,'Borkou-Ennedi-Tibesti','BET',1043,1),
+ (4457,'Chari-Baguirmi','CB',1043,1),
+ (4458,'Guera','GR',1043,1),
+ (4459,'Kanem','KA',1043,1),
+ (4460,'Lac','LC',1043,1),
+ (4461,'Logone-Occidental','LO',1043,1),
+ (4462,'Logone-Oriental','LR',1043,1),
+ (4463,'Mayo-Kebbi','MK',1043,1),
+ (4464,'Moyen-Chari','MC',1043,1),
+ (4465,'Ouaddai','OD',1043,1),
+ (4466,'Salamat','SA',1043,1),
+ (4467,'Tandjile','TA',1043,1),
+ (4468,'Kara','K',1214,1),
+ (4469,'Maritime (Region)','M',1214,1),
+ (4470,'Savannes','S',1214,1),
+ (4471,'Krung Thep Maha Nakhon Bangkok','10',1211,1),
+ (4472,'Phatthaya','S',1211,1),
+ (4473,'Amnat Charoen','37',1211,1),
+ (4474,'Ang Thong','15',1211,1),
+ (4475,'Buri Ram','31',1211,1),
+ (4476,'Chachoengsao','24',1211,1),
+ (4477,'Chai Nat','18',1211,1),
+ (4478,'Chaiyaphum','36',1211,1),
+ (4479,'Chanthaburi','22',1211,1),
+ (4480,'Chiang Mai','50',1211,1),
+ (4481,'Chiang Rai','57',1211,1),
+ (4482,'Chon Buri','20',1211,1),
+ (4483,'Chumphon','86',1211,1),
+ (4484,'Kalasin','46',1211,1),
+ (4485,'Kamphasng Phet','62',1211,1),
+ (4486,'Kanchanaburi','71',1211,1),
+ (4487,'Khon Kaen','40',1211,1),
+ (4488,'Krabi','81',1211,1),
+ (4489,'Lampang','52',1211,1),
+ (4490,'Lamphun','51',1211,1),
+ (4491,'Loei','42',1211,1),
+ (4492,'Lop Buri','16',1211,1),
+ (4493,'Mae Hong Son','58',1211,1),
+ (4494,'Maha Sarakham','44',1211,1),
+ (4495,'Mukdahan','49',1211,1),
+ (4496,'Nakhon Nayok','26',1211,1),
+ (4497,'Nakhon Pathom','73',1211,1),
+ (4498,'Nakhon Phanom','48',1211,1),
+ (4499,'Nakhon Ratchasima','30',1211,1),
+ (4500,'Nakhon Sawan','60',1211,1),
+ (4501,'Nakhon Si Thammarat','80',1211,1),
+ (4502,'Nan','55',1211,1),
+ (4503,'Narathiwat','96',1211,1),
+ (4504,'Nong Bua Lam Phu','39',1211,1),
+ (4505,'Nong Khai','43',1211,1),
+ (4506,'Nonthaburi','12',1211,1),
+ (4507,'Pathum Thani','13',1211,1),
+ (4508,'Pattani','94',1211,1),
+ (4509,'Phangnga','82',1211,1),
+ (4510,'Phatthalung','93',1211,1),
+ (4511,'Phayao','56',1211,1),
+ (4512,'Phetchabun','67',1211,1),
+ (4513,'Phetchaburi','76',1211,1),
+ (4514,'Phichit','66',1211,1),
+ (4515,'Phitsanulok','65',1211,1),
+ (4516,'Phrae','54',1211,1),
+ (4517,'Phra Nakhon Si Ayutthaya','14',1211,1),
+ (4518,'Phuket','83',1211,1),
+ (4519,'Prachin Buri','25',1211,1),
+ (4520,'Prachuap Khiri Khan','77',1211,1),
+ (4521,'Ranong','85',1211,1),
+ (4522,'Ratchaburi','70',1211,1),
+ (4523,'Rayong','21',1211,1),
+ (4524,'Roi Et','45',1211,1),
+ (4525,'Sa Kaeo','27',1211,1),
+ (4526,'Sakon Nakhon','47',1211,1),
+ (4527,'Samut Prakan','11',1211,1),
+ (4528,'Samut Sakhon','74',1211,1),
+ (4529,'Samut Songkhram','75',1211,1),
+ (4530,'Saraburi','19',1211,1),
+ (4531,'Satun','91',1211,1),
+ (4532,'Sing Buri','17',1211,1),
+ (4533,'Si Sa Ket','33',1211,1),
+ (4534,'Songkhla','90',1211,1),
+ (4535,'Sukhothai','64',1211,1),
+ (4536,'Suphan Buri','72',1211,1),
+ (4537,'Surat Thani','84',1211,1),
+ (4538,'Surin','32',1211,1),
+ (4539,'Tak','63',1211,1),
+ (4540,'Trang','92',1211,1),
+ (4541,'Trat','23',1211,1),
+ (4542,'Ubon Ratchathani','34',1211,1),
+ (4543,'Udon Thani','41',1211,1),
+ (4544,'Uthai Thani','61',1211,1),
+ (4545,'Uttaradit','53',1211,1),
+ (4546,'Yala','95',1211,1),
+ (4547,'Yasothon','35',1211,1),
+ (4548,'Sughd','SU',1209,1),
+ (4549,'Khatlon','KT',1209,1),
+ (4550,'Gorno-Badakhshan','GB',1209,1),
+ (4551,'Dushanbe','DU',1209,1),
+ (4552,'Nohiyahoi Tobei Jumhurí','RA',1209,1),
+ (4553,'Ahal','A',1220,1),
+ (4554,'Balkan','B',1220,1),
+ (4555,'Dasoguz','D',1220,1),
+ (4556,'Lebap','L',1220,1),
+ (4557,'Mary','M',1220,1),
+ (4558,'Béja','31',1218,1),
+ (4559,'Ben Arous','13',1218,1),
+ (4560,'Bizerte','23',1218,1),
+ (4561,'Gabès','81',1218,1),
+ (4562,'Gafsa','71',1218,1),
+ (4563,'Jendouba','32',1218,1),
+ (4564,'Kairouan','41',1218,1),
+ (4565,'Rasserine','42',1218,1),
+ (4566,'Kebili','73',1218,1),
+ (4567,'L\'Ariana','12',1218,1),
+ (4568,'Le Ref','33',1218,1),
+ (4569,'Mahdia','53',1218,1),
+ (4570,'La Manouba','14',1218,1),
+ (4571,'Medenine','82',1218,1),
+ (4572,'Moneatir','52',1218,1),
+ (4573,'Naboul','21',1218,1),
+ (4574,'Sfax','61',1218,1),
+ (4575,'Sidi Bouxid','43',1218,1),
+ (4576,'Siliana','34',1218,1),
+ (4577,'Sousse','51',1218,1),
+ (4578,'Tataouine','83',1218,1),
+ (4579,'Tozeur','72',1218,1),
+ (4580,'Tunis','11',1218,1),
+ (4581,'Zaghouan','22',1218,1),
+ (4582,'Adana','01',1219,1),
+ (4583,'Ad yaman','02',1219,1),
+ (4584,'Afyon','03',1219,1),
+ (4585,'Ag r','04',1219,1),
+ (4586,'Aksaray','68',1219,1),
+ (4587,'Amasya','05',1219,1),
+ (4588,'Ankara','06',1219,1),
+ (4589,'Antalya','07',1219,1),
+ (4590,'Ardahan','75',1219,1),
+ (4591,'Artvin','08',1219,1),
+ (4592,'Aydin','09',1219,1),
+ (4593,'Bal kesir','10',1219,1),
+ (4594,'Bartin','74',1219,1),
+ (4595,'Batman','72',1219,1),
+ (4596,'Bayburt','69',1219,1),
+ (4597,'Bilecik','11',1219,1),
+ (4598,'Bingol','12',1219,1),
+ (4599,'Bitlis','13',1219,1),
+ (4600,'Bolu','14',1219,1),
+ (4601,'Burdur','15',1219,1),
+ (4602,'Bursa','16',1219,1),
+ (4603,'Canakkale','17',1219,1),
+ (4604,'Cankir','18',1219,1),
+ (4605,'Corum','19',1219,1),
+ (4606,'Denizli','20',1219,1),
+ (4607,'Diyarbakir','21',1219,1),
+ (4608,'Duzce','81',1219,1),
+ (4609,'Edirne','22',1219,1),
+ (4610,'Elazig','23',1219,1),
+ (4611,'Erzincan','24',1219,1),
+ (4612,'Erzurum','25',1219,1),
+ (4613,'Eskis\'ehir','26',1219,1),
+ (4614,'Gaziantep','27',1219,1),
+ (4615,'Giresun','28',1219,1),
+ (4616,'Gms\'hane','29',1219,1),
+ (4617,'Hakkari','30',1219,1),
+ (4618,'Hatay','31',1219,1),
+ (4619,'Igidir','76',1219,1),
+ (4620,'Isparta','32',1219,1),
+ (4621,'Icel','33',1219,1),
+ (4622,'Istanbul','34',1219,1),
+ (4623,'Izmir','35',1219,1),
+ (4624,'Kahramanmaras','46',1219,1),
+ (4625,'Karabk','78',1219,1),
+ (4626,'Karaman','70',1219,1),
+ (4627,'Kars','36',1219,1),
+ (4628,'Kastamonu','37',1219,1),
+ (4629,'Kayseri','38',1219,1),
+ (4630,'Kirikkale','71',1219,1),
+ (4631,'Kirklareli','39',1219,1),
+ (4632,'Kirs\'ehir','40',1219,1),
+ (4633,'Kilis','79',1219,1),
+ (4634,'Kocaeli','41',1219,1),
+ (4635,'Konya','42',1219,1),
+ (4636,'Ktahya','43',1219,1),
+ (4637,'Malatya','44',1219,1),
+ (4638,'Manisa','45',1219,1),
+ (4639,'Mardin','47',1219,1),
+ (4640,'Mugila','48',1219,1),
+ (4641,'Mus','49',1219,1),
+ (4642,'Nevs\'ehir','50',1219,1),
+ (4643,'Nigide','51',1219,1),
+ (4644,'Ordu','52',1219,1),
+ (4645,'Osmaniye','80',1219,1),
+ (4646,'Rize','53',1219,1),
+ (4647,'Sakarya','54',1219,1),
+ (4648,'Samsun','55',1219,1),
+ (4649,'Siirt','56',1219,1),
+ (4650,'Sinop','57',1219,1),
+ (4651,'Sivas','58',1219,1),
+ (4652,'S\'anliurfa','63',1219,1),
+ (4653,'S\'rnak','73',1219,1),
+ (4654,'Tekirdag','59',1219,1),
+ (4655,'Tokat','60',1219,1),
+ (4656,'Trabzon','61',1219,1),
+ (4657,'Tunceli','62',1219,1),
+ (4658,'Us\'ak','64',1219,1),
+ (4659,'Van','65',1219,1),
+ (4660,'Yalova','77',1219,1),
+ (4661,'Yozgat','66',1219,1),
+ (4662,'Zonguldak','67',1219,1),
+ (4663,'Couva-Tabaquite-Talparo','CTT',1217,1),
+ (4664,'Diego Martin','DMN',1217,1),
+ (4665,'Eastern Tobago','ETO',1217,1),
+ (4666,'Penal-Debe','PED',1217,1),
+ (4667,'Princes Town','PRT',1217,1),
+ (4668,'Rio Claro-Mayaro','RCM',1217,1),
+ (4669,'Sangre Grande','SGE',1217,1),
+ (4670,'San Juan-Laventille','SJL',1217,1),
+ (4671,'Siparia','SIP',1217,1),
+ (4672,'Tunapuna-Piarco','TUP',1217,1),
+ (4673,'Western Tobago','WTO',1217,1),
+ (4674,'Arima','ARI',1217,1),
+ (4675,'Chaguanas','CHA',1217,1),
+ (4676,'Point Fortin','PTF',1217,1),
+ (4677,'Port of Spain','POS',1217,1),
+ (4678,'San Fernando','SFO',1217,1),
+ (4679,'Aileu','AL',1063,1),
+ (4680,'Ainaro','AN',1063,1),
+ (4681,'Bacucau','BA',1063,1),
+ (4682,'Bobonaro','BO',1063,1),
+ (4683,'Cova Lima','CO',1063,1),
+ (4684,'Dili','DI',1063,1),
+ (4685,'Ermera','ER',1063,1),
+ (4686,'Laulem','LA',1063,1),
+ (4687,'Liquica','LI',1063,1),
+ (4688,'Manatuto','MT',1063,1),
+ (4689,'Manafahi','MF',1063,1),
+ (4690,'Oecussi','OE',1063,1),
+ (4691,'Viqueque','VI',1063,1),
+ (4692,'Changhua County','CHA',1208,1),
+ (4693,'Chiayi County','CYQ',1208,1),
+ (4694,'Hsinchu County','HSQ',1208,1),
+ (4695,'Hualien County','HUA',1208,1),
+ (4696,'Ilan County','ILA',1208,1),
+ (4697,'Kaohsiung County','KHQ',1208,1),
+ (4698,'Miaoli County','MIA',1208,1),
+ (4699,'Nantou County','NAN',1208,1),
+ (4700,'Penghu County','PEN',1208,1),
+ (4701,'Pingtung County','PIF',1208,1),
+ (4702,'Taichung County','TXQ',1208,1),
+ (4703,'Tainan County','TNQ',1208,1),
+ (4704,'Taipei County','TPQ',1208,1),
+ (4705,'Taitung County','TTT',1208,1),
+ (4706,'Taoyuan County','TAO',1208,1),
+ (4707,'Yunlin County','YUN',1208,1),
+ (4708,'Keelung City','KEE',1208,1),
+ (4709,'Taichung City','TXG',1208,1),
+ (4710,'Kaohsiung City','KHH',1208,1),
+ (4711,'Taipei City','TPE',1208,1),
+ (4712,'Chiayi City','CYI',1208,1),
+ (4713,'Hsinchu City','HSZ',1208,1),
+ (4714,'Tainan City','TNN',1208,1),
+ (4715,'Arusha','01',1210,1),
+ (4716,'Dar-es-Salaam','02',1210,1),
+ (4717,'Dodoma','03',1210,1),
+ (4718,'Iringa','04',1210,1),
+ (4719,'Kagera','05',1210,1),
+ (4720,'Kaskazini Pemba','06',1210,1),
+ (4721,'Kaskazini Unguja','07',1210,1),
+ (4722,'Xigoma','08',1210,1),
+ (4723,'Kilimanjaro','09',1210,1),
+ (4724,'Rusini Pemba','10',1210,1),
+ (4725,'Kusini Unguja','11',1210,1),
+ (4726,'Lindi','12',1210,1),
+ (4727,'Manyara','26',1210,1),
+ (4728,'Mara','13',1210,1),
+ (4729,'Mbeya','14',1210,1),
+ (4730,'Mjini Magharibi','15',1210,1),
+ (4731,'Morogoro','16',1210,1),
+ (4732,'Mtwara','17',1210,1),
+ (4733,'Pwani','19',1210,1),
+ (4734,'Rukwa','20',1210,1),
+ (4735,'Ruvuma','21',1210,1),
+ (4736,'Shinyanga','22',1210,1),
+ (4737,'Singida','23',1210,1),
+ (4738,'Tabora','24',1210,1),
+ (4739,'Tanga','25',1210,1),
+ (4740,'Cherkas\'ka Oblast\'','71',1224,1),
+ (4741,'Chernihivs\'ka Oblast\'','74',1224,1),
+ (4742,'Chernivets\'ka Oblast\'','77',1224,1),
+ (4743,'Dnipropetrovs\'ka Oblast\'','12',1224,1),
+ (4744,'Donets\'ka Oblast\'','14',1224,1),
+ (4745,'Ivano-Frankivs\'ka Oblast\'','26',1224,1),
+ (4746,'Kharkivs\'ka Oblast\'','63',1224,1),
+ (4747,'Khersons\'ka Oblast\'','65',1224,1),
+ (4748,'Khmel\'nyts\'ka Oblast\'','68',1224,1),
+ (4749,'Kirovohrads\'ka Oblast\'','35',1224,1),
+ (4750,'Kyivs\'ka Oblast\'','32',1224,1),
+ (4751,'Luhans\'ka Oblast\'','09',1224,1),
+ (4752,'L\'vivs\'ka Oblast\'','46',1224,1),
+ (4753,'Mykolaivs\'ka Oblast\'','48',1224,1),
+ (4754,'Odes \'ka Oblast\'','51',1224,1),
+ (4755,'Poltavs\'ka Oblast\'','53',1224,1),
+ (4756,'Rivnens\'ka Oblast\'','56',1224,1),
+ (4757,'Sums \'ka Oblast\'','59',1224,1),
+ (4758,'Ternopil\'s\'ka Oblast\'','61',1224,1),
+ (4759,'Vinnyts\'ka Oblast\'','05',1224,1),
+ (4760,'Volyos\'ka Oblast\'','07',1224,1),
+ (4761,'Zakarpats\'ka Oblast\'','21',1224,1),
+ (4762,'Zaporiz\'ka Oblast\'','23',1224,1),
+ (4763,'Zhytomyrs\'ka Oblast\'','18',1224,1),
+ (4764,'Respublika Krym','43',1224,1),
+ (4765,'Kyiv','30',1224,1),
+ (4766,'Sevastopol','40',1224,1),
+ (4767,'Adjumani','301',1223,1),
+ (4768,'Apac','302',1223,1),
+ (4769,'Arua','303',1223,1),
+ (4770,'Bugiri','201',1223,1),
+ (4771,'Bundibugyo','401',1223,1),
+ (4772,'Bushenyi','402',1223,1),
+ (4773,'Busia','202',1223,1),
+ (4774,'Gulu','304',1223,1),
+ (4775,'Hoima','403',1223,1),
+ (4776,'Iganga','203',1223,1),
+ (4777,'Jinja','204',1223,1),
+ (4778,'Kabale','404',1223,1),
+ (4779,'Kabarole','405',1223,1),
+ (4780,'Kaberamaido','213',1223,1),
+ (4781,'Kalangala','101',1223,1),
+ (4782,'Kampala','102',1223,1),
+ (4783,'Kamuli','205',1223,1),
+ (4784,'Kamwenge','413',1223,1),
+ (4785,'Kanungu','414',1223,1),
+ (4786,'Kapchorwa','206',1223,1),
+ (4787,'Kasese','406',1223,1),
+ (4788,'Katakwi','207',1223,1),
+ (4789,'Kayunga','112',1223,1),
+ (4790,'Kibaale','407',1223,1),
+ (4791,'Kiboga','103',1223,1),
+ (4792,'Kisoro','408',1223,1),
+ (4793,'Kitgum','305',1223,1),
+ (4794,'Kotido','306',1223,1),
+ (4795,'Kumi','208',1223,1),
+ (4796,'Kyenjojo','415',1223,1),
+ (4797,'Lira','307',1223,1),
+ (4798,'Luwero','104',1223,1),
+ (4799,'Masaka','105',1223,1),
+ (4800,'Masindi','409',1223,1),
+ (4801,'Mayuge','214',1223,1),
+ (4802,'Mbale','209',1223,1),
+ (4803,'Mbarara','410',1223,1),
+ (4804,'Moroto','308',1223,1),
+ (4805,'Moyo','309',1223,1),
+ (4806,'Mpigi','106',1223,1),
+ (4807,'Mubende','107',1223,1),
+ (4808,'Mukono','108',1223,1),
+ (4809,'Nakapiripirit','311',1223,1),
+ (4810,'Nakasongola','109',1223,1),
+ (4811,'Nebbi','310',1223,1),
+ (4812,'Ntungamo','411',1223,1),
+ (4813,'Pader','312',1223,1),
+ (4814,'Pallisa','210',1223,1),
+ (4815,'Rakai','110',1223,1),
+ (4816,'Rukungiri','412',1223,1),
+ (4817,'Sembabule','111',1223,1),
+ (4818,'Sironko','215',1223,1),
+ (4819,'Soroti','211',1223,1),
+ (4820,'Tororo','212',1223,1),
+ (4821,'Wakiso','113',1223,1),
+ (4822,'Yumbe','313',1223,1),
+ (4823,'Baker Island','81',1227,1),
+ (4824,'Howland Island','84',1227,1),
+ (4825,'Jarvis Island','86',1227,1),
+ (4826,'Johnston Atoll','67',1227,1),
+ (4827,'Kingman Reef','89',1227,1),
+ (4828,'Midway Islands','71',1227,1),
+ (4829,'Navassa Island','76',1227,1),
+ (4830,'Palmyra Atoll','95',1227,1),
+ (4831,'Wake Island','79',1227,1),
+ (4832,'Artigsa','AR',1229,1),
+ (4833,'Canelones','CA',1229,1),
+ (4834,'Cerro Largo','CL',1229,1),
+ (4835,'Colonia','CO',1229,1),
+ (4836,'Durazno','DU',1229,1),
+ (4837,'Flores','FS',1229,1),
+ (4838,'Lavalleja','LA',1229,1),
+ (4839,'Maldonado','MA',1229,1),
+ (4840,'Montevideo','MO',1229,1),
+ (4841,'Paysandu','PA',1229,1),
+ (4842,'Rivera','RV',1229,1),
+ (4843,'Rocha','RO',1229,1),
+ (4844,'Salto','SA',1229,1),
+ (4845,'Soriano','SO',1229,1),
+ (4846,'Tacuarembo','TA',1229,1),
+ (4847,'Treinta y Tres','TT',1229,1),
+ (4848,'Florida','FL',1229,1),
+ (4849,'Rio Negro','RN',1229,1),
+ (4850,'San Jose','SJ',1229,1),
+ (4851,'Toshkent (city)','TK',1230,1),
+ (4852,'Qoraqalpogiston Respublikasi','QR',1230,1),
+ (4853,'Andijon','AN',1230,1),
+ (4854,'Buxoro','BU',1230,1),
+ (4855,'Farg\'ona','FA',1230,1),
+ (4856,'Jizzax','JI',1230,1),
+ (4857,'Khorazm','KH',1230,1),
+ (4858,'Namangan','NG',1230,1),
+ (4859,'Navoiy','NW',1230,1),
+ (4860,'Qashqadaryo','QA',1230,1),
+ (4861,'Samarqand','SA',1230,1),
+ (4862,'Sirdaryo','SI',1230,1),
+ (4863,'Surxondaryo','SU',1230,1),
+ (4864,'Toshkent','TO',1230,1),
+ (4865,'Xorazm','XO',1230,1),
+ (4866,'Distrito Federal','A',1232,1),
+ (4867,'Anzoategui','B',1232,1),
+ (4868,'Apure','C',1232,1),
+ (4869,'Aragua','D',1232,1),
+ (4870,'Barinas','E',1232,1),
+ (4871,'Carabobo','G',1232,1),
+ (4872,'Cojedes','H',1232,1),
+ (4873,'Falcon','I',1232,1),
+ (4874,'Guarico','J',1232,1),
+ (4875,'Lara','K',1232,1),
+ (4876,'Merida','L',1232,1),
+ (4877,'Miranda','M',1232,1),
+ (4878,'Monagas','N',1232,1),
+ (4879,'Nueva Esparta','O',1232,1),
+ (4880,'Portuguesa','P',1232,1),
+ (4881,'Tachira','S',1232,1),
+ (4882,'Trujillo','T',1232,1),
+ (4883,'Vargas','X',1232,1),
+ (4884,'Yaracuy','U',1232,1),
+ (4885,'Zulia','V',1232,1),
+ (4886,'Delta Amacuro','Y',1232,1),
+ (4887,'Dependencias Federales','W',1232,1),
+ (4888,'An Giang','44',1233,1),
+ (4889,'Ba Ria - Vung Tau','43',1233,1),
+ (4890,'Bac Can','53',1233,1),
+ (4891,'Bac Giang','54',1233,1),
+ (4892,'Bac Lieu','55',1233,1),
+ (4893,'Bac Ninh','56',1233,1),
+ (4894,'Ben Tre','50',1233,1),
+ (4895,'Binh Dinh','31',1233,1),
+ (4896,'Binh Duong','57',1233,1),
+ (4897,'Binh Phuoc','58',1233,1),
+ (4898,'Binh Thuan','40',1233,1),
+ (4899,'Ca Mau','59',1233,1),
+ (4900,'Can Tho','48',1233,1),
+ (4901,'Cao Bang','04',1233,1),
+ (4902,'Da Nang, thanh pho','60',1233,1),
+ (4903,'Dong Nai','39',1233,1),
+ (4904,'Dong Thap','45',1233,1),
+ (4905,'Gia Lai','30',1233,1),
+ (4906,'Ha Giang','03',1233,1),
+ (4907,'Ha Nam','63',1233,1),
+ (4908,'Ha Noi, thu do','64',1233,1),
+ (4909,'Ha Tay','15',1233,1),
+ (4910,'Ha Tinh','23',1233,1),
+ (4911,'Hai Duong','61',1233,1),
+ (4912,'Hai Phong, thanh pho','62',1233,1),
+ (4913,'Hoa Binh','14',1233,1),
+ (4914,'Ho Chi Minh, thanh pho [Sai Gon]','65',1233,1),
+ (4915,'Hung Yen','66',1233,1),
+ (4916,'Khanh Hoa','34',1233,1),
+ (4917,'Kien Giang','47',1233,1),
+ (4918,'Kon Tum','28',1233,1),
+ (4919,'Lai Chau','01',1233,1),
+ (4920,'Lam Dong','35',1233,1),
+ (4921,'Lang Son','09',1233,1),
+ (4922,'Lao Cai','02',1233,1),
+ (4923,'Long An','41',1233,1),
+ (4924,'Nam Dinh','67',1233,1),
+ (4925,'Nghe An','22',1233,1),
+ (4926,'Ninh Binh','18',1233,1),
+ (4927,'Ninh Thuan','36',1233,1),
+ (4928,'Phu Tho','68',1233,1),
+ (4929,'Phu Yen','32',1233,1),
+ (4930,'Quang Binh','24',1233,1),
+ (4931,'Quang Nam','27',1233,1),
+ (4932,'Quang Ngai','29',1233,1),
+ (4933,'Quang Ninh','13',1233,1),
+ (4934,'Quang Tri','25',1233,1),
+ (4935,'Soc Trang','52',1233,1),
+ (4936,'Son La','05',1233,1),
+ (4937,'Tay Ninh','37',1233,1),
+ (4938,'Thai Binh','20',1233,1),
+ (4939,'Thai Nguyen','69',1233,1),
+ (4940,'Thanh Hoa','21',1233,1),
+ (4941,'Thua Thien-Hue','26',1233,1),
+ (4942,'Tien Giang','46',1233,1),
+ (4943,'Tra Vinh','51',1233,1),
+ (4944,'Tuyen Quang','07',1233,1),
+ (4945,'Vinh Long','49',1233,1),
+ (4946,'Vinh Phuc','70',1233,1),
+ (4947,'Yen Bai','06',1233,1),
+ (4948,'Malampa','MAP',1231,1),
+ (4949,'Penama','PAM',1231,1),
+ (4950,'Sanma','SAM',1231,1),
+ (4951,'Shefa','SEE',1231,1),
+ (4952,'Tafea','TAE',1231,1),
+ (4953,'Torba','TOB',1231,1),
+ (4954,'A\'ana','AA',1185,1),
+ (4955,'Aiga-i-le-Tai','AL',1185,1),
+ (4956,'Atua','AT',1185,1),
+ (4957,'Fa\'aaaleleaga','FA',1185,1),
+ (4958,'Gaga\'emauga','GE',1185,1),
+ (4959,'Gagaifomauga','GI',1185,1),
+ (4960,'Palauli','PA',1185,1),
+ (4961,'Satupa\'itea','SA',1185,1),
+ (4962,'Tuamasaga','TU',1185,1),
+ (4963,'Va\'a-o-Fonoti','VF',1185,1),
+ (4964,'Vaisigano','VS',1185,1),
+ (4965,'Crna Gora','CG',1243,1),
+ (4966,'Srbija','SR',1242,1),
+ (4967,'Kosovo-Metohija','KM',1242,1),
+ (4968,'Vojvodina','VO',1242,1),
+ (4969,'Abyan','AB',1237,1),
+ (4970,'Adan','AD',1237,1),
+ (4971,'Ad Dali','DA',1237,1),
+ (4972,'Al Bayda\'','BA',1237,1),
+ (4973,'Al Hudaydah','MU',1237,1),
+ (4974,'Al Mahrah','MR',1237,1),
+ (4975,'Al Mahwit','MW',1237,1),
+ (4976,'Amran','AM',1237,1),
+ (4977,'Dhamar','DH',1237,1),
+ (4978,'Hadramawt','HD',1237,1),
+ (4979,'Hajjah','HJ',1237,1),
+ (4980,'Ibb','IB',1237,1),
+ (4981,'Lahij','LA',1237,1),
+ (4982,'Ma\'rib','MA',1237,1),
+ (4983,'Sa\'dah','SD',1237,1),
+ (4984,'San\'a\'','SN',1237,1),
+ (4985,'Shabwah','SH',1237,1),
+ (4986,'Ta\'izz','TA',1237,1),
+ (4987,'Eastern Cape','EC',1196,1),
+ (4988,'Free State','FS',1196,1),
+ (4989,'Gauteng','GT',1196,1),
+ (4990,'Kwazulu-Natal','NL',1196,1),
+ (4991,'Mpumalanga','MP',1196,1),
+ (4992,'Northern Cape','NC',1196,1),
+ (4993,'Limpopo','NP',1196,1),
+ (4994,'Western Cape','WC',1196,1),
+ (4995,'North West','NW',1196,1),
+ (4996,'Copperbelt','08',1239,1),
+ (4997,'Luapula','04',1239,1),
+ (4998,'Lusaka','09',1239,1),
+ (4999,'North-Western','06',1239,1),
+ (5000,'Central','C',1239,1),
+ (5001,'Eastern','E',1239,1),
+ (5002,'Muchinga','M',1239,1),
+ (5003,'Northern','N',1239,1),
+ (5004,'Southern','S',1239,1),
+ (5005,'Western','W',1239,1),
+ (5006,'Bulawayo','BU',1240,1),
+ (5007,'Harare','HA',1240,1),
+ (5008,'Manicaland','MA',1240,1),
+ (5009,'Mashonaland Central','MC',1240,1),
+ (5010,'Mashonaland East','ME',1240,1),
+ (5011,'Mashonaland West','MW',1240,1),
+ (5012,'Masvingo','MV',1240,1),
+ (5013,'Matabeleland North','MN',1240,1),
+ (5014,'Matabeleland South','MS',1240,1),
+ (5015,'Midlands','MI',1240,1),
+ (5016,'South Karelia','SK',1075,1),
+ (5017,'South Ostrobothnia','SO',1075,1),
+ (5018,'Etelä-Savo','ES',1075,1),
+ (5019,'Häme','HH',1075,1),
+ (5020,'Itä-Uusimaa','IU',1075,1),
+ (5021,'Kainuu','KA',1075,1),
+ (5022,'Central Ostrobothnia','CO',1075,1),
+ (5023,'Central Finland','CF',1075,1),
+ (5024,'Kymenlaakso','KY',1075,1),
+ (5025,'Lapland','LA',1075,1),
+ (5026,'Tampere Region','TR',1075,1),
+ (5027,'Ostrobothnia','OB',1075,1),
+ (5028,'North Karelia','NK',1075,1),
+ (5029,'Northern Ostrobothnia','NO',1075,1),
+ (5030,'Northern Savo','NS',1075,1),
+ (5031,'Päijät-Häme','PH',1075,1),
+ (5032,'Satakunta','SK',1075,1),
+ (5033,'Uusimaa','UM',1075,1),
+ (5034,'South-West Finland','SW',1075,1),
+ (5035,'Ã…land','AL',1075,1),
+ (5036,'Limburg','LI',1152,1),
+ (5037,'Central and Western','CW',1098,1),
+ (5038,'Eastern','EA',1098,1),
+ (5039,'Southern','SO',1098,1),
+ (5040,'Wan Chai','WC',1098,1),
+ (5041,'Kowloon City','KC',1098,1),
+ (5042,'Kwun Tong','KU',1098,1),
+ (5043,'Sham Shui Po','SS',1098,1),
+ (5044,'Wong Tai Sin','WT',1098,1),
+ (5045,'Yau Tsim Mong','YT',1098,1),
+ (5046,'Islands','IS',1098,1),
+ (5047,'Kwai Tsing','KI',1098,1),
+ (5048,'North','NO',1098,1),
+ (5049,'Sai Kung','SK',1098,1),
+ (5050,'Sha Tin','ST',1098,1),
+ (5051,'Tai Po','TP',1098,1),
+ (5052,'Tsuen Wan','TW',1098,1),
+ (5053,'Tuen Mun','TM',1098,1),
+ (5054,'Yuen Long','YL',1098,1),
+ (5055,'Manchester','MR',1108,1),
+ (5056,'Al Manāmah (Al ‘Āşimah)','13',1016,1),
+ (5057,'Al Janūbīyah','14',1016,1),
+ (5058,'Al Wusţá','16',1016,1),
+ (5059,'Ash Shamālīyah','17',1016,1);
 /*!40000 ALTER TABLE `civicrm_state_province` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12135,90 +12141,90 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_subscription_history` WRITE;
 /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */;
 INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES
- (1,31,2,'2023-06-17 06:42:04','Admin','Added',NULL),
- (2,25,2,'2023-07-29 17:06:05','Email','Added',NULL),
- (3,35,2,'2023-10-10 10:20:46','Email','Added',NULL),
- (4,142,2,'2023-05-12 17:24:35','Email','Added',NULL),
- (5,5,2,'2023-08-15 17:12:02','Email','Added',NULL),
- (6,54,2,'2023-04-21 05:22:06','Email','Added',NULL),
- (7,4,2,'2022-11-15 04:45:11','Email','Added',NULL),
- (8,82,2,'2023-04-27 11:52:00','Admin','Added',NULL),
- (9,9,2,'2023-02-07 22:19:44','Email','Added',NULL),
- (10,143,2,'2023-10-15 15:04:37','Email','Added',NULL),
- (11,123,2,'2022-12-13 18:45:27','Email','Added',NULL),
- (12,78,2,'2023-10-11 10:52:30','Admin','Added',NULL),
- (13,70,2,'2023-09-05 08:07:37','Admin','Added',NULL),
- (14,173,2,'2023-01-03 19:01:41','Email','Added',NULL),
- (15,83,2,'2023-09-22 10:32:39','Email','Added',NULL),
- (16,72,2,'2023-08-16 17:46:34','Admin','Added',NULL),
- (17,186,2,'2023-07-10 09:04:31','Admin','Added',NULL),
- (18,127,2,'2023-08-03 16:56:41','Email','Added',NULL),
- (19,101,2,'2022-11-22 16:12:44','Admin','Added',NULL),
- (20,30,2,'2023-04-14 11:28:27','Email','Added',NULL),
- (21,89,2,'2023-05-01 10:11:01','Email','Added',NULL),
- (22,187,2,'2022-10-24 23:34:49','Email','Added',NULL),
- (23,194,2,'2023-01-14 21:44:34','Email','Added',NULL),
- (24,136,2,'2023-10-06 04:42:02','Email','Added',NULL),
- (25,115,2,'2023-05-29 09:42:23','Email','Added',NULL),
- (26,129,2,'2022-12-15 17:58:49','Email','Added',NULL),
- (27,168,2,'2023-06-01 16:19:03','Email','Added',NULL),
- (28,157,2,'2022-12-04 05:28:34','Email','Added',NULL),
- (29,172,2,'2023-01-29 07:28:48','Email','Added',NULL),
- (30,117,2,'2023-01-18 06:12:33','Admin','Added',NULL),
- (31,197,2,'2023-03-09 01:17:18','Email','Added',NULL),
- (32,98,2,'2023-02-15 00:17:23','Email','Added',NULL),
- (33,185,2,'2023-05-01 02:10:24','Admin','Added',NULL),
- (34,132,2,'2023-03-03 17:21:03','Email','Added',NULL),
- (35,94,2,'2023-05-25 12:14:49','Email','Added',NULL),
- (36,11,2,'2023-06-07 12:12:02','Email','Added',NULL),
- (37,178,2,'2023-08-19 05:20:04','Admin','Added',NULL),
- (38,144,2,'2023-05-24 13:01:58','Email','Added',NULL),
- (39,201,2,'2023-07-02 04:57:33','Admin','Added',NULL),
- (40,87,2,'2023-03-03 03:27:18','Admin','Added',NULL),
- (41,128,2,'2023-08-22 03:14:14','Email','Added',NULL),
- (42,8,2,'2023-08-22 14:29:05','Email','Added',NULL),
- (43,33,2,'2023-08-15 06:22:34','Admin','Added',NULL),
- (44,42,2,'2022-12-12 14:44:03','Email','Added',NULL),
- (45,80,2,'2023-08-12 15:59:31','Email','Added',NULL),
- (46,153,2,'2023-02-17 13:31:32','Admin','Added',NULL),
- (47,120,2,'2023-01-25 22:23:30','Admin','Added',NULL),
- (48,169,2,'2023-10-11 23:30:19','Email','Added',NULL),
- (49,130,2,'2023-02-24 19:28:54','Admin','Added',NULL),
- (50,28,2,'2023-08-29 17:25:45','Admin','Added',NULL),
- (51,93,2,'2023-06-01 23:00:05','Email','Added',NULL),
- (52,17,2,'2023-03-05 09:50:24','Admin','Added',NULL),
- (53,38,2,'2023-03-09 00:19:48','Email','Added',NULL),
- (54,174,2,'2023-08-20 04:36:59','Admin','Added',NULL),
- (55,81,2,'2023-06-08 11:19:53','Admin','Added',NULL),
- (56,113,2,'2023-07-04 18:46:49','Email','Added',NULL),
- (57,71,2,'2022-12-30 21:23:31','Admin','Added',NULL),
- (58,56,2,'2023-01-19 09:16:37','Email','Added',NULL),
- (59,171,2,'2023-01-20 19:56:48','Admin','Added',NULL),
- (60,97,2,'2023-08-05 00:57:20','Admin','Added',NULL),
- (61,29,3,'2023-02-12 19:03:55','Email','Added',NULL),
- (62,138,3,'2023-07-27 12:54:22','Admin','Added',NULL),
- (63,145,3,'2023-03-03 07:51:51','Admin','Added',NULL),
- (64,166,3,'2023-07-16 17:54:55','Email','Added',NULL),
- (65,107,3,'2022-10-20 20:33:11','Admin','Added',NULL),
- (66,105,3,'2022-10-29 13:51:38','Admin','Added',NULL),
- (67,167,3,'2023-04-28 14:06:13','Email','Added',NULL),
- (68,192,3,'2023-10-16 07:50:41','Email','Added',NULL),
- (69,37,3,'2023-06-29 19:06:47','Admin','Added',NULL),
- (70,27,3,'2023-09-30 14:03:02','Admin','Added',NULL),
- (71,40,3,'2023-06-18 18:53:12','Admin','Added',NULL),
- (72,165,3,'2022-12-20 17:01:53','Admin','Added',NULL),
- (73,184,3,'2023-08-23 17:10:56','Admin','Added',NULL),
- (74,158,3,'2023-06-12 00:08:33','Email','Added',NULL),
- (75,102,3,'2022-10-28 05:16:22','Admin','Added',NULL),
- (76,31,4,'2022-11-12 19:16:25','Admin','Added',NULL),
- (77,82,4,'2023-03-30 02:39:23','Admin','Added',NULL),
- (78,83,4,'2023-04-28 09:57:10','Email','Added',NULL),
- (79,187,4,'2022-12-28 18:09:01','Email','Added',NULL),
- (80,172,4,'2023-06-03 10:17:38','Email','Added',NULL),
- (81,11,4,'2023-07-02 11:27:36','Admin','Added',NULL),
- (82,33,4,'2022-10-24 06:16:09','Email','Added',NULL),
- (83,28,4,'2023-04-21 11:40:19','Admin','Added',NULL),
- (84,202,4,'2023-08-23 03:21:20','Email','Added',NULL);
+ (1,72,2,'2023-07-01 09:51:52','Email','Added',NULL),
+ (2,19,2,'2023-09-19 13:01:10','Email','Added',NULL),
+ (3,153,2,'2023-02-26 17:20:03','Admin','Added',NULL),
+ (4,190,2,'2023-05-07 17:34:18','Admin','Added',NULL),
+ (5,16,2,'2023-03-08 04:58:42','Email','Added',NULL),
+ (6,65,2,'2023-04-07 11:38:15','Email','Added',NULL),
+ (7,70,2,'2023-04-09 05:05:14','Admin','Added',NULL),
+ (8,120,2,'2023-03-18 07:12:04','Email','Added',NULL),
+ (9,85,2,'2023-05-25 22:34:04','Email','Added',NULL),
+ (10,198,2,'2023-07-08 22:41:21','Email','Added',NULL),
+ (11,110,2,'2023-02-13 10:05:30','Admin','Added',NULL),
+ (12,45,2,'2022-12-22 04:03:21','Admin','Added',NULL),
+ (13,37,2,'2023-11-03 19:52:50','Email','Added',NULL),
+ (14,82,2,'2023-10-19 05:13:51','Admin','Added',NULL),
+ (15,12,2,'2023-07-24 03:52:54','Email','Added',NULL),
+ (16,102,2,'2023-10-18 02:31:17','Admin','Added',NULL),
+ (17,192,2,'2023-09-08 09:46:13','Admin','Added',NULL),
+ (18,10,2,'2023-11-11 03:37:17','Email','Added',NULL),
+ (19,23,2,'2023-03-18 13:06:24','Email','Added',NULL),
+ (20,94,2,'2023-03-16 10:24:39','Email','Added',NULL),
+ (21,108,2,'2023-06-02 08:54:56','Admin','Added',NULL),
+ (22,38,2,'2023-05-11 14:46:50','Email','Added',NULL),
+ (23,154,2,'2023-10-15 05:11:47','Admin','Added',NULL),
+ (24,41,2,'2023-01-12 14:13:45','Email','Added',NULL),
+ (25,86,2,'2023-11-27 04:58:14','Admin','Added',NULL),
+ (26,95,2,'2023-01-14 19:59:35','Admin','Added',NULL),
+ (27,182,2,'2023-02-25 07:28:41','Email','Added',NULL),
+ (28,176,2,'2023-03-16 04:41:10','Admin','Added',NULL),
+ (29,74,2,'2023-10-04 22:11:58','Admin','Added',NULL),
+ (30,161,2,'2023-01-30 11:54:22','Admin','Added',NULL),
+ (31,191,2,'2023-04-07 09:31:36','Email','Added',NULL),
+ (32,112,2,'2023-09-30 23:41:27','Email','Added',NULL),
+ (33,117,2,'2022-12-29 07:56:03','Email','Added',NULL),
+ (34,101,2,'2023-11-18 06:36:17','Admin','Added',NULL),
+ (35,57,2,'2023-04-07 22:26:58','Admin','Added',NULL),
+ (36,124,2,'2023-12-04 19:32:31','Admin','Added',NULL),
+ (37,79,2,'2023-01-05 08:35:46','Admin','Added',NULL),
+ (38,126,2,'2023-02-05 06:50:37','Email','Added',NULL),
+ (39,113,2,'2023-07-08 15:33:16','Admin','Added',NULL),
+ (40,76,2,'2023-06-15 19:29:34','Admin','Added',NULL),
+ (41,116,2,'2023-01-04 06:48:47','Email','Added',NULL),
+ (42,67,2,'2022-12-21 11:33:13','Email','Added',NULL),
+ (43,149,2,'2023-11-26 04:49:45','Admin','Added',NULL),
+ (44,160,2,'2023-06-23 14:27:47','Email','Added',NULL),
+ (45,189,2,'2023-12-12 11:47:18','Admin','Added',NULL),
+ (46,135,2,'2023-06-26 23:52:19','Admin','Added',NULL),
+ (47,114,2,'2023-08-23 23:43:02','Admin','Added',NULL),
+ (48,77,2,'2023-01-07 20:08:01','Admin','Added',NULL),
+ (49,178,2,'2023-03-01 18:01:33','Email','Added',NULL),
+ (50,147,2,'2023-03-15 07:14:57','Email','Added',NULL),
+ (51,131,2,'2023-05-19 09:40:46','Admin','Added',NULL),
+ (52,43,2,'2023-12-04 02:20:41','Email','Added',NULL),
+ (53,88,2,'2023-02-02 21:56:22','Email','Added',NULL),
+ (54,200,2,'2023-07-01 12:06:34','Admin','Added',NULL),
+ (55,21,2,'2023-04-01 22:29:17','Email','Added',NULL),
+ (56,48,2,'2023-06-17 12:34:59','Email','Added',NULL),
+ (57,179,2,'2023-06-24 10:25:19','Admin','Added',NULL),
+ (58,99,2,'2023-05-16 02:51:45','Admin','Added',NULL),
+ (59,107,2,'2023-01-03 10:18:48','Email','Added',NULL),
+ (60,105,2,'2023-07-29 01:11:39','Email','Added',NULL),
+ (61,136,3,'2023-07-11 12:49:16','Admin','Added',NULL),
+ (62,164,3,'2023-02-11 03:17:48','Admin','Added',NULL),
+ (63,142,3,'2023-12-07 16:59:16','Admin','Added',NULL),
+ (64,175,3,'2023-12-01 15:39:54','Admin','Added',NULL),
+ (65,158,3,'2023-01-28 13:52:16','Email','Added',NULL),
+ (66,148,3,'2022-12-31 07:50:04','Admin','Added',NULL),
+ (67,137,3,'2023-09-28 12:29:41','Admin','Added',NULL),
+ (68,146,3,'2023-03-21 05:01:03','Admin','Added',NULL),
+ (69,30,3,'2023-02-07 15:55:13','Email','Added',NULL),
+ (70,122,3,'2023-07-13 16:03:39','Admin','Added',NULL),
+ (71,159,3,'2023-02-01 21:35:58','Admin','Added',NULL),
+ (72,100,3,'2023-02-24 11:46:48','Admin','Added',NULL),
+ (73,40,3,'2023-11-04 12:08:51','Email','Added',NULL),
+ (74,44,3,'2023-09-10 04:15:35','Email','Added',NULL),
+ (75,188,3,'2023-10-02 04:12:41','Admin','Added',NULL),
+ (76,72,4,'2023-03-01 00:27:09','Email','Added',NULL),
+ (77,120,4,'2023-06-06 10:09:06','Email','Added',NULL),
+ (78,12,4,'2023-05-25 12:06:54','Admin','Added',NULL),
+ (79,38,4,'2023-05-28 07:41:27','Email','Added',NULL),
+ (80,74,4,'2023-01-30 22:57:19','Admin','Added',NULL),
+ (81,124,4,'2023-07-19 09:00:52','Admin','Added',NULL),
+ (82,149,4,'2023-04-13 17:51:47','Email','Added',NULL),
+ (83,147,4,'2023-02-16 12:07:51','Admin','Added',NULL),
+ (84,202,4,'2023-03-18 03:24:10','Admin','Added',NULL);
 /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12247,11 +12253,11 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_tag` WRITE;
 /*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */;
 INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES
- (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-10-19 14:22:28'),
- (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-10-19 14:22:28'),
- (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-10-19 14:22:28'),
- (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-10-19 14:22:28'),
- (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-10-19 14:22:28');
+ (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-12-17 20:11:28'),
+ (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-12-17 20:11:28'),
+ (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-12-17 20:11:28'),
+ (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-12-17 20:11:28'),
+ (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-12-17 20:11:28');
 /*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12444,19 +12450,24 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_website` WRITE;
 /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */;
 INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES
- (1,103,'http://oregondevelopment.org',1),
- (2,135,'http://sacramentopartners.org',1),
- (3,77,'http://globalwellnesscenter.org',1),
- (4,22,'http://bostonacademy.org',1),
- (5,68,'http://unitedagriculture.org',1),
- (6,133,'http://progressivepartnership.org',1),
- (7,19,'http://creativesolutions.org',1),
- (8,161,'http://progressivenetwork.org',1),
- (9,69,'http://globalsportscenter.org',1),
- (10,95,'http://ruralagriculturetrust.org',1),
- (11,139,'http://ruralinitiative.org',1),
- (12,7,'http://hanovereducation.org',1),
- (13,148,'http://localtrust.org',1);
+ (1,47,'http://tiptondevelopment.org',1),
+ (2,118,'http://ruraldevelopment.org',1),
+ (3,18,'http://creativefellowship.org',1),
+ (4,115,'http://creativepeace.org',1),
+ (5,9,'http://unitedcenter.org',1),
+ (6,46,'http://nyeducationcollective.org',1),
+ (7,197,'http://pinefoodpartners.org',1),
+ (8,15,'http://gcfamilyassociation.org',1),
+ (9,121,'http://urbanfamilycenter.org',1),
+ (10,35,'http://floridafellowship.org',1),
+ (11,78,'http://sierrapeacefellowship.org',1),
+ (12,26,'http://unitedfamily.org',1),
+ (13,64,'http://collegemusic.org',1),
+ (14,162,'http://harveyagriculturefellowship.org',1),
+ (15,201,'http://lincolnpoetry.org',1),
+ (16,123,'http://statespartnership.org',1),
+ (17,51,'http://minneapolissystems.org',1),
+ (18,17,'http://ecactionservices.org',1);
 /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12494,7 +12505,7 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2023-10-19 14:22:31
+-- Dump completed on 2023-12-17 20:11:40
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
diff --git a/civicrm/sql/civicrm_sample.mysql b/civicrm/sql/civicrm_sample.mysql
index fb8c3db14b..98ed282985 100644
--- a/civicrm/sql/civicrm_sample.mysql
+++ b/civicrm/sql/civicrm_sample.mysql
@@ -21,7 +21,7 @@ SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_suppor
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
-( @priceSetId, 'other_amount', 'Other Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
+( @priceSetId, 'other_amount', 'Additional Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
 
 INSERT INTO `civicrm_price_set_entity` (`entity_table`,`entity_id`,`price_set_id`)
          VALUES ('civicrm_contribution_page', 1, @priceSetId);
@@ -75,8 +75,7 @@ VALUES
 
 INSERT INTO civicrm_pledge_block ( entity_table, entity_id, pledge_frequency_unit, is_pledge_interval, max_reminders, initial_reminder_day, additional_reminder_day)
 VALUES
-    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5),
-    ('civicrm_contribution_page', 1, 'weekmonthyear', 0, 2, 5, 5);
+    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5);
 
 INSERT INTO civicrm_premiums
     VALUES (1, 'civicrm_contribution_page', 1, 1, 'Thank-you Gifts', 'We appreciate your support and invite you to choose from the exciting collection of thank-you gifts below. Minimum contribution amounts for each selection are included in the descriptions. (NOTE: These gifts are shown as examples only. No gifts will be sent to donors.)', 'premiums@example.org', NULL, 1, 'No thank-you', 1);
diff --git a/civicrm/templates/CRM/Activity/Form/Activity.tpl b/civicrm/templates/CRM/Activity/Form/Activity.tpl
index bde0f91cb4..adbc8da900 100644
--- a/civicrm/templates/CRM/Activity/Form/Activity.tpl
+++ b/civicrm/templates/CRM/Activity/Form/Activity.tpl
@@ -12,7 +12,7 @@
     <div class="crm-block crm-content-block crm-activity-view-block">
   {else}
     {if $activityTypeDescription}
-      <div class="help">{$activityTypeDescription}</div>
+      <div class="help">{$activityTypeDescription|purify}</div>
     {/if}
     <div class="crm-block crm-form-block crm-activity-form-block">
   {/if}
@@ -29,7 +29,7 @@
 
   {if $action eq 4}
     {if $activityTypeDescription}
-    <div class="help">{$activityTypeDescription}</div>
+    <div class="help">{$activityTypeDescription|purify}</div>
     {/if}
   {else}
     {if $context eq 'standalone' or $context eq 'search' or $context eq 'smog'}
diff --git a/civicrm/templates/CRM/Activity/Form/ActivityView.tpl b/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
index fa736453b2..9af13c0960 100644
--- a/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
+++ b/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
@@ -9,7 +9,7 @@
 *}
 <div class="crm-block crm-content-block crm-activity-view-block">
       {if $activityTypeDescription}
-        <div class="help">{$activityTypeDescription}</div>
+        <div class="help">{$activityTypeDescription|purify}</div>
       {/if}
       <table class="crm-info-panel">
         <tr>
diff --git a/civicrm/templates/CRM/Activity/Form/Search.tpl b/civicrm/templates/CRM/Activity/Form/Search.tpl
index 97d6869538..2918a83a97 100644
--- a/civicrm/templates/CRM/Activity/Form/Search.tpl
+++ b/civicrm/templates/CRM/Activity/Form/Search.tpl
@@ -9,10 +9,10 @@
 *}
 {* Search form and results for Activities *}
 <div class="crm-form-block crm-search-form-block">
-  <div class="crm-accordion-wrapper crm-advanced_search_form-accordion {if $rows}collapsed{/if}">
-    <div class="crm-accordion-header crm-master-accordion-header">
+  <details class="crm-accordion-wrapper crm-advanced_search_form-accordion" {if !$rows}open=""{/if}">
+    <summary class="crm-accordion-header crm-master-accordion-header">
       {ts}Edit Search Criteria{/ts}
-    </div>
+    </summary>
     <!-- /.crm-accordion-header -->
     <div class="crm-accordion-body">
       <div id="searchForm" class="form-item">
@@ -41,7 +41,7 @@
         {/strip}
       </div>
     </div>
-  </div>
+  </details>
 </div>
 
 {if $rowsEmpty || $rows}
diff --git a/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl b/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
index 4d5a3da18f..20ed5234f4 100644
--- a/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
+++ b/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
@@ -11,7 +11,7 @@
   {include file="CRM/Form/basicFormFields.tpl"}
 
   <table class="form-layout" id="invoicing_blocks">
-    {foreach from=$htmlFields item=fieldSpec key=htmlField}
+    {foreach from=$invoiceDependentFields item=fieldSpec key=htmlField}
       {if $form.$htmlField}
         {assign var=n value=$htmlField|cat:'_description'}
         <tr class="crm-preferences-form-block-{$htmlField}">
diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
index 186770fb4d..0d2f4e835e 100644
--- a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
+++ b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
@@ -123,7 +123,7 @@
           <tr class="crm-localization-form-block-makeSinglelingual">
               <td class="label">{$form.makeSinglelingual.label}</td>
               <td>{$form.makeSinglelingual.html}<br />
-              <span class="description">{ts}Check this box and click 'Save' to switch this installation from multi- to single-language.{/ts}</span><br /><br />
+              <span class="description">{ts}Check this box and click 'Save' to switch this installation from multi-language to single-language.{/ts}</span><br /><br />
               <span class="description font-red">{$warning}</span></td>
           </tr>
         {elseif $form.makeMultilingual}
diff --git a/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl b/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
index 25d57dd7c9..0460eb9f7a 100644
--- a/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
+++ b/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
@@ -38,7 +38,7 @@
   {if $duplicate}
     <p>{ts}Thank you for your support.{/ts}</p>
     {if $is_share}
-      {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle}
+      {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle emailMode=false}
     {/if}
   {else}
     <div class="crm-section crm-petition-contact-profile">
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
index b9c4b848d3..9a882966b1 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
@@ -25,6 +25,6 @@
   {/if}
   </div>
   {if $is_share}
-    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl"}
+    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" emailMode=false}
   {/if}
 {/if}
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
index 2a21106185..bf76991cb2 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
@@ -4,4 +4,4 @@ You might have a specific page that displays more information that the form.
 Check SocialNetwork.drupal as an example
 *}
 {capture assign=petitionURL}{crmURL p='civicrm/petition/sign' q="sid=`$petition_id`" a=1 fe=1 h=1}{/capture}
-{include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=$petitionTitle pageURL=$petitionURL}
+{include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=$petitionTitle pageURL=$petitionURL emailMode=false}
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
index 17765567fb..c951be7340 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
@@ -38,7 +38,7 @@
     </div>
   {/if}
   {if $is_share}
-    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle}
+    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle emailMode=false}
   {/if}
 {/if}
 
diff --git a/civicrm/templates/CRM/Case/Form/Activity.tpl b/civicrm/templates/CRM/Case/Form/Activity.tpl
index ec74f69622..aa14680e2b 100644
--- a/civicrm/templates/CRM/Case/Form/Activity.tpl
+++ b/civicrm/templates/CRM/Case/Form/Activity.tpl
@@ -23,7 +23,7 @@
   <table class="form-layout">
     {if $activityTypeDescription}
       <tr>
-        <div class="help">{$activityTypeDescription}</div>
+        <div class="help">{$activityTypeDescription|purify}</div>
       </tr>
     {/if}
     {* Block for change status, case type and start date. *}
diff --git a/civicrm/templates/CRM/Case/Form/Case.tpl b/civicrm/templates/CRM/Case/Form/Case.tpl
index 92ab07e2fa..bb34a8ec51 100644
--- a/civicrm/templates/CRM/Case/Form/Case.tpl
+++ b/civicrm/templates/CRM/Case/Form/Case.tpl
@@ -27,7 +27,7 @@
 <table class="form-layout">
     {if $activityTypeDescription}
         <tr>
-            <div class="help">{$activityTypeDescription}</div>
+            <div class="help">{$activityTypeDescription|purify}</div>
         </tr>
     {/if}
 {if $clientName}
diff --git a/civicrm/templates/CRM/Case/Form/CaseView.js b/civicrm/templates/CRM/Case/Form/CaseView.js
index 192a52b867..10e9323493 100644
--- a/civicrm/templates/CRM/Case/Form/CaseView.js
+++ b/civicrm/templates/CRM/Case/Form/CaseView.js
@@ -97,6 +97,8 @@
     },
     '#editCaseRoleDialog': {
       pre: function(data) {
+        // Clear stale value since this form can be reused multiple times
+        $('[name=edit_role_contact_id]', this).val('');
         prepareRelationshipField(data.rel_type, $('[name=edit_role_contact_id]', this));
       },
       post: function(data) {
@@ -175,6 +177,12 @@
     });
   }
 
+  function showHideInactiveRoles() {
+    let showInactive = $('#role_inactive').prop('checked');
+    $('[id^=caseRoles-selector] tbody tr').not('.disabled').toggle(!showInactive);
+    $('[id^=caseRoles-selector] tbody tr.disabled').toggle(showInactive);
+  }
+
   $('#crm-container').on('crmLoad', '#crm-main-content-wrapper', detachMiniForms);
 
   $(document).ready(function() {
@@ -222,6 +230,9 @@
           $('#case_id_' + id).dataTable().api().draw();
         });
       })
+      // Toggle to show/hide inactive case roles
+      .on('crmLoad', 'table#caseRoles-selector-' + caseId(), showHideInactiveRoles)
+      .on('change', '#role_inactive', showHideInactiveRoles)
       .on('click', 'a.case-miniform', function(e) {
         var dialog,
           $el = $(this),
diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl
index dc6b80ea40..95677b07ec 100644
--- a/civicrm/templates/CRM/Case/Form/CaseView.tpl
+++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl
@@ -147,30 +147,14 @@
       {/if}
 
       <div id="editCaseRoleDialog" class="hiddenElement">
-        <div><label for="edit_role_contact_id">{ts}Change To{/ts}:</label></div>
+        <div><label for="edit_role_contact_id">{ts}Change To{/ts} <span class="crm-marker">*</span></label></div>
         <div><input name="edit_role_contact_id" placeholder="{ts}- select contact -{/ts}" class="huge" /></div>
       </div>
       <div id="caseRoles-selector-show-active">
         {* Add checkbox to show inactive roles. For open cases, default value is unchecked, i.e. show active roles. For closed cases default is checked. *}
         <label><input type="checkbox" id="role_inactive" name="role_inactive[]"{if $caseDetails.status_class neq 'Opened'} checked="checked"{/if}>{ts}Show Inactive relationships{/ts}</label>
       </div>
-      {literal}
-        <script type="text/javascript">
-            (function($) {
-                // hide the inactive role when checkbox is checked
-                $('input[type=checkbox][id=role_inactive]').change(function() {
-                  if (this.checked == true) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').hide();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').show();
-                  } else if (this.checked == false) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').show();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').hide();
-                  }
-                });
-            })(CRM.$);
-        </script>
-      {/literal}
-      <table id="caseRoles-selector-{$caseID}"  class="report-layout crm-ajax-table" data-page-length="10">
+      <table id="caseRoles-selector-{$caseID}" class="report-layout crm-ajax-table" data-page-length="10">
         <thead>
           <tr>
             <th data-data="relation">{ts}Case Role{/ts}</th>
@@ -188,19 +172,9 @@
         <script type="text/javascript">
           (function($) {
             var caseId = {/literal}{$caseID}{literal};
-            CRM.$('table#caseRoles-selector-' + caseId).data({
+            $('table#caseRoles-selector-' + caseId).data({
               "ajax": {
                 "url": {/literal}'{crmURL p="civicrm/ajax/caseroles" h=0 q="snippet=4&caseID=$caseId&cid=$contactID&userID=$userID"}'{literal},
-                "complete" : function(){
-                  if (CRM.$('input[type=checkbox][id=role_inactive]').prop('checked')) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').hide();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').show();
-                  }
-                  else {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').show();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').hide();
-                  }
-                }
               }
             });
           })(CRM.$);
diff --git a/civicrm/templates/CRM/Contact/Form/Merge.tpl b/civicrm/templates/CRM/Contact/Form/Merge.tpl
index 7728817431..ef79bdc7eb 100644
--- a/civicrm/templates/CRM/Contact/Form/Merge.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Merge.tpl
@@ -90,10 +90,8 @@
             {$row.title|escape}
           </td>
         {/if}
-
-          {assign var=position  value=$field|strrpos:'_'}
-          {assign var=blockId   value=$field|substr:$position+1}
-          {assign var=blockName value=$field|substr:14:$position-14}
+          {assign var=blockId  value=$row.location_block_index}
+          {assign var=blockName value=$row.location_entity}
 
           <td>
             {* @TODO check if this is ever an array or a fileName? *}
diff --git a/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl b/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
index 81f7cce276..6ebbe18c48 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
@@ -13,8 +13,8 @@
 
   {include file="CRM/Contact/Form/Search/Intro.tpl"}
 
-  <div class="crm-accordion-wrapper crm-advanced_search_form-accordion {if !empty($ssID) or $rows}collapsed{/if}">
-    <div class="crm-accordion-header crm-master-accordion-header">
+  <details class="crm-advanced_search_form-accordion" {if !$rows}open{/if} >
+    <summary class="crm-master-accordion-header">
       {if !empty($savedSearch)}
         {ts 1=$savedSearch.name}Edit %1 Smart Group Criteria{/ts}
       {elseif !empty($ssID) or $rows}
@@ -23,11 +23,11 @@
         {ts}Search Criteria{/ts}
       {/if}
       {help id='id-advanced-intro'}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/AdvancedCriteria.tpl"}
     </div>
-  </div>
+  </details>
 </div>
 
 {if $rowsEmpty}
diff --git a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
index b213089691..715eeee7f1 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
@@ -24,7 +24,6 @@ CRM.$(function($) {
     var header = $(this).parent();
     header.next().html('');
     header.removeClass('active');
-    header.parent('.crm-ajax-accordion:not(.collapsed)').crmAccordionToggle();
     // Reset results-display mode if it depends on this pane
     var mode = modes[$('#component_mode').val()] || null;
     if (mode && header.attr('id') == mode) {
@@ -72,6 +71,8 @@ CRM.$(function($) {
       CRM.loadPage(url, {target: body, block: false});
     }
   }
+  // Keeps the detail/accordion of 'active' fieldsets open after a search
+  $('summary.active').parent('details').attr('open', '');
 });
 </script>
 {/literal}
@@ -86,37 +87,37 @@ CRM.$(function($) {
 {/if}
 
 {strip}
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Display Settings For Results{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/DisplaySettings.tpl"}
     </div>
-  </div>
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  </details>
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Search Settings{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/SearchSettings.tpl"}
     </div>
-  </div>
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  </details>
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Basic Criteria{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/Basic.tpl"}
     </div>
-  </div>
+  </details>
   {foreach from=$allPanes key=paneName item=paneValue}
-    <div class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || array_key_exists($paneName, $openedPanes)} {else}collapsed{/if}">
-      <div class="crm-accordion-header" id="{$paneValue.id}">
+    <details class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || array_key_exists($paneName, $openedPanes)} {else}collapsed{/if}">
+      <summary class="crm-accordion-header" id="{$paneValue.id}">
         {$paneName}
-      </div>
+      </summary>
     <div class="crm-accordion-body {$paneValue.id}"></div>
-    </div><!-- Surplus /div is required (not sure why but breakage is obvious when you remove it) -->
+    </details>
   {/foreach}
   <div class="spacer"></div>
 
diff --git a/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl b/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
index f880e49960..2739f00eec 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
@@ -8,7 +8,11 @@
  +--------------------------------------------------------------------+
 *}
 {* Search Builder *}
-
+<div class="messages status no-popup">
+  {icon icon="fa-info-circle"}{/icon}
+  {capture assign='skUrl'}{crmURL p='civicrm/admin/search'}{/capture}
+  {ts 1="href='$skUrl'"}Search Builder is a legacy part of CiviCRM. It is recommended to <a %1>use SearchKit instead</a>.{/ts}
+</div>
 <div class="crm-form-block crm-search-form-block">
   <div class="crm-accordion-wrapper crm-search_builder-accordion {if $rows and !$showSearchForm}collapsed{/if}">
     <div class="crm-accordion-header crm-master-accordion-header">
diff --git a/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl b/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
index f0d6368f62..0fa34e259e 100644
--- a/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
+++ b/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
@@ -118,7 +118,7 @@
     {if $groupAdditions}
     <tr><td class="label crm-grid-cell">{ts}Import to Groups{/ts}</td>
         <td colspan="2" class="explanation">
-            {foreach from="$groupAdditions" item="group"}
+            {foreach from=$groupAdditions item="group"}
                 <label><a href="{$group.url}">{$group.name}</a></label>:
                 {if $group.new}
                     {ts count=$group.added plural='%count contacts added to this new group.'}One contact added to this new group.{/ts}
@@ -134,7 +134,7 @@
     {if $tagAdditions}
     <tr><td class="label crm-grid-cell">{ts}Tagged Imported Contacts{/ts}</td>
         <td colspan="2" class="explanation">
-            {foreach from="$tagAdditions" item="tag"}
+            {foreach from=$tagAdditions item="tag"}
                 <label>{$tag.name}</label>:
                 {ts count=$tag.added plural='%count contacts are tagged with this tag.'}One contact is tagged with this tag.{/ts}
                 {if $tag.notAdded}{ts count=$tag.notAdded plural='%count contacts NOT tagged (already tagged to this tag).'}One contact NOT tagged (already tagged to this tag).{/ts}{/if}<br />
diff --git a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
index b895d1cdd5..e3b1752516 100644
--- a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
+++ b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
@@ -14,17 +14,17 @@
   {assign var="count" value=$customGroupCount%2}
   {if ($count eq $side) or $skipTitle}
     {foreach from=$customValues item=cd_edit key=cvID}
-      <div class="customFieldGroup crm-collapsible{if !empty($cd_edit.collapse_display)} collapsed{/if} ui-corner-all {$cd_edit.name} crm-custom-set-block-{$customGroupId}">
-        <div class="collapsible-title">
+      <details class="customFieldGroup crm-accordion-wrapper ui-corner-all {$cd_edit.name} crm-custom-set-block-{$customGroupId}" {if !empty($cd_edit.collapse_display)} open{/if}>
+        <summary class="crm-accordion-header crm-master-accordion-header">
           {$cd_edit.title}
-        </div>
+        </summary>
         {if $cvID eq 0}
           {assign var='cvID' value='-1'}
         {/if}
         <div class="crm-summary-block" id="custom-set-block-{$customGroupId}-{$cvID}">
           {include file="CRM/Contact/Page/View/CustomDataFieldView.tpl" customGroupId=$customGroupId customRecId=$cvID cgcount=$cgcount}
         </div>
-      </div>
+      </details>
       {assign var="cgcount" value=$cgcount+1}
     {/foreach}
   {/if}
diff --git a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
index 6c01148419..52d54ec903 100644
--- a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
@@ -107,9 +107,6 @@
 
     {literal}
     <script type="text/javascript">
-
-    var url = {/literal}{$dataUrl|@json_encode}{literal};
-
       CRM.$(function($) {
         showHideByValue( 'is_email_receipt', '', 'notice', 'table-row', 'radio', false );
         showHideByValue( 'is_email_receipt', '', 'fromEmail', 'table-row', 'radio', false );
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
index 0e6c1cabc3..88c66e1925 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
@@ -358,8 +358,6 @@
           }
         }
 
-        var url = {/literal}{$dataUrl|@json_encode}{literal};
-
         {/literal}
         {if $context eq 'standalone' and $outBound_option != 2}
         {literal}
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
index 5d8492e35d..1e8442f936 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
@@ -33,22 +33,22 @@
       </div>
 
       <div class="display-block">
-        {if $lineItem and $isDisplayLineItems}
+        {if $isDisplayLineItems && $lineItem}
           {if !$amount}{assign var="amount" value=0}{/if}
           {assign var="totalAmount" value=$amount}
-          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"}
+          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution" getTaxDetails=$totalTaxAmount displayLineItemFinancialType=false pricesetFieldsCount=false currencySymbol='' hookDiscount=''}
         {elseif $is_separate_payment}
           {if $amount AND $minimum_fee}
             {$membership_name} {ts}Membership{/ts}:
-            <strong>{$minimum_fee|crmMoney}</strong>
+            <strong>{$membershipTotalAmount|crmMoney}</strong>
             <br/>
             {ts}Additional Contribution{/ts}:
-            <strong>{$amount|crmMoney}</strong>
+            <strong>{$nonMembershipTotalAmount|crmMoney}</strong>
             <br/>
             <strong> -------------------------------------------</strong>
             <br/>
             {ts}Total{/ts}:
-            <strong>{$amount+$minimum_fee|crmMoney}</strong>
+            <strong>{$orderTotal|crmMoney}</strong>
             <br/>
           {elseif $amount}
             {ts}Amount{/ts}:
@@ -231,14 +231,14 @@
 
   {* Show credit or debit card section for 'direct' mode, except for PayPal Express (detected because credit card number is empty) *}
     {crmRegion name="contribution-confirm-billing-block"}
-    {if in_array('credit_card_number', $form) || in_array('bank_account_number', $form)}
+    {if in_array('credit_card_number', $paymentFields) || in_array('bank_account_number', $paymentFields)}
       <div class="crm-group credit_card-group">
         {if $paymentFieldsetLabel}
           <div class="header-dark">
             {$paymentFieldsetLabel}
           </div>
         {/if}
-        {if in_array('bank_account_number', $form) && $bank_account_number}
+        {if in_array('bank_account_number', $paymentFields) && $bank_account_number}
           <div class="display-block">
             {ts}Account Holder{/ts}: {$account_holder}<br/>
             {ts}Bank Account Number{/ts}: {$bank_account_number}<br/>
@@ -256,7 +256,7 @@
             </div>
           {/if}
         {/if}
-        {if in_array('credit_card_number', $form) && $credit_card_number}
+        {if in_array('credit_card_number', $paymentFields) && $credit_card_number}
           <div class="crm-section no-label credit_card_details-section">
             <div class="content">{$credit_card_type}</div>
             <div class="content">{$credit_card_number}</div>
@@ -268,7 +268,7 @@
     {/if}
     {/crmRegion}
 
-  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="confirmContribution"}
+  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="confirmContribution" showPremiumSelectionFields=false preview=false}
 
   {if $customPost}
     <fieldset class="label-left crm-profile-view">
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
index 33ff5ce7f3..84f8490e06 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
@@ -8,7 +8,7 @@
  +--------------------------------------------------------------------+
 *}
 {* Callback snippet: On-behalf profile *}
-{if $snippet and !empty($isOnBehalfCallback) and !$ccid}
+{if $snippet and !empty($isOnBehalfCallback) and !$isPaymentOnExistingContribution}
   <div class="crm-public-form-item crm-section">
     {include file="CRM/Contribute/Form/Contribution/OnBehalfOf.tpl" context="front-end"}
   </div>
@@ -34,6 +34,8 @@
     function clearAmountOther(otherPriceFieldName) {
       cj('#' + otherPriceFieldName).val('');
       cj('#' + otherPriceFieldName).blur();
+      // @todo - remove the next 2 lines - they seems to relate to a field that is never present
+      // as amount_other will be (e.g) price_4
       if (document.Main.amount_other == null) return; // other_amt field not present; do nothing
       document.Main.amount_other.value = "";
     }
@@ -54,7 +56,7 @@
   <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block" data-page-id="{$contributionPageID}" data-page-template="main">
 
     {crmRegion name='contribution-main-not-you-block'}
-    {if $contact_id && !$ccid}
+    {if $contact_id && !$isPaymentOnExistingContribution}
       <div class="messages status no-popup crm-not-you-message">
         {ts 1=$display_name}Welcome %1{/ts}. (<a href="{crmURL p='civicrm/contribute/transact' q="cid=0&reset=1&id=`$contributionPageID`"}" title="{ts}Click here to do this for a different person.{/ts}">{ts 1=$display_name}Not %1, or want to do this for a different person{/ts}</a>?)
       </div>
@@ -62,7 +64,7 @@
     {/crmRegion}
 
     <div id="intro_text" class="crm-public-form-item crm-section intro_text-section">
-      {$intro_text}
+      {$intro_text|purify}
     </div>
     {include file="CRM/common/cidzero.tpl"}
 
@@ -70,11 +72,11 @@
       <div class="help">{ts}You have a current Lifetime Membership which does not need to be renewed.{/ts}</div>
     {/if}
 
-    {if $isShowMembershipBlock && !$ccid}
+    {if $isShowMembershipBlock && !$isPaymentOnExistingContribution}
       <div class="crm-public-form-item crm-section">
         {include file="CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl"}
       </div>
-    {elseif !empty($ccid)}
+    {elseif $isPaymentOnExistingContribution}
       {if $lineItem && $priceSetID && !$is_quick_config}
         <div class="header-dark">
           {ts}Contribution Information{/ts}{if $display_name} &ndash; {$display_name}{/if}
@@ -93,7 +95,7 @@
       </div>
     {/if}
 
-    {if !$ccid}
+    {if !$isPaymentOnExistingContribution}
       {crmRegion name='contribution-main-pledge-block'}
       {if $pledgeBlock}
         {if array_key_exists('pledge_amount', $form)}
@@ -183,7 +185,7 @@
         {include file="CRM/common/CMSUser.tpl"}
       </div>
       <div class="crm-public-form-item crm-section premium_block-section">
-        {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false}
+        {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false showPremiumSelectionFields=true}
       </div>
 
       {if $honoreeProfileFields && $honoreeProfileFields|@count}
@@ -317,9 +319,9 @@
 
     function toggleRecur() {
       var isRecur = cj('input[id="is_recur"]:checked');
-      var allowAutoRenew = {/literal}'{$allowAutoRenewMembership}'{literal};
+
       var quickConfig = {/literal}'{$quickConfig}'{literal};
-      if (allowAutoRenew && cj("#auto_renew") && quickConfig) {
+      if (cj("#auto_renew") && quickConfig) {
         showHideAutoRenew(null);
       }
 
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
index 23b2f2b4de..c4aca65220 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
@@ -20,10 +20,10 @@
           </div>
         {/if}
       {else}
-        {if $membershipBlock.new_title}
+        {if array_key_exists('new_title', $membershipBlock) && $membershipBlock.new_title}
           <legend>{$membershipBlock.new_title}</legend>
         {/if}
-        {if $membershipBlock.new_text}
+        {if array_key_exists('new_text', $membershipBlock) && $membershipBlock.new_text}
           <div id="membership-intro" class="crm-section membership_new_intro-section">
             {$membershipBlock.new_text}
           </div>
@@ -52,28 +52,14 @@
   </div>
   {literal}
   <script type="text/javascript">
-    CRM.$(function($) {
-      //if price set is set we use below below code to show for showing auto renew
-      var autoRenewOption =  {/literal}'{$autoRenewOption}'{literal};
-      var autoRenew = $("#auto_renew_section");
-      var autoRenewCheckbox = $("#auto_renew");
-      var forceRenew = $("#force_renew");
-      autoRenew.hide();
-      forceRenew.hide();
-      if ( autoRenewOption == 1 ) {
-        autoRenew.show();
-      } else if ( autoRenewOption == 2 ) {
-        autoRenewCheckbox.prop('checked',  true );
-        autoRenewCheckbox.attr( 'readonly', true );
-        autoRenew.hide();
-        forceRenew.show();
-      }
-    });
+
   </script>
 {/literal}
 </div>
 
-{if $membershipBlock AND $is_quick_config}
+{if $isPaymentOnExistingContribution && $membershipBlock && $is_quick_config}
+    {* This code is hit only when ccid is in the url to pay on an existing contribution and it is quick config *}
+    {* Removing the contents of this if does not result in any apparent change & it may be removable *}
     {strip}
       <table id="membership-listings">
           {foreach from=$membershipTypes item=row}
@@ -151,17 +137,18 @@
       if ( !memTypeId ) memTypeId = cj('input:radio[name='+priceSetName+']:checked').attr('membership-type');
 
       //does this page has only one membership type.
-      var singleMembership = {/literal}'{$singleMembership}'{literal};
-      if ( !memTypeId && singleMembership ) memTypeId = cj("input:radio[name="+priceSetName+"]").attr('membership-type');
       var renewOptions  = {/literal}{$autoRenewMembershipTypeOptions}{literal};
       var currentOption = eval( "renewOptions." + 'autoRenewMembershipType_' + memTypeId );
+      if (memTypeId === undefined) {
+        currentOption = 0;
+      }
       var autoRenew = cj('#auto_renew_section');
       var autoRenewC = cj('input[name="auto_renew"]');
       var forceRenew = cj("#force_renew");
 
       var readOnly = false;
       var isChecked  = false;
-      if ( currentOption == 0 ) {
+      if (currentOption == 0 ) {
         isChecked = false;
         forceRenew.hide();
         autoRenew.hide();
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
index e387bf4b4f..04cd616d8e 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
@@ -13,13 +13,13 @@
 {if $membershipBlock AND $is_quick_config}
     <div class="header-dark">
       {if $renewal_mode}
-        {if $membershipBlock.renewal_title}
+        {if array_key_exists('renewal_title', $membershipBlock) && $membershipBlock.renewal_title}
           {$membershipBlock.renewal_title}
         {else}
           {ts}Select a Membership Renewal Level{/ts}
         {/if}
       {else}
-        {if $membershipBlock.new_title}
+        {if array_key_exists('new_title', $membershipBlock) && $membershipBlock.new_title}
           {$membershipBlock.new_title}
         {else}
           {ts}Select a Membership Level{/ts}
@@ -42,7 +42,7 @@
         </tr>
 
       {/foreach}
-      {if $form.auto_renew}
+      {if array_key_exists('auto_renew', $form)}
         <tr id="allow_auto_renew">
           <td style="width: auto;">{$form.auto_renew.html}</td>
           <td style="width: auto;">
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
index 309ced9349..6f69bf58b2 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
@@ -12,11 +12,11 @@
     {if $context EQ "makeContribution"}
       <fieldset class="crm-group premiums_select-group">
       {if $premiumBlock.premiums_intro_title}
-        <legend>{$premiumBlock.premiums_intro_title}</legend>
+        <legend>{$premiumBlock.premiums_intro_title|escape}</legend>
       {/if}
       {if $premiumBlock.premiums_intro_text}
         <div id="premiums-intro" class="crm-section premiums_intro-section">
-          {$premiumBlock.premiums_intro_text}
+          {$premiumBlock.premiums_intro_text|escape}
         </div>
       {/if}
     {/if}
@@ -25,7 +25,7 @@
     <div class="crm-group premium_display-group">
       <div class="header-dark">
         {if $premiumBlock.premiums_intro_title}
-          {$premiumBlock.premiums_intro_title}
+          {$premiumBlock.premiums_intro_title|escape}
         {else}
           {ts}Your Premium Selection{/ts}
         {/if}
@@ -33,33 +33,33 @@
     {/if}
 
     {if $preview}
-      {assign var="showSelectOptions" value="1"}
+      {assign var="showPremiumSelectionFields" value="1"}
     {/if}
 
     {strip}
       <div id="premiums-listings">
-      {if $showPremium AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 1}
+      {if $showPremiumSelectionFields AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 1}
         <div class="premium premium-no_thanks" id="premium_id-no_thanks" min_contribution="0">
           <div class="premium-short">
-            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
           <div class="premium-full">
-            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
         </div>
       {/if}
       {foreach from=$products item=row}
-        <div class="premium {if $showPremium}premium-selectable{/if}" id="premium_id-{$row.id}" min_contribution="{$row.min_contribution}">
+        <div class="premium {if $showPremiumSelectionFields}premium-selectable{/if}" id="premium_id-{$row.id}" min_contribution="{$row.min_contribution}">
           <div class="premium-short">
-            {if $row.thumbnail}<div class="premium-short-thumbnail"><img src="{$row.thumbnail}" alt="{$row.name|escape}" /></div>{/if}
-            <div class="premium-short-content">{$row.name}</div>
+            {if $row.thumbnail}<div class="premium-short-thumbnail"><img src="{$row.thumbnail|purify}" alt="{$row.name|escape}" /></div>{/if}
+            <div class="premium-short-content">{$row.name|escape}</div>
             <div style="clear:both"></div>
           </div>
 
           <div class="premium-full">
-            <div class="premium-full-image">{if $row.image}<img src="{$row.image}" alt="{$row.name|escape}" />{/if}</div>
+            <div class="premium-full-image">{if $row.image}<img src="{$row.image|escape}" alt="{$row.name|escape}" />{/if}</div>
             <div class="premium-full-content">
-              <div class="premium-full-title">{$row.name}</div>
+              <div class="premium-full-title">{$row.name|escape}</div>
               <div class="premium-full-disabled">
                 {ts 1=$row.min_contribution|crmMoney}You must contribute at least %1 to get this item{/ts}<br/>
                 <button type="button" amount="{$row.min_contribution}">
@@ -67,18 +67,16 @@
                 </button>
               </div>
               <div class="premium-full-description">
-                {$row.description}
+                {$row.description|escape}
               </div>
-              {if $showSelectOptions}
-                {assign var="pid" value="options_"|cat:$row.id}
-                {if $pid}
+              {if $showPremiumSelectionFields}
+                {assign var="premium_option" value="options_"|cat:$row.id}
                   <div class="premium-full-options">
-                    <p>{$form.$pid.html}</p>
+                    <p>{$form.$premium_option.html}</p>
                   </div>
-                {/if}
               {else}
                 <div class="premium-full-options">
-                  <p><strong>{$row.options}</strong></p>
+                  <p><strong>{$row.options|purify}</strong></p>
                 </div>
               {/if}
               {if (($premiumBlock.premiums_display_min_contribution AND $context EQ "makeContribution") OR $preview EQ 1) AND $row.min_contribution GT 0}
@@ -90,13 +88,13 @@
           <div style="clear:both"></div>
         </div>
       {/foreach}
-      {if $showPremium AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 2}
+      {if $showPremiumSelectionFields AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 2}
         <div class="premium premium-no_thanks" id="premium_id-no_thanks" min_contribution="0">
           <div class="premium-short">
-            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
           <div class="premium-full">
-            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
         </div>
       {/if}
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
index 7f4b6bd036..74854f2d16 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
@@ -45,7 +45,7 @@
         </div>
       {/if}
     {elseif $isPendingOutcome}
-      <div>{ts 1=$paymentProcessor.name}Your contribution has been submitted to %1 for processing.{/ts}</div>
+      <div>{ts 1=$paymentProcessorName|escape}Your contribution has been submitted to %1 for processing.{/ts}</div>
         {if $is_email_receipt}
       <div>
         {if $onBehalfEmail AND ($onBehalfEmail neq $email)}
@@ -82,7 +82,7 @@
         {if $lineItem and $priceSetID}
           {if !$amount}{assign var="amount" value=0}{/if}
           {assign var="totalAmount" value=$amount}
-          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"}
+          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution" displayLineItemFinancialType=false pricesetFieldsCount=false currencySymbol='' hookDiscount=''}
         {elseif $membership_amount}
           {$membership_name} {ts}Membership{/ts}: <strong>{$membership_amount|crmMoney}</strong><br />
           {if $amount}
@@ -93,7 +93,7 @@
             {/if}
           {/if}
           <strong> -------------------------------------------</strong><br />
-          {ts}Total{/ts}: <strong>{$amount+$membership_amount|crmMoney}</strong><br />
+          {ts}Total{/ts}: <strong>{$orderTotal|crmMoney}</strong><br />
         {else}
           {if $totalTaxAmount}
             {ts}Tax Amount{/ts}: <strong>{$totalTaxAmount|crmMoney}</strong><br />
@@ -116,7 +116,7 @@
           {if !empty($auto_renew)} {* Auto-renew membership confirmation *}
             {crmRegion name="contribution-thankyou-recur-membership"}
               <br />
-              {if $installments > 1}
+              {if !$installments || $installments > 1}
                 {if $frequency_interval > 1}
                   <strong>{ts 1=$frequency_interval 2=$frequency_unit}This membership will be renewed automatically every %1 %2(s).{/ts}</strong>
                 {else}
@@ -273,7 +273,7 @@
     </div>
   {/if}
 
-  {if in_array('credit_card_number', $form) || in_array('bank_account_number', $form) && ($amount GT 0 OR $minimum_fee GT 0)}
+  {if in_array('credit_card_number', $paymentFields) || in_array('bank_account_number', $paymentFields) && ($amount GT 0 OR $minimum_fee GT 0)}
     {crmRegion name="contribution-thankyou-billing-block"}
       <div class="crm-group credit_card-group">
         {if $paymentFieldsetLabel}
@@ -281,7 +281,7 @@
             {$paymentFieldsetLabel}
           </div>
         {/if}
-          {if in_array('bank_account_number', $form) && $bank_account_number}
+          {if in_array('bank_account_number', $paymentFields) && $bank_account_number}
           <div class="display-block">
             {ts}Account Holder{/ts}: {$account_holder}<br />
             {ts}Bank Identification Number{/ts}: {$bank_identification_number}<br />
@@ -300,7 +300,7 @@
     {/crmRegion}
   {/if}
 
-  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="thankContribution"}
+  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="thankContribution" showPremiumSelectionFields=false preview=false}
 
   {if $customPost}
     <fieldset class="label-left crm-profile-view">
@@ -315,6 +315,6 @@
   </div>
   {if $isShare}
     {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="$qParams" a=1 fe=1 h=1}{/capture}
-    {include file="CRM/common/SocialNetwork.tpl" url=$contributionUrl title=$title pageURL=$contributionUrl}
+    {include file="CRM/common/SocialNetwork.tpl" url=$contributionUrl title=false pageURL=$contributionUrl emailMode=false}
   {/if}
 </div>
diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
index 77bdef9dfe..309f14580d 100644
--- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
@@ -73,5 +73,5 @@
  {/literal}
 </script>
 {/crmRegion}
-{crmRegion name="contribute-form-contributionpage-thankyou-post}
+{crmRegion name="contribute-form-contributionpage-thankyou-post"}
 {/crmRegion}
diff --git a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
index 9760a62a99..d5ec4b8f44 100644
--- a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
+++ b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
@@ -43,13 +43,13 @@
            </tr>
           </thead>
         {foreach from=$rows item=row}
-        <tr id="product-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}">
-          <td class="crm-contribution-form-block-name crm-editable" data-field="name">{$row.name}</td>
-          <td class="crm-contribution-form-block-sku crm-editable" data-field="sku">{$row.sku}</td>
+        <tr id="product-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}">
+          <td class="crm-contribution-form-block-name crm-editable" data-field="name">{$row.name|escape}</td>
+          <td class="crm-contribution-form-block-sku crm-editable" data-field="sku">{$row.sku|escape}</td>
           <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td>
           <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td>
           <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td>
-          <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td>
+          <td class="crm-contribution-form-block-financial_type">{$row.financial_type|escape}</td>
           <td id="row_{$row.id}_status" >{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
           <td id={$row.id}>{$row.action|smarty:nodefaults|replace:'xx':$row.id}</td>
         </tr>
@@ -66,7 +66,7 @@
     {if $action ne 1 and $action ne 2}
     <div class="messages status no-popup">
         <img src="{$config->resourceBase}i/Inform.gif" alt="{ts}status{/ts}"/>
-        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/managePremiums' q="action=add&reset=1"}{/capture}
+        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/managePremiums/edit' q="action=add&reset=1"}{/capture}
         {ts 1=$crmURL}No premium products have been created for your site. You can <a href='%1'>add one</a>.{/ts}
     </div>
     {/if}
diff --git a/civicrm/templates/CRM/Contribute/Page/Premium.tpl b/civicrm/templates/CRM/Contribute/Page/Premium.tpl
index 377ff12a2f..0424e00d0f 100644
--- a/civicrm/templates/CRM/Contribute/Page/Premium.tpl
+++ b/civicrm/templates/CRM/Contribute/Page/Premium.tpl
@@ -28,14 +28,14 @@
         </tr>
         {foreach from=$rows item=row}
         <tr class="{cycle values='odd-row,even-row'}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}">
-          <td class="crm-contribution-form-block-product_name">{$row.product_name}</td>
-          <td class="crm-contribution-form-block-sku">{$row.sku}</td>
+          <td class="crm-contribution-form-block-product_name">{$row.product_name|escape}</td>
+          <td class="crm-contribution-form-block-sku">{$row.sku|escape}</td>
           <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td>
           <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td>
           <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td>
-          <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td>
+          <td class="crm-contribution-form-block-financial_type">{$row.financial_type|escape}</td>
           <td class="nowrap crm-contribution-form-block-weight">{$row.weight|smarty:nodefaults}</td>
-          <td class="crm-contribution-form-block-action">{$row.action}</td>
+          <td class="crm-contribution-form-block-action">{$row.action|smarty:nodefaults}</td>
         </tr>
         {/foreach}
         </table>
@@ -48,16 +48,14 @@
     {/if}
 </div>
 {else}
-  {if $showForm eq false}
-    <div class="messages status no-popup">
-      {if $products ne null}
-        {icon icon="fa-info-circle"}{/icon}
-        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture}
-        {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts}
-      {else}
-        {icon icon="fa-info-circle"}{/icon}
-        {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts}
-      {/if}
-    </div>
-  {/if}
+  <div class="messages status no-popup">
+    {if $products ne null}
+      {icon icon="fa-info-circle"}{/icon}
+      {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture}
+      {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts}
+    {else}
+      {icon icon="fa-info-circle"}{/icon}
+      {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts}
+    {/if}
+  </div>
 {/if}
diff --git a/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl b/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
index 3949653a14..1a2f3bd6f1 100644
--- a/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
+++ b/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
@@ -213,6 +213,10 @@
           previewDialog();
         }
       }
+      else {
+        // Avoid jquery validation on required fields if they are visible
+        $('#recurring-entity-block :input').removeClass('required');
+      }
     });
 
     // Enable/disable form buttons when not embedded in another form
diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl
index e4476c6442..d2e4dea8de 100644
--- a/civicrm/templates/CRM/Custom/Form/Field.tpl
+++ b/civicrm/templates/CRM/Custom/Form/Field.tpl
@@ -173,11 +173,7 @@
       </td>
     </tr>
   </table>
-  {if $action ne 4}
-    <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-  {else}
-    <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-  {/if}
+  <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
 </div>
 {literal}
 <script type="text/javascript">
diff --git a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
index 00d6ce4633..cdf9edc472 100644
--- a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
+++ b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
@@ -11,6 +11,7 @@
 <style type="text/css">
   #civicrm-news-feed {
     border: 0 none;
+    font-family: inherit; // Stops JQueryUI's attempt to make this section Verdana
   }
   #civicrm-news-feed .crm-news-feed-unread .crm-news-feed-item-title {
     font-weight: bold;
@@ -45,16 +46,16 @@
   {foreach from=$feeds item="channel"}
     <div id="civicrm-news-feed-{$channel.name}">
     {foreach from=$channel.items item=article}
-      <div class="crm-accordion-wrapper collapsed">
-        <div class="crm-accordion-header">
+      <details class="crm-accordion-wrapper">
+        <summary class="crm-accordion-header">
           <span class="crm-news-feed-item-title">{$article.title|smarty:nodefaults|purify}</span>
           <span class="crm-news-feed-item-preview"> - {if function_exists('mb_substr')}{$article.description|smarty:nodefaults|strip_tags|mb_substr:0:150}{else}{$article.description|smarty:nodefaults|strip_tags}{/if}</span>
-        </div>
+        </summary>
         <div class="crm-accordion-body">
           <div>{$article.description|smarty:nodefaults|purify}</div>
           <p class="crm-news-feed-item-link"><a target="_blank" href="{$article.link|smarty:nodefaults|purify}" title="{$article.title|smarty:nodefaults|escape}"><i class="crm-i fa-external-link" aria-hidden="true"></i> {ts}read more{/ts}…</a></p>
         </div>
-      </div>
+      </details>
     {/foreach}
     </div>
   {/foreach}
diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
index 9bfff190cc..326ef4aa00 100644
--- a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
+++ b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
@@ -105,6 +105,10 @@
       <td>&nbsp;</td>
       <td>{$form.is_active.html} {$form.is_active.label}</td>
     </tr>
+    <tr class="crm-event-manage-eventinfo-form-block-is_show_calendar_links">
+      <td>&nbsp;</td>
+      <td>{$form.is_show_calendar_links.html} {$form.is_show_calendar_links.label}</td>
+    </tr>
 
     {if $eventID AND !$isTemplate}
       <tr class="crm-event-manage-eventinfo-form-block-info_link">
diff --git a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
index a546f2b650..006f9e2c9f 100644
--- a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
+++ b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
@@ -13,19 +13,16 @@
 
 <div class="crm-event-id-{$event.id} crm-block crm-event-confirm-form-block">
     <div class="messages status section continue_message-section"><p>
+    {capture assign=register}{ts}Register{/ts}{/capture}
     {if $isOnWaitlist}
         {ts}Please verify your information.{/ts} <strong>{ts}If space becomes available you will receive an email with a link to complete your registration.{/ts}</strong>
-        {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to be added to the WAIT LIST for this event.{/ts}
+        {ts 1=$register}Click <strong>%1</strong> to be added to the WAIT LIST for this event.{/ts}
     {elseif $isRequireApproval}
         {ts}Please verify your information.{/ts} <strong>{ts}Once approved, you will receive an email with a link to complete the registration process.{/ts}</strong>
-        {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to submit your registration for approval.{/ts}
+        {ts 1=$register}Click <strong>%1</strong> to submit your registration for approval.{/ts}
     {else}
         {ts}Please verify your information.{/ts}
-        {if $contributeMode EQ 'notify' and !$is_pay_later and !$isAmountzero}
-            {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags 2=$paymentProcessor.frontend_title}Click <strong>%1</strong> to checkout with %2.{/ts}
-        {else}
-            {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to complete your registration.{/ts}
-        {/if}
+        {$verifyText}
     {/if}
     </p></div>
     {if $is_pay_later and !$isAmountzero and !$isOnWaitlist and !$isRequireApproval}
diff --git a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
index 14fe56cfa5..f697f70e55 100644
--- a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
+++ b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
@@ -51,11 +51,11 @@
             {if $is_email_confirm}
                 <p>{ts 1=$email}An email with event details has been sent to %1.{/ts}</p>
             {/if}
-        {* PayPal_Standard sets contribution_mode to 'notify'. We don't know if transaction is successful until we receive the IPN (payment notification) *}
-        {elseif $contributeMode EQ 'notify' and $paidEvent}
-            <p>{ts 1=$paymentProcessor.name}Your registration payment has been submitted to %1 for processing.{/ts}</p>
+        {* This text is determined by the payment processor *}
+        {elseif $eventConfirmText}
+            <p>{$eventConfirmText}</p>
             {if $is_email_confirm}
-                <p>{ts 1=$email}A registration confirmation email will be sent to %1 once the transaction is processed successfully.{/ts}</p>
+                <p>{$eventEmailConfirmText}</p>
             {/if}
         {else}
             <p>{ts}Your registration has been processed successfully.{/ts}</p>
@@ -196,13 +196,13 @@
         <a href="{crmURL p='civicrm/event/info' q="reset=1&id=`$event.id`"}"><i class="crm-i fa-chevron-left" aria-hidden="true"></i> {ts 1=$event.event_title}Back to "%1" event information{/ts}</a>
     </div>
 
-    {if $event.is_public}
+    {if $event.is_public and $event.is_show_calendar_links}
       <div class="action-link section iCal_links-section">
         {include file="CRM/Event/Page/iCalLinks.tpl"}
       </div>
     {/if}
     {if $event.is_share}
-    {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&amp;reset=1" a=1 fe=1 h=1}{/capture}
-    {include file="CRM/common/SocialNetwork.tpl" url=$eventUrl title=$event.title pageURL=$eventUrl}
+      {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&amp;reset=1" a=1 fe=1 h=1}{/capture}
+      {include file="CRM/common/SocialNetwork.tpl" url=$eventUrl title=$event.title pageURL=$eventUrl emailMode=false}
     {/if}
 </div>
diff --git a/civicrm/templates/CRM/Event/Page/EventInfo.tpl b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
index 4d09752578..ed71354dc4 100644
--- a/civicrm/templates/CRM/Event/Page/EventInfo.tpl
+++ b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
@@ -222,7 +222,7 @@
         {/if}
       {/crmRegion}
     </div>
-    {if $event.is_public}
+    {if $event.is_public and $event.is_show_calendar_links}
         <div class="action-link section iCal_links-section">
           {include file="CRM/Event/Page/iCalLinks.tpl"}
         </div>
diff --git a/civicrm/templates/CRM/Friend/Form.tpl b/civicrm/templates/CRM/Friend/Form.tpl
index 63d521a85a..3988e7d6f4 100644
--- a/civicrm/templates/CRM/Friend/Form.tpl
+++ b/civicrm/templates/CRM/Friend/Form.tpl
@@ -81,5 +81,5 @@
   {else}
     {capture assign=pageURL}{crmURL p='civicrm/contribute/transact' q="reset=1&amp;id=`$entityID`" a=1 fe=1 h=1}{/capture}
   {/if}
-  {include file="CRM/common/SocialNetwork.tpl" url=$pageURL title=$title pageURL=$pageURL}
+  {include file="CRM/common/SocialNetwork.tpl" url=$pageURL title=$title pageURL=$pageURL emailMode=false}
 {/if}
diff --git a/civicrm/templates/CRM/Member/Page/Tab.tpl b/civicrm/templates/CRM/Member/Page/Tab.tpl
index b1482ccef6..65943e0ebb 100644
--- a/civicrm/templates/CRM/Member/Page/Tab.tpl
+++ b/civicrm/templates/CRM/Member/Page/Tab.tpl
@@ -28,7 +28,7 @@
         </div>
 
         <div class="action-link">
-          {include file="CRM/common/formButtons.tpl" location="top"}
+          {include file="CRM/common/formButtons.tpl" location="top" form=false}
         </div>
     {/if}
     {if NOT ($activeMembers or $inActiveMembers) and $action ne 2 and $action ne 1 and $action ne 8 and $action ne 4 and $action ne 32768}
diff --git a/civicrm/templates/CRM/Price/Form/Field.tpl b/civicrm/templates/CRM/Price/Form/Field.tpl
index 74a9cc2718..3873b2b314 100644
--- a/civicrm/templates/CRM/Price/Form/Field.tpl
+++ b/civicrm/templates/CRM/Price/Form/Field.tpl
@@ -144,7 +144,7 @@
 
 {if $action eq 1}
 {* Conditionally show table for setting up selection options - for field types = radio, checkbox or select *}
-  <div id='showoption' class="hiddenElement">{ include file="CRM/Price/Form/OptionFields.tpl"}</div>
+  <div id='showoption' class="hiddenElement">{include file="CRM/Price/Form/OptionFields.tpl"}</div>
 {/if}
   <table class="form-layout">
     <tr id="optionsPerLine" class="crm-price-field-form-block-options_per_line">
diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl
index 6f64069ee4..32503867de 100644
--- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl
+++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl
@@ -95,21 +95,19 @@
                 </div>
 
             {/if}
-              {if !empty($extends) && $extends eq "Membership"}
-                {if ($element.id == $priceSet.auto_renew_membership_field)}
-                  <div id="allow_auto_renew">
-                    <div class='crm-section auto-renew'>
-                      <div class='label'></div>
-                      <div class='content' id="auto_renew_section">
-                        {if $form.auto_renew}
-                          {$form.auto_renew.html}&nbsp;{$form.auto_renew.label|smarty:nodefaults|purify}
-                        {/if}
-                      </div>
-                      <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div>
-                    </div>
+            {if (array_key_exists('auto_renew', $form)) && !empty($extends) && $extends eq "Membership" && array_key_exists('supports_auto_renew', $element) && $element.supports_auto_renew}
+              <div id="allow_auto_renew">
+                <div class='crm-section auto-renew'>
+                  <div class='label'></div>
+                  <div class='content' id="auto_renew_section">
+                    {if $form.auto_renew}
+                      {$form.auto_renew.html}&nbsp;{$form.auto_renew.label|smarty:nodefaults|purify}
+                    {/if}
                   </div>
-                {/if}
-              {/if}
+                  <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div>
+                </div>
+              </div>
+            {/if}
               <div class="clear"></div>
           </div>
         {/if}
diff --git a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
index d27ff1f48e..8187b41455 100644
--- a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
+++ b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
@@ -52,91 +52,89 @@
         {* pre-compile section header here, rather than doing it every time under foreach *}
         {capture assign=sectionHeaderTemplate}
             {assign var=columnCount value=$columnHeaders|@count}
-            {assign var=l value=$smarty.ldelim}
-            {assign var=r value=$smarty.rdelim}
             {assign var=pageBroke value=0}
-            {foreach from=$sections item=section key=column name=sections}
-                {counter assign="h"}
-                {$l}isValueChange value=$row.{$column} key="{$column}" assign=isValueChanged{$r}
-                {$l}if $isValueChanged{$r}
-
-                    {$l}if $sections.{$column}.type & 4{$r}
-                        {$l}assign var=printValue value=$row.{$column}|crmDate{$r}
-                    {$l}elseif $sections.{$column}.type eq 1024{$r}
-                        {$l}assign var=printValue value=$row.{$column}|crmMoney{$r}
-                    {$l}else{$r}
-                        {$l}assign var=printValue value=$row.{$column}{$r}
-                    {$l}/if{$r}
-                    {$l}if $rowid neq 0{$r}
-                      {if $section.pageBreak}
-                        {$l}if $pageBroke >= {$h} or $pageBroke == 0{$r}
-                          </table>
-                          <div class="page-break"></div>
-                          <table class="report-layout display">
-                        {$l}/if{$r}
-                        {$l}assign var=pageBroke value={$h}{$r}
-                      {/if}
-                    {$l}/if{$r}
-                    <tr class="crm-report-sectionHeader crm-report-sectionHeader-{$h}"><th colspan="{$columnCount}">
-
-                        <h{$h}>{$section.title|escape}: {$l}$printValue|default:"<em>none</em>"{$r}
-                            ({$l}sectionTotal key=$row.{$column} depth={$smarty.foreach.sections.index}{$r})
-                        </h{$h}>
-                    </th></tr>
-                    {if $smarty.foreach.sections.last}
-                        <tr class="crm-report-sectionCols">{$l}$tableHeader{$r}</tr>
-                    {/if}
-                {$l}/if{$r}
-            {/foreach}
         {/capture}
 
         {foreach from=$rows item=row key=rowid}
-           {eval var=$sectionHeaderTemplate}
-            <tr  class="{cycle values="odd-row,even-row"} {if $row.class}{$row.class}{/if} crm-report" id="crm-report_{$rowid}">
-                {foreach from=$columnHeaders item=header key=field}
-                    {assign var=fieldLink value=$field|cat:"_link"}
-                    {assign var=fieldHover value=$field|cat:"_hover"}
-                    {assign var=fieldClass value=$field|cat:"_class"}
-                    <td class="crm-report-{$field}{if $header.type eq 1024 OR $header.type eq 1 OR $header.type eq 512} report-contents-right{elseif $row.$field eq 'Subtotal'} report-label{/if}">
-                        {if array_key_exists($fieldLink, $row) && $row.$fieldLink}
-                            <a href="{$row.$fieldLink}"
-                               {if array_key_exists($fieldHover, $row)}title="{$row.$fieldHover|escape}"{/if}
-                               {if array_key_exists($fieldClass, $row)}class="{$row.$fieldClass}"{/if}
-                            >
-                        {/if}
+          {foreach from=$sections item=section key=column name=sections}
+            {counter start=1 assign="h"}
+            {assign var=sectionColumn value=$sections.$column}
+            {isValueChange value=$row.$column key=$column assign=isValueChanged}
+              {if $isValueChanged}
 
-                        {if is_array($row.$field)}
-                            {foreach from=$row.$field item=fieldrow key=fieldid}
-                                <div class="crm-report-{$field}-row-{$fieldid}">{$fieldrow}</div>
-                            {/foreach}
-                        {elseif $row.$field eq 'Subtotal'}
-                            {$row.$field}
-                        {elseif $header.type & 4 OR $header.type & 256}
-                            {if $header.group_by eq 'MONTH' or $header.group_by eq 'QUARTER'}
-                                {$row.$field|crmDate:$config->dateformatPartial}
-                            {elseif $header.group_by eq 'YEAR'}
-                                {$row.$field|crmDate:$config->dateformatYear}
-                            {else}
-                                {if $header.type == 4}
-                                   {$row.$field|truncate:10:''|crmDate}
-                                {else}
-                                   {$row.$field|crmDate}
-                                {/if}
-                            {/if}
-                        {elseif $header.type eq 1024}
-                            {if $currencyColumn}
-                                <span class="nowrap">{$row.$field|crmMoney:$row.$currencyColumn}</span>
-                            {else}
-                                <span class="nowrap">{$row.$field|crmMoney}</span>
-                           {/if}
-                        {else}
-                            {$row.$field|smarty:nodefaults|purify}
-                        {/if}
+              {if $sectionColumn.type & 4}
+              {assign var=printValue value=$row.$column|crmDate}
+              {elseif $sectionColumn.type eq 1024}
+              {assign var=printValue value=$row.$column|crmMoney}
+              {else}
+              {assign var=printValue value=$row.$column}
+              {/if}
+              {if $rowid neq 0}
+              {if $section.pageBreak}
+                  {if $pageBroke >= $h or $pageBroke == 0}
+                </table>
+                <div class="page-break"></div>
+                <table class="report-layout display">
+                  {/if}
+                  {assign var=pageBroke value=$h}
+              {/if}
+              {/if}
+            <tr class="crm-report-sectionHeader crm-report-sectionHeader-{$h}"><th colspan="{$columnCount}">
 
-                        {if array_key_exists($fieldLink, $row) && $row.$fieldLink}</a>{/if}
-                    </td>
-                {/foreach}
-            </tr>
+                <h{$h}>{$section.title|escape}: {$printValue|default:"<em>none</em>"}
+                  ({sectionTotal key=$row.$column depth=$smarty.foreach.sections.index totals=$sectionTotals})
+                </h{$h}>
+              </th></tr>
+              {if $smarty.foreach.sections.last}
+                <tr class="crm-report-sectionCols">{$tableHeader}</tr>
+              {/if}
+              {/if}
+          {/foreach}
+          <tr  class="{cycle values="odd-row,even-row"} {if $row.class}{$row.class}{/if} crm-report" id="crm-report_{$rowid}">
+              {foreach from=$columnHeaders item=header key=field}
+                  {assign var=fieldLink value=$field|cat:"_link"}
+                  {assign var=fieldHover value=$field|cat:"_hover"}
+                  {assign var=fieldClass value=$field|cat:"_class"}
+                  <td class="crm-report-{$field}{if $header.type eq 1024 OR $header.type eq 1 OR $header.type eq 512} report-contents-right{elseif array_key_exists($field, $row) && $row.$field eq 'Subtotal'} report-label{/if}">
+                      {if array_key_exists($fieldLink, $row) && $row.$fieldLink}
+                          <a href="{$row.$fieldLink}"
+                             {if array_key_exists($fieldHover, $row)}title="{$row.$fieldHover|escape}"{/if}
+                             {if array_key_exists($fieldClass, $row)}class="{$row.$fieldClass}"{/if}
+                          >
+                      {/if}
+
+                      {if array_key_exists($field, $row) && is_array($row.$field)}
+                          {foreach from=$row.$field item=fieldrow key=fieldid}
+                              <div class="crm-report-{$field}-row-{$fieldid}">{$fieldrow}</div>
+                          {/foreach}
+                      {elseif array_key_exists($field, $row) && $row.$field eq 'Subtotal'}
+                          {$row.$field}
+                      {elseif $header.type & 4 OR $header.type & 256}
+                          {if $header.group_by eq 'MONTH' or $header.group_by eq 'QUARTER'}
+                              {$row.$field|crmDate:$config->dateformatPartial}
+                          {elseif $header.group_by eq 'YEAR'}
+                              {$row.$field|crmDate:$config->dateformatYear}
+                          {else}
+                              {if $header.type == 4}
+                                 {$row.$field|truncate:10:''|crmDate}
+                              {else}
+                                 {$row.$field|crmDate}
+                              {/if}
+                          {/if}
+                      {elseif $header.type eq 1024}
+                          {if $currencyColumn}
+                              <span class="nowrap">{$row.$field|crmMoney:$row.$currencyColumn}</span>
+                          {else}
+                              <span class="nowrap">{$row.$field|crmMoney}</span>
+                         {/if}
+                      {elseif array_key_exists($field, $row)}
+                          {$row.$field|smarty:nodefaults|purify}
+                      {/if}
+
+                      {if array_key_exists($fieldLink, $row) && $row.$fieldLink}</a>{/if}
+                  </td>
+              {/foreach}
+          </tr>
         {/foreach}
 
         {if $grandStat}
@@ -150,7 +148,7 @@
                             {else}
                                 {$grandStat.$field|crmMoney}
                             {/if}
-                        {else}
+                        {elseif array_key_exists($field, $grandStat)}
                             {$grandStat.$field}
                         {/if}
                     </td>
diff --git a/civicrm/templates/CRM/Report/Form/Statistics.tpl b/civicrm/templates/CRM/Report/Form/Statistics.tpl
index e4625d9ab4..1564576e2d 100644
--- a/civicrm/templates/CRM/Report/Form/Statistics.tpl
+++ b/civicrm/templates/CRM/Report/Form/Statistics.tpl
@@ -37,9 +37,9 @@
         <tr>
           <th class="statistics" scope="row">{$row.title}</th>
           <td>
-            {if $row.type eq 1024}
+            {if array_key_exists('type', $row) && $row.type eq 1024}
               {$row.value|crmMoney|escape}
-            {elseif $row.type eq 2}
+            {elseif array_key_exists('type', $row) && $row.type eq 2}
               {$row.value|purify}
             {else}
                {$row.value|crmNumberFormat|escape}
diff --git a/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl b/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
index e2f25de8b1..b3a701f52b 100644
--- a/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
+++ b/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
@@ -32,7 +32,7 @@
                     <td class="label report-contents">{if !empty($field.title)}{$field.title}{/if}</td>
                       {include file="CRM/Core/DatePickerRangeWrapper.tpl" fieldName=$fieldName hideRelativeLabel=1 from='_from' to='_to' class='' colspan=''}
                   </tr>
-                {elseif $form.$fieldOp.html}
+                {elseif array_key_exists($fieldOp, $form) && $form.$fieldOp.html}
                   <tr class="report-contents crm-report crm-report-criteria-filter crm-report-criteria-filter-{$tableName}" {if array_key_exists('no_display', $field) && $field.no_display} style="display: none;"{/if}>
                     <td class="label report-contents">{if !empty($field.title)}{$field.title}{/if}</td>
                     <td class="report-contents">{$form.$fieldOp.html}</td>
diff --git a/civicrm/templates/CRM/common/formButtons.tpl b/civicrm/templates/CRM/common/formButtons.tpl
index be89d454e1..05a7a60cd0 100644
--- a/civicrm/templates/CRM/common/formButtons.tpl
+++ b/civicrm/templates/CRM/common/formButtons.tpl
@@ -12,23 +12,24 @@
 {* Loops through $linkButtons and assigns html "a" (link) buttons to the template. Used for additional entity functions such as "Move to Case" or "Renew Membership" *}
 {if $linkButtons}
   {foreach from=$linkButtons item=linkButton}
-    {if $linkButton.accessKey}
+    {if array_key_exists('accessKey', $linkButton) && $linkButton.accessKey}
       {capture assign=accessKey}accesskey="{$linkButton.accessKey}"{/capture}
     {else}{assign var="accessKey" value=""}
     {/if}
-    {if $linkButton.icon}
+    {if array_key_exists('icon', $linkButton) && $linkButton.icon}
       {capture assign=icon}<i class="crm-i {$linkButton.icon}" aria-hidden="true"></i> {/capture}
     {else}{assign var="icon" value=""}
     {/if}
-    {if $linkButton.ref}
+    {if array_key_exists('ref', $linkButton) && $linkButton.ref}
       {capture assign=linkname}name="{$linkButton.ref}"{/capture}
-    {else}{capture assign=linkname}name="{$linkButton.name}"{/capture}
+    {else}{capture assign=linkname}{if array_key_exists('name', $linkButton)}name="{$linkButton.name}"{/if}{/capture}
     {/if}
-    <a class="button{if array_key_exists('class', $linkButton)} {$linkButton.class}{/if}" {$linkname} href="{crmURL p=$linkButton.url q=$linkButton.qs}" {$accessKey} {$linkButton.extra}><span>{$icon|smarty:nodefaults}{$linkButton.title}</span></a>
+    <a class="button{if array_key_exists('class', $linkButton)} {$linkButton.class}{/if}" {$linkname} href="{crmURL p=$linkButton.url q=$linkButton.qs}" {$accessKey} {if array_key_exists('extra', $linkButton)}{$linkButton.extra}>{/if}<span>{$icon|smarty:nodefaults}{$linkButton.title}</span></a>
   {/foreach}
 {/if}
-
-{foreach from=$form.buttons item=button key=key name=btns}
+{if $form}
+  {* This could be called from Membership View - which is a page not a form but uses it for the links above *}
+  {foreach from=$form.buttons item=button key=key name=btns}
   {if $key|substring:0:4 EQ '_qf_'}
     {if $location}
       {$form.buttons.$key.html|crmReplace:id:"$key-$location"}
@@ -37,4 +38,5 @@
     {/if}
   {/if}
 {/foreach}
+{/if}
 {/crmRegion}
diff --git a/civicrm/templates/CRM/common/jcalendar.tpl b/civicrm/templates/CRM/common/jcalendar.tpl
index d3044553d2..33f5217a1a 100644
--- a/civicrm/templates/CRM/common/jcalendar.tpl
+++ b/civicrm/templates/CRM/common/jcalendar.tpl
@@ -10,7 +10,7 @@
 {if $batchUpdate}
     {assign var='elementId'   value=$form.field.$elementIndex.$elementName.id}
     {assign var="tElement" value=$elementName|cat:"_time"}
-    {assign var="timeElement" value=field_`$elementIndex`_`$elementName`_time}
+    {assign var="timeElement" value="field_`$elementIndex`_`$elementName`_time"}
     {$form.field.$elementIndex.$elementName.html}
 {elseif $elementIndex}
     {assign var='elementId'   value=$form.$elementName.$elementIndex.id}
diff --git a/civicrm/templates/CRM/common/joomla.tpl b/civicrm/templates/CRM/common/joomla.tpl
index 4ef4433428..7c48858c06 100644
--- a/civicrm/templates/CRM/common/joomla.tpl
+++ b/civicrm/templates/CRM/common/joomla.tpl
@@ -37,10 +37,6 @@
 
     <div class="clear"></div>
 
-    {if $localTasks}
-        {include file="CRM/common/localNav.tpl"}
-    {/if}
-
     <div id="crm-main-content-wrapper">
       {include file="CRM/common/status.tpl"}
       {crmRegion name='page-body'}
diff --git a/civicrm/templates/CRM/common/paymentBlock.tpl b/civicrm/templates/CRM/common/paymentBlock.tpl
index 7844e4a7e5..8a3c00436b 100644
--- a/civicrm/templates/CRM/common/paymentBlock.tpl
+++ b/civicrm/templates/CRM/common/paymentBlock.tpl
@@ -52,8 +52,7 @@
    */
   function skipPaymentMethod() {
     var isHide = false;
-    var isMultiple = {/literal}{$event.is_multiple_registrations|@json_encode}{literal};
-    var alwaysShowFlag = (isMultiple && cj("#additional_participants").val());
+    var alwaysShowFlag = (cj("#additional_participants").val());
     var alwaysHideFlag = (cj("#bypass_payment").val() == 1);
     var total_amount_tmp =  cj('#pricevalue').data('raw-total');
     // Hide billing questions if this is free
diff --git a/civicrm/templates/CRM/common/standalone.tpl b/civicrm/templates/CRM/common/standalone.tpl
index e84e85a765..75f7382abd 100644
--- a/civicrm/templates/CRM/common/standalone.tpl
+++ b/civicrm/templates/CRM/common/standalone.tpl
@@ -1,9 +1,8 @@
 <!DOCTYPE html >
-<html lang="{$config->lcMessages|substr:0:2}">
+<html lang="{$config->lcMessages|substr:0:2}" class="crm-standalone" >
  <head>
-  <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <link rel="Shortcut Icon" type="image/x-icon" href="{$config->resourceBase}i/widget/favicon.png" />
 
   {* @todo crmRegion below should replace this, but not working? *}
@@ -66,10 +65,6 @@
       {/crmRegion}
     </div>
 
-    {if isset($localTasks)}
-      {include file="CRM/common/localNav.tpl"}
-    {/if}
-
     {crmRegion name='page-footer'}
       {if !empty($urlIsPublic)}
         {include file="CRM/common/publicFooter.tpl"}
diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php
index 7fe1163c19..1f0eb8d040 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56::getLoader();
+return ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197::getLoader();
diff --git a/civicrm/vendor/composer/autoload_classmap.php b/civicrm/vendor/composer/autoload_classmap.php
index d1977b86e3..ecfababa58 100644
--- a/civicrm/vendor/composer/autoload_classmap.php
+++ b/civicrm/vendor/composer/autoload_classmap.php
@@ -21,7 +21,6 @@ return array(
     'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php',
     'ICallbackNamed' => $vendorDir . '/rubobaquero/phpquery/phpQuery/phpQuery/Callback.php',
     'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
     'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
     'PEAR_Exception' => $vendorDir . '/pear/pear_exception/PEAR/Exception.php',
     'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
diff --git a/civicrm/vendor/composer/autoload_files.php b/civicrm/vendor/composer/autoload_files.php
index b6304b3866..4278566418 100644
--- a/civicrm/vendor/composer/autoload_files.php
+++ b/civicrm/vendor/composer/autoload_files.php
@@ -7,13 +7,11 @@ $baseDir = dirname($vendorDir);
 
 return array(
     'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
-    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
-    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
+    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
     '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
@@ -77,6 +75,7 @@ return array(
     '4888a6f58c08148ebe17682f9ce9b2a8' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideby.php',
     'eef6fa3879d3efa347cd24d5eb348f85' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideinto.php',
     'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
+    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
     '9e4824c5afbdc1482b6025ce3d4dfde8' => $vendorDir . '/league/csv/src/functions_include.php',
     'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
diff --git a/civicrm/vendor/composer/autoload_psr4.php b/civicrm/vendor/composer/autoload_psr4.php
index e37f9ad0b2..49197b9f11 100644
--- a/civicrm/vendor/composer/autoload_psr4.php
+++ b/civicrm/vendor/composer/autoload_psr4.php
@@ -20,8 +20,6 @@ return array(
     'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
     'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
     'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
-    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
-    'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
     'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'),
     'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
     'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index 0fe83035e6..1310d5a1c8 100644
--- a/civicrm/vendor/composer/autoload_real.php
+++ b/civicrm/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
+class ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197
 {
     private static $loader;
 
@@ -24,22 +24,22 @@ class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
-        spl_autoload_unregister(array('ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
         set_include_path(implode(PATH_SEPARATOR, $includePaths));
 
         require __DIR__ . '/autoload_static.php';
-        call_user_func(\Composer\Autoload\ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::getInitializer($loader));
+        call_user_func(\Composer\Autoload\ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::getInitializer($loader));
 
         $loader->register(true);
 
-        $includeFiles = \Composer\Autoload\ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$files;
+        $includeFiles = \Composer\Autoload\ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$files;
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire950b3ed6f0b1ecab18eb0dbdaefa6b56($fileIdentifier, $file);
+            composerRequire98eee021afc9a2f48b8e515948cdf197($fileIdentifier, $file);
         }
 
         return $loader;
@@ -51,7 +51,7 @@ class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
  * @param string $file
  * @return void
  */
-function composerRequire950b3ed6f0b1ecab18eb0dbdaefa6b56($fileIdentifier, $file)
+function composerRequire98eee021afc9a2f48b8e515948cdf197($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php
index c2de4f34d6..adc2eb280f 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,17 +4,15 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
+class ComposerStaticInit98eee021afc9a2f48b8e515948cdf197
 {
     public static $files = array (
         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
-        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
-        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
-        'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
+        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
         '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
         '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
@@ -78,6 +76,7 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         '4888a6f58c08148ebe17682f9ce9b2a8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideby.php',
         'eef6fa3879d3efa347cd24d5eb348f85' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideinto.php',
         'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
+        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
         '9e4824c5afbdc1482b6025ce3d4dfde8' => __DIR__ . '/..' . '/league/csv/src/functions_include.php',
         'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
@@ -127,8 +126,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
             'Symfony\\Polyfill\\Php73\\' => 23,
             'Symfony\\Polyfill\\Php72\\' => 23,
             'Symfony\\Polyfill\\Mbstring\\' => 26,
-            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
-            'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
             'Symfony\\Polyfill\\Iconv\\' => 23,
             'Symfony\\Polyfill\\Ctype\\' => 23,
             'Symfony\\Contracts\\Service\\' => 26,
@@ -260,14 +257,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
         ),
-        'Symfony\\Polyfill\\Intl\\Normalizer\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
-        ),
-        'Symfony\\Polyfill\\Intl\\Idn\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
-        ),
         'Symfony\\Polyfill\\Iconv\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-iconv',
@@ -581,7 +570,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
         'ICallbackNamed' => __DIR__ . '/..' . '/rubobaquero/phpquery/phpQuery/phpQuery/Callback.php',
         'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
         'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
         'PEAR_Exception' => __DIR__ . '/..' . '/pear/pear_exception/PEAR/Exception.php',
         'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
@@ -725,11 +713,11 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json
index be1196ae09..e7fe8ccfb3 100644
--- a/civicrm/vendor/composer/installed.json
+++ b/civicrm/vendor/composer/installed.json
@@ -643,26 +643,35 @@
         },
         {
             "name": "firebase/php-jwt",
-            "version": "v5.2.1",
-            "version_normalized": "5.2.1.0",
+            "version": "v6.4.0",
+            "version_normalized": "6.4.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/firebase/php-jwt.git",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23"
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
+                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": "^7.1||^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": ">=4.8 <=9"
+                "guzzlehttp/guzzle": "^6.5||^7.4",
+                "phpspec/prophecy-phpunit": "^1.1",
+                "phpunit/phpunit": "^7.5||^9.5",
+                "psr/cache": "^1.0||^2.0",
+                "psr/http-client": "^1.0",
+                "psr/http-factory": "^1.0"
+            },
+            "suggest": {
+                "ext-sodium": "Support EdDSA (Ed25519) signatures",
+                "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
             },
-            "time": "2021-02-12T00:02:00+00:00",
+            "time": "2023-02-09T21:01:23+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -694,45 +703,54 @@
             ],
             "support": {
                 "issues": "https://github.com/firebase/php-jwt/issues",
-                "source": "https://github.com/firebase/php-jwt/tree/v5.2.1"
+                "source": "https://github.com/firebase/php-jwt/tree/v6.4.0"
             },
             "install-path": "../firebase/php-jwt"
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.5.8",
-            "version_normalized": "6.5.8.0",
+            "version": "7.6.1",
+            "version_normalized": "7.6.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.9",
-                "php": ">=5.5",
-                "symfony/polyfill-intl-idn": "^1.17"
+                "guzzlehttp/promises": "^1.5",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
             },
             "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.1",
                 "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.1"
+                "php-http/client-integration-tests": "^3.0",
+                "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
             },
             "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
                 "psr/log": "Required for using the Log middleware"
             },
-            "time": "2022-06-20T22:16:07+00:00",
+            "time": "2023-05-15T20:43:01+00:00",
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5-dev"
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
                 }
             },
             "installation-source": "dist",
@@ -786,19 +804,20 @@
                 }
             ],
             "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
                 "curl",
                 "framework",
                 "http",
                 "http client",
+                "psr-18",
+                "psr-7",
                 "rest",
                 "web service"
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+                "source": "https://github.com/guzzle/guzzle/tree/7.6.1"
             },
             "funding": [
                 {
@@ -3791,6 +3810,76 @@
             ],
             "install-path": "../symfony/dependency-injection"
         },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.5.2",
+            "version_normalized": "2.5.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2022-01-02T09:53:40+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/deprecation-contracts"
+        },
         {
             "name": "symfony/event-dispatcher",
             "version": "v4.4.42",
@@ -4262,183 +4351,6 @@
             ],
             "install-path": "../symfony/polyfill-iconv"
         },
-        {
-            "name": "symfony/polyfill-intl-idn",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-intl-normalizer": "^1.10",
-                "symfony/polyfill-php72": "^1.10"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Laurent Bassin",
-                    "email": "laurent@bassin.info"
-                },
-                {
-                    "name": "Trevor Rowbotham",
-                    "email": "trevor.rowbotham@pm.me"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "idn",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-idn"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-normalizer"
-        },
         {
             "name": "symfony/polyfill-mbstring",
             "version": "v1.27.0",
diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php
index 2302ab5f8b..d936a97850 100644
--- a/civicrm/vendor/composer/installed.php
+++ b/civicrm/vendor/composer/installed.php
@@ -1,9 +1,9 @@
 <?php return array(
     'root' => array(
         'name' => 'civicrm/civicrm-core',
-        'pretty_version' => '5.68.x-dev',
-        'version' => '5.68.9999999.9999999-dev',
-        'reference' => 'fca30dd508a215b3728b2da8bfe214c9547f99b5',
+        'pretty_version' => '5.69.x-dev',
+        'version' => '5.69.9999999.9999999-dev',
+        'reference' => '592d3f7c72623329abcf153e2af32e0fb69fe6e9',
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -38,9 +38,9 @@
             'dev_requirement' => false,
         ),
         'civicrm/civicrm-core' => array(
-            'pretty_version' => '5.68.x-dev',
-            'version' => '5.68.9999999.9999999-dev',
-            'reference' => 'fca30dd508a215b3728b2da8bfe214c9547f99b5',
+            'pretty_version' => '5.69.x-dev',
+            'version' => '5.69.9999999.9999999-dev',
+            'reference' => '592d3f7c72623329abcf153e2af32e0fb69fe6e9',
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
@@ -119,18 +119,18 @@
             'dev_requirement' => false,
         ),
         'firebase/php-jwt' => array(
-            'pretty_version' => 'v5.2.1',
-            'version' => '5.2.1.0',
-            'reference' => 'f42c9110abe98dd6cfe9053c49bc86acc70b2d23',
+            'pretty_version' => 'v6.4.0',
+            'version' => '6.4.0.0',
+            'reference' => '4dd1e007f22a927ac77da5a3fbb067b42d3bc224',
             'type' => 'library',
             'install_path' => __DIR__ . '/../firebase/php-jwt',
             'aliases' => array(),
             'dev_requirement' => false,
         ),
         'guzzlehttp/guzzle' => array(
-            'pretty_version' => '6.5.8',
-            'version' => '6.5.8.0',
-            'reference' => 'a52f0440530b54fa079ce76e8c5d196a42cad981',
+            'pretty_version' => '7.6.1',
+            'version' => '7.6.1.0',
+            'reference' => '8444a2bacf1960bc6a2b62ed86b8e72e11eebe51',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
             'aliases' => array(),
@@ -451,6 +451,12 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'psr/http-client-implementation' => array(
+            'dev_requirement' => false,
+            'provided' => array(
+                0 => '1.0',
+            ),
+        ),
         'psr/http-factory' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
@@ -562,6 +568,15 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'symfony/deprecation-contracts' => array(
+            'pretty_version' => 'v2.5.2',
+            'version' => '2.5.2.0',
+            'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
         'symfony/event-dispatcher' => array(
             'pretty_version' => 'v4.4.42',
             'version' => '4.4.42.0',
@@ -622,24 +637,6 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
-        'symfony/polyfill-intl-idn' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '639084e360537a19f9ee352433b84ce831f3d2da',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-intl-normalizer' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
         'symfony/polyfill-mbstring' => array(
             'pretty_version' => 'v1.27.0',
             'version' => '1.27.0.0',
diff --git a/civicrm/vendor/firebase/php-jwt/CHANGELOG.md b/civicrm/vendor/firebase/php-jwt/CHANGELOG.md
new file mode 100644
index 0000000000..9242bd30d5
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/CHANGELOG.md
@@ -0,0 +1,105 @@
+# Changelog
+
+## [6.4.0](https://github.com/firebase/php-jwt/compare/v6.3.2...v6.4.0) (2023-02-08)
+
+
+### Features
+
+* add support for W3C ES256K ([#462](https://github.com/firebase/php-jwt/issues/462)) ([213924f](https://github.com/firebase/php-jwt/commit/213924f51936291fbbca99158b11bd4ae56c2c95))
+* improve caching by only decoding jwks when necessary ([#486](https://github.com/firebase/php-jwt/issues/486)) ([78d3ed1](https://github.com/firebase/php-jwt/commit/78d3ed1073553f7d0bbffa6c2010009a0d483d5c))
+
+## [6.3.2](https://github.com/firebase/php-jwt/compare/v6.3.1...v6.3.2) (2022-11-01)
+
+
+### Bug Fixes
+
+* check kid before using as array index ([bad1b04](https://github.com/firebase/php-jwt/commit/bad1b040d0c736bbf86814c6b5ae614f517cf7bd))
+
+## [6.3.1](https://github.com/firebase/php-jwt/compare/v6.3.0...v6.3.1) (2022-11-01)
+
+
+### Bug Fixes
+
+* casing of GET for PSR compat ([#451](https://github.com/firebase/php-jwt/issues/451)) ([60b52b7](https://github.com/firebase/php-jwt/commit/60b52b71978790eafcf3b95cfbd83db0439e8d22))
+* string interpolation format for php 8.2 ([#446](https://github.com/firebase/php-jwt/issues/446)) ([2e07d8a](https://github.com/firebase/php-jwt/commit/2e07d8a1524d12b69b110ad649f17461d068b8f2))
+
+## 6.3.0 / 2022-07-15
+
+ - Added ES256 support to JWK parsing ([#399](https://github.com/firebase/php-jwt/pull/399))
+ - Fixed potential caching error in `CachedKeySet` by caching jwks as strings ([#435](https://github.com/firebase/php-jwt/pull/435))
+
+## 6.2.0 / 2022-05-14
+
+ - Added `CachedKeySet` ([#397](https://github.com/firebase/php-jwt/pull/397))
+ - Added `$defaultAlg` parameter to `JWT::parseKey` and `JWT::parseKeySet` ([#426](https://github.com/firebase/php-jwt/pull/426)).
+
+## 6.1.0 / 2022-03-23
+
+ - Drop support for PHP 5.3, 5.4, 5.5, 5.6, and 7.0
+ - Add parameter typing and return types where possible
+
+## 6.0.0 / 2022-01-24
+
+ - **Backwards-Compatibility Breaking Changes**: See the [Release Notes](https://github.com/firebase/php-jwt/releases/tag/v6.0.0) for more information.
+ - New Key object to prevent key/algorithm type confusion (#365)
+ - Add JWK support (#273)
+ - Add ES256 support (#256)
+ - Add ES384 support (#324)
+ - Add Ed25519 support (#343)
+
+## 5.0.0 / 2017-06-26
+- Support RS384 and RS512.
+  See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)!
+- Add an example for RS256 openssl.
+  See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)!
+- Detect invalid Base64 encoding in signature.
+  See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)!
+- Update `JWT::verify` to handle OpenSSL errors.
+  See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)!
+- Add `array` type hinting to `decode` method
+  See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)!
+- Add all JSON error types.
+  See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)!
+- Bugfix 'kid' not in given key list.
+  See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)!
+- Miscellaneous cleanup, documentation and test fixes.
+  See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115),
+  [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and
+  [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman),
+  [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)!
+
+## 4.0.0 / 2016-07-17
+- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)!
+- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)!
+- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)!
+- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)!
+
+## 3.0.0 / 2015-07-22
+- Minimum PHP version updated from `5.2.0` to `5.3.0`.
+- Add `\Firebase\JWT` namespace. See
+[#59](https://github.com/firebase/php-jwt/pull/59) for details. Thanks to
+[@Dashron](https://github.com/Dashron)!
+- Require a non-empty key to decode and verify a JWT. See
+[#60](https://github.com/firebase/php-jwt/pull/60) for details. Thanks to
+[@sjones608](https://github.com/sjones608)!
+- Cleaner documentation blocks in the code. See
+[#62](https://github.com/firebase/php-jwt/pull/62) for details. Thanks to
+[@johanderuijter](https://github.com/johanderuijter)!
+
+## 2.2.0 / 2015-06-22
+- Add support for adding custom, optional JWT headers to `JWT::encode()`. See
+[#53](https://github.com/firebase/php-jwt/pull/53/files) for details. Thanks to
+[@mcocaro](https://github.com/mcocaro)!
+
+## 2.1.0 / 2015-05-20
+- Add support for adding a leeway to `JWT:decode()` that accounts for clock skew
+between signing and verifying entities. Thanks to [@lcabral](https://github.com/lcabral)!
+- Add support for passing an object implementing the `ArrayAccess` interface for
+`$keys` argument in `JWT::decode()`. Thanks to [@aztech-dev](https://github.com/aztech-dev)!
+
+## 2.0.0 / 2015-04-01
+- **Note**: It is strongly recommended that you update to > v2.0.0 to address
+  known security vulnerabilities in prior versions when both symmetric and
+  asymmetric keys are used together.
+- Update signature for `JWT::decode(...)` to require an array of supported
+  algorithms to use when verifying token signatures.
diff --git a/civicrm/vendor/firebase/php-jwt/LICENSE b/civicrm/vendor/firebase/php-jwt/LICENSE
index cb0c49b331..11c0146651 100644
--- a/civicrm/vendor/firebase/php-jwt/LICENSE
+++ b/civicrm/vendor/firebase/php-jwt/LICENSE
@@ -13,7 +13,7 @@ modification, are permitted provided that the following conditions are met:
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Neuman Vong nor the names of other
+    * Neither the name of the copyright holder nor the names of other
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.
 
diff --git a/civicrm/vendor/firebase/php-jwt/README.md b/civicrm/vendor/firebase/php-jwt/README.md
index ba139079f1..ae2b389563 100644
--- a/civicrm/vendor/firebase/php-jwt/README.md
+++ b/civicrm/vendor/firebase/php-jwt/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/firebase/php-jwt.png?branch=master)](https://travis-ci.org/firebase/php-jwt)
+![Build Status](https://github.com/firebase/php-jwt/actions/workflows/tests.yml/badge.svg)
 [![Latest Stable Version](https://poser.pugx.org/firebase/php-jwt/v/stable)](https://packagist.org/packages/firebase/php-jwt)
 [![Total Downloads](https://poser.pugx.org/firebase/php-jwt/downloads)](https://packagist.org/packages/firebase/php-jwt)
 [![License](https://poser.pugx.org/firebase/php-jwt/license)](https://packagist.org/packages/firebase/php-jwt)
@@ -16,19 +16,26 @@ Use composer to manage your dependencies and download PHP-JWT:
 composer require firebase/php-jwt
 ```
 
+Optionally, install the `paragonie/sodium_compat` package from composer if your
+php is < 7.2 or does not have libsodium installed:
+
+```bash
+composer require paragonie/sodium_compat
+```
+
 Example
 -------
 ```php
-<?php
-use \Firebase\JWT\JWT;
-
-$key = "example_key";
-$payload = array(
-    "iss" => "http://example.org",
-    "aud" => "http://example.com",
-    "iat" => 1356999524,
-    "nbf" => 1357000000
-);
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+$key = 'example_key';
+$payload = [
+    'iss' => 'http://example.org',
+    'aud' => 'http://example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
 
 /**
  * IMPORTANT:
@@ -36,8 +43,8 @@ $payload = array(
  * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
  * for a list of spec-compliant algorithms.
  */
-$jwt = JWT::encode($payload, $key);
-$decoded = JWT::decode($jwt, $key, array('HS256'));
+$jwt = JWT::encode($payload, $key, 'HS256');
+$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
 
 print_r($decoded);
 
@@ -56,15 +63,13 @@ $decoded_array = (array) $decoded;
  * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef
  */
 JWT::$leeway = 60; // $leeway in seconds
-$decoded = JWT::decode($jwt, $key, array('HS256'));
-
-?>
+$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
 ```
 Example with RS256 (openssl)
 ----------------------------
 ```php
-<?php
-use \Firebase\JWT\JWT;
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
 
 $privateKey = <<<EOD
 -----BEGIN RSA PRIVATE KEY-----
@@ -93,17 +98,17 @@ ehde/zUxo6UvS7UrBQIDAQAB
 -----END PUBLIC KEY-----
 EOD;
 
-$payload = array(
-    "iss" => "example.org",
-    "aud" => "example.com",
-    "iat" => 1356999524,
-    "nbf" => 1357000000
-);
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
 
 $jwt = JWT::encode($payload, $privateKey, 'RS256');
 echo "Encode:\n" . print_r($jwt, true) . "\n";
 
-$decoded = JWT::decode($jwt, $publicKey, array('RS256'));
+$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));
 
 /*
  NOTE: This will now be an object instead of an associative array. To get
@@ -112,82 +117,196 @@ $decoded = JWT::decode($jwt, $publicKey, array('RS256'));
 
 $decoded_array = (array) $decoded;
 echo "Decode:\n" . print_r($decoded_array, true) . "\n";
-?>
 ```
 
+Example with a passphrase
+-------------------------
+
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+// Your passphrase
+$passphrase = '[YOUR_PASSPHRASE]';
+
+// Your private key file with passphrase
+// Can be generated with "ssh-keygen -t rsa -m pem"
+$privateKeyFile = '/path/to/key-with-passphrase.pem';
+
+// Create a private key of type "resource"
+$privateKey = openssl_pkey_get_private(
+    file_get_contents($privateKeyFile),
+    $passphrase
+);
+
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
+
+$jwt = JWT::encode($payload, $privateKey, 'RS256');
+echo "Encode:\n" . print_r($jwt, true) . "\n";
+
+// Get public key from the private key, or pull from from a file.
+$publicKey = openssl_pkey_get_details($privateKey)['key'];
+
+$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));
+echo "Decode:\n" . print_r((array) $decoded, true) . "\n";
+```
+
+Example with EdDSA (libsodium and Ed25519 signature)
+----------------------------
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+// Public and private keys are expected to be Base64 encoded. The last
+// non-empty line is used so that keys can be generated with
+// sodium_crypto_sign_keypair(). The secret keys generated by other tools may
+// need to be adjusted to match the input expected by libsodium.
+
+$keyPair = sodium_crypto_sign_keypair();
+
+$privateKey = base64_encode(sodium_crypto_sign_secretkey($keyPair));
+
+$publicKey = base64_encode(sodium_crypto_sign_publickey($keyPair));
+
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
+
+$jwt = JWT::encode($payload, $privateKey, 'EdDSA');
+echo "Encode:\n" . print_r($jwt, true) . "\n";
+
+$decoded = JWT::decode($jwt, new Key($publicKey, 'EdDSA'));
+echo "Decode:\n" . print_r((array) $decoded, true) . "\n";
+````
+
 Using JWKs
 ----------
 
 ```php
+use Firebase\JWT\JWK;
+use Firebase\JWT\JWT;
+
 // Set of keys. The "keys" key is required. For example, the JSON response to
 // this endpoint: https://www.gstatic.com/iap/verify/public_key-jwk
 $jwks = ['keys' => []];
 
-// JWK::parseKeySet($jwks) returns an associative array of **kid** to private
-// key. Pass this as the second parameter to JWT::decode.
-JWT::decode($payload, JWK::parseKeySet($jwks), $supportedAlgorithm);
+// JWK::parseKeySet($jwks) returns an associative array of **kid** to Firebase\JWT\Key
+// objects. Pass this as the second parameter to JWT::decode.
+JWT::decode($payload, JWK::parseKeySet($jwks));
+```
+
+Using Cached Key Sets
+---------------------
+
+The `CachedKeySet` class can be used to fetch and cache JWKS (JSON Web Key Sets) from a public URI.
+This has the following advantages:
+
+1. The results are cached for performance.
+2. If an unrecognized key is requested, the cache is refreshed, to accomodate for key rotation.
+3. If rate limiting is enabled, the JWKS URI will not make more than 10 requests a second.
+
+```php
+use Firebase\JWT\CachedKeySet;
+use Firebase\JWT\JWT;
+
+// The URI for the JWKS you wish to cache the results from
+$jwksUri = 'https://www.gstatic.com/iap/verify/public_key-jwk';
+
+// Create an HTTP client (can be any PSR-7 compatible HTTP client)
+$httpClient = new GuzzleHttp\Client();
+
+// Create an HTTP request factory (can be any PSR-17 compatible HTTP request factory)
+$httpFactory = new GuzzleHttp\Psr\HttpFactory();
+
+// Create a cache item pool (can be any PSR-6 compatible cache item pool)
+$cacheItemPool = Phpfastcache\CacheManager::getInstance('files');
+
+$keySet = new CachedKeySet(
+    $jwksUri,
+    $httpClient,
+    $httpFactory,
+    $cacheItemPool,
+    null, // $expiresAfter int seconds to set the JWKS to expire
+    true  // $rateLimit    true to enable rate limit of 10 RPS on lookup of invalid keys
+);
+
+$jwt = 'eyJhbGci...'; // Some JWT signed by a key from the $jwkUri above
+$decoded = JWT::decode($jwt, $keySet);
+```
+
+Miscellaneous
+-------------
+
+#### Exception Handling
+
+When a call to `JWT::decode` is invalid, it will throw one of the following exceptions:
+
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\SignatureInvalidException;
+use Firebase\JWT\BeforeValidException;
+use Firebase\JWT\ExpiredException;
+use DomainException;
+use InvalidArgumentException;
+use UnexpectedValueException;
+
+try {
+    $decoded = JWT::decode($payload, $keys);
+} catch (InvalidArgumentException $e) {
+    // provided key/key-array is empty or malformed.
+} catch (DomainException $e) {
+    // provided algorithm is unsupported OR
+    // provided key is invalid OR
+    // unknown error thrown in openSSL or libsodium OR
+    // libsodium is required but not available.
+} catch (SignatureInvalidException $e) {
+    // provided JWT signature verification failed.
+} catch (BeforeValidException $e) {
+    // provided JWT is trying to be used before "nbf" claim OR
+    // provided JWT is trying to be used before "iat" claim.
+} catch (ExpiredException $e) {
+    // provided JWT is trying to be used after "exp" claim.
+} catch (UnexpectedValueException $e) {
+    // provided JWT is malformed OR
+    // provided JWT is missing an algorithm / using an unsupported algorithm OR
+    // provided JWT algorithm does not match provided key OR
+    // provided key ID in key/key-array is empty or invalid.
+}
 ```
 
-Changelog
----------
-
-#### 5.0.0 / 2017-06-26
-- Support RS384 and RS512.
-  See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)!
-- Add an example for RS256 openssl.
-  See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)!
-- Detect invalid Base64 encoding in signature.
-  See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)!
-- Update `JWT::verify` to handle OpenSSL errors.
-  See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)!
-- Add `array` type hinting to `decode` method
-  See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)!
-- Add all JSON error types.
-  See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)!
-- Bugfix 'kid' not in given key list.
-  See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)!
-- Miscellaneous cleanup, documentation and test fixes.
-  See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115),
-  [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and
-  [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman),
-  [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)!
-
-#### 4.0.0 / 2016-07-17
-- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)!
-- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)!
-- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)!
-- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)!
-
-#### 3.0.0 / 2015-07-22
-- Minimum PHP version updated from `5.2.0` to `5.3.0`.
-- Add `\Firebase\JWT` namespace. See
-[#59](https://github.com/firebase/php-jwt/pull/59) for details. Thanks to
-[@Dashron](https://github.com/Dashron)!
-- Require a non-empty key to decode and verify a JWT. See
-[#60](https://github.com/firebase/php-jwt/pull/60) for details. Thanks to
-[@sjones608](https://github.com/sjones608)!
-- Cleaner documentation blocks in the code. See
-[#62](https://github.com/firebase/php-jwt/pull/62) for details. Thanks to
-[@johanderuijter](https://github.com/johanderuijter)!
-
-#### 2.2.0 / 2015-06-22
-- Add support for adding custom, optional JWT headers to `JWT::encode()`. See
-[#53](https://github.com/firebase/php-jwt/pull/53/files) for details. Thanks to
-[@mcocaro](https://github.com/mcocaro)!
-
-#### 2.1.0 / 2015-05-20
-- Add support for adding a leeway to `JWT:decode()` that accounts for clock skew
-between signing and verifying entities. Thanks to [@lcabral](https://github.com/lcabral)!
-- Add support for passing an object implementing the `ArrayAccess` interface for
-`$keys` argument in `JWT::decode()`. Thanks to [@aztech-dev](https://github.com/aztech-dev)!
-
-#### 2.0.0 / 2015-04-01
-- **Note**: It is strongly recommended that you update to > v2.0.0 to address
-  known security vulnerabilities in prior versions when both symmetric and
-  asymmetric keys are used together.
-- Update signature for `JWT::decode(...)` to require an array of supported
-  algorithms to use when verifying token signatures.
+All exceptions in the `Firebase\JWT` namespace extend `UnexpectedValueException`, and can be simplified
+like this:
 
+```php
+try {
+    $decoded = JWT::decode($payload, $keys);
+} catch (LogicException $e) {
+    // errors having to do with environmental setup or malformed JWT Keys
+} catch (UnexpectedValueException $e) {
+    // errors having to do with JWT signature and claims
+}
+```
+
+#### Casting to array
+
+The return value of `JWT::decode` is the generic PHP object `stdClass`. If you'd like to handle with arrays
+instead, you can do the following:
+
+```php
+// return type is stdClass
+$decoded = JWT::decode($payload, $keys);
+
+// cast to array
+$decoded = json_decode(json_encode($decoded), true);
+```
 
 Tests
 -----
diff --git a/civicrm/vendor/firebase/php-jwt/composer.json b/civicrm/vendor/firebase/php-jwt/composer.json
index 25d1cfa96a..c9aa3dbbc2 100644
--- a/civicrm/vendor/firebase/php-jwt/composer.json
+++ b/civicrm/vendor/firebase/php-jwt/composer.json
@@ -20,7 +20,11 @@
     ],
     "license": "BSD-3-Clause",
     "require": {
-        "php": ">=5.3.0"
+        "php": "^7.1||^8.0"
+    },
+    "suggest": {
+        "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present",
+        "ext-sodium": "Support EdDSA (Ed25519) signatures"
     },
     "autoload": {
         "psr-4": {
@@ -28,6 +32,11 @@
         }
     },
     "require-dev": {
-        "phpunit/phpunit": ">=4.8 <=9"
+        "guzzlehttp/guzzle": "^6.5||^7.4",
+        "phpspec/prophecy-phpunit": "^1.1",
+        "phpunit/phpunit": "^7.5||^9.5",
+        "psr/cache": "^1.0||^2.0",
+        "psr/http-client": "^1.0",
+        "psr/http-factory": "^1.0"
     }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php b/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
index fdf82bd942..c147852b98 100644
--- a/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class BeforeValidException extends \UnexpectedValueException
diff --git a/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php b/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php
new file mode 100644
index 0000000000..baf801f13f
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php
@@ -0,0 +1,258 @@
+<?php
+
+namespace Firebase\JWT;
+
+use ArrayAccess;
+use InvalidArgumentException;
+use LogicException;
+use OutOfBoundsException;
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Psr\Http\Client\ClientInterface;
+use Psr\Http\Message\RequestFactoryInterface;
+use RuntimeException;
+use UnexpectedValueException;
+
+/**
+ * @implements ArrayAccess<string, Key>
+ */
+class CachedKeySet implements ArrayAccess
+{
+    /**
+     * @var string
+     */
+    private $jwksUri;
+    /**
+     * @var ClientInterface
+     */
+    private $httpClient;
+    /**
+     * @var RequestFactoryInterface
+     */
+    private $httpFactory;
+    /**
+     * @var CacheItemPoolInterface
+     */
+    private $cache;
+    /**
+     * @var ?int
+     */
+    private $expiresAfter;
+    /**
+     * @var ?CacheItemInterface
+     */
+    private $cacheItem;
+    /**
+     * @var array<string, array<mixed>>
+     */
+    private $keySet;
+    /**
+     * @var string
+     */
+    private $cacheKey;
+    /**
+     * @var string
+     */
+    private $cacheKeyPrefix = 'jwks';
+    /**
+     * @var int
+     */
+    private $maxKeyLength = 64;
+    /**
+     * @var bool
+     */
+    private $rateLimit;
+    /**
+     * @var string
+     */
+    private $rateLimitCacheKey;
+    /**
+     * @var int
+     */
+    private $maxCallsPerMinute = 10;
+    /**
+     * @var string|null
+     */
+    private $defaultAlg;
+
+    public function __construct(
+        string $jwksUri,
+        ClientInterface $httpClient,
+        RequestFactoryInterface $httpFactory,
+        CacheItemPoolInterface $cache,
+        int $expiresAfter = null,
+        bool $rateLimit = false,
+        string $defaultAlg = null
+    ) {
+        $this->jwksUri = $jwksUri;
+        $this->httpClient = $httpClient;
+        $this->httpFactory = $httpFactory;
+        $this->cache = $cache;
+        $this->expiresAfter = $expiresAfter;
+        $this->rateLimit = $rateLimit;
+        $this->defaultAlg = $defaultAlg;
+        $this->setCacheKeys();
+    }
+
+    /**
+     * @param string $keyId
+     * @return Key
+     */
+    public function offsetGet($keyId): Key
+    {
+        if (!$this->keyIdExists($keyId)) {
+            throw new OutOfBoundsException('Key ID not found');
+        }
+        return JWK::parseKey($this->keySet[$keyId], $this->defaultAlg);
+    }
+
+    /**
+     * @param string $keyId
+     * @return bool
+     */
+    public function offsetExists($keyId): bool
+    {
+        return $this->keyIdExists($keyId);
+    }
+
+    /**
+     * @param string $offset
+     * @param Key $value
+     */
+    public function offsetSet($offset, $value): void
+    {
+        throw new LogicException('Method not implemented');
+    }
+
+    /**
+     * @param string $offset
+     */
+    public function offsetUnset($offset): void
+    {
+        throw new LogicException('Method not implemented');
+    }
+
+    /**
+     * @return array<mixed>
+     */
+    private function formatJwksForCache(string $jwks): array
+    {
+        $jwks = json_decode($jwks, true);
+
+        if (!isset($jwks['keys'])) {
+            throw new UnexpectedValueException('"keys" member must exist in the JWK Set');
+        }
+
+        if (empty($jwks['keys'])) {
+            throw new InvalidArgumentException('JWK Set did not contain any keys');
+        }
+
+        $keys = [];
+        foreach ($jwks['keys'] as $k => $v) {
+            $kid = isset($v['kid']) ? $v['kid'] : $k;
+            $keys[(string) $kid] = $v;
+        }
+
+        return $keys;
+    }
+
+    private function keyIdExists(string $keyId): bool
+    {
+        if (null === $this->keySet) {
+            $item = $this->getCacheItem();
+            // Try to load keys from cache
+            if ($item->isHit()) {
+                // item found! retrieve it
+                $this->keySet = $item->get();
+                // If the cached item is a string, the JWKS response was cached (previous behavior).
+                // Parse this into expected format array<kid, jwk> instead.
+                if (\is_string($this->keySet)) {
+                    $this->keySet = $this->formatJwksForCache($this->keySet);
+                }
+            }
+        }
+
+        if (!isset($this->keySet[$keyId])) {
+            if ($this->rateLimitExceeded()) {
+                return false;
+            }
+            $request = $this->httpFactory->createRequest('GET', $this->jwksUri);
+            $jwksResponse = $this->httpClient->sendRequest($request);
+            $this->keySet = $this->formatJwksForCache((string) $jwksResponse->getBody());
+
+            if (!isset($this->keySet[$keyId])) {
+                return false;
+            }
+
+            $item = $this->getCacheItem();
+            $item->set($this->keySet);
+            if ($this->expiresAfter) {
+                $item->expiresAfter($this->expiresAfter);
+            }
+            $this->cache->save($item);
+        }
+
+        return true;
+    }
+
+    private function rateLimitExceeded(): bool
+    {
+        if (!$this->rateLimit) {
+            return false;
+        }
+
+        $cacheItem = $this->cache->getItem($this->rateLimitCacheKey);
+        if (!$cacheItem->isHit()) {
+            $cacheItem->expiresAfter(1); // # of calls are cached each minute
+        }
+
+        $callsPerMinute = (int) $cacheItem->get();
+        if (++$callsPerMinute > $this->maxCallsPerMinute) {
+            return true;
+        }
+        $cacheItem->set($callsPerMinute);
+        $this->cache->save($cacheItem);
+        return false;
+    }
+
+    private function getCacheItem(): CacheItemInterface
+    {
+        if (\is_null($this->cacheItem)) {
+            $this->cacheItem = $this->cache->getItem($this->cacheKey);
+        }
+
+        return $this->cacheItem;
+    }
+
+    private function setCacheKeys(): void
+    {
+        if (empty($this->jwksUri)) {
+            throw new RuntimeException('JWKS URI is empty');
+        }
+
+        // ensure we do not have illegal characters
+        $key = preg_replace('|[^a-zA-Z0-9_\.!]|', '', $this->jwksUri);
+
+        // add prefix
+        $key = $this->cacheKeyPrefix . $key;
+
+        // Hash keys if they exceed $maxKeyLength of 64
+        if (\strlen($key) > $this->maxKeyLength) {
+            $key = substr(hash('sha256', $key), 0, $this->maxKeyLength);
+        }
+
+        $this->cacheKey = $key;
+
+        if ($this->rateLimit) {
+            // add prefix
+            $rateLimitKey = $this->cacheKeyPrefix . 'ratelimit' . $key;
+
+            // Hash keys if they exceed $maxKeyLength of 64
+            if (\strlen($rateLimitKey) > $this->maxKeyLength) {
+                $rateLimitKey = substr(hash('sha256', $rateLimitKey), 0, $this->maxKeyLength);
+            }
+
+            $this->rateLimitCacheKey = $rateLimitKey;
+        }
+    }
+}
diff --git a/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php b/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
index 7f7d056824..81ba52d43f 100644
--- a/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class ExpiredException extends \UnexpectedValueException
diff --git a/civicrm/vendor/firebase/php-jwt/src/JWK.php b/civicrm/vendor/firebase/php-jwt/src/JWK.php
index 7632f4a408..c7eff8ae48 100644
--- a/civicrm/vendor/firebase/php-jwt/src/JWK.php
+++ b/civicrm/vendor/firebase/php-jwt/src/JWK.php
@@ -20,12 +20,25 @@ use UnexpectedValueException;
  */
 class JWK
 {
+    private const OID = '1.2.840.10045.2.1';
+    private const ASN1_OBJECT_IDENTIFIER = 0x06;
+    private const ASN1_SEQUENCE = 0x10; // also defined in JWT
+    private const ASN1_BIT_STRING = 0x03;
+    private const EC_CURVES = [
+        'P-256' => '1.2.840.10045.3.1.7', // Len: 64
+        'secp256k1' => '1.3.132.0.10', // Len: 64
+        // 'P-384' => '1.3.132.0.34', // Len: 96 (not yet supported)
+        // 'P-521' => '1.3.132.0.35', // Len: 132 (not supported)
+    ];
+
     /**
      * Parse a set of JWK keys
      *
-     * @param array $jwks The JSON Web Key Set as an associative array
+     * @param array<mixed> $jwks The JSON Web Key Set as an associative array
+     * @param string       $defaultAlg The algorithm for the Key object if "alg" is not set in the
+     *                                 JSON Web Key Set
      *
-     * @return array An associative array that represents the set of keys
+     * @return array<string, Key> An associative array of key IDs (kid) to Key objects
      *
      * @throws InvalidArgumentException     Provided JWK Set is empty
      * @throws UnexpectedValueException     Provided JWK Set was invalid
@@ -33,21 +46,22 @@ class JWK
      *
      * @uses parseKey
      */
-    public static function parseKeySet(array $jwks)
+    public static function parseKeySet(array $jwks, string $defaultAlg = null): array
     {
-        $keys = array();
+        $keys = [];
 
         if (!isset($jwks['keys'])) {
             throw new UnexpectedValueException('"keys" member must exist in the JWK Set');
         }
+
         if (empty($jwks['keys'])) {
             throw new InvalidArgumentException('JWK Set did not contain any keys');
         }
 
         foreach ($jwks['keys'] as $k => $v) {
             $kid = isset($v['kid']) ? $v['kid'] : $k;
-            if ($key = self::parseKey($v)) {
-                $keys[$kid] = $key;
+            if ($key = self::parseKey($v, $defaultAlg)) {
+                $keys[(string) $kid] = $key;
             }
         }
 
@@ -61,9 +75,11 @@ class JWK
     /**
      * Parse a JWK key
      *
-     * @param array $jwk An individual JWK
+     * @param array<mixed> $jwk An individual JWK
+     * @param string       $defaultAlg The algorithm for the Key object if "alg" is not set in the
+     *                                 JSON Web Key Set
      *
-     * @return resource|array An associative array that represents the key
+     * @return Key The key object for the JWK
      *
      * @throws InvalidArgumentException     Provided JWK is empty
      * @throws UnexpectedValueException     Provided JWK was invalid
@@ -71,18 +87,30 @@ class JWK
      *
      * @uses createPemFromModulusAndExponent
      */
-    private static function parseKey(array $jwk)
+    public static function parseKey(array $jwk, string $defaultAlg = null): ?Key
     {
         if (empty($jwk)) {
             throw new InvalidArgumentException('JWK must not be empty');
         }
+
         if (!isset($jwk['kty'])) {
             throw new UnexpectedValueException('JWK must contain a "kty" parameter');
         }
 
+        if (!isset($jwk['alg'])) {
+            if (\is_null($defaultAlg)) {
+                // The "alg" parameter is optional in a KTY, but an algorithm is required
+                // for parsing in this library. Use the $defaultAlg parameter when parsing the
+                // key set in order to prevent this error.
+                // @see https://datatracker.ietf.org/doc/html/rfc7517#section-4.4
+                throw new UnexpectedValueException('JWK must contain an "alg" parameter');
+            }
+            $jwk['alg'] = $defaultAlg;
+        }
+
         switch ($jwk['kty']) {
             case 'RSA':
-                if (\array_key_exists('d', $jwk)) {
+                if (!empty($jwk['d'])) {
                     throw new UnexpectedValueException('RSA private keys are not supported');
                 }
                 if (!isset($jwk['n']) || !isset($jwk['e'])) {
@@ -96,11 +124,72 @@ class JWK
                         'OpenSSL error: ' . \openssl_error_string()
                     );
                 }
-                return $publicKey;
+                return new Key($publicKey, $jwk['alg']);
+            case 'EC':
+                if (isset($jwk['d'])) {
+                    // The key is actually a private key
+                    throw new UnexpectedValueException('Key data must be for a public key');
+                }
+
+                if (empty($jwk['crv'])) {
+                    throw new UnexpectedValueException('crv not set');
+                }
+
+                if (!isset(self::EC_CURVES[$jwk['crv']])) {
+                    throw new DomainException('Unrecognised or unsupported EC curve');
+                }
+
+                if (empty($jwk['x']) || empty($jwk['y'])) {
+                    throw new UnexpectedValueException('x and y not set');
+                }
+
+                $publicKey = self::createPemFromCrvAndXYCoordinates($jwk['crv'], $jwk['x'], $jwk['y']);
+                return new Key($publicKey, $jwk['alg']);
             default:
                 // Currently only RSA is supported
                 break;
         }
+
+        return null;
+    }
+
+    /**
+     * Converts the EC JWK values to pem format.
+     *
+     * @param   string  $crv The EC curve (only P-256 is supported)
+     * @param   string  $x   The EC x-coordinate
+     * @param   string  $y   The EC y-coordinate
+     *
+     * @return  string
+     */
+    private static function createPemFromCrvAndXYCoordinates(string $crv, string $x, string $y): string
+    {
+        $pem =
+            self::encodeDER(
+                self::ASN1_SEQUENCE,
+                self::encodeDER(
+                    self::ASN1_SEQUENCE,
+                    self::encodeDER(
+                        self::ASN1_OBJECT_IDENTIFIER,
+                        self::encodeOID(self::OID)
+                    )
+                    . self::encodeDER(
+                        self::ASN1_OBJECT_IDENTIFIER,
+                        self::encodeOID(self::EC_CURVES[$crv])
+                    )
+                ) .
+                self::encodeDER(
+                    self::ASN1_BIT_STRING,
+                    \chr(0x00) . \chr(0x04)
+                    . JWT::urlsafeB64Decode($x)
+                    . JWT::urlsafeB64Decode($y)
+                )
+            );
+
+        return sprintf(
+            "-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n",
+            wordwrap(base64_encode($pem), 64, "\n", true)
+        );
     }
 
     /**
@@ -113,22 +202,22 @@ class JWK
      *
      * @uses encodeLength
      */
-    private static function createPemFromModulusAndExponent($n, $e)
-    {
-        $modulus = JWT::urlsafeB64Decode($n);
-        $publicExponent = JWT::urlsafeB64Decode($e);
+    private static function createPemFromModulusAndExponent(
+        string $n,
+        string $e
+    ): string {
+        $mod = JWT::urlsafeB64Decode($n);
+        $exp = JWT::urlsafeB64Decode($e);
 
-        $components = array(
-            'modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus),
-            'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent)
-        );
+        $modulus = \pack('Ca*a*', 2, self::encodeLength(\strlen($mod)), $mod);
+        $publicExponent = \pack('Ca*a*', 2, self::encodeLength(\strlen($exp)), $exp);
 
         $rsaPublicKey = \pack(
             'Ca*a*a*',
             48,
-            self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])),
-            $components['modulus'],
-            $components['publicExponent']
+            self::encodeLength(\strlen($modulus) + \strlen($publicExponent)),
+            $modulus,
+            $publicExponent
         );
 
         // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption.
@@ -143,11 +232,9 @@ class JWK
             $rsaOID . $rsaPublicKey
         );
 
-        $rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" .
+        return "-----BEGIN PUBLIC KEY-----\r\n" .
             \chunk_split(\base64_encode($rsaPublicKey), 64) .
             '-----END PUBLIC KEY-----';
-
-        return $rsaPublicKey;
     }
 
     /**
@@ -159,7 +246,7 @@ class JWK
      * @param int $length
      * @return string
      */
-    private static function encodeLength($length)
+    private static function encodeLength(int $length): string
     {
         if ($length <= 0x7F) {
             return \chr($length);
@@ -169,4 +256,68 @@ class JWK
 
         return \pack('Ca*', 0x80 | \strlen($temp), $temp);
     }
+
+    /**
+     * Encodes a value into a DER object.
+     * Also defined in Firebase\JWT\JWT
+     *
+     * @param   int     $type DER tag
+     * @param   string  $value the value to encode
+     * @return  string  the encoded object
+     */
+    private static function encodeDER(int $type, string $value): string
+    {
+        $tag_header = 0;
+        if ($type === self::ASN1_SEQUENCE) {
+            $tag_header |= 0x20;
+        }
+
+        // Type
+        $der = \chr($tag_header | $type);
+
+        // Length
+        $der .= \chr(\strlen($value));
+
+        return $der . $value;
+    }
+
+    /**
+     * Encodes a string into a DER-encoded OID.
+     *
+     * @param   string $oid the OID string
+     * @return  string the binary DER-encoded OID
+     */
+    private static function encodeOID(string $oid): string
+    {
+        $octets = explode('.', $oid);
+
+        // Get the first octet
+        $first = (int) array_shift($octets);
+        $second = (int) array_shift($octets);
+        $oid = \chr($first * 40 + $second);
+
+        // Iterate over subsequent octets
+        foreach ($octets as $octet) {
+            if ($octet == 0) {
+                $oid .= \chr(0x00);
+                continue;
+            }
+            $bin = '';
+
+            while ($octet) {
+                $bin .= \chr(0x80 | ($octet & 0x7f));
+                $octet >>= 7;
+            }
+            $bin[0] = $bin[0] & \chr(0x7f);
+
+            // Convert to big endian if necessary
+            if (pack('V', 65534) == pack('L', 65534)) {
+                $oid .= strrev($bin);
+            } else {
+                $oid .= $bin;
+            }
+        }
+
+        return $oid;
+    }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/JWT.php b/civicrm/vendor/firebase/php-jwt/src/JWT.php
index 4860028bc6..269e8caf0d 100644
--- a/civicrm/vendor/firebase/php-jwt/src/JWT.php
+++ b/civicrm/vendor/firebase/php-jwt/src/JWT.php
@@ -2,10 +2,15 @@
 
 namespace Firebase\JWT;
 
-use \DomainException;
-use \InvalidArgumentException;
-use \UnexpectedValueException;
-use \DateTime;
+use ArrayAccess;
+use DateTime;
+use DomainException;
+use Exception;
+use InvalidArgumentException;
+use OpenSSLAsymmetricKey;
+use OpenSSLCertificate;
+use stdClass;
+use UnexpectedValueException;
 
 /**
  * JSON Web Token implementation, based on this spec:
@@ -22,46 +27,58 @@ use \DateTime;
  */
 class JWT
 {
-    const ASN1_INTEGER = 0x02;
-    const ASN1_SEQUENCE = 0x10;
-    const ASN1_BIT_STRING = 0x03;
+    private const ASN1_INTEGER = 0x02;
+    private const ASN1_SEQUENCE = 0x10;
+    private const ASN1_BIT_STRING = 0x03;
 
     /**
      * When checking nbf, iat or expiration times,
      * we want to provide some extra leeway time to
      * account for clock skew.
+     *
+     * @var int
      */
     public static $leeway = 0;
 
     /**
      * Allow the current timestamp to be specified.
      * Useful for fixing a value within unit testing.
-     *
      * Will default to PHP time() value if null.
+     *
+     * @var ?int
      */
     public static $timestamp = null;
 
-    public static $supported_algs = array(
-        'ES256' => array('openssl', 'SHA256'),
-        'HS256' => array('hash_hmac', 'SHA256'),
-        'HS384' => array('hash_hmac', 'SHA384'),
-        'HS512' => array('hash_hmac', 'SHA512'),
-        'RS256' => array('openssl', 'SHA256'),
-        'RS384' => array('openssl', 'SHA384'),
-        'RS512' => array('openssl', 'SHA512'),
-    );
+    /**
+     * @var array<string, string[]>
+     */
+    public static $supported_algs = [
+        'ES384' => ['openssl', 'SHA384'],
+        'ES256' => ['openssl', 'SHA256'],
+        'ES256K' => ['openssl', 'SHA256'],
+        'HS256' => ['hash_hmac', 'SHA256'],
+        'HS384' => ['hash_hmac', 'SHA384'],
+        'HS512' => ['hash_hmac', 'SHA512'],
+        'RS256' => ['openssl', 'SHA256'],
+        'RS384' => ['openssl', 'SHA384'],
+        'RS512' => ['openssl', 'SHA512'],
+        'EdDSA' => ['sodium_crypto', 'EdDSA'],
+    ];
 
     /**
      * Decodes a JWT string into a PHP object.
      *
-     * @param string                    $jwt            The JWT
-     * @param string|array|resource     $key            The key, or map of keys.
-     *                                                  If the algorithm used is asymmetric, this is the public key
-     * @param array                     $allowed_algs   List of supported verification algorithms
-     *                                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string                 $jwt            The JWT
+     * @param Key|array<string,Key> $keyOrKeyArray  The Key or associative array of key IDs (kid) to Key objects.
+     *                                               If the algorithm used is asymmetric, this is the public key
+     *                                               Each Key object contains an algorithm and matching key.
+     *                                               Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
+     *                                               'HS512', 'RS256', 'RS384', and 'RS512'
      *
-     * @return object The JWT's payload as a PHP object
+     * @return stdClass The JWT's payload as a PHP object
      *
+     * @throws InvalidArgumentException     Provided key/key-array was empty or malformed
+     * @throws DomainException              Provided JWT is malformed
      * @throws UnexpectedValueException     Provided JWT was invalid
      * @throws SignatureInvalidException    Provided JWT was invalid because the signature verification failed
      * @throws BeforeValidException         Provided JWT is trying to be used before it's eligible as defined by 'nbf'
@@ -71,54 +88,56 @@ class JWT
      * @uses jsonDecode
      * @uses urlsafeB64Decode
      */
-    public static function decode($jwt, $key, array $allowed_algs = array())
-    {
+    public static function decode(
+        string $jwt,
+        $keyOrKeyArray
+    ): stdClass {
+        // Validate JWT
         $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp;
 
-        if (empty($key)) {
+        if (empty($keyOrKeyArray)) {
             throw new InvalidArgumentException('Key may not be empty');
         }
         $tks = \explode('.', $jwt);
-        if (\count($tks) != 3) {
+        if (\count($tks) !== 3) {
             throw new UnexpectedValueException('Wrong number of segments');
         }
         list($headb64, $bodyb64, $cryptob64) = $tks;
-        if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) {
+        $headerRaw = static::urlsafeB64Decode($headb64);
+        if (null === ($header = static::jsonDecode($headerRaw))) {
             throw new UnexpectedValueException('Invalid header encoding');
         }
-        if (null === $payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64))) {
+        $payloadRaw = static::urlsafeB64Decode($bodyb64);
+        if (null === ($payload = static::jsonDecode($payloadRaw))) {
             throw new UnexpectedValueException('Invalid claims encoding');
         }
-        if (false === ($sig = static::urlsafeB64Decode($cryptob64))) {
-            throw new UnexpectedValueException('Invalid signature encoding');
+        if (\is_array($payload)) {
+            // prevent PHP Fatal Error in edge-cases when payload is empty array
+            $payload = (object) $payload;
+        }
+        if (!$payload instanceof stdClass) {
+            throw new UnexpectedValueException('Payload must be a JSON object');
         }
+        $sig = static::urlsafeB64Decode($cryptob64);
         if (empty($header->alg)) {
             throw new UnexpectedValueException('Empty algorithm');
         }
         if (empty(static::$supported_algs[$header->alg])) {
             throw new UnexpectedValueException('Algorithm not supported');
         }
-        if (!\in_array($header->alg, $allowed_algs)) {
-            throw new UnexpectedValueException('Algorithm not allowed');
+
+        $key = self::getKey($keyOrKeyArray, property_exists($header, 'kid') ? $header->kid : null);
+
+        // Check the algorithm
+        if (!self::constantTimeEquals($key->getAlgorithm(), $header->alg)) {
+            // See issue #351
+            throw new UnexpectedValueException('Incorrect key for this algorithm');
         }
-        if ($header->alg === 'ES256') {
-            // OpenSSL expects an ASN.1 DER sequence for ES256 signatures
+        if (\in_array($header->alg, ['ES256', 'ES256K', 'ES384'], true)) {
+            // OpenSSL expects an ASN.1 DER sequence for ES256/ES256K/ES384 signatures
             $sig = self::signatureToDER($sig);
         }
-
-        if (\is_array($key) || $key instanceof \ArrayAccess) {
-            if (isset($header->kid)) {
-                if (!isset($key[$header->kid])) {
-                    throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
-                }
-                $key = $key[$header->kid];
-            } else {
-                throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
-            }
-        }
-
-        // Check the signature
-        if (!static::verify("$headb64.$bodyb64", $sig, $key, $header->alg)) {
+        if (!self::verify("{$headb64}.{$bodyb64}", $sig, $key->getKeyMaterial(), $header->alg)) {
             throw new SignatureInvalidException('Signature verification failed');
         }
 
@@ -148,33 +167,37 @@ class JWT
     }
 
     /**
-     * Converts and signs a PHP object or array into a JWT string.
+     * Converts and signs a PHP array into a JWT string.
      *
-     * @param object|array  $payload    PHP object or array
-     * @param string        $key        The secret key.
-     *                                  If the algorithm used is asymmetric, this is the private key
-     * @param string        $alg        The signing algorithm.
-     *                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
-     * @param mixed         $keyId
-     * @param array         $head       An array with header elements to attach
+     * @param array<mixed>          $payload PHP array
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key.
+     * @param string                $alg     Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256',
+     *                                       'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string                $keyId
+     * @param array<string, string> $head    An array with header elements to attach
      *
      * @return string A signed JWT
      *
      * @uses jsonEncode
      * @uses urlsafeB64Encode
      */
-    public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
-    {
-        $header = array('typ' => 'JWT', 'alg' => $alg);
+    public static function encode(
+        array $payload,
+        $key,
+        string $alg,
+        string $keyId = null,
+        array $head = null
+    ): string {
+        $header = ['typ' => 'JWT', 'alg' => $alg];
         if ($keyId !== null) {
             $header['kid'] = $keyId;
         }
         if (isset($head) && \is_array($head)) {
             $header = \array_merge($head, $header);
         }
-        $segments = array();
-        $segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
-        $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
+        $segments = [];
+        $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($header));
+        $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($payload));
         $signing_input = \implode('.', $segments);
 
         $signature = static::sign($signing_input, $key, $alg);
@@ -186,53 +209,84 @@ class JWT
     /**
      * Sign a string with a given key and algorithm.
      *
-     * @param string            $msg    The message to sign
-     * @param string|resource   $key    The secret key
-     * @param string            $alg    The signing algorithm.
-     *                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string $msg  The message to sign
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate  $key  The secret key.
+     * @param string $alg  Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256',
+     *                    'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
      *
      * @return string An encrypted message
      *
-     * @throws DomainException Unsupported algorithm was specified
+     * @throws DomainException Unsupported algorithm or bad key was specified
      */
-    public static function sign($msg, $key, $alg = 'HS256')
-    {
+    public static function sign(
+        string $msg,
+        $key,
+        string $alg
+    ): string {
         if (empty(static::$supported_algs[$alg])) {
             throw new DomainException('Algorithm not supported');
         }
         list($function, $algorithm) = static::$supported_algs[$alg];
         switch ($function) {
             case 'hash_hmac':
+                if (!\is_string($key)) {
+                    throw new InvalidArgumentException('key must be a string when using hmac');
+                }
                 return \hash_hmac($algorithm, $msg, $key, true);
             case 'openssl':
                 $signature = '';
-                $success = \openssl_sign($msg, $signature, $key, $algorithm);
+                $success = \openssl_sign($msg, $signature, $key, $algorithm); // @phpstan-ignore-line
                 if (!$success) {
-                    throw new DomainException("OpenSSL unable to sign data");
-                } else {
-                    if ($alg === 'ES256') {
-                        $signature = self::signatureFromDER($signature, 256);
+                    throw new DomainException('OpenSSL unable to sign data');
+                }
+                if ($alg === 'ES256' || $alg === 'ES256K') {
+                    $signature = self::signatureFromDER($signature, 256);
+                } elseif ($alg === 'ES384') {
+                    $signature = self::signatureFromDER($signature, 384);
+                }
+                return $signature;
+            case 'sodium_crypto':
+                if (!\function_exists('sodium_crypto_sign_detached')) {
+                    throw new DomainException('libsodium is not available');
+                }
+                if (!\is_string($key)) {
+                    throw new InvalidArgumentException('key must be a string when using EdDSA');
+                }
+                try {
+                    // The last non-empty line is used as the key.
+                    $lines = array_filter(explode("\n", $key));
+                    $key = base64_decode((string) end($lines));
+                    if (\strlen($key) === 0) {
+                        throw new DomainException('Key cannot be empty string');
                     }
-                    return $signature;
+                    return sodium_crypto_sign_detached($msg, $key);
+                } catch (Exception $e) {
+                    throw new DomainException($e->getMessage(), 0, $e);
                 }
         }
+
+        throw new DomainException('Algorithm not supported');
     }
 
     /**
      * Verify a signature with the message, key and method. Not all methods
      * are symmetric, so we must have a separate verify and sign method.
      *
-     * @param string            $msg        The original message (header and body)
-     * @param string            $signature  The original signature
-     * @param string|resource   $key        For HS*, a string key works. for RS*, must be a resource of an openssl public key
-     * @param string            $alg        The algorithm
+     * @param string $msg         The original message (header and body)
+     * @param string $signature   The original signature
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate  $keyMaterial For HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey
+     * @param string $alg         The algorithm
      *
      * @return bool
      *
-     * @throws DomainException Invalid Algorithm or OpenSSL failure
+     * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure
      */
-    private static function verify($msg, $signature, $key, $alg)
-    {
+    private static function verify(
+        string $msg,
+        string $signature,
+        $keyMaterial,
+        string $alg
+    ): bool {
         if (empty(static::$supported_algs[$alg])) {
             throw new DomainException('Algorithm not supported');
         }
@@ -240,31 +294,45 @@ class JWT
         list($function, $algorithm) = static::$supported_algs[$alg];
         switch ($function) {
             case 'openssl':
-                $success = \openssl_verify($msg, $signature, $key, $algorithm);
+                $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); // @phpstan-ignore-line
                 if ($success === 1) {
                     return true;
-                } elseif ($success === 0) {
+                }
+                if ($success === 0) {
                     return false;
                 }
                 // returns 1 on success, 0 on failure, -1 on error.
                 throw new DomainException(
                     'OpenSSL error: ' . \openssl_error_string()
                 );
+            case 'sodium_crypto':
+                if (!\function_exists('sodium_crypto_sign_verify_detached')) {
+                    throw new DomainException('libsodium is not available');
+                }
+                if (!\is_string($keyMaterial)) {
+                    throw new InvalidArgumentException('key must be a string when using EdDSA');
+                }
+                try {
+                    // The last non-empty line is used as the key.
+                    $lines = array_filter(explode("\n", $keyMaterial));
+                    $key = base64_decode((string) end($lines));
+                    if (\strlen($key) === 0) {
+                        throw new DomainException('Key cannot be empty string');
+                    }
+                    if (\strlen($signature) === 0) {
+                        throw new DomainException('Signature cannot be empty string');
+                    }
+                    return sodium_crypto_sign_verify_detached($signature, $msg, $key);
+                } catch (Exception $e) {
+                    throw new DomainException($e->getMessage(), 0, $e);
+                }
             case 'hash_hmac':
             default:
-                $hash = \hash_hmac($algorithm, $msg, $key, true);
-                if (\function_exists('hash_equals')) {
-                    return \hash_equals($signature, $hash);
-                }
-                $len = \min(static::safeStrlen($signature), static::safeStrlen($hash));
-
-                $status = 0;
-                for ($i = 0; $i < $len; $i++) {
-                    $status |= (\ord($signature[$i]) ^ \ord($hash[$i]));
+                if (!\is_string($keyMaterial)) {
+                    throw new InvalidArgumentException('key must be a string when using hmac');
                 }
-                $status |= (static::safeStrlen($signature) ^ static::safeStrlen($hash));
-
-                return ($status === 0);
+                $hash = \hash_hmac($algorithm, $msg, $keyMaterial, true);
+                return self::constantTimeEquals($hash, $signature);
         }
     }
 
@@ -273,30 +341,16 @@ class JWT
      *
      * @param string $input JSON string
      *
-     * @return object Object representation of JSON string
+     * @return mixed The decoded JSON string
      *
      * @throws DomainException Provided string was invalid JSON
      */
-    public static function jsonDecode($input)
+    public static function jsonDecode(string $input)
     {
-        if (\version_compare(PHP_VERSION, '5.4.0', '>=') && !(\defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
-            /** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
-             * to specify that large ints (like Steam Transaction IDs) should be treated as
-             * strings, rather than the PHP default behaviour of converting them to floats.
-             */
-            $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
-        } else {
-            /** Not all servers will support that, however, so for older versions we must
-             * manually detect large ints in the JSON string and quote them (thus converting
-             *them to strings) before decoding, hence the preg_replace() call.
-             */
-            $max_int_length = \strlen((string) PHP_INT_MAX) - 1;
-            $json_without_bigints = \preg_replace('/:\s*(-?\d{'.$max_int_length.',})/', ': "$1"', $input);
-            $obj = \json_decode($json_without_bigints);
-        }
+        $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
 
         if ($errno = \json_last_error()) {
-            static::handleJsonError($errno);
+            self::handleJsonError($errno);
         } elseif ($obj === null && $input !== 'null') {
             throw new DomainException('Null result with non-null input');
         }
@@ -304,22 +358,30 @@ class JWT
     }
 
     /**
-     * Encode a PHP object into a JSON string.
+     * Encode a PHP array into a JSON string.
      *
-     * @param object|array $input A PHP object or array
+     * @param array<mixed> $input A PHP array
      *
-     * @return string JSON representation of the PHP object or array
+     * @return string JSON representation of the PHP array
      *
      * @throws DomainException Provided object could not be encoded to valid JSON
      */
-    public static function jsonEncode($input)
+    public static function jsonEncode(array $input): string
     {
-        $json = \json_encode($input);
+        if (PHP_VERSION_ID >= 50400) {
+            $json = \json_encode($input, \JSON_UNESCAPED_SLASHES);
+        } else {
+            // PHP 5.3 only
+            $json = \json_encode($input);
+        }
         if ($errno = \json_last_error()) {
-            static::handleJsonError($errno);
+            self::handleJsonError($errno);
         } elseif ($json === 'null' && $input !== null) {
             throw new DomainException('Null result with non-null input');
         }
+        if ($json === false) {
+            throw new DomainException('Provided object could not be encoded to valid JSON');
+        }
         return $json;
     }
 
@@ -329,8 +391,10 @@ class JWT
      * @param string $input A Base64 encoded string
      *
      * @return string A decoded string
+     *
+     * @throws InvalidArgumentException invalid base64 characters
      */
-    public static function urlsafeB64Decode($input)
+    public static function urlsafeB64Decode(string $input): string
     {
         $remainder = \strlen($input) % 4;
         if ($remainder) {
@@ -347,27 +411,85 @@ class JWT
      *
      * @return string The base64 encode of what you passed in
      */
-    public static function urlsafeB64Encode($input)
+    public static function urlsafeB64Encode(string $input): string
     {
         return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
     }
 
+
+    /**
+     * Determine if an algorithm has been provided for each Key
+     *
+     * @param Key|ArrayAccess<string,Key>|array<string,Key> $keyOrKeyArray
+     * @param string|null            $kid
+     *
+     * @throws UnexpectedValueException
+     *
+     * @return Key
+     */
+    private static function getKey(
+        $keyOrKeyArray,
+        ?string $kid
+    ): Key {
+        if ($keyOrKeyArray instanceof Key) {
+            return $keyOrKeyArray;
+        }
+
+        if (empty($kid)) {
+            throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
+        }
+
+        if ($keyOrKeyArray instanceof CachedKeySet) {
+            // Skip "isset" check, as this will automatically refresh if not set
+            return $keyOrKeyArray[$kid];
+        }
+
+        if (!isset($keyOrKeyArray[$kid])) {
+            throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
+        }
+
+        return $keyOrKeyArray[$kid];
+    }
+
+    /**
+     * @param string $left  The string of known length to compare against
+     * @param string $right The user-supplied string
+     * @return bool
+     */
+    public static function constantTimeEquals(string $left, string $right): bool
+    {
+        if (\function_exists('hash_equals')) {
+            return \hash_equals($left, $right);
+        }
+        $len = \min(self::safeStrlen($left), self::safeStrlen($right));
+
+        $status = 0;
+        for ($i = 0; $i < $len; $i++) {
+            $status |= (\ord($left[$i]) ^ \ord($right[$i]));
+        }
+        $status |= (self::safeStrlen($left) ^ self::safeStrlen($right));
+
+        return ($status === 0);
+    }
+
     /**
      * Helper method to create a JSON error.
      *
      * @param int $errno An error number from json_last_error()
      *
+     * @throws DomainException
+     *
      * @return void
      */
-    private static function handleJsonError($errno)
+    private static function handleJsonError(int $errno): void
     {
-        $messages = array(
+        $messages = [
             JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
             JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
             JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
             JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
             JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3
-        );
+        ];
         throw new DomainException(
             isset($messages[$errno])
             ? $messages[$errno]
@@ -382,7 +504,7 @@ class JWT
      *
      * @return int
      */
-    private static function safeStrlen($str)
+    private static function safeStrlen(string $str): int
     {
         if (\function_exists('mb_strlen')) {
             return \mb_strlen($str, '8bit');
@@ -396,10 +518,11 @@ class JWT
      * @param   string $sig The ECDSA signature to convert
      * @return  string The encoded DER object
      */
-    private static function signatureToDER($sig)
+    private static function signatureToDER(string $sig): string
     {
         // Separate the signature into r-value and s-value
-        list($r, $s) = \str_split($sig, (int) (\strlen($sig) / 2));
+        $length = max(1, (int) (\strlen($sig) / 2));
+        list($r, $s) = \str_split($sig, $length);
 
         // Trim leading zeros
         $r = \ltrim($r, "\x00");
@@ -426,9 +549,10 @@ class JWT
      *
      * @param   int     $type DER tag
      * @param   string  $value the value to encode
+     *
      * @return  string  the encoded object
      */
-    private static function encodeDER($type, $value)
+    private static function encodeDER(int $type, string $value): string
     {
         $tag_header = 0;
         if ($type === self::ASN1_SEQUENCE) {
@@ -449,9 +573,10 @@ class JWT
      *
      * @param   string  $der binary signature in DER format
      * @param   int     $keySize the number of bits in the key
+     *
      * @return  string  the signature
      */
-    private static function signatureFromDER($der, $keySize)
+    private static function signatureFromDER(string $der, int $keySize): string
     {
         // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE
         list($offset, $_) = self::readDER($der);
@@ -476,9 +601,10 @@ class JWT
      * @param string $der the binary data in DER format
      * @param int $offset the offset of the data stream containing the object
      * to decode
-     * @return array [$offset, $data] the new offset and the decoded object
+     *
+     * @return array{int, string|null} the new offset and the decoded object
      */
-    private static function readDER($der, $offset = 0)
+    private static function readDER(string $der, int $offset = 0): array
     {
         $pos = $offset;
         $size = \strlen($der);
@@ -496,7 +622,7 @@ class JWT
         }
 
         // Value
-        if ($type == self::ASN1_BIT_STRING) {
+        if ($type === self::ASN1_BIT_STRING) {
             $pos++; // Skip the first contents octet (padding indicator)
             $data = \substr($der, $pos, $len - 1);
             $pos += $len - 1;
@@ -507,6 +633,6 @@ class JWT
             $data = null;
         }
 
-        return array($pos, $data);
+        return [$pos, $data];
     }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/Key.php b/civicrm/vendor/firebase/php-jwt/src/Key.php
new file mode 100644
index 0000000000..00cf7f2edf
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/src/Key.php
@@ -0,0 +1,64 @@
+<?php
+
+namespace Firebase\JWT;
+
+use InvalidArgumentException;
+use OpenSSLAsymmetricKey;
+use OpenSSLCertificate;
+use TypeError;
+
+class Key
+{
+    /** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */
+    private $keyMaterial;
+    /** @var string */
+    private $algorithm;
+
+    /**
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial
+     * @param string $algorithm
+     */
+    public function __construct(
+        $keyMaterial,
+        string $algorithm
+    ) {
+        if (
+            !\is_string($keyMaterial)
+            && !$keyMaterial instanceof OpenSSLAsymmetricKey
+            && !$keyMaterial instanceof OpenSSLCertificate
+            && !\is_resource($keyMaterial)
+        ) {
+            throw new TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey');
+        }
+
+        if (empty($keyMaterial)) {
+            throw new InvalidArgumentException('Key material must not be empty');
+        }
+
+        if (empty($algorithm)) {
+            throw new InvalidArgumentException('Algorithm must not be empty');
+        }
+
+        // TODO: Remove in PHP 8.0 in favor of class constructor property promotion
+        $this->keyMaterial = $keyMaterial;
+        $this->algorithm = $algorithm;
+    }
+
+    /**
+     * Return the algorithm valid for this key
+     *
+     * @return string
+     */
+    public function getAlgorithm(): string
+    {
+        return $this->algorithm;
+    }
+
+    /**
+     * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate
+     */
+    public function getKeyMaterial()
+    {
+        return $this->keyMaterial;
+    }
+}
diff --git a/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php b/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
index 87cb34df79..d35dee9f18 100644
--- a/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class SignatureInvalidException extends \UnexpectedValueException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/.php_cs b/civicrm/vendor/guzzlehttp/guzzle/.php_cs
deleted file mode 100644
index 2dd5036c1f..0000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/.php_cs
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create()
-    ->setRiskyAllowed(true)
-    ->setRules([
-        '@PSR2' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'declare_strict_types' => false,
-        'concat_space' => ['spacing'=>'one'],
-        'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
-        'ordered_imports' => true,
-        // 'phpdoc_align' => ['align'=>'vertical'],
-        // 'native_function_invocation' => true,
-    ])
-    ->setFinder(
-        PhpCsFixer\Finder::create()
-            ->in(__DIR__.'/src')
-            ->in(__DIR__.'/tests')
-            ->name('*.php')
-    )
-;
-
-return $config;
diff --git a/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md b/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
index b053017a96..2cd234a3dd 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,31 +1,243 @@
 # Change Log
 
-## 6.5.8 - 2022-06-20
+Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version.
+
+## 7.6.1 - 2023-05-15
+
+### Fixed
+
+- Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values
+
+## 7.6.0 - 2023-05-14
+
+### Added
+
+- Support for setting the minimum TLS version in a unified way
+- Apply on request the version set in options parameters
+
+## 7.5.2 - 2023-05-14
+
+### Fixed
+
+- Fixed set cookie constructor validation
+- Fixed handling of files with `'0'` body
+
+### Changed
+
+- Corrected docs and default connect timeout value to 300 seconds
+
+## 7.5.1 - 2023-04-17
+
+### Fixed
+
+- Fixed `NO_PROXY` settings so that setting the `proxy` option to `no` overrides the env variable
+
+### Changed
+
+- Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5`
+
+## 7.5.0 - 2022-08-28
+
+### Added
+
+- Support PHP 8.2
+- Add request to delay closure params
+
+## 7.4.5 - 2022-06-20
+
+### Fixed
 
 * Fix change in port should be considered a change in origin
 * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin
 
-## 6.5.7 - 2022-06-09
+## 7.4.4 - 2022-06-09
+
+### Fixed
 
 * Fix failure to strip Authorization header on HTTP downgrade
 * Fix failure to strip the Cookie header on change in host or HTTP downgrade
 
-## 6.5.6 - 2022-05-25
+## 7.4.3 - 2022-05-25
+
+### Fixed
 
 * Fix cross-domain cookie leakage
 
-## 6.5.5 - 2020-06-16
+## 7.4.2 - 2022-03-20
+
+### Fixed
+
+- Remove curl auth on cross-domain redirects to align with the Authorization HTTP header
+- Reject non-HTTP schemes in StreamHandler
+- Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve`
+
+## 7.4.1 - 2021-12-06
+
+### Changed
+
+- Replaced implicit URI to string coercion [#2946](https://github.com/guzzle/guzzle/pull/2946)
+- Allow `symfony/deprecation-contracts` version 3 [#2961](https://github.com/guzzle/guzzle/pull/2961)
+
+### Fixed
+
+- Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950)
+
+## 7.4.0 - 2021-10-18
+
+### Added
+
+- Support PHP 8.1 [#2929](https://github.com/guzzle/guzzle/pull/2929), [#2939](https://github.com/guzzle/guzzle/pull/2939)
+- Support `psr/log` version 2 and 3 [#2943](https://github.com/guzzle/guzzle/pull/2943)
+
+### Fixed
+
+- Make sure we always call `restore_error_handler()` [#2915](https://github.com/guzzle/guzzle/pull/2915)
+- Fix progress parameter type compatibility between the cURL and stream handlers [#2936](https://github.com/guzzle/guzzle/pull/2936)
+- Throw `InvalidArgumentException` when an incorrect `headers` array is provided [#2916](https://github.com/guzzle/guzzle/pull/2916), [#2942](https://github.com/guzzle/guzzle/pull/2942)
+
+### Changed
+
+- Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945)
+
+## 7.3.0 - 2021-03-23
+
+### Added
+
+- Support for DER and P12 certificates [#2413](https://github.com/guzzle/guzzle/pull/2413)
+- Support the cURL (http://) scheme for StreamHandler proxies [#2850](https://github.com/guzzle/guzzle/pull/2850)
+- Support for `guzzlehttp/psr7:^2.0` [#2878](https://github.com/guzzle/guzzle/pull/2878)
+
+### Fixed
+
+- Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872)
 
-* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
+## 7.2.0 - 2020-10-10
 
-## 6.5.4 - 2020-05-25
+### Added
 
-* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+- Support for PHP 8 [#2712](https://github.com/guzzle/guzzle/pull/2712), [#2715](https://github.com/guzzle/guzzle/pull/2715), [#2789](https://github.com/guzzle/guzzle/pull/2789)
+- Support passing a body summarizer to the http errors middleware [#2795](https://github.com/guzzle/guzzle/pull/2795)
 
-## 6.5.3 - 2020-04-18
+### Fixed
 
+- Handle exceptions during response creation [#2591](https://github.com/guzzle/guzzle/pull/2591)
+- Fix CURLOPT_ENCODING not to be overwritten [#2595](https://github.com/guzzle/guzzle/pull/2595)
+- Make sure the Request always has a body object [#2804](https://github.com/guzzle/guzzle/pull/2804)
+
+### Changed
+
+- The `TooManyRedirectsException` has a response [#2660](https://github.com/guzzle/guzzle/pull/2660)
+- Avoid "functions" from dependencies [#2712](https://github.com/guzzle/guzzle/pull/2712)
+
+### Deprecated
+
+- Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786)
+
+## 7.1.1 - 2020-09-30
+
+### Fixed
+
+- Incorrect EOF detection for response body streams on Windows.
+
+### Changed
+
+- We dont connect curl `sink` on HEAD requests.
+- Removed some PHP 5 workarounds
+
+## 7.1.0 - 2020-09-22
+
+### Added
+
+- `GuzzleHttp\MessageFormatterInterface`
+
+### Fixed
+
+- Fixed issue that caused cookies with no value not to be stored.
+- On redirects, we allow all safe methods like GET, HEAD and OPTIONS.
+- Fixed logging on empty responses.
+- Make sure MessageFormatter::format returns string
+
+### Deprecated
+
+- All functions in `GuzzleHttp` has been deprecated. Use static methods on `Utils` instead.
+- `ClientInterface::getConfig()`
+- `Client::getConfig()`
+- `Client::__call()`
+- `Utils::defaultCaBundle()`
+- `CurlFactory::LOW_CURL_VERSION_NUMBER`
+
+## 7.0.1 - 2020-06-27
+
+* Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699)
+
+## 7.0.0 - 2020-06-27
+
+No changes since 7.0.0-rc1.
+
+## 7.0.0-rc1 - 2020-06-15
+
+### Changed
+
+* Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629)
+* Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675)
+
+## 7.0.0-beta2 - 2020-05-25
+
+### Added
+
+* Using `Utils` class instead of functions in the `GuzzleHttp` namespace. [#2546](https://github.com/guzzle/guzzle/pull/2546)
+* `ClientInterface::MAJOR_VERSION` [#2583](https://github.com/guzzle/guzzle/pull/2583)
+
+### Changed
+
+* Avoid the `getenv` function when unsafe [#2531](https://github.com/guzzle/guzzle/pull/2531)
+* Added real client methods [#2529](https://github.com/guzzle/guzzle/pull/2529)
+* Avoid functions due to global install conflicts [#2546](https://github.com/guzzle/guzzle/pull/2546)
 * Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
-* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
+* Adding methods for HTTP verbs like `Client::get()`, `Client::head()`, `Client::patch()` etc [#2529](https://github.com/guzzle/guzzle/pull/2529)
+* `ConnectException` extends `TransferException` [#2541](https://github.com/guzzle/guzzle/pull/2541)
+* Updated the default User Agent to "GuzzleHttp/7" [#2654](https://github.com/guzzle/guzzle/pull/2654)
+
+### Fixed
+
+* Various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+
+### Removed
+
+* Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528)
+
+## 7.0.0-beta1 - 2019-12-30
+
+The diff might look very big but 95% of Guzzle users will be able to upgrade without modification.
+Please see [the upgrade document](UPGRADING.md) that describes all BC breaking changes.
+
+### Added
+
+* Implement PSR-18 and dropped PHP 5 support [#2421](https://github.com/guzzle/guzzle/pull/2421) [#2474](https://github.com/guzzle/guzzle/pull/2474)
+* PHP 7 types [#2442](https://github.com/guzzle/guzzle/pull/2442) [#2449](https://github.com/guzzle/guzzle/pull/2449) [#2466](https://github.com/guzzle/guzzle/pull/2466) [#2497](https://github.com/guzzle/guzzle/pull/2497) [#2499](https://github.com/guzzle/guzzle/pull/2499)
+* IDN support for redirects [2424](https://github.com/guzzle/guzzle/pull/2424)
+
+### Changed
+
+* Dont allow passing null as third argument to `BadResponseException::__construct()` [#2427](https://github.com/guzzle/guzzle/pull/2427)
+* Use SAPI constant instead of method call [#2450](https://github.com/guzzle/guzzle/pull/2450)
+* Use native function invocation [#2444](https://github.com/guzzle/guzzle/pull/2444)
+* Better defaults for PHP installations with old ICU lib [2454](https://github.com/guzzle/guzzle/pull/2454)
+* Added visibility to all constants [#2462](https://github.com/guzzle/guzzle/pull/2462)
+* Dont allow passing `null` as URI to `Client::request()` and `Client::requestAsync()` [#2461](https://github.com/guzzle/guzzle/pull/2461)
+* Widen the exception argument to throwable [#2495](https://github.com/guzzle/guzzle/pull/2495)
+
+### Fixed
+
+* Logging when Promise rejected with a string [#2311](https://github.com/guzzle/guzzle/pull/2311)
+
+### Removed
+
+* Class `SeekException` [#2162](https://github.com/guzzle/guzzle/pull/2162)
+* `RequestException::getResponseBodySummary()` [#2425](https://github.com/guzzle/guzzle/pull/2425)
+* `CookieJar::getCookieValue()` [#2433](https://github.com/guzzle/guzzle/pull/2433)
+* `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440)
+* Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464)
 
 ## 6.5.2 - 2019-12-23
 
@@ -41,16 +253,13 @@
 * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
 * Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
 * Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
-  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
-  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
+* Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
 * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
 * Deprecated `ClientInterface::VERSION`
 
 ## 6.4.1 - 2019-10-23
 
-* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that 
+* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that
 * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
 
 ## 6.4.0 - 2019-10-23
@@ -372,7 +581,7 @@ object).
   * Note: This has been changed in 5.0.3 to now encode query string values by
     default unless the `rawString` argument is provided when setting the query
     string on a URL: Now allowing many more characters to be present in the
-    query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
+    query string without being percent encoded. See https://tools.ietf.org/html/rfc3986#appendix-A
 
 ## 5.0.1 - 2014-10-16
 
@@ -414,7 +623,7 @@ interfaces.
   responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
   `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
   `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
-  why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
+  why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
   This also makes the Guzzle message interfaces compatible with the current
   PSR-7 message proposal.
 * Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
@@ -600,8 +809,6 @@ interfaces.
 
 ## 4.0.0 - 2014-03-29
 
-* For more information on the 4.0 transition, see:
-  http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
 * For information on changes and upgrading, see:
   https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
 * Added `GuzzleHttp\batch()` as a convenience function for sending requests in
@@ -910,7 +1117,7 @@ interfaces.
 
 ## 3.4.0 - 2013-04-11
 
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
+* Bug fix: URLs are now resolved correctly based on https://tools.ietf.org/html/rfc3986#section-5.2. #289
 * Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
 * Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
 * Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
diff --git a/civicrm/vendor/guzzlehttp/guzzle/Dockerfile b/civicrm/vendor/guzzlehttp/guzzle/Dockerfile
deleted file mode 100644
index f6a095230e..0000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM composer:latest as setup
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-RUN set -xe \
-    && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
-    && composer require guzzlehttp/guzzle
-
-
-FROM php:7.3
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-COPY --from=setup /guzzle /guzzle
diff --git a/civicrm/vendor/guzzlehttp/guzzle/README.md b/civicrm/vendor/guzzlehttp/guzzle/README.md
index bc98e1a100..428f346f0c 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/README.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/README.md
@@ -15,6 +15,7 @@ trivial to integrate with web services.
 - Can send both synchronous and asynchronous requests using the same interface.
 - Uses PSR-7 interfaces for requests, responses, and streams. This allows you
   to utilize other PSR-7 compatible libraries with Guzzle.
+- Supports PSR-18 allowing interoperability between other PSR-18 HTTP Clients.
 - Abstracts away the underlying HTTP transport, allowing you to write
   environment and transport agnostic code; i.e., no hard dependency on cURL,
   PHP streams, sockets, or non-blocking event loops.
@@ -24,11 +25,11 @@ trivial to integrate with web services.
 $client = new \GuzzleHttp\Client();
 $response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
 
-echo $response->getStatusCode(); # 200
-echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
-echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
+echo $response->getStatusCode(); // 200
+echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
+echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}'
 
-# Send an asynchronous request.
+// Send an asynchronous request.
 $request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
 $promise = $client->sendAsync($request)->then(function ($response) {
     echo 'I completed! ' . $response->getBody();
@@ -52,29 +53,10 @@ We use GitHub issues only to discuss bugs and new features. For support please r
 The recommended way to install Guzzle is through
 [Composer](https://getcomposer.org/).
 
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
 ```bash
 composer require guzzlehttp/guzzle
 ```
 
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer update
- ```
-
 
 ## Version Guidance
 
@@ -84,7 +66,7 @@ composer update
 | 4.x     | EOL            | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >=5.4,<7.0   |
 | 5.x     | EOL            | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >=5.4,<7.4   |
 | 6.x     | Security fixes | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >=5.5,<8.0   |
-| 7.x     | Latest         | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.2 |
+| 7.x     | Latest         | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.3 |
 
 [guzzle-3-repo]: https://github.com/guzzle/guzzle3
 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
@@ -95,3 +77,18 @@ composer update
 [guzzle-5-docs]: https://docs.guzzlephp.org/en/5.3/
 [guzzle-6-docs]: https://docs.guzzlephp.org/en/6.5/
 [guzzle-7-docs]: https://docs.guzzlephp.org/en/latest/
+
+
+## Security
+
+If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/guzzle/security/policy) for more information.
+
+## License
+
+Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
+
+## For Enterprise
+
+Available as part of the Tidelift Subscription
+
+The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-guzzle?utm_source=packagist-guzzlehttp-guzzle&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md b/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
index 91d1dcc993..45417a7e1f 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
@@ -1,10 +1,60 @@
 Guzzle Upgrade Guide
 ====================
 
+6.0 to 7.0
+----------
+
+In order to take advantage of the new features of PHP, Guzzle dropped the support
+of PHP 5. The minimum supported PHP version is now PHP 7.2. Type hints and return
+types for functions and methods have been added wherever possible. 
+
+Please make sure:
+- You are calling a function or a method with the correct type.
+- If you extend a class of Guzzle; update all signatures on methods you override.
+
+#### Other backwards compatibility breaking changes
+
+- Class `GuzzleHttp\UriTemplate` is removed.
+- Class `GuzzleHttp\Exception\SeekException` is removed.
+- Classes `GuzzleHttp\Exception\BadResponseException`, `GuzzleHttp\Exception\ClientException`, 
+  `GuzzleHttp\Exception\ServerException` can no longer be initialized with an empty
+  Response as argument.
+- Class `GuzzleHttp\Exception\ConnectException` now extends `GuzzleHttp\Exception\TransferException`
+  instead of `GuzzleHttp\Exception\RequestException`.
+- Function `GuzzleHttp\Exception\ConnectException::getResponse()` is removed.
+- Function `GuzzleHttp\Exception\ConnectException::hasResponse()` is removed.
+- Constant `GuzzleHttp\ClientInterface::VERSION` is removed. Added `GuzzleHttp\ClientInterface::MAJOR_VERSION` instead.
+- Function `GuzzleHttp\Exception\RequestException::getResponseBodySummary` is removed.
+  Use `\GuzzleHttp\Psr7\get_message_body_summary` as an alternative.
+- Function `GuzzleHttp\Cookie\CookieJar::getCookieValue` is removed.
+- Request option `exception` is removed. Please use `http_errors`.
+- Request option `save_to` is removed. Please use `sink`.
+- Pool option `pool_size` is removed. Please use `concurrency`.
+- We now look for environment variables in the `$_SERVER` super global, due to thread safety issues with `getenv`. We continue to fallback to `getenv` in CLI environments, for maximum compatibility.
+- The `get`, `head`, `put`, `post`, `patch`, `delete`, `getAsync`, `headAsync`, `putAsync`, `postAsync`, `patchAsync`, and `deleteAsync` methods are now implemented as genuine methods on `GuzzleHttp\Client`, with strong typing. The original `__call` implementation remains unchanged for now, for maximum backwards compatibility, but won't be invoked under normal operation.
+- The `log` middleware will log the errors with level `error` instead of `notice` 
+- Support for international domain names (IDN) is now disabled by default, and enabling it requires installing ext-intl, linked against a modern version of the C library (ICU 4.6 or higher).
+
+#### Native functions calls
+
+All internal native functions calls of Guzzle are now prefixed with a slash. This
+change makes it impossible for method overloading by other libraries or applications.
+Example:
+
+```php
+// Before:
+curl_version();
+
+// After:
+\curl_version();
+```
+
+For the full diff you can check [here](https://github.com/guzzle/guzzle/compare/6.5.4..master).
+
 5.0 to 6.0
 ----------
 
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
+Guzzle now uses [PSR-7](https://www.php-fig.org/psr/psr-7/) for HTTP messages.
 Due to the fact that these messages are immutable, this prompted a refactoring
 of Guzzle to use a middleware based system rather than an event system. Any
 HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
@@ -167,7 +217,7 @@ passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
 
 ## Removed Fluent Interfaces
 
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
+[Fluent interfaces were removed](https://ocramius.github.io/blog/fluent-interfaces-are-evil/)
 from the following classes:
 
 - `GuzzleHttp\Collection`
@@ -820,7 +870,7 @@ HeaderInterface (e.g. toArray(), getAll(), etc.).
 3.3 to 3.4
 ----------
 
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
+Base URLs of a client now follow the rules of https://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
 
 3.2 to 3.3
 ----------
diff --git a/civicrm/vendor/guzzlehttp/guzzle/composer.json b/civicrm/vendor/guzzlehttp/guzzle/composer.json
index a57d78f605..b38d5d99fc 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/composer.json
+++ b/civicrm/vendor/guzzlehttp/guzzle/composer.json
@@ -1,6 +1,5 @@
 {
     "name": "guzzlehttp/guzzle",
-    "type": "library",
     "description": "Guzzle is a PHP HTTP client library",
     "keywords": [
         "framework",
@@ -9,9 +8,10 @@
         "web service",
         "curl",
         "client",
-        "HTTP client"
+        "HTTP client",
+        "PSR-7",
+        "PSR-18"
     ],
-    "homepage": "http://guzzlephp.org/",
     "license": "MIT",
     "authors": [
         {
@@ -51,29 +51,39 @@
         }
     ],
     "require": {
-        "php": ">=5.5",
+        "php": "^7.2.5 || ^8.0",
         "ext-json": "*",
-        "symfony/polyfill-intl-idn": "^1.17",
-        "guzzlehttp/promises": "^1.0",
-        "guzzlehttp/psr7": "^1.9"
+        "guzzlehttp/promises": "^1.5",
+        "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+        "psr/http-client": "^1.0",
+        "symfony/deprecation-contracts": "^2.2 || ^3.0"
+    },
+    "provide": {
+        "psr/http-client-implementation": "1.0"
     },
     "require-dev": {
         "ext-curl": "*",
-        "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-        "psr/log": "^1.1"
+        "bamarni/composer-bin-plugin": "^1.8.1",
+        "php-http/client-integration-tests": "^3.0",
+        "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+        "psr/log": "^1.1 || ^2.0 || ^3.0"
     },
     "suggest": {
+        "ext-curl": "Required for CURL handler support",
+        "ext-intl": "Required for Internationalized Domain Name (IDN) support",
         "psr/log": "Required for using the Log middleware"
     },
     "config": {
-        "sort-packages": true,
         "allow-plugins": {
             "bamarni/composer-bin-plugin": true
-        }
+        },
+        "preferred-install": "dist",
+        "sort-packages": true
     },
     "extra": {
-        "branch-alias": {
-            "dev-master": "6.5-dev"
+        "bamarni-bin": {
+            "bin-links": true,
+            "forward-command": false
         }
     },
     "autoload": {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php
new file mode 100644
index 0000000000..6eca94ef97
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\MessageInterface;
+
+final class BodySummarizer implements BodySummarizerInterface
+{
+    /**
+     * @var int|null
+     */
+    private $truncateAt;
+
+    public function __construct(int $truncateAt = null)
+    {
+        $this->truncateAt = $truncateAt;
+    }
+
+    /**
+     * Returns a summarized message body.
+     */
+    public function summarize(MessageInterface $message): ?string
+    {
+        return $this->truncateAt === null
+            ? \GuzzleHttp\Psr7\Message::bodySummary($message)
+            : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt);
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
new file mode 100644
index 0000000000..3e02e036e3
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\MessageInterface;
+
+interface BodySummarizerInterface
+{
+    /**
+     * Returns a summarized message body.
+     */
+    public function summarize(MessageInterface $message): ?string;
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Client.php b/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
index 315a022cf4..c21fcb6e46 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
@@ -1,31 +1,26 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJar;
 use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Exception\InvalidArgumentException;
+use GuzzleHttp\Promise as P;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
 
 /**
- * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface head(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface put(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface post(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface patch(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface delete(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface getAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface headAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface putAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface postAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface patchAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface deleteAsync(string|UriInterface $uri, array $options = [])
+ * @final
  */
-class Client implements ClientInterface
+class Client implements ClientInterface, \Psr\Http\Client\ClientInterface
 {
-    /** @var array Default request options */
+    use ClientTrait;
+
+    /**
+     * @var array Default request options
+     */
     private $config;
 
     /**
@@ -63,13 +58,13 @@ class Client implements ClientInterface
     {
         if (!isset($config['handler'])) {
             $config['handler'] = HandlerStack::create();
-        } elseif (!is_callable($config['handler'])) {
-            throw new \InvalidArgumentException('handler must be a callable');
+        } elseif (!\is_callable($config['handler'])) {
+            throw new InvalidArgumentException('handler must be a callable');
         }
 
         // Convert the base_uri to a UriInterface
         if (isset($config['base_uri'])) {
-            $config['base_uri'] = Psr7\uri_for($config['base_uri']);
+            $config['base_uri'] = Psr7\Utils::uriFor($config['base_uri']);
         }
 
         $this->configureDefaults($config);
@@ -79,19 +74,21 @@ class Client implements ClientInterface
      * @param string $method
      * @param array  $args
      *
-     * @return Promise\PromiseInterface
+     * @return PromiseInterface|ResponseInterface
+     *
+     * @deprecated Client::__call will be removed in guzzlehttp/guzzle:8.0.
      */
     public function __call($method, $args)
     {
-        if (count($args) < 1) {
-            throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
+        if (\count($args) < 1) {
+            throw new InvalidArgumentException('Magic request methods require a URI and optional options array');
         }
 
         $uri = $args[0];
-        $opts = isset($args[1]) ? $args[1] : [];
+        $opts = $args[1] ?? [];
 
-        return substr($method, -5) === 'Async'
-            ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
+        return \substr($method, -5) === 'Async'
+            ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts)
             : $this->request($method, $uri, $opts);
     }
 
@@ -100,10 +97,8 @@ class Client implements ClientInterface
      *
      * @param array $options Request options to apply to the given
      *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    public function sendAsync(RequestInterface $request, array $options = [])
+    public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface
     {
         // Merge the base URI into the request URI if needed.
         $options = $this->prepareDefaults($options);
@@ -120,15 +115,28 @@ class Client implements ClientInterface
      * @param array $options Request options to apply to the given
      *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function send(RequestInterface $request, array $options = [])
+    public function send(RequestInterface $request, array $options = []): ResponseInterface
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->sendAsync($request, $options)->wait();
     }
 
+    /**
+     * The HttpClient PSR (PSR-18) specify this method.
+     *
+     * @inheritDoc
+     */
+    public function sendRequest(RequestInterface $request): ResponseInterface
+    {
+        $options[RequestOptions::SYNCHRONOUS] = true;
+        $options[RequestOptions::ALLOW_REDIRECTS] = false;
+        $options[RequestOptions::HTTP_ERRORS] = false;
+
+        return $this->sendAsync($request, $options)->wait();
+    }
+
     /**
      * Create and send an asynchronous HTTP request.
      *
@@ -140,20 +148,18 @@ class Client implements ClientInterface
      * @param string              $method  HTTP method
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    public function requestAsync($method, $uri = '', array $options = [])
+    public function requestAsync(string $method, $uri = '', array $options = []): PromiseInterface
     {
         $options = $this->prepareDefaults($options);
         // Remove request modifying parameter because it can be done up-front.
-        $headers = isset($options['headers']) ? $options['headers'] : [];
-        $body = isset($options['body']) ? $options['body'] : null;
-        $version = isset($options['version']) ? $options['version'] : '1.1';
+        $headers = $options['headers'] ?? [];
+        $body = $options['body'] ?? null;
+        $version = $options['version'] ?? '1.1';
         // Merge the URI into the base URI.
-        $uri = $this->buildUri($uri, $options);
-        if (is_array($body)) {
-            $this->invalidBody();
+        $uri = $this->buildUri(Psr7\Utils::uriFor($uri), $options);
+        if (\is_array($body)) {
+            throw $this->invalidBody();
         }
         $request = new Psr7\Request($method, $uri, $headers, $body, $version);
         // Remove the option so that they are not doubly-applied.
@@ -173,10 +179,9 @@ class Client implements ClientInterface
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function request($method, $uri = '', array $options = [])
+    public function request(string $method, $uri = '', array $options = []): ResponseInterface
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->requestAsync($method, $uri, $options)->wait();
@@ -192,30 +197,24 @@ class Client implements ClientInterface
      * @param string|null $option The config option to retrieve.
      *
      * @return mixed
+     *
+     * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0.
      */
-    public function getConfig($option = null)
+    public function getConfig(?string $option = null)
     {
         return $option === null
             ? $this->config
-            : (isset($this->config[$option]) ? $this->config[$option] : null);
+            : ($this->config[$option] ?? null);
     }
 
-    /**
-     * @param  string|null $uri
-     *
-     * @return UriInterface
-     */
-    private function buildUri($uri, array $config)
+    private function buildUri(UriInterface $uri, array $config): UriInterface
     {
-        // for BC we accept null which would otherwise fail in uri_for
-        $uri = Psr7\uri_for($uri === null ? '' : $uri);
-
         if (isset($config['base_uri'])) {
-            $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
+            $uri = Psr7\UriResolver::resolve(Psr7\Utils::uriFor($config['base_uri']), $uri);
         }
 
         if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
-            $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
+            $idnOptions = ($config['idn_conversion'] === true) ? \IDNA_DEFAULT : $config['idn_conversion'];
             $uri = Utils::idnUriConvert($uri, $idnOptions);
         }
 
@@ -224,11 +223,8 @@ class Client implements ClientInterface
 
     /**
      * Configures the default options for a client.
-     *
-     * @param array $config
-     * @return void
      */
-    private function configureDefaults(array $config)
+    private function configureDefaults(array $config): void
     {
         $defaults = [
             'allow_redirects' => RedirectMiddleware::$defaultSettings,
@@ -236,7 +232,7 @@ class Client implements ClientInterface
             'decode_content'  => true,
             'verify'          => true,
             'cookies'         => false,
-            'idn_conversion'  => true,
+            'idn_conversion'  => false,
         ];
 
         // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -244,17 +240,17 @@ class Client implements ClientInterface
         // We can only trust the HTTP_PROXY environment variable in a CLI
         // process due to the fact that PHP has no reliable mechanism to
         // get environment variables that start with "HTTP_".
-        if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
-            $defaults['proxy']['http'] = getenv('HTTP_PROXY');
+        if (\PHP_SAPI === 'cli' && ($proxy = Utils::getenv('HTTP_PROXY'))) {
+            $defaults['proxy']['http'] = $proxy;
         }
 
-        if ($proxy = getenv('HTTPS_PROXY')) {
+        if ($proxy = Utils::getenv('HTTPS_PROXY')) {
             $defaults['proxy']['https'] = $proxy;
         }
 
-        if ($noProxy = getenv('NO_PROXY')) {
-            $cleanedNoProxy = str_replace(' ', '', $noProxy);
-            $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
+        if ($noProxy = Utils::getenv('NO_PROXY')) {
+            $cleanedNoProxy = \str_replace(' ', '', $noProxy);
+            $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy);
         }
 
         $this->config = $config + $defaults;
@@ -265,15 +261,15 @@ class Client implements ClientInterface
 
         // Add the default user-agent header.
         if (!isset($this->config['headers'])) {
-            $this->config['headers'] = ['User-Agent' => default_user_agent()];
+            $this->config['headers'] = ['User-Agent' => Utils::defaultUserAgent()];
         } else {
             // Add the User-Agent header if one was not already set.
-            foreach (array_keys($this->config['headers']) as $name) {
-                if (strtolower($name) === 'user-agent') {
+            foreach (\array_keys($this->config['headers']) as $name) {
+                if (\strtolower($name) === 'user-agent') {
                     return;
                 }
             }
-            $this->config['headers']['User-Agent'] = default_user_agent();
+            $this->config['headers']['User-Agent'] = Utils::defaultUserAgent();
         }
     }
 
@@ -281,10 +277,8 @@ class Client implements ClientInterface
      * Merges default options into the array.
      *
      * @param array $options Options to modify by reference
-     *
-     * @return array
      */
-    private function prepareDefaults(array $options)
+    private function prepareDefaults(array $options): array
     {
         $defaults = $this->config;
 
@@ -296,13 +290,13 @@ class Client implements ClientInterface
 
         // Special handling for headers is required as they are added as
         // conditional headers and as headers passed to a request ctor.
-        if (array_key_exists('headers', $options)) {
+        if (\array_key_exists('headers', $options)) {
             // Allows default headers to be unset.
             if ($options['headers'] === null) {
                 $defaults['_conditional'] = [];
                 unset($options['headers']);
-            } elseif (!is_array($options['headers'])) {
-                throw new \InvalidArgumentException('headers must be an array');
+            } elseif (!\is_array($options['headers'])) {
+                throw new InvalidArgumentException('headers must be an array');
             }
         }
 
@@ -326,65 +320,49 @@ class Client implements ClientInterface
      * as-is without merging in default options.
      *
      * @param array $options See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    private function transfer(RequestInterface $request, array $options)
+    private function transfer(RequestInterface $request, array $options): PromiseInterface
     {
-        // save_to -> sink
-        if (isset($options['save_to'])) {
-            $options['sink'] = $options['save_to'];
-            unset($options['save_to']);
-        }
-
-        // exceptions -> http_errors
-        if (isset($options['exceptions'])) {
-            $options['http_errors'] = $options['exceptions'];
-            unset($options['exceptions']);
-        }
-
         $request = $this->applyOptions($request, $options);
         /** @var HandlerStack $handler */
         $handler = $options['handler'];
 
         try {
-            return Promise\promise_for($handler($request, $options));
+            return P\Create::promiseFor($handler($request, $options));
         } catch (\Exception $e) {
-            return Promise\rejection_for($e);
+            return P\Create::rejectionFor($e);
         }
     }
 
     /**
      * Applies the array of request options to a request.
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return RequestInterface
      */
-    private function applyOptions(RequestInterface $request, array &$options)
+    private function applyOptions(RequestInterface $request, array &$options): RequestInterface
     {
         $modify = [
             'set_headers' => [],
         ];
 
         if (isset($options['headers'])) {
+            if (array_keys($options['headers']) === range(0, count($options['headers']) - 1)) {
+                throw new InvalidArgumentException('The headers array must have header name as keys.');
+            }
             $modify['set_headers'] = $options['headers'];
             unset($options['headers']);
         }
 
         if (isset($options['form_params'])) {
             if (isset($options['multipart'])) {
-                throw new \InvalidArgumentException('You cannot use '
+                throw new InvalidArgumentException('You cannot use '
                     . 'form_params and multipart at the same time. Use the '
                     . 'form_params option if you want to send application/'
                     . 'x-www-form-urlencoded requests, and the multipart '
                     . 'option to send multipart/form-data requests.');
             }
-            $options['body'] = http_build_query($options['form_params'], '', '&');
+            $options['body'] = \http_build_query($options['form_params'], '', '&');
             unset($options['form_params']);
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
         }
 
@@ -394,10 +372,10 @@ class Client implements ClientInterface
         }
 
         if (isset($options['json'])) {
-            $options['body'] = \GuzzleHttp\json_encode($options['json']);
+            $options['body'] = Utils::jsonEncode($options['json']);
             unset($options['json']);
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'application/json';
         }
 
@@ -405,47 +383,47 @@ class Client implements ClientInterface
             && $options['decode_content'] !== true
         ) {
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Accept-Encoding'], $options['_conditional']);
             $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
         }
 
         if (isset($options['body'])) {
-            if (is_array($options['body'])) {
-                $this->invalidBody();
+            if (\is_array($options['body'])) {
+                throw $this->invalidBody();
             }
-            $modify['body'] = Psr7\stream_for($options['body']);
+            $modify['body'] = Psr7\Utils::streamFor($options['body']);
             unset($options['body']);
         }
 
-        if (!empty($options['auth']) && is_array($options['auth'])) {
+        if (!empty($options['auth']) && \is_array($options['auth'])) {
             $value = $options['auth'];
-            $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
+            $type = isset($value[2]) ? \strtolower($value[2]) : 'basic';
             switch ($type) {
                 case 'basic':
                     // Ensure that we don't have the header in different case and set the new value.
-                    $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
+                    $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']);
                     $modify['set_headers']['Authorization'] = 'Basic '
-                        . base64_encode("$value[0]:$value[1]");
+                        . \base64_encode("$value[0]:$value[1]");
                     break;
                 case 'digest':
                     // @todo: Do not rely on curl
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
+                    $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST;
+                    $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
                     break;
                 case 'ntlm':
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
+                    $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM;
+                    $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
                     break;
             }
         }
 
         if (isset($options['query'])) {
             $value = $options['query'];
-            if (is_array($value)) {
-                $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
+            if (\is_array($value)) {
+                $value = \http_build_query($value, '', '&', \PHP_QUERY_RFC3986);
             }
-            if (!is_string($value)) {
-                throw new \InvalidArgumentException('query must be a string or array');
+            if (!\is_string($value)) {
+                throw new InvalidArgumentException('query must be a string or array');
             }
             $modify['query'] = $value;
             unset($options['query']);
@@ -454,16 +432,20 @@ class Client implements ClientInterface
         // Ensure that sink is not an invalid value.
         if (isset($options['sink'])) {
             // TODO: Add more sink validation?
-            if (is_bool($options['sink'])) {
-                throw new \InvalidArgumentException('sink must not be a boolean');
+            if (\is_bool($options['sink'])) {
+                throw new InvalidArgumentException('sink must not be a boolean');
             }
         }
 
-        $request = Psr7\modify_request($request, $modify);
+        if (isset($options['version'])) {
+            $modify['version'] = $options['version'];
+        }
+
+        $request = Psr7\Utils::modifyRequest($request, $modify);
         if ($request->getBody() instanceof Psr7\MultipartStream) {
             // Use a multipart/form-data POST if a Content-Type is not set.
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
                 . $request->getBody()->getBoundary();
         }
@@ -477,7 +459,7 @@ class Client implements ClientInterface
                     $modify['set_headers'][$k] = $v;
                 }
             }
-            $request = Psr7\modify_request($request, $modify);
+            $request = Psr7\Utils::modifyRequest($request, $modify);
             // Don't pass this internal value along to middleware/handlers.
             unset($options['_conditional']);
         }
@@ -486,14 +468,12 @@ class Client implements ClientInterface
     }
 
     /**
-     * Throw Exception with pre-set message.
-     * @return void
-     * @throws \InvalidArgumentException Invalid body.
+     * Return an InvalidArgumentException with pre-set message.
      */
-    private function invalidBody()
+    private function invalidBody(): InvalidArgumentException
     {
-        throw new \InvalidArgumentException('Passing in the "body" request '
-            . 'option as an array to send a POST request has been deprecated. '
+        return new InvalidArgumentException('Passing in the "body" request '
+            . 'option as an array to send a request is not supported. '
             . 'Please use the "form_params" request option to send a '
             . 'application/x-www-form-urlencoded request, or the "multipart" '
             . 'request option to send a multipart/form-data request.');
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
index 638b75dca4..6aaee61afc 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\GuzzleException;
@@ -13,9 +14,9 @@ use Psr\Http\Message\UriInterface;
 interface ClientInterface
 {
     /**
-     * @deprecated Will be removed in Guzzle 7.0.0
+     * The Guzzle major version.
      */
-    const VERSION = '6.5.5';
+    public const MAJOR_VERSION = 7;
 
     /**
      * Send an HTTP request.
@@ -24,10 +25,9 @@ interface ClientInterface
      * @param array            $options Request options to apply to the given
      *                                  request and to the transfer.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function send(RequestInterface $request, array $options = []);
+    public function send(RequestInterface $request, array $options = []): ResponseInterface;
 
     /**
      * Asynchronously send an HTTP request.
@@ -35,10 +35,8 @@ interface ClientInterface
      * @param RequestInterface $request Request to send
      * @param array            $options Request options to apply to the given
      *                                  request and to the transfer.
-     *
-     * @return PromiseInterface
      */
-    public function sendAsync(RequestInterface $request, array $options = []);
+    public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface;
 
     /**
      * Create and send an HTTP request.
@@ -51,10 +49,9 @@ interface ClientInterface
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function request($method, $uri, array $options = []);
+    public function request(string $method, $uri, array $options = []): ResponseInterface;
 
     /**
      * Create and send an asynchronous HTTP request.
@@ -67,10 +64,8 @@ interface ClientInterface
      * @param string              $method  HTTP method
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply.
-     *
-     * @return PromiseInterface
      */
-    public function requestAsync($method, $uri, array $options = []);
+    public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
 
     /**
      * Get a client configuration option.
@@ -82,6 +77,8 @@ interface ClientInterface
      * @param string|null $option The config option to retrieve.
      *
      * @return mixed
+     *
+     * @deprecated ClientInterface::getConfig will be removed in guzzlehttp/guzzle:8.0.
      */
-    public function getConfig($option = null);
+    public function getConfig(?string $option = null);
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php b/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php
new file mode 100644
index 0000000000..c584c76cbf
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php
@@ -0,0 +1,241 @@
+<?php
+
+namespace GuzzleHttp;
+
+use GuzzleHttp\Exception\GuzzleException;
+use GuzzleHttp\Promise\PromiseInterface;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\UriInterface;
+
+/**
+ * Client interface for sending HTTP requests.
+ */
+trait ClientTrait
+{
+    /**
+     * Create and send an HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string              $method  HTTP method.
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    abstract public function request(string $method, $uri, array $options = []): ResponseInterface;
+
+    /**
+     * Create and send an HTTP GET request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function get($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('GET', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP HEAD request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function head($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('HEAD', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP PUT request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function put($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('PUT', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP POST request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function post($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('POST', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP PATCH request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function patch($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('PATCH', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP DELETE request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function delete($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('DELETE', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string              $method  HTTP method
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    abstract public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
+
+    /**
+     * Create and send an asynchronous HTTP GET request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function getAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('GET', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP HEAD request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function headAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('HEAD', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP PUT request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function putAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('PUT', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP POST request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function postAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('POST', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP PATCH request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function patchAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('PATCH', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP DELETE request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function deleteAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('DELETE', $uri, $options);
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
index 394df3a7cf..9985a9814d 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 use Psr\Http\Message\RequestInterface;
@@ -9,20 +10,24 @@ use Psr\Http\Message\ResponseInterface;
  */
 class CookieJar implements CookieJarInterface
 {
-    /** @var SetCookie[] Loaded cookie data */
+    /**
+     * @var SetCookie[] Loaded cookie data
+     */
     private $cookies = [];
 
-    /** @var bool */
+    /**
+     * @var bool
+     */
     private $strictMode;
 
     /**
-     * @param bool $strictMode   Set to true to throw exceptions when invalid
+     * @param bool  $strictMode  Set to true to throw exceptions when invalid
      *                           cookies are added to the cookie jar.
      * @param array $cookieArray Array of SetCookie objects or a hash of
      *                           arrays that can be used with the SetCookie
      *                           constructor
      */
-    public function __construct($strictMode = false, $cookieArray = [])
+    public function __construct(bool $strictMode = false, array $cookieArray = [])
     {
         $this->strictMode = $strictMode;
 
@@ -39,10 +44,8 @@ class CookieJar implements CookieJarInterface
      *
      * @param array  $cookies Cookies to create the jar from
      * @param string $domain  Domain to set the cookies to
-     *
-     * @return self
      */
-    public static function fromArray(array $cookies, $domain)
+    public static function fromArray(array $cookies, string $domain): self
     {
         $cookieJar = new self();
         foreach ($cookies as $name => $value) {
@@ -57,26 +60,15 @@ class CookieJar implements CookieJarInterface
         return $cookieJar;
     }
 
-    /**
-     * @deprecated
-     */
-    public static function getCookieValue($value)
-    {
-        return $value;
-    }
-
     /**
      * Evaluate if this cookie should be persisted to storage
      * that survives between requests.
      *
-     * @param SetCookie $cookie Being evaluated.
-     * @param bool $allowSessionCookies If we should persist session cookies
-     * @return bool
+     * @param SetCookie $cookie              Being evaluated.
+     * @param bool      $allowSessionCookies If we should persist session cookies
      */
-    public static function shouldPersist(
-        SetCookie $cookie,
-        $allowSessionCookies = false
-    ) {
+    public static function shouldPersist(SetCookie $cookie, bool $allowSessionCookies = false): bool
+    {
         if ($cookie->getExpires() || $allowSessionCookies) {
             if (!$cookie->getDiscard()) {
                 return true;
@@ -90,16 +82,13 @@ class CookieJar implements CookieJarInterface
      * Finds and returns the cookie based on the name
      *
      * @param string $name cookie name to search for
+     *
      * @return SetCookie|null cookie that was found or null if not found
      */
-    public function getCookieByName($name)
+    public function getCookieByName(string $name): ?SetCookie
     {
-        // don't allow a non string name
-        if ($name === null || !is_scalar($name)) {
-            return null;
-        }
         foreach ($this->cookies as $cookie) {
-            if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
+            if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) {
                 return $cookie;
             }
         }
@@ -107,37 +96,43 @@ class CookieJar implements CookieJarInterface
         return null;
     }
 
-    public function toArray()
+    /**
+     * @inheritDoc
+     */
+    public function toArray(): array
     {
-        return array_map(function (SetCookie $cookie) {
+        return \array_map(static function (SetCookie $cookie): array {
             return $cookie->toArray();
         }, $this->getIterator()->getArrayCopy());
     }
 
-    public function clear($domain = null, $path = null, $name = null)
+    /**
+     * @inheritDoc
+     */
+    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void
     {
         if (!$domain) {
             $this->cookies = [];
             return;
         } elseif (!$path) {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($domain) {
+                static function (SetCookie $cookie) use ($domain): bool {
                     return !$cookie->matchesDomain($domain);
                 }
             );
         } elseif (!$name) {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
+                static function (SetCookie $cookie) use ($path, $domain): bool {
                     return !($cookie->matchesPath($path) &&
                         $cookie->matchesDomain($domain));
                 }
             );
         } else {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain, $name) {
+                static function (SetCookie $cookie) use ($path, $domain, $name) {
                     return !($cookie->getName() == $name &&
                         $cookie->matchesPath($path) &&
                         $cookie->matchesDomain($domain));
@@ -146,17 +141,23 @@ class CookieJar implements CookieJarInterface
         }
     }
 
-    public function clearSessionCookies()
+    /**
+     * @inheritDoc
+     */
+    public function clearSessionCookies(): void
     {
-        $this->cookies = array_filter(
+        $this->cookies = \array_filter(
             $this->cookies,
-            function (SetCookie $cookie) {
+            static function (SetCookie $cookie): bool {
                 return !$cookie->getDiscard() && $cookie->getExpires();
             }
         );
     }
 
-    public function setCookie(SetCookie $cookie)
+    /**
+     * @inheritDoc
+     */
+    public function setCookie(SetCookie $cookie): bool
     {
         // If the name string is empty (but not 0), ignore the set-cookie
         // string entirely.
@@ -170,15 +171,13 @@ class CookieJar implements CookieJarInterface
         if ($result !== true) {
             if ($this->strictMode) {
                 throw new \RuntimeException('Invalid cookie: ' . $result);
-            } else {
-                $this->removeCookieIfEmpty($cookie);
-                return false;
             }
+            $this->removeCookieIfEmpty($cookie);
+            return false;
         }
 
         // Resolve conflicts with previously set cookies
         foreach ($this->cookies as $i => $c) {
-
             // Two cookies are identical, when their path, and domain are
             // identical.
             if ($c->getPath() != $cookie->getPath() ||
@@ -217,27 +216,28 @@ class CookieJar implements CookieJarInterface
         return true;
     }
 
-    public function count()
+    public function count(): int
     {
-        return count($this->cookies);
+        return \count($this->cookies);
     }
 
-    public function getIterator()
+    /**
+     * @return \ArrayIterator<int, SetCookie>
+     */
+    public function getIterator(): \ArrayIterator
     {
-        return new \ArrayIterator(array_values($this->cookies));
+        return new \ArrayIterator(\array_values($this->cookies));
     }
 
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    ) {
+    public function extractCookies(RequestInterface $request, ResponseInterface $response): void
+    {
         if ($cookieHeader = $response->getHeader('Set-Cookie')) {
             foreach ($cookieHeader as $cookie) {
                 $sc = SetCookie::fromString($cookie);
                 if (!$sc->getDomain()) {
                     $sc->setDomain($request->getUri()->getHost());
                 }
-                if (0 !== strpos($sc->getPath(), '/')) {
+                if (0 !== \strpos($sc->getPath(), '/')) {
                     $sc->setPath($this->getCookiePathFromRequest($request));
                 }
                 if (!$sc->matchesDomain($request->getUri()->getHost())) {
@@ -254,30 +254,28 @@ class CookieJar implements CookieJarInterface
      * Computes cookie path following RFC 6265 section 5.1.4
      *
      * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
-     *
-     * @param RequestInterface $request
-     * @return string
      */
-    private function getCookiePathFromRequest(RequestInterface $request)
+    private function getCookiePathFromRequest(RequestInterface $request): string
     {
         $uriPath = $request->getUri()->getPath();
-        if (''  === $uriPath) {
+        if ('' === $uriPath) {
             return '/';
         }
-        if (0 !== strpos($uriPath, '/')) {
+        if (0 !== \strpos($uriPath, '/')) {
             return '/';
         }
         if ('/' === $uriPath) {
             return '/';
         }
-        if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
+        $lastSlashPos = \strrpos($uriPath, '/');
+        if (0 === $lastSlashPos || false === $lastSlashPos) {
             return '/';
         }
 
-        return substr($uriPath, 0, $lastSlashPos);
+        return \substr($uriPath, 0, $lastSlashPos);
     }
 
-    public function withCookieHeader(RequestInterface $request)
+    public function withCookieHeader(RequestInterface $request): RequestInterface
     {
         $values = [];
         $uri = $request->getUri();
@@ -297,17 +295,15 @@ class CookieJar implements CookieJarInterface
         }
 
         return $values
-            ? $request->withHeader('Cookie', implode('; ', $values))
+            ? $request->withHeader('Cookie', \implode('; ', $values))
             : $request;
     }
 
     /**
      * If a cookie already exists and the server asks to set it again with a
      * null value, the cookie must be deleted.
-     *
-     * @param SetCookie $cookie
      */
-    private function removeCookieIfEmpty(SetCookie $cookie)
+    private function removeCookieIfEmpty(SetCookie $cookie): void
     {
         $cookieValue = $cookie->getValue();
         if ($cookieValue === null || $cookieValue === '') {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
index 6ee11885e1..7df374b5be 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 use Psr\Http\Message\RequestInterface;
@@ -12,7 +13,8 @@ use Psr\Http\Message\ResponseInterface;
  * necessary. Subclasses are also responsible for storing and retrieving
  * cookies from a file, database, etc.
  *
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
+ * @link https://docs.python.org/2/library/cookielib.html Inspiration
+ * @extends \IteratorAggregate<SetCookie>
  */
 interface CookieJarInterface extends \Countable, \IteratorAggregate
 {
@@ -26,7 +28,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      *
      * @return RequestInterface returns the modified request.
      */
-    public function withCookieHeader(RequestInterface $request);
+    public function withCookieHeader(RequestInterface $request): RequestInterface;
 
     /**
      * Extract cookies from an HTTP response and store them in the CookieJar.
@@ -34,10 +36,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * @param RequestInterface  $request  Request that was sent
      * @param ResponseInterface $response Response that was received
      */
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    );
+    public function extractCookies(RequestInterface $request, ResponseInterface $response): void;
 
     /**
      * Sets a cookie in the cookie jar.
@@ -46,7 +45,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      *
      * @return bool Returns true on success or false on failure
      */
-    public function setCookie(SetCookie $cookie);
+    public function setCookie(SetCookie $cookie): bool;
 
     /**
      * Remove cookies currently held in the cookie jar.
@@ -61,10 +60,8 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * @param string|null $domain Clears cookies matching a domain
      * @param string|null $path   Clears cookies matching a domain and path
      * @param string|null $name   Clears cookies matching a domain, path, and name
-     *
-     * @return CookieJarInterface
      */
-    public function clear($domain = null, $path = null, $name = null);
+    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void;
 
     /**
      * Discard all sessions cookies.
@@ -73,12 +70,10 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * field set to true. To be called when the user agent shuts down according
      * to RFC 2965.
      */
-    public function clearSessionCookies();
+    public function clearSessionCookies(): void;
 
     /**
      * Converts the cookie jar to an array.
-     *
-     * @return array
      */
-    public function toArray();
+    public function toArray(): array;
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
index 3fb8600ef0..290236d543 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
@@ -1,33 +1,40 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
+use GuzzleHttp\Utils;
+
 /**
  * Persists non-session cookies using a JSON formatted file
  */
 class FileCookieJar extends CookieJar
 {
-    /** @var string filename */
+    /**
+     * @var string filename
+     */
     private $filename;
 
-    /** @var bool Control whether to persist session cookies or not. */
+    /**
+     * @var bool Control whether to persist session cookies or not.
+     */
     private $storeSessionCookies;
 
     /**
      * Create a new FileCookieJar object
      *
-     * @param string $cookieFile        File to store the cookie data
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
+     * @param string $cookieFile          File to store the cookie data
+     * @param bool   $storeSessionCookies Set to true to store session cookies
+     *                                    in the cookie jar.
      *
      * @throws \RuntimeException if the file cannot be found or created
      */
-    public function __construct($cookieFile, $storeSessionCookies = false)
+    public function __construct(string $cookieFile, bool $storeSessionCookies = false)
     {
         parent::__construct();
         $this->filename = $cookieFile;
         $this->storeSessionCookies = $storeSessionCookies;
 
-        if (file_exists($cookieFile)) {
+        if (\file_exists($cookieFile)) {
             $this->load($cookieFile);
         }
     }
@@ -44,20 +51,21 @@ class FileCookieJar extends CookieJar
      * Saves the cookies to a file.
      *
      * @param string $filename File to save
+     *
      * @throws \RuntimeException if the file cannot be found or created
      */
-    public function save($filename)
+    public function save(string $filename): void
     {
         $json = [];
+        /** @var SetCookie $cookie */
         foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
             if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
                 $json[] = $cookie->toArray();
             }
         }
 
-        $jsonStr = \GuzzleHttp\json_encode($json);
-        if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
+        $jsonStr = Utils::jsonEncode($json);
+        if (false === \file_put_contents($filename, $jsonStr, \LOCK_EX)) {
             throw new \RuntimeException("Unable to save file {$filename}");
         }
     }
@@ -68,23 +76,25 @@ class FileCookieJar extends CookieJar
      * Old cookies are kept unless overwritten by newly loaded ones.
      *
      * @param string $filename Cookie file to load.
+     *
      * @throws \RuntimeException if the file cannot be loaded.
      */
-    public function load($filename)
+    public function load(string $filename): void
     {
-        $json = file_get_contents($filename);
+        $json = \file_get_contents($filename);
         if (false === $json) {
             throw new \RuntimeException("Unable to load file {$filename}");
-        } elseif ($json === '') {
+        }
+        if ($json === '') {
             return;
         }
 
-        $data = \GuzzleHttp\json_decode($json, true);
-        if (is_array($data)) {
-            foreach (json_decode($json, true) as $cookie) {
+        $data = Utils::jsonDecode($json, true);
+        if (\is_array($data)) {
+            foreach ($data as $cookie) {
                 $this->setCookie(new SetCookie($cookie));
             }
-        } elseif (strlen($data)) {
+        } elseif (\is_scalar($data) && !empty($data)) {
             throw new \RuntimeException("Invalid cookie file: {$filename}");
         }
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
index 0224a2447b..5d51ca9820 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 /**
@@ -6,21 +7,25 @@ namespace GuzzleHttp\Cookie;
  */
 class SessionCookieJar extends CookieJar
 {
-    /** @var string session key */
+    /**
+     * @var string session key
+     */
     private $sessionKey;
-    
-    /** @var bool Control whether to persist session cookies or not. */
+
+    /**
+     * @var bool Control whether to persist session cookies or not.
+     */
     private $storeSessionCookies;
 
     /**
      * Create a new SessionCookieJar object
      *
-     * @param string $sessionKey        Session key name to store the cookie
-     *                                  data in session
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
+     * @param string $sessionKey          Session key name to store the cookie
+     *                                    data in session
+     * @param bool   $storeSessionCookies Set to true to store session cookies
+     *                                    in the cookie jar.
      */
-    public function __construct($sessionKey, $storeSessionCookies = false)
+    public function __construct(string $sessionKey, bool $storeSessionCookies = false)
     {
         parent::__construct();
         $this->sessionKey = $sessionKey;
@@ -39,33 +44,33 @@ class SessionCookieJar extends CookieJar
     /**
      * Save cookies to the client session
      */
-    public function save()
+    public function save(): void
     {
         $json = [];
+        /** @var SetCookie $cookie */
         foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
             if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
                 $json[] = $cookie->toArray();
             }
         }
 
-        $_SESSION[$this->sessionKey] = json_encode($json);
+        $_SESSION[$this->sessionKey] = \json_encode($json);
     }
 
     /**
      * Load the contents of the client session into the data array
      */
-    protected function load()
+    protected function load(): void
     {
         if (!isset($_SESSION[$this->sessionKey])) {
             return;
         }
-        $data = json_decode($_SESSION[$this->sessionKey], true);
-        if (is_array($data)) {
+        $data = \json_decode($_SESSION[$this->sessionKey], true);
+        if (\is_array($data)) {
             foreach ($data as $cookie) {
                 $this->setCookie(new SetCookie($cookie));
             }
-        } elseif (strlen($data)) {
+        } elseif (\strlen($data)) {
             throw new \RuntimeException("Invalid cookie data");
         }
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
index 55f6901a73..3f04e307ff 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 /**
@@ -6,7 +7,9 @@ namespace GuzzleHttp\Cookie;
  */
 class SetCookie
 {
-    /** @var array */
+    /**
+     * @var array
+     */
     private static $defaults = [
         'Name'     => null,
         'Value'    => null,
@@ -19,43 +22,49 @@ class SetCookie
         'HttpOnly' => false
     ];
 
-    /** @var array Cookie data */
+    /**
+     * @var array Cookie data
+     */
     private $data;
 
     /**
-     * Create a new SetCookie object from a string
+     * Create a new SetCookie object from a string.
      *
      * @param string $cookie Set-Cookie header string
-     *
-     * @return self
      */
-    public static function fromString($cookie)
+    public static function fromString(string $cookie): self
     {
         // Create the default return array
         $data = self::$defaults;
         // Explode the cookie string using a series of semicolons
-        $pieces = array_filter(array_map('trim', explode(';', $cookie)));
+        $pieces = \array_filter(\array_map('trim', \explode(';', $cookie)));
         // The name of the cookie (first kvp) must exist and include an equal sign.
-        if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
+        if (!isset($pieces[0]) || \strpos($pieces[0], '=') === false) {
             return new self($data);
         }
 
         // Add the cookie pieces into the parsed data array
         foreach ($pieces as $part) {
-            $cookieParts = explode('=', $part, 2);
-            $key = trim($cookieParts[0]);
+            $cookieParts = \explode('=', $part, 2);
+            $key = \trim($cookieParts[0]);
             $value = isset($cookieParts[1])
-                ? trim($cookieParts[1], " \n\r\t\0\x0B")
+                ? \trim($cookieParts[1], " \n\r\t\0\x0B")
                 : true;
 
             // Only check for non-cookies when cookies have been found
-            if (empty($data['Name'])) {
+            if (!isset($data['Name'])) {
                 $data['Name'] = $key;
                 $data['Value'] = $value;
             } else {
-                foreach (array_keys(self::$defaults) as $search) {
-                    if (!strcasecmp($search, $key)) {
-                        $data[$search] = $value;
+                foreach (\array_keys(self::$defaults) as $search) {
+                    if (!\strcasecmp($search, $key)) {
+                        if ($search === 'Max-Age') {
+                            if (is_numeric($value)) {
+                                $data[$search] = (int) $value;
+                            }
+                        } else {
+                            $data[$search] = $value;
+                        }
                         continue 2;
                     }
                 }
@@ -71,39 +80,81 @@ class SetCookie
      */
     public function __construct(array $data = [])
     {
-        $this->data = array_replace(self::$defaults, $data);
+        $this->data = self::$defaults;
+
+        if (isset($data['Name'])) {
+            $this->setName($data['Name']);
+        }
+
+        if (isset($data['Value'])) {
+            $this->setValue($data['Value']);
+        }
+
+        if (isset($data['Domain'])) {
+            $this->setDomain($data['Domain']);
+        }
+
+        if (isset($data['Path'])) {
+            $this->setPath($data['Path']);
+        }
+
+        if (isset($data['Max-Age'])) {
+            $this->setMaxAge($data['Max-Age']);
+        }
+
+        if (isset($data['Expires'])) {
+            $this->setExpires($data['Expires']);
+        }
+
+        if (isset($data['Secure'])) {
+            $this->setSecure($data['Secure']);
+        }
+
+        if (isset($data['Discard'])) {
+            $this->setDiscard($data['Discard']);
+        }
+
+        if (isset($data['HttpOnly'])) {
+            $this->setHttpOnly($data['HttpOnly']);
+        }
+
+        // Set the remaining values that don't have extra validation logic
+        foreach (array_diff(array_keys($data), array_keys(self::$defaults)) as $key) {
+            $this->data[$key] = $data[$key];
+        }
+
         // Extract the Expires value and turn it into a UNIX timestamp if needed
         if (!$this->getExpires() && $this->getMaxAge()) {
             // Calculate the Expires date
-            $this->setExpires(time() + $this->getMaxAge());
-        } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
-            $this->setExpires($this->getExpires());
+            $this->setExpires(\time() + $this->getMaxAge());
+        } elseif (null !== ($expires = $this->getExpires()) && !\is_numeric($expires)) {
+            $this->setExpires($expires);
         }
     }
 
     public function __toString()
     {
-        $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
+        $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; ';
         foreach ($this->data as $k => $v) {
             if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
                 if ($k === 'Expires') {
-                    $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
+                    $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
                 } else {
                     $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
                 }
             }
         }
 
-        return rtrim($str, '; ');
+        return \rtrim($str, '; ');
     }
 
-    public function toArray()
+    public function toArray(): array
     {
         return $this->data;
     }
 
     /**
-     * Get the cookie name
+     * Get the cookie name.
      *
      * @return string
      */
@@ -113,19 +164,23 @@ class SetCookie
     }
 
     /**
-     * Set the cookie name
+     * Set the cookie name.
      *
      * @param string $name Cookie name
      */
-    public function setName($name)
+    public function setName($name): void
     {
-        $this->data['Name'] = $name;
+        if (!is_string($name)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Name'] = (string) $name;
     }
 
     /**
-     * Get the cookie value
+     * Get the cookie value.
      *
-     * @return string
+     * @return string|null
      */
     public function getValue()
     {
@@ -133,17 +188,21 @@ class SetCookie
     }
 
     /**
-     * Set the cookie value
+     * Set the cookie value.
      *
      * @param string $value Cookie value
      */
-    public function setValue($value)
+    public function setValue($value): void
     {
-        $this->data['Value'] = $value;
+        if (!is_string($value)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Value'] = (string) $value;
     }
 
     /**
-     * Get the domain
+     * Get the domain.
      *
      * @return string|null
      */
@@ -153,17 +212,21 @@ class SetCookie
     }
 
     /**
-     * Set the domain of the cookie
+     * Set the domain of the cookie.
      *
-     * @param string $domain
+     * @param string|null $domain
      */
-    public function setDomain($domain)
+    public function setDomain($domain): void
     {
-        $this->data['Domain'] = $domain;
+        if (!is_string($domain) && null !== $domain) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Domain'] = null === $domain ? null : (string) $domain;
     }
 
     /**
-     * Get the path
+     * Get the path.
      *
      * @return string
      */
@@ -173,39 +236,47 @@ class SetCookie
     }
 
     /**
-     * Set the path of the cookie
+     * Set the path of the cookie.
      *
      * @param string $path Path of the cookie
      */
-    public function setPath($path)
+    public function setPath($path): void
     {
-        $this->data['Path'] = $path;
+        if (!is_string($path)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Path'] = (string) $path;
     }
 
     /**
-     * Maximum lifetime of the cookie in seconds
+     * Maximum lifetime of the cookie in seconds.
      *
      * @return int|null
      */
     public function getMaxAge()
     {
-        return $this->data['Max-Age'];
+        return null === $this->data['Max-Age'] ? null : (int) $this->data['Max-Age'];
     }
 
     /**
-     * Set the max-age of the cookie
+     * Set the max-age of the cookie.
      *
-     * @param int $maxAge Max age of the cookie in seconds
+     * @param int|null $maxAge Max age of the cookie in seconds
      */
-    public function setMaxAge($maxAge)
+    public function setMaxAge($maxAge): void
     {
-        $this->data['Max-Age'] = $maxAge;
+        if (!is_int($maxAge) && null !== $maxAge) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Max-Age'] = $maxAge === null ? null : (int) $maxAge;
     }
 
     /**
-     * The UNIX timestamp when the cookie Expires
+     * The UNIX timestamp when the cookie Expires.
      *
-     * @return mixed
+     * @return string|int|null
      */
     public function getExpires()
     {
@@ -213,21 +284,23 @@ class SetCookie
     }
 
     /**
-     * Set the unix timestamp for which the cookie will expire
+     * Set the unix timestamp for which the cookie will expire.
      *
-     * @param int $timestamp Unix timestamp
+     * @param int|string|null $timestamp Unix timestamp or any English textual datetime description.
      */
-    public function setExpires($timestamp)
+    public function setExpires($timestamp): void
     {
-        $this->data['Expires'] = is_numeric($timestamp)
-            ? (int) $timestamp
-            : strtotime($timestamp);
+        if (!is_int($timestamp) && !is_string($timestamp) && null !== $timestamp) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int, string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Expires'] = null === $timestamp ? null : (\is_numeric($timestamp) ? (int) $timestamp : \strtotime((string) $timestamp));
     }
 
     /**
-     * Get whether or not this is a secure cookie
+     * Get whether or not this is a secure cookie.
      *
-     * @return bool|null
+     * @return bool
      */
     public function getSecure()
     {
@@ -235,17 +308,21 @@ class SetCookie
     }
 
     /**
-     * Set whether or not the cookie is secure
+     * Set whether or not the cookie is secure.
      *
      * @param bool $secure Set to true or false if secure
      */
-    public function setSecure($secure)
+    public function setSecure($secure): void
     {
-        $this->data['Secure'] = $secure;
+        if (!is_bool($secure)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Secure'] = (bool) $secure;
     }
 
     /**
-     * Get whether or not this is a session cookie
+     * Get whether or not this is a session cookie.
      *
      * @return bool|null
      */
@@ -255,17 +332,21 @@ class SetCookie
     }
 
     /**
-     * Set whether or not this is a session cookie
+     * Set whether or not this is a session cookie.
      *
      * @param bool $discard Set to true or false if this is a session cookie
      */
-    public function setDiscard($discard)
+    public function setDiscard($discard): void
     {
-        $this->data['Discard'] = $discard;
+        if (!is_bool($discard)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Discard'] = (bool) $discard;
     }
 
     /**
-     * Get whether or not this is an HTTP only cookie
+     * Get whether or not this is an HTTP only cookie.
      *
      * @return bool
      */
@@ -275,13 +356,17 @@ class SetCookie
     }
 
     /**
-     * Set whether or not this is an HTTP only cookie
+     * Set whether or not this is an HTTP only cookie.
      *
      * @param bool $httpOnly Set to true or false if this is HTTP only
      */
-    public function setHttpOnly($httpOnly)
+    public function setHttpOnly($httpOnly): void
     {
-        $this->data['HttpOnly'] = $httpOnly;
+        if (!is_bool($httpOnly)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['HttpOnly'] = (bool) $httpOnly;
     }
 
     /**
@@ -298,10 +383,8 @@ class SetCookie
      *   path is a %x2F ("/") character.
      *
      * @param string $requestPath Path to check against
-     *
-     * @return bool
      */
-    public function matchesPath($requestPath)
+    public function matchesPath(string $requestPath): bool
     {
         $cookiePath = $this->getPath();
 
@@ -311,27 +394,25 @@ class SetCookie
         }
 
         // Ensure that the cookie-path is a prefix of the request path.
-        if (0 !== strpos($requestPath, $cookiePath)) {
+        if (0 !== \strpos($requestPath, $cookiePath)) {
             return false;
         }
 
         // Match if the last character of the cookie-path is "/"
-        if (substr($cookiePath, -1, 1) === '/') {
+        if (\substr($cookiePath, -1, 1) === '/') {
             return true;
         }
 
         // Match if the first character not included in cookie path is "/"
-        return substr($requestPath, strlen($cookiePath), 1) === '/';
+        return \substr($requestPath, \strlen($cookiePath), 1) === '/';
     }
 
     /**
-     * Check if the cookie matches a domain value
+     * Check if the cookie matches a domain value.
      *
      * @param string $domain Domain to check against
-     *
-     * @return bool
      */
-    public function matchesDomain($domain)
+    public function matchesDomain(string $domain): bool
     {
         $cookieDomain = $this->getDomain();
         if (null === $cookieDomain) {
@@ -339,10 +420,10 @@ class SetCookie
         }
 
         // Remove the leading '.' as per spec in RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.2.3
-        $cookieDomain = ltrim(strtolower($cookieDomain), '.');
+        // https://tools.ietf.org/html/rfc6265#section-5.2.3
+        $cookieDomain = \ltrim(\strtolower($cookieDomain), '.');
 
-        $domain = strtolower($domain);
+        $domain = \strtolower($domain);
 
         // Domain not set or exact match.
         if ('' === $cookieDomain || $domain === $cookieDomain) {
@@ -350,39 +431,36 @@ class SetCookie
         }
 
         // Matching the subdomain according to RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.1.3
-        if (filter_var($domain, FILTER_VALIDATE_IP)) {
+        // https://tools.ietf.org/html/rfc6265#section-5.1.3
+        if (\filter_var($domain, \FILTER_VALIDATE_IP)) {
             return false;
         }
 
-        return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
+        return (bool) \preg_match('/\.' . \preg_quote($cookieDomain, '/') . '$/', $domain);
     }
 
     /**
-     * Check if the cookie is expired
-     *
-     * @return bool
+     * Check if the cookie is expired.
      */
-    public function isExpired()
+    public function isExpired(): bool
     {
-        return $this->getExpires() !== null && time() > $this->getExpires();
+        return $this->getExpires() !== null && \time() > $this->getExpires();
     }
 
     /**
-     * Check if the cookie is valid according to RFC 6265
+     * Check if the cookie is valid according to RFC 6265.
      *
      * @return bool|string Returns true if valid or an error message if invalid
      */
     public function validate()
     {
-        // Names must not be empty, but can be 0
         $name = $this->getName();
-        if (empty($name) && !is_numeric($name)) {
+        if ($name === '') {
             return 'The cookie name must not be empty';
         }
 
         // Check if any of the invalid characters are present in the cookie name
-        if (preg_match(
+        if (\preg_match(
             '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
             $name
         )) {
@@ -391,17 +469,17 @@ class SetCookie
                 . 'following characters: ()<>@,;:\"/?={}';
         }
 
-        // Value must not be empty, but can be 0
+        // Value must not be null. 0 and empty string are valid. Empty strings
+        // are technically against RFC 6265, but known to happen in the wild.
         $value = $this->getValue();
-        if (empty($value) && !is_numeric($value)) {
+        if ($value === null) {
             return 'The cookie value must not be empty';
         }
 
-        // Domains must not be empty, but can be 0
-        // A "0" is not a valid internet domain, but may be used as server name
-        // in a private network.
+        // Domains must not be empty, but can be 0. "0" is not a valid internet
+        // domain, but may be used as server name in a private network.
         $domain = $this->getDomain();
-        if (empty($domain) && !is_numeric($domain)) {
+        if ($domain === null || $domain === '') {
             return 'The cookie domain must not be empty';
         }
 
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
index 427d896fb2..a80956c9d2 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 use Psr\Http\Message\RequestInterface;
@@ -10,18 +11,29 @@ use Psr\Http\Message\ResponseInterface;
 class BadResponseException extends RequestException
 {
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
+        ResponseInterface $response,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
-        if (null === $response) {
-            @trigger_error(
-                'Instantiating the ' . __CLASS__ . ' class without a Response is deprecated since version 6.3 and will be removed in 7.0.',
-                E_USER_DEPRECATED
-            );
-        }
         parent::__construct($message, $request, $response, $previous, $handlerContext);
     }
+
+    /**
+     * Current exception and the ones that extend it will always have a response.
+     */
+    public function hasResponse(): bool
+    {
+        return true;
+    }
+
+    /**
+     * This function narrows the return type from the parent class and does not allow it to be nullable.
+     */
+    public function getResponse(): ResponseInterface
+    {
+        /** @var ResponseInterface */
+        return parent::getResponse();
+    }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
index 4cfd393cc1..12fa5e3518 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 /**
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
index d33b0cc19d..e1a31519cf 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
@@ -1,6 +1,8 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
+use Psr\Http\Client\NetworkExceptionInterface;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -8,30 +10,47 @@ use Psr\Http\Message\RequestInterface;
  *
  * Note that no response is present for a ConnectException
  */
-class ConnectException extends RequestException
+class ConnectException extends TransferException implements NetworkExceptionInterface
 {
+    /**
+     * @var RequestInterface
+     */
+    private $request;
+
+    /**
+     * @var array
+     */
+    private $handlerContext;
+
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
-        \Exception $previous = null,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
-        parent::__construct($message, $request, null, $previous, $handlerContext);
+        parent::__construct($message, 0, $previous);
+        $this->request = $request;
+        $this->handlerContext = $handlerContext;
     }
 
     /**
-     * @return null
+     * Get the request that caused the exception
      */
-    public function getResponse()
+    public function getRequest(): RequestInterface
     {
-        return null;
+        return $this->request;
     }
 
     /**
-     * @return bool
+     * Get contextual information about the error from the underlying handler.
+     *
+     * The contents of this array will vary depending on which handler you are
+     * using. It may also be just an empty array. Relying on this data will
+     * couple you to a specific handler, but can give more debug information
+     * when needed.
      */
-    public function hasResponse()
+    public function getHandlerContext(): array
     {
-        return false;
+        return $this->handlerContext;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
index 27b2722b0b..fa3ed6998c 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
@@ -1,23 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
-use Throwable;
+use Psr\Http\Client\ClientExceptionInterface;
 
-if (interface_exists(Throwable::class)) {
-    interface GuzzleException extends Throwable
-    {
-    }
-} else {
-    /**
-     * @method string getMessage()
-     * @method \Throwable|null getPrevious()
-     * @method mixed getCode()
-     * @method string getFile()
-     * @method int getLine()
-     * @method array getTrace()
-     * @method string getTraceAsString()
-     */
-    interface GuzzleException
-    {
-    }
+interface GuzzleException extends ClientExceptionInterface
+{
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
index 12dd081eb6..c2d0a9cccf 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -1,7 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
-use GuzzleHttp\Promise\PromiseInterface;
+use GuzzleHttp\BodySummarizer;
+use GuzzleHttp\BodySummarizerInterface;
+use Psr\Http\Client\RequestExceptionInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -9,28 +12,32 @@ use Psr\Http\Message\UriInterface;
 /**
  * HTTP Request exception
  */
-class RequestException extends TransferException
+class RequestException extends TransferException implements RequestExceptionInterface
 {
-    /** @var RequestInterface */
+    /**
+     * @var RequestInterface
+     */
     private $request;
 
-    /** @var ResponseInterface|null */
+    /**
+     * @var ResponseInterface|null
+     */
     private $response;
 
-    /** @var array */
+    /**
+     * @var array
+     */
     private $handlerContext;
 
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
         ResponseInterface $response = null,
-        \Exception $previous = null,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
         // Set the code of the exception if the response is set and not future.
-        $code = $response && !($response instanceof PromiseInterface)
-            ? $response->getStatusCode()
-            : 0;
+        $code = $response ? $response->getStatusCode() : 0;
         parent::__construct($message, $code, $previous);
         $this->request = $request;
         $this->response = $response;
@@ -39,46 +46,39 @@ class RequestException extends TransferException
 
     /**
      * Wrap non-RequestExceptions with a RequestException
-     *
-     * @param RequestInterface $request
-     * @param \Exception       $e
-     *
-     * @return RequestException
      */
-    public static function wrapException(RequestInterface $request, \Exception $e)
+    public static function wrapException(RequestInterface $request, \Throwable $e): RequestException
     {
-        return $e instanceof RequestException
-            ? $e
-            : new RequestException($e->getMessage(), $request, null, $e);
+        return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e);
     }
 
     /**
      * Factory method to create a new exception with a normalized error message
      *
-     * @param RequestInterface  $request  Request
-     * @param ResponseInterface $response Response received
-     * @param \Exception        $previous Previous exception
-     * @param array             $ctx      Optional handler context.
-     *
-     * @return self
+     * @param RequestInterface             $request        Request sent
+     * @param ResponseInterface            $response       Response received
+     * @param \Throwable|null              $previous       Previous exception
+     * @param array                        $handlerContext Optional handler context
+     * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer
      */
     public static function create(
         RequestInterface $request,
         ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $ctx = []
-    ) {
+        \Throwable $previous = null,
+        array $handlerContext = [],
+        BodySummarizerInterface $bodySummarizer = null
+    ): self {
         if (!$response) {
             return new self(
                 'Error completing request',
                 $request,
                 null,
                 $previous,
-                $ctx
+                $handlerContext
             );
         }
 
-        $level = (int) floor($response->getStatusCode() / 100);
+        $level = (int) \floor($response->getStatusCode() / 100);
         if ($level === 4) {
             $label = 'Client error';
             $className = ClientException::class;
@@ -95,51 +95,33 @@ class RequestException extends TransferException
 
         // Client Error: `GET /` resulted in a `404 Not Found` response:
         // <html> ... (truncated)
-        $message = sprintf(
+        $message = \sprintf(
             '%s: `%s %s` resulted in a `%s %s` response',
             $label,
             $request->getMethod(),
-            $uri,
+            $uri->__toString(),
             $response->getStatusCode(),
             $response->getReasonPhrase()
         );
 
-        $summary = static::getResponseBodySummary($response);
+        $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response);
 
         if ($summary !== null) {
             $message .= ":\n{$summary}\n";
         }
 
-        return new $className($message, $request, $response, $previous, $ctx);
-    }
-
-    /**
-     * Get a short summary of the response
-     *
-     * Will return `null` if the response is not printable.
-     *
-     * @param ResponseInterface $response
-     *
-     * @return string|null
-     */
-    public static function getResponseBodySummary(ResponseInterface $response)
-    {
-        return \GuzzleHttp\Psr7\get_message_body_summary($response);
+        return new $className($message, $request, $response, $previous, $handlerContext);
     }
 
     /**
      * Obfuscates URI if there is a username and a password present
-     *
-     * @param UriInterface $uri
-     *
-     * @return UriInterface
      */
-    private static function obfuscateUri(UriInterface $uri)
+    private static function obfuscateUri(UriInterface $uri): UriInterface
     {
         $userInfo = $uri->getUserInfo();
 
-        if (false !== ($pos = strpos($userInfo, ':'))) {
-            return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
+        if (false !== ($pos = \strpos($userInfo, ':'))) {
+            return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
         }
 
         return $uri;
@@ -147,30 +129,24 @@ class RequestException extends TransferException
 
     /**
      * Get the request that caused the exception
-     *
-     * @return RequestInterface
      */
-    public function getRequest()
+    public function getRequest(): RequestInterface
     {
         return $this->request;
     }
 
     /**
      * Get the associated response
-     *
-     * @return ResponseInterface|null
      */
-    public function getResponse()
+    public function getResponse(): ?ResponseInterface
     {
         return $this->response;
     }
 
     /**
      * Check if a response was received
-     *
-     * @return bool
      */
-    public function hasResponse()
+    public function hasResponse(): bool
     {
         return $this->response !== null;
     }
@@ -182,10 +158,8 @@ class RequestException extends TransferException
      * using. It may also be just an empty array. Relying on this data will
      * couple you to a specific handler, but can give more debug information
      * when needed.
-     *
-     * @return array
      */
-    public function getHandlerContext()
+    public function getHandlerContext(): array
     {
         return $this->handlerContext;
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c28926c..0000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Exception thrown when a seek fails on a stream.
- */
-class SeekException extends \RuntimeException implements GuzzleException
-{
-    private $stream;
-
-    public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
-    {
-        $this->stream = $stream;
-        $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
-        parent::__construct($msg);
-    }
-
-    /**
-     * @return StreamInterface
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
index 127094c149..8055e067c0 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 /**
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
index fff05251d5..fad3a57cfd 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 class TooManyRedirectsException extends RequestException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
index 7c11db3abc..5076336080 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 class TransferException extends \RuntimeException implements GuzzleException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
index 4a28a96ebc..95375e30e7 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
@@ -1,37 +1,50 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\ConnectException;
 use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7\LazyOpenStream;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Creates curl resources from a request
+ *
+ * @final
  */
 class CurlFactory implements CurlFactoryInterface
 {
-    const CURL_VERSION_STR = 'curl_version';
-    const LOW_CURL_VERSION_NUMBER = '7.21.2';
+    public const CURL_VERSION_STR = 'curl_version';
+
+    /**
+     * @deprecated
+     */
+    public const LOW_CURL_VERSION_NUMBER = '7.21.2';
 
-    /** @var array */
+    /**
+     * @var resource[]|\CurlHandle[]
+     */
     private $handles = [];
 
-    /** @var int Total number of idle handles to keep in cache */
+    /**
+     * @var int Total number of idle handles to keep in cache
+     */
     private $maxHandles;
 
     /**
      * @param int $maxHandles Maximum number of idle handles.
      */
-    public function __construct($maxHandles)
+    public function __construct(int $maxHandles)
     {
         $this->maxHandles = $maxHandles;
     }
 
-    public function create(RequestInterface $request, array $options)
+    public function create(RequestInterface $request, array $options): EasyHandle
     {
         if (isset($options['curl']['body_as_string'])) {
             $options['_body_as_string'] = $options['curl']['body_as_string'];
@@ -49,35 +62,33 @@ class CurlFactory implements CurlFactoryInterface
 
         // Add handler options from the request configuration options
         if (isset($options['curl'])) {
-            $conf = array_replace($conf, $options['curl']);
+            $conf = \array_replace($conf, $options['curl']);
         }
 
-        $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
-        $easy->handle = $this->handles
-            ? array_pop($this->handles)
-            : curl_init();
+        $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
+        $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init();
         curl_setopt_array($easy->handle, $conf);
 
         return $easy;
     }
 
-    public function release(EasyHandle $easy)
+    public function release(EasyHandle $easy): void
     {
         $resource = $easy->handle;
         unset($easy->handle);
 
-        if (count($this->handles) >= $this->maxHandles) {
-            curl_close($resource);
+        if (\count($this->handles) >= $this->maxHandles) {
+            \curl_close($resource);
         } else {
             // Remove all callback functions as they can hold onto references
             // and are not cleaned up by curl_reset. Using curl_setopt_array
             // does not work for some reason, so removing each one
             // individually.
-            curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
-            curl_setopt($resource, CURLOPT_READFUNCTION, null);
-            curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
-            curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
-            curl_reset($resource);
+            \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_READFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null);
+            \curl_reset($resource);
             $this->handles[] = $resource;
         }
     }
@@ -86,17 +97,11 @@ class CurlFactory implements CurlFactoryInterface
      * Completes a cURL transaction, either returning a response promise or a
      * rejected promise.
      *
-     * @param callable             $handler
-     * @param EasyHandle           $easy
-     * @param CurlFactoryInterface $factory Dictates how the handle is released
-     *
-     * @return \GuzzleHttp\Promise\PromiseInterface
+     * @param callable(RequestInterface, array): PromiseInterface $handler
+     * @param CurlFactoryInterface                                $factory Dictates how the handle is released
      */
-    public static function finish(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
+    public static function finish(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
+    {
         if (isset($easy->options['on_stats'])) {
             self::invokeStats($easy);
         }
@@ -117,10 +122,10 @@ class CurlFactory implements CurlFactoryInterface
         return new FulfilledPromise($easy->response);
     }
 
-    private static function invokeStats(EasyHandle $easy)
+    private static function invokeStats(EasyHandle $easy): void
     {
-        $curlStats = curl_getinfo($easy->handle);
-        $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
+        $curlStats = \curl_getinfo($easy->handle);
+        $curlStats['appconnect_time'] = \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME);
         $stats = new TransferStats(
             $easy->request,
             $easy->response,
@@ -128,47 +133,57 @@ class CurlFactory implements CurlFactoryInterface
             $easy->errno,
             $curlStats
         );
-        call_user_func($easy->options['on_stats'], $stats);
+        ($easy->options['on_stats'])($stats);
     }
 
-    private static function finishError(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
+    /**
+     * @param callable(RequestInterface, array): PromiseInterface $handler
+     */
+    private static function finishError(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
+    {
         // Get error information and release the handle to the factory.
         $ctx = [
             'errno' => $easy->errno,
-            'error' => curl_error($easy->handle),
-            'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
-        ] + curl_getinfo($easy->handle);
-        $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
+            'error' => \curl_error($easy->handle),
+            'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME),
+        ] + \curl_getinfo($easy->handle);
+        $ctx[self::CURL_VERSION_STR] = \curl_version()['version'];
         $factory->release($easy);
 
         // Retry when nothing is present or when curl failed to rewind.
-        if (empty($easy->options['_err_message'])
-            && (!$easy->errno || $easy->errno == 65)
-        ) {
+        if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) {
             return self::retryFailedRewind($handler, $easy, $ctx);
         }
 
         return self::createRejection($easy, $ctx);
     }
 
-    private static function createRejection(EasyHandle $easy, array $ctx)
+    private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface
     {
         static $connectionErrors = [
-            CURLE_OPERATION_TIMEOUTED  => true,
-            CURLE_COULDNT_RESOLVE_HOST => true,
-            CURLE_COULDNT_CONNECT      => true,
-            CURLE_SSL_CONNECT_ERROR    => true,
-            CURLE_GOT_NOTHING          => true,
+            \CURLE_OPERATION_TIMEOUTED  => true,
+            \CURLE_COULDNT_RESOLVE_HOST => true,
+            \CURLE_COULDNT_CONNECT      => true,
+            \CURLE_SSL_CONNECT_ERROR    => true,
+            \CURLE_GOT_NOTHING          => true,
         ];
 
+        if ($easy->createResponseException) {
+            return P\Create::rejectionFor(
+                new RequestException(
+                    'An error was encountered while creating the response',
+                    $easy->request,
+                    $easy->response,
+                    $easy->createResponseException,
+                    $ctx
+                )
+            );
+        }
+
         // If an exception was encountered during the onHeaders event, then
         // return a rejected promise that wraps that exception.
         if ($easy->onHeadersException) {
-            return \GuzzleHttp\Promise\rejection_for(
+            return P\Create::rejectionFor(
                 new RequestException(
                     'An error was encountered during the on_headers event',
                     $easy->request,
@@ -178,21 +193,16 @@ class CurlFactory implements CurlFactoryInterface
                 )
             );
         }
-        if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
-            $message = sprintf(
-                'cURL error %s: %s (%s)',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
-            );
-        } else {
-            $message = sprintf(
-                'cURL error %s: %s (%s) for %s',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
-                $easy->request->getUri()
-            );
+
+        $message = \sprintf(
+            'cURL error %s: %s (%s)',
+            $ctx['errno'],
+            $ctx['error'],
+            'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
+        );
+        $uriString = (string) $easy->request->getUri();
+        if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) {
+            $message .= \sprintf(' for %s', $uriString);
         }
 
         // Create a connection exception if it was a specific error code.
@@ -200,37 +210,40 @@ class CurlFactory implements CurlFactoryInterface
             ? new ConnectException($message, $easy->request, null, $ctx)
             : new RequestException($message, $easy->request, $easy->response, null, $ctx);
 
-        return \GuzzleHttp\Promise\rejection_for($error);
+        return P\Create::rejectionFor($error);
     }
 
-    private function getDefaultConf(EasyHandle $easy)
+    /**
+     * @return array<int|string, mixed>
+     */
+    private function getDefaultConf(EasyHandle $easy): array
     {
         $conf = [
-            '_headers'             => $easy->request->getHeaders(),
-            CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
-            CURLOPT_URL            => (string) $easy->request->getUri()->withFragment(''),
-            CURLOPT_RETURNTRANSFER => false,
-            CURLOPT_HEADER         => false,
-            CURLOPT_CONNECTTIMEOUT => 150,
+            '_headers'              => $easy->request->getHeaders(),
+            \CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
+            \CURLOPT_URL            => (string) $easy->request->getUri()->withFragment(''),
+            \CURLOPT_RETURNTRANSFER => false,
+            \CURLOPT_HEADER         => false,
+            \CURLOPT_CONNECTTIMEOUT => 300,
         ];
 
-        if (defined('CURLOPT_PROTOCOLS')) {
-            $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
+        if (\defined('CURLOPT_PROTOCOLS')) {
+            $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS;
         }
 
         $version = $easy->request->getProtocolVersion();
         if ($version == 1.1) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
         } elseif ($version == 2.0) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
         } else {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
         }
 
         return $conf;
     }
 
-    private function applyMethod(EasyHandle $easy, array &$conf)
+    private function applyMethod(EasyHandle $easy, array &$conf): void
     {
         $body = $easy->request->getBody();
         $size = $body->getSize();
@@ -242,22 +255,22 @@ class CurlFactory implements CurlFactoryInterface
 
         $method = $easy->request->getMethod();
         if ($method === 'PUT' || $method === 'POST') {
-            // See http://tools.ietf.org/html/rfc7230#section-3.3.2
+            // See https://tools.ietf.org/html/rfc7230#section-3.3.2
             if (!$easy->request->hasHeader('Content-Length')) {
-                $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
+                $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
             }
         } elseif ($method === 'HEAD') {
-            $conf[CURLOPT_NOBODY] = true;
+            $conf[\CURLOPT_NOBODY] = true;
             unset(
-                $conf[CURLOPT_WRITEFUNCTION],
-                $conf[CURLOPT_READFUNCTION],
-                $conf[CURLOPT_FILE],
-                $conf[CURLOPT_INFILE]
+                $conf[\CURLOPT_WRITEFUNCTION],
+                $conf[\CURLOPT_READFUNCTION],
+                $conf[\CURLOPT_FILE],
+                $conf[\CURLOPT_INFILE]
             );
         }
     }
 
-    private function applyBody(RequestInterface $request, array $options, array &$conf)
+    private function applyBody(RequestInterface $request, array $options, array &$conf): void
     {
         $size = $request->hasHeader('Content-Length')
             ? (int) $request->getHeaderLine('Content-Length')
@@ -265,40 +278,38 @@ class CurlFactory implements CurlFactoryInterface
 
         // Send the body as a string if the size is less than 1MB OR if the
         // [curl][body_as_string] request value is set.
-        if (($size !== null && $size < 1000000) ||
-            !empty($options['_body_as_string'])
-        ) {
-            $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
+        if (($size !== null && $size < 1000000) || !empty($options['_body_as_string'])) {
+            $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody();
             // Don't duplicate the Content-Length header
             $this->removeHeader('Content-Length', $conf);
             $this->removeHeader('Transfer-Encoding', $conf);
         } else {
-            $conf[CURLOPT_UPLOAD] = true;
+            $conf[\CURLOPT_UPLOAD] = true;
             if ($size !== null) {
-                $conf[CURLOPT_INFILESIZE] = $size;
+                $conf[\CURLOPT_INFILESIZE] = $size;
                 $this->removeHeader('Content-Length', $conf);
             }
             $body = $request->getBody();
             if ($body->isSeekable()) {
                 $body->rewind();
             }
-            $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
+            $conf[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use ($body) {
                 return $body->read($length);
             };
         }
 
         // If the Expect header is not present, prevent curl from adding it
         if (!$request->hasHeader('Expect')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Expect:';
         }
 
         // cURL sometimes adds a content-type by default. Prevent this.
         if (!$request->hasHeader('Content-Type')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:';
         }
     }
 
-    private function applyHeaders(EasyHandle $easy, array &$conf)
+    private function applyHeaders(EasyHandle $easy, array &$conf): void
     {
         foreach ($conf['_headers'] as $name => $values) {
             foreach ($values as $value) {
@@ -306,16 +317,16 @@ class CurlFactory implements CurlFactoryInterface
                 if ($value === '') {
                     // cURL requires a special format for empty headers.
                     // See https://github.com/guzzle/guzzle/issues/1882 for more details.
-                    $conf[CURLOPT_HTTPHEADER][] = "$name;";
+                    $conf[\CURLOPT_HTTPHEADER][] = "$name;";
                 } else {
-                    $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
+                    $conf[\CURLOPT_HTTPHEADER][] = "$name: $value";
                 }
             }
         }
 
         // Remove the Accept header if one was not set
         if (!$easy->request->hasHeader('Accept')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Accept:';
         }
     }
 
@@ -325,174 +336,197 @@ class CurlFactory implements CurlFactoryInterface
      * @param string $name    Case-insensitive header to remove
      * @param array  $options Array of options to modify
      */
-    private function removeHeader($name, array &$options)
+    private function removeHeader(string $name, array &$options): void
     {
-        foreach (array_keys($options['_headers']) as $key) {
-            if (!strcasecmp($key, $name)) {
+        foreach (\array_keys($options['_headers']) as $key) {
+            if (!\strcasecmp($key, $name)) {
                 unset($options['_headers'][$key]);
                 return;
             }
         }
     }
 
-    private function applyHandlerOptions(EasyHandle $easy, array &$conf)
+    private function applyHandlerOptions(EasyHandle $easy, array &$conf): void
     {
         $options = $easy->options;
         if (isset($options['verify'])) {
             if ($options['verify'] === false) {
-                unset($conf[CURLOPT_CAINFO]);
-                $conf[CURLOPT_SSL_VERIFYHOST] = 0;
-                $conf[CURLOPT_SSL_VERIFYPEER] = false;
+                unset($conf[\CURLOPT_CAINFO]);
+                $conf[\CURLOPT_SSL_VERIFYHOST] = 0;
+                $conf[\CURLOPT_SSL_VERIFYPEER] = false;
             } else {
-                $conf[CURLOPT_SSL_VERIFYHOST] = 2;
-                $conf[CURLOPT_SSL_VERIFYPEER] = true;
-                if (is_string($options['verify'])) {
+                $conf[\CURLOPT_SSL_VERIFYHOST] = 2;
+                $conf[\CURLOPT_SSL_VERIFYPEER] = true;
+                if (\is_string($options['verify'])) {
                     // Throw an error if the file/folder/link path is not valid or doesn't exist.
-                    if (!file_exists($options['verify'])) {
-                        throw new \InvalidArgumentException(
-                            "SSL CA bundle not found: {$options['verify']}"
-                        );
+                    if (!\file_exists($options['verify'])) {
+                        throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}");
                     }
                     // If it's a directory or a link to a directory use CURLOPT_CAPATH.
                     // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
-                    if (is_dir($options['verify']) ||
-                        (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
-                        $conf[CURLOPT_CAPATH] = $options['verify'];
+                    if (
+                        \is_dir($options['verify']) ||
+                        (
+                            \is_link($options['verify']) === true &&
+                            ($verifyLink = \readlink($options['verify'])) !== false &&
+                            \is_dir($verifyLink)
+                        )
+                    ) {
+                        $conf[\CURLOPT_CAPATH] = $options['verify'];
                     } else {
-                        $conf[CURLOPT_CAINFO] = $options['verify'];
+                        $conf[\CURLOPT_CAINFO] = $options['verify'];
                     }
                 }
             }
         }
 
-        if (!empty($options['decode_content'])) {
+        if (!isset($options['curl'][\CURLOPT_ENCODING]) && !empty($options['decode_content'])) {
             $accept = $easy->request->getHeaderLine('Accept-Encoding');
             if ($accept) {
-                $conf[CURLOPT_ENCODING] = $accept;
+                $conf[\CURLOPT_ENCODING] = $accept;
             } else {
-                $conf[CURLOPT_ENCODING] = '';
-                // Don't let curl send the header over the wire
-                $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
+                // The empty string enables all available decoders and implicitly
+                // sets a matching 'Accept-Encoding' header.
+                $conf[\CURLOPT_ENCODING] = '';
+                // But as the user did not specify any acceptable encodings we need
+                // to overwrite this implicit header with an empty one.
+                $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
             }
         }
 
-        if (isset($options['sink'])) {
-            $sink = $options['sink'];
-            if (!is_string($sink)) {
-                $sink = \GuzzleHttp\Psr7\stream_for($sink);
-            } elseif (!is_dir(dirname($sink))) {
-                // Ensure that the directory exists before failing in curl.
-                throw new \RuntimeException(sprintf(
-                    'Directory %s does not exist for sink value of %s',
-                    dirname($sink),
-                    $sink
-                ));
-            } else {
-                $sink = new LazyOpenStream($sink, 'w+');
-            }
-            $easy->sink = $sink;
-            $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
-                return $sink->write($write);
-            };
-        } else {
+        if (!isset($options['sink'])) {
             // Use a default temp stream if no sink was set.
-            $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
-            $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
+            $options['sink'] = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+');
+        }
+        $sink = $options['sink'];
+        if (!\is_string($sink)) {
+            $sink = \GuzzleHttp\Psr7\Utils::streamFor($sink);
+        } elseif (!\is_dir(\dirname($sink))) {
+            // Ensure that the directory exists before failing in curl.
+            throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink));
+        } else {
+            $sink = new LazyOpenStream($sink, 'w+');
         }
+        $easy->sink = $sink;
+        $conf[\CURLOPT_WRITEFUNCTION] = static function ($ch, $write) use ($sink): int {
+            return $sink->write($write);
+        };
+
         $timeoutRequiresNoSignal = false;
         if (isset($options['timeout'])) {
             $timeoutRequiresNoSignal |= $options['timeout'] < 1;
-            $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
+            $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
         }
 
         // CURL default value is CURL_IPRESOLVE_WHATEVER
         if (isset($options['force_ip_resolve'])) {
             if ('v4' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
+                $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4;
             } elseif ('v6' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
+                $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6;
             }
         }
 
         if (isset($options['connect_timeout'])) {
             $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
-            $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
+            $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
         }
 
-        if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
-            $conf[CURLOPT_NOSIGNAL] = true;
+        if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') {
+            $conf[\CURLOPT_NOSIGNAL] = true;
         }
 
         if (isset($options['proxy'])) {
-            if (!is_array($options['proxy'])) {
-                $conf[CURLOPT_PROXY] = $options['proxy'];
+            if (!\is_array($options['proxy'])) {
+                $conf[\CURLOPT_PROXY] = $options['proxy'];
             } else {
                 $scheme = $easy->request->getUri()->getScheme();
                 if (isset($options['proxy'][$scheme])) {
                     $host = $easy->request->getUri()->getHost();
-                    if (!isset($options['proxy']['no']) ||
-                        !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
-                    ) {
-                        $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
+                    if (isset($options['proxy']['no']) && Utils::isHostInNoProxy($host, $options['proxy']['no'])) {
+                        unset($conf[\CURLOPT_PROXY]);
+                    } else {
+                        $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme];
                     }
                 }
             }
         }
 
+        if (isset($options['crypto_method'])) {
+            if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_0')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0;
+            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_1')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1;
+            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_2')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
+            } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_3')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3;
+            } else {
+                throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
+            }
+        }
+
         if (isset($options['cert'])) {
             $cert = $options['cert'];
-            if (is_array($cert)) {
-                $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
+            if (\is_array($cert)) {
+                $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1];
                 $cert = $cert[0];
             }
-            if (!file_exists($cert)) {
-                throw new \InvalidArgumentException(
-                    "SSL certificate not found: {$cert}"
-                );
+            if (!\file_exists($cert)) {
+                throw new \InvalidArgumentException("SSL certificate not found: {$cert}");
+            }
+            # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files.
+            # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html
+            $ext = pathinfo($cert, \PATHINFO_EXTENSION);
+            if (preg_match('#^(der|p12)$#i', $ext)) {
+                $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext);
             }
-            $conf[CURLOPT_SSLCERT] = $cert;
+            $conf[\CURLOPT_SSLCERT] = $cert;
         }
 
         if (isset($options['ssl_key'])) {
-            if (is_array($options['ssl_key'])) {
-                if (count($options['ssl_key']) === 2) {
-                    list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
+            if (\is_array($options['ssl_key'])) {
+                if (\count($options['ssl_key']) === 2) {
+                    [$sslKey, $conf[\CURLOPT_SSLKEYPASSWD]] = $options['ssl_key'];
                 } else {
-                    list($sslKey) = $options['ssl_key'];
+                    [$sslKey] = $options['ssl_key'];
                 }
             }
 
-            $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
+            $sslKey = $sslKey ?? $options['ssl_key'];
 
-            if (!file_exists($sslKey)) {
-                throw new \InvalidArgumentException(
-                    "SSL private key not found: {$sslKey}"
-                );
+            if (!\file_exists($sslKey)) {
+                throw new \InvalidArgumentException("SSL private key not found: {$sslKey}");
             }
-            $conf[CURLOPT_SSLKEY] = $sslKey;
+            $conf[\CURLOPT_SSLKEY] = $sslKey;
         }
 
         if (isset($options['progress'])) {
             $progress = $options['progress'];
-            if (!is_callable($progress)) {
-                throw new \InvalidArgumentException(
-                    'progress client option must be callable'
-                );
+            if (!\is_callable($progress)) {
+                throw new \InvalidArgumentException('progress client option must be callable');
             }
-            $conf[CURLOPT_NOPROGRESS] = false;
-            $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
-                $args = func_get_args();
-                // PHP 5.5 pushed the handle onto the start of the args
-                if (is_resource($args[0])) {
-                    array_shift($args);
-                }
-                call_user_func_array($progress, $args);
+            $conf[\CURLOPT_NOPROGRESS] = false;
+            $conf[\CURLOPT_PROGRESSFUNCTION] = static function ($resource, int $downloadSize, int $downloaded, int $uploadSize, int $uploaded) use ($progress) {
+                $progress($downloadSize, $downloaded, $uploadSize, $uploaded);
             };
         }
 
         if (!empty($options['debug'])) {
-            $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
-            $conf[CURLOPT_VERBOSE] = true;
+            $conf[\CURLOPT_STDERR] = Utils::debugResource($options['debug']);
+            $conf[\CURLOPT_VERBOSE] = true;
         }
     }
 
@@ -504,12 +538,11 @@ class CurlFactory implements CurlFactoryInterface
      * stream, and then encountered a "necessary data rewind wasn't possible"
      * error, causing the request to be sent through curl_multi_info_read()
      * without an error status.
+     *
+     * @param callable(RequestInterface, array): PromiseInterface $handler
      */
-    private static function retryFailedRewind(
-        callable $handler,
-        EasyHandle $easy,
-        array $ctx
-    ) {
+    private static function retryFailedRewind(callable $handler, EasyHandle $easy, array $ctx): PromiseInterface
+    {
         try {
             // Only rewind if the body has been read from.
             $body = $easy->request->getBody();
@@ -542,27 +575,32 @@ class CurlFactory implements CurlFactoryInterface
         return $handler($easy->request, $easy->options);
     }
 
-    private function createHeaderFn(EasyHandle $easy)
+    private function createHeaderFn(EasyHandle $easy): callable
     {
         if (isset($easy->options['on_headers'])) {
             $onHeaders = $easy->options['on_headers'];
 
-            if (!is_callable($onHeaders)) {
+            if (!\is_callable($onHeaders)) {
                 throw new \InvalidArgumentException('on_headers must be callable');
             }
         } else {
             $onHeaders = null;
         }
 
-        return function ($ch, $h) use (
+        return static function ($ch, $h) use (
             $onHeaders,
             $easy,
             &$startingResponse
         ) {
-            $value = trim($h);
+            $value = \trim($h);
             if ($value === '') {
                 $startingResponse = true;
-                $easy->createResponse();
+                try {
+                    $easy->createResponse();
+                } catch (\Exception $e) {
+                    $easy->createResponseException = $e;
+                    return -1;
+                }
                 if ($onHeaders !== null) {
                     try {
                         $onHeaders($easy->response);
@@ -579,7 +617,7 @@ class CurlFactory implements CurlFactoryInterface
             } else {
                 $easy->headers[] = $value;
             }
-            return strlen($h);
+            return \strlen($h);
         };
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
index b0fc236850..fe57ed5d57 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use Psr\Http\Message\RequestInterface;
@@ -11,17 +12,14 @@ interface CurlFactoryInterface
      * @param RequestInterface $request Request
      * @param array            $options Transfer options
      *
-     * @return EasyHandle
      * @throws \RuntimeException when an option cannot be applied
      */
-    public function create(RequestInterface $request, array $options);
+    public function create(RequestInterface $request, array $options): EasyHandle;
 
     /**
      * Release an easy handle, allowing it to be reused or closed.
      *
      * This function must call unset on the easy handle's "handle" property.
-     *
-     * @param EasyHandle $easy
      */
-    public function release(EasyHandle $easy);
+    public function release(EasyHandle $easy): void;
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
index 43577da66e..9ad10a9b01 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
@@ -1,7 +1,8 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -10,35 +11,38 @@ use Psr\Http\Message\RequestInterface;
  * When using the CurlHandler, custom curl options can be specified as an
  * associative array of curl option constants mapping to values in the
  * **curl** key of the "client" key of the request.
+ *
+ * @final
  */
 class CurlHandler
 {
-    /** @var CurlFactoryInterface */
+    /**
+     * @var CurlFactoryInterface
+     */
     private $factory;
 
     /**
      * Accepts an associative array of options:
      *
-     * - factory: Optional curl factory used to create cURL handles.
+     * - handle_factory: Optional curl factory used to create cURL handles.
      *
-     * @param array $options Array of options to use with the handler
+     * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler
      */
     public function __construct(array $options = [])
     {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory']
-            : new CurlFactory(3);
+        $this->factory = $options['handle_factory']
+            ?? new CurlFactory(3);
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
+            \usleep($options['delay'] * 1000);
         }
 
         $easy = $this->factory->create($request, $options);
-        curl_exec($easy->handle);
-        $easy->errno = curl_errno($easy->handle);
+        \curl_exec($easy->handle);
+        $easy->errno = \curl_errno($easy->handle);
 
         return CurlFactory::finish($this, $easy, $this->factory);
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
index 564c95f481..4356d02473 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
@@ -1,8 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\Promise;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
@@ -13,16 +15,45 @@ use Psr\Http\Message\RequestInterface;
  * associative array of curl option constants mapping to values in the
  * **curl** key of the provided request options.
  *
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
+ * @property resource|\CurlMultiHandle $_mh Internal use only. Lazy loaded multi-handle.
+ *
+ * @final
  */
+#[\AllowDynamicProperties]
 class CurlMultiHandler
 {
-    /** @var CurlFactoryInterface */
+    /**
+     * @var CurlFactoryInterface
+     */
     private $factory;
+
+    /**
+     * @var int
+     */
     private $selectTimeout;
-    private $active;
+
+    /**
+     * @var int Will be higher than 0 when `curl_multi_exec` is still running.
+     */
+    private $active = 0;
+
+    /**
+     * @var array Request entry handles, indexed by handle id in `addRequest`.
+     *
+     * @see CurlMultiHandler::addRequest
+     */
     private $handles = [];
+
+    /**
+     * @var array<int, float> An array of delay times, indexed by handle id in `addRequest`.
+     *
+     * @see CurlMultiHandler::addRequest
+     */
     private $delays = [];
+
+    /**
+     * @var array<mixed> An associative array of CURLMOPT_* options and corresponding values for curl_multi_setopt()
+     */
     private $options = [];
 
     /**
@@ -33,52 +64,62 @@ class CurlMultiHandler
      *   out while selecting curl handles. Defaults to 1 second.
      * - options: An associative array of CURLMOPT_* options and
      *   corresponding values for curl_multi_setopt()
-     *
-     * @param array $options
      */
     public function __construct(array $options = [])
     {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory'] : new CurlFactory(50);
+        $this->factory = $options['handle_factory'] ?? new CurlFactory(50);
 
         if (isset($options['select_timeout'])) {
             $this->selectTimeout = $options['select_timeout'];
-        } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
-            $this->selectTimeout = $selectTimeout;
+        } elseif ($selectTimeout = Utils::getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
+            @trigger_error('Since guzzlehttp/guzzle 7.2.0: Using environment variable GUZZLE_CURL_SELECT_TIMEOUT is deprecated. Use option "select_timeout" instead.', \E_USER_DEPRECATED);
+            $this->selectTimeout = (int) $selectTimeout;
         } else {
             $this->selectTimeout = 1;
         }
 
-        $this->options = isset($options['options']) ? $options['options'] : [];
+        $this->options = $options['options'] ?? [];
     }
 
+    /**
+     * @param string $name
+     *
+     * @return resource|\CurlMultiHandle
+     *
+     * @throws \BadMethodCallException when another field as `_mh` will be gotten
+     * @throws \RuntimeException       when curl can not initialize a multi handle
+     */
     public function __get($name)
     {
-        if ($name === '_mh') {
-            $this->_mh = curl_multi_init();
+        if ($name !== '_mh') {
+            throw new \BadMethodCallException("Can not get other property as '_mh'.");
+        }
 
-            foreach ($this->options as $option => $value) {
-                // A warning is raised in case of a wrong option.
-                curl_multi_setopt($this->_mh, $option, $value);
-            }
+        $multiHandle = \curl_multi_init();
+
+        if (false === $multiHandle) {
+            throw new \RuntimeException('Can not initialize curl multi handle.');
+        }
+
+        $this->_mh = $multiHandle;
 
-            // Further calls to _mh will return the value directly, without entering the
-            // __get() method at all.
-            return $this->_mh;
+        foreach ($this->options as $option => $value) {
+            // A warning is raised in case of a wrong option.
+            curl_multi_setopt($this->_mh, $option, $value);
         }
 
-        throw new \BadMethodCallException();
+        return $this->_mh;
     }
 
     public function __destruct()
     {
         if (isset($this->_mh)) {
-            curl_multi_close($this->_mh);
+            \curl_multi_close($this->_mh);
             unset($this->_mh);
         }
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $easy = $this->factory->create($request, $options);
         $id = (int) $easy->handle;
@@ -98,7 +139,7 @@ class CurlMultiHandler
     /**
      * Ticks the curl event loop.
      */
-    public function tick()
+    public function tick(): void
     {
         // Add any delayed handles if needed.
         if ($this->delays) {
@@ -106,7 +147,7 @@ class CurlMultiHandler
             foreach ($this->delays as $id => $delay) {
                 if ($currentTime >= $delay) {
                     unset($this->delays[$id]);
-                    curl_multi_add_handle(
+                    \curl_multi_add_handle(
                         $this->_mh,
                         $this->handles[$id]['easy']->handle
                     );
@@ -115,17 +156,15 @@ class CurlMultiHandler
         }
 
         // Step through the task queue which may add additional requests.
-        P\queue()->run();
+        P\Utils::queue()->run();
 
-        if ($this->active &&
-            curl_multi_select($this->_mh, $this->selectTimeout) === -1
-        ) {
+        if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) {
             // Perform a usleep if a select returns -1.
             // See: https://bugs.php.net/bug.php?id=61141
-            usleep(250);
+            \usleep(250);
         }
 
-        while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
+        while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM);
 
         $this->processMessages();
     }
@@ -133,26 +172,26 @@ class CurlMultiHandler
     /**
      * Runs until all outstanding connections have completed.
      */
-    public function execute()
+    public function execute(): void
     {
-        $queue = P\queue();
+        $queue = P\Utils::queue();
 
         while ($this->handles || !$queue->isEmpty()) {
             // If there are no transfers, then sleep for the next delay
             if (!$this->active && $this->delays) {
-                usleep($this->timeToNext());
+                \usleep($this->timeToNext());
             }
             $this->tick();
         }
     }
 
-    private function addRequest(array $entry)
+    private function addRequest(array $entry): void
     {
         $easy = $entry['easy'];
         $id = (int) $easy->handle;
         $this->handles[$id] = $entry;
         if (empty($easy->options['delay'])) {
-            curl_multi_add_handle($this->_mh, $easy->handle);
+            \curl_multi_add_handle($this->_mh, $easy->handle);
         } else {
             $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
         }
@@ -165,8 +204,12 @@ class CurlMultiHandler
      *
      * @return bool True on success, false on failure.
      */
-    private function cancel($id)
+    private function cancel($id): bool
     {
+        if (!is_int($id)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an integer to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
         // Cannot cancel if it has been processed.
         if (!isset($this->handles[$id])) {
             return false;
@@ -174,17 +217,21 @@ class CurlMultiHandler
 
         $handle = $this->handles[$id]['easy']->handle;
         unset($this->delays[$id], $this->handles[$id]);
-        curl_multi_remove_handle($this->_mh, $handle);
-        curl_close($handle);
+        \curl_multi_remove_handle($this->_mh, $handle);
+        \curl_close($handle);
 
         return true;
     }
 
-    private function processMessages()
+    private function processMessages(): void
     {
-        while ($done = curl_multi_info_read($this->_mh)) {
+        while ($done = \curl_multi_info_read($this->_mh)) {
+            if ($done['msg'] !== \CURLMSG_DONE) {
+                // if it's not done, then it would be premature to remove the handle. ref https://github.com/guzzle/guzzle/pull/2892#issuecomment-945150216
+                continue;
+            }
             $id = (int) $done['handle'];
-            curl_multi_remove_handle($this->_mh, $done['handle']);
+            \curl_multi_remove_handle($this->_mh, $done['handle']);
 
             if (!isset($this->handles[$id])) {
                 // Probably was cancelled.
@@ -195,25 +242,21 @@ class CurlMultiHandler
             unset($this->handles[$id], $this->delays[$id]);
             $entry['easy']->errno = $done['result'];
             $entry['deferred']->resolve(
-                CurlFactory::finish(
-                    $this,
-                    $entry['easy'],
-                    $this->factory
-                )
+                CurlFactory::finish($this, $entry['easy'], $this->factory)
             );
         }
     }
 
-    private function timeToNext()
+    private function timeToNext(): int
     {
         $currentTime = Utils::currentTime();
-        $nextTime = PHP_INT_MAX;
+        $nextTime = \PHP_INT_MAX;
         foreach ($this->delays as $time) {
             if ($time < $nextTime) {
                 $nextTime = $time;
             }
         }
 
-        return max(0, $nextTime - $currentTime) * 1000000;
+        return ((int) \max(0, $nextTime - $currentTime)) * 1000000;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
index 7754e9111b..224344d7c8 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
@@ -1,7 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Psr7\Response;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
@@ -13,55 +15,68 @@ use Psr\Http\Message\StreamInterface;
  */
 final class EasyHandle
 {
-    /** @var resource cURL resource */
+    /**
+     * @var resource|\CurlHandle cURL resource
+     */
     public $handle;
 
-    /** @var StreamInterface Where data is being written */
+    /**
+     * @var StreamInterface Where data is being written
+     */
     public $sink;
 
-    /** @var array Received HTTP headers so far */
+    /**
+     * @var array Received HTTP headers so far
+     */
     public $headers = [];
 
-    /** @var ResponseInterface Received response (if any) */
+    /**
+     * @var ResponseInterface|null Received response (if any)
+     */
     public $response;
 
-    /** @var RequestInterface Request being sent */
+    /**
+     * @var RequestInterface Request being sent
+     */
     public $request;
 
-    /** @var array Request options */
+    /**
+     * @var array Request options
+     */
     public $options = [];
 
-    /** @var int cURL error number (if any) */
+    /**
+     * @var int cURL error number (if any)
+     */
     public $errno = 0;
 
-    /** @var \Exception Exception during on_headers (if any) */
+    /**
+     * @var \Throwable|null Exception during on_headers (if any)
+     */
     public $onHeadersException;
 
+    /**
+     * @var \Exception|null Exception during createResponse (if any)
+     */
+    public $createResponseException;
+
     /**
      * Attach a response to the easy handle based on the received headers.
      *
-     * @throws \RuntimeException if no headers have been received.
+     * @throws \RuntimeException if no headers have been received or the first
+     *                           header line is invalid.
      */
-    public function createResponse()
+    public function createResponse(): void
     {
-        if (empty($this->headers)) {
-            throw new \RuntimeException('No headers have been received');
-        }
+        [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers);
 
-        // HTTP-version SP status-code SP reason-phrase
-        $startLine = explode(' ', array_shift($this->headers), 3);
-        $headers = \GuzzleHttp\headers_from_lines($this->headers);
-        $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
+        $normalizedKeys = Utils::normalizeHeaderKeys($headers);
 
-        if (!empty($this->options['decode_content'])
-            && isset($normalizedKeys['content-encoding'])
-        ) {
-            $headers['x-encoded-content-encoding']
-                = $headers[$normalizedKeys['content-encoding']];
+        if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
+            $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
             unset($headers[$normalizedKeys['content-encoding']]);
             if (isset($normalizedKeys['content-length'])) {
-                $headers['x-encoded-content-length']
-                    = $headers[$normalizedKeys['content-length']];
+                $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
 
                 $bodyLength = (int) $this->sink->getSize();
                 if ($bodyLength) {
@@ -74,19 +89,24 @@ final class EasyHandle
 
         // Attach a response to the easy handle with the parsed headers.
         $this->response = new Response(
-            $startLine[1],
+            $status,
             $headers,
             $this->sink,
-            substr($startLine[0], 5),
-            isset($startLine[2]) ? (string) $startLine[2] : null
+            $ver,
+            $reason
         );
     }
 
+    /**
+     * @param string $name
+     *
+     * @return void
+     *
+     * @throws \BadMethodCallException
+     */
     public function __get($name)
     {
-        $msg = $name === 'handle'
-            ? 'The EasyHandle has been released'
-            : 'Invalid property: ' . $name;
+        $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name;
         throw new \BadMethodCallException($msg);
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
new file mode 100644
index 0000000000..a0988845fd
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace GuzzleHttp\Handler;
+
+use GuzzleHttp\Utils;
+
+/**
+ * @internal
+ */
+final class HeaderProcessor
+{
+    /**
+     * Returns the HTTP version, status code, reason phrase, and headers.
+     *
+     * @param string[] $headers
+     *
+     * @throws \RuntimeException
+     *
+     * @return array{0:string, 1:int, 2:?string, 3:array}
+     */
+    public static function parseHeaders(array $headers): array
+    {
+        if ($headers === []) {
+            throw new \RuntimeException('Expected a non-empty array of header data');
+        }
+
+        $parts = \explode(' ', \array_shift($headers), 3);
+        $version = \explode('/', $parts[0])[1] ?? null;
+
+        if ($version === null) {
+            throw new \RuntimeException('HTTP version missing from header data');
+        }
+
+        $status = $parts[1] ?? null;
+
+        if ($status === null) {
+            throw new \RuntimeException('HTTP status code missing from header data');
+        }
+
+        return [$version, (int) $status, $parts[2] ?? null, Utils::headersFromLines($headers)];
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
index e41e43956c..79664e2790 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
@@ -1,81 +1,98 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\HandlerStack;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\StreamInterface;
 
 /**
  * Handler that returns responses or throw exceptions from a queue.
+ *
+ * @final
  */
 class MockHandler implements \Countable
 {
+    /**
+     * @var array
+     */
     private $queue = [];
+
+    /**
+     * @var RequestInterface|null
+     */
     private $lastRequest;
-    private $lastOptions;
+
+    /**
+     * @var array
+     */
+    private $lastOptions = [];
+
+    /**
+     * @var callable|null
+     */
     private $onFulfilled;
+
+    /**
+     * @var callable|null
+     */
     private $onRejected;
 
     /**
      * Creates a new MockHandler that uses the default handler stack list of
      * middlewares.
      *
-     * @param array $queue Array of responses, callables, or exceptions.
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     *
-     * @return HandlerStack
+     * @param array|null    $queue       Array of responses, callables, or exceptions.
+     * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled.
+     * @param callable|null $onRejected  Callback to invoke when the return value is rejected.
      */
-    public static function createWithMiddleware(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
+    public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack
+    {
         return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
     }
 
     /**
      * The passed in value must be an array of
-     * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
+     * {@see \Psr\Http\Message\ResponseInterface} objects, Exceptions,
      * callables, or Promises.
      *
-     * @param array $queue
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
+     * @param array<int, mixed>|null $queue       The parameters to be passed to the append function, as an indexed array.
+     * @param callable|null          $onFulfilled Callback to invoke when the return value is fulfilled.
+     * @param callable|null          $onRejected  Callback to invoke when the return value is rejected.
      */
-    public function __construct(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
+    public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null)
+    {
         $this->onFulfilled = $onFulfilled;
         $this->onRejected = $onRejected;
 
         if ($queue) {
-            call_user_func_array([$this, 'append'], $queue);
+            // array_values included for BC
+            $this->append(...array_values($queue));
         }
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (!$this->queue) {
             throw new \OutOfBoundsException('Mock queue is empty');
         }
 
-        if (isset($options['delay']) && is_numeric($options['delay'])) {
-            usleep($options['delay'] * 1000);
+        if (isset($options['delay']) && \is_numeric($options['delay'])) {
+            \usleep((int) $options['delay'] * 1000);
         }
 
         $this->lastRequest = $request;
         $this->lastOptions = $options;
-        $response = array_shift($this->queue);
+        $response = \array_shift($this->queue);
 
         if (isset($options['on_headers'])) {
-            if (!is_callable($options['on_headers'])) {
+            if (!\is_callable($options['on_headers'])) {
                 throw new \InvalidArgumentException('on_headers must be callable');
             }
             try {
@@ -86,29 +103,30 @@ class MockHandler implements \Countable
             }
         }
 
-        if (is_callable($response)) {
-            $response = call_user_func($response, $request, $options);
+        if (\is_callable($response)) {
+            $response = $response($request, $options);
         }
 
-        $response = $response instanceof \Exception
-            ? \GuzzleHttp\Promise\rejection_for($response)
-            : \GuzzleHttp\Promise\promise_for($response);
+        $response = $response instanceof \Throwable
+            ? P\Create::rejectionFor($response)
+            : P\Create::promiseFor($response);
 
         return $response->then(
-            function ($value) use ($request, $options) {
+            function (?ResponseInterface $value) use ($request, $options) {
                 $this->invokeStats($request, $options, $value);
                 if ($this->onFulfilled) {
-                    call_user_func($this->onFulfilled, $value);
+                    ($this->onFulfilled)($value);
                 }
-                if (isset($options['sink'])) {
+
+                if ($value !== null && isset($options['sink'])) {
                     $contents = (string) $value->getBody();
                     $sink = $options['sink'];
 
-                    if (is_resource($sink)) {
-                        fwrite($sink, $contents);
-                    } elseif (is_string($sink)) {
-                        file_put_contents($sink, $contents);
-                    } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
+                    if (\is_resource($sink)) {
+                        \fwrite($sink, $contents);
+                    } elseif (\is_string($sink)) {
+                        \file_put_contents($sink, $contents);
+                    } elseif ($sink instanceof StreamInterface) {
                         $sink->write($contents);
                     }
                 }
@@ -118,9 +136,9 @@ class MockHandler implements \Countable
             function ($reason) use ($request, $options) {
                 $this->invokeStats($request, $options, null, $reason);
                 if ($this->onRejected) {
-                    call_user_func($this->onRejected, $reason);
+                    ($this->onRejected)($reason);
                 }
-                return \GuzzleHttp\Promise\rejection_for($reason);
+                return P\Create::rejectionFor($reason);
             }
         );
     }
@@ -128,68 +146,66 @@ class MockHandler implements \Countable
     /**
      * Adds one or more variadic requests, exceptions, callables, or promises
      * to the queue.
+     *
+     * @param mixed ...$values
      */
-    public function append()
+    public function append(...$values): void
     {
-        foreach (func_get_args() as $value) {
+        foreach ($values as $value) {
             if ($value instanceof ResponseInterface
-                || $value instanceof \Exception
+                || $value instanceof \Throwable
                 || $value instanceof PromiseInterface
-                || is_callable($value)
+                || \is_callable($value)
             ) {
                 $this->queue[] = $value;
             } else {
-                throw new \InvalidArgumentException('Expected a response or '
-                    . 'exception. Found ' . \GuzzleHttp\describe_type($value));
+                throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . Utils::describeType($value));
             }
         }
     }
 
     /**
      * Get the last received request.
-     *
-     * @return RequestInterface
      */
-    public function getLastRequest()
+    public function getLastRequest(): ?RequestInterface
     {
         return $this->lastRequest;
     }
 
     /**
      * Get the last received request options.
-     *
-     * @return array
      */
-    public function getLastOptions()
+    public function getLastOptions(): array
     {
         return $this->lastOptions;
     }
 
     /**
      * Returns the number of remaining items in the queue.
-     *
-     * @return int
      */
     public function count(): int
     {
-        return count($this->queue);
+        return \count($this->queue);
     }
 
-    public function reset()
+    public function reset(): void
     {
         $this->queue = [];
     }
 
+    /**
+     * @param mixed $reason Promise or reason.
+     */
     private function invokeStats(
         RequestInterface $request,
         array $options,
         ResponseInterface $response = null,
         $reason = null
-    ) {
+    ): void {
         if (isset($options['on_stats'])) {
-            $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
+            $transferTime = $options['transfer_time'] ?? 0;
             $stats = new TransferStats($request, $response, $transferTime, $reason);
-            call_user_func($options['on_stats'], $stats);
+            ($options['on_stats'])($stats);
         }
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
index f8b00be0b9..f045b526c5 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
@@ -1,11 +1,15 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\RequestOptions;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Provides basic proxies for handlers.
+ *
+ * @final
  */
 class Proxy
 {
@@ -13,19 +17,15 @@ class Proxy
      * Sends synchronous requests to a specific handler while sending all other
      * requests to another handler.
      *
-     * @param callable $default Handler used for normal responses
-     * @param callable $sync    Handler used for synchronous responses.
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $sync    Handler used for synchronous responses.
      *
-     * @return callable Returns the composed handler.
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
      */
-    public static function wrapSync(
-        callable $default,
-        callable $sync
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $sync) {
-            return empty($options[RequestOptions::SYNCHRONOUS])
-                ? $default($request, $options)
-                : $sync($request, $options);
+    public static function wrapSync(callable $default, callable $sync): callable
+    {
+        return static function (RequestInterface $request, array $options) use ($default, $sync): PromiseInterface {
+            return empty($options[RequestOptions::SYNCHRONOUS]) ? $default($request, $options) : $sync($request, $options);
         };
     }
 
@@ -37,19 +37,15 @@ class Proxy
      * performance benefits of curl while still supporting true streaming
      * through the StreamHandler.
      *
-     * @param callable $default   Handler used for non-streaming responses
-     * @param callable $streaming Handler used for streaming responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default   Handler used for non-streaming responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
      *
-     * @return callable Returns the composed handler.
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
      */
-    public static function wrapStreaming(
-        callable $default,
-        callable $streaming
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $streaming) {
-            return empty($options['stream'])
-                ? $default($request, $options)
-                : $streaming($request, $options);
+    public static function wrapStreaming(callable $default, callable $streaming): callable
+    {
+        return static function (RequestInterface $request, array $options) use ($default, $streaming): PromiseInterface {
+            return empty($options['stream']) ? $default($request, $options) : $streaming($request, $options);
         };
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
index a15734a44d..310987c205 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
@@ -1,8 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\ConnectException;
 use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7;
@@ -11,12 +13,18 @@ use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
+use Psr\Http\Message\UriInterface;
 
 /**
  * HTTP handler that uses PHP's HTTP stream wrapper.
+ *
+ * @final
  */
 class StreamHandler
 {
+    /**
+     * @var array
+     */
     private $lastHeaders = [];
 
     /**
@@ -24,14 +32,12 @@ class StreamHandler
      *
      * @param RequestInterface $request Request to send.
      * @param array            $options Request transfer options.
-     *
-     * @return PromiseInterface
      */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         // Sleep if there is a delay specified.
         if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
+            \usleep($options['delay'] * 1000);
         }
 
         $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
@@ -58,80 +64,80 @@ class StreamHandler
             // Determine if the error was a networking error.
             $message = $e->getMessage();
             // This list can probably get more comprehensive.
-            if (strpos($message, 'getaddrinfo') // DNS lookup failed
-                || strpos($message, 'Connection refused')
-                || strpos($message, "couldn't connect to host") // error on HHVM
-                || strpos($message, "connection attempt failed")
+            if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed
+                || false !== \strpos($message, 'Connection refused')
+                || false !== \strpos($message, "couldn't connect to host") // error on HHVM
+                || false !== \strpos($message, "connection attempt failed")
             ) {
                 $e = new ConnectException($e->getMessage(), $request, $e);
+            } else {
+                $e = RequestException::wrapException($request, $e);
             }
-            $e = RequestException::wrapException($request, $e);
             $this->invokeStats($options, $request, $startTime, null, $e);
 
-            return \GuzzleHttp\Promise\rejection_for($e);
+            return P\Create::rejectionFor($e);
         }
     }
 
     private function invokeStats(
         array $options,
         RequestInterface $request,
-        $startTime,
+        ?float $startTime,
         ResponseInterface $response = null,
-        $error = null
-    ) {
+        \Throwable $error = null
+    ): void {
         if (isset($options['on_stats'])) {
-            $stats = new TransferStats(
-                $request,
-                $response,
-                Utils::currentTime() - $startTime,
-                $error,
-                []
-            );
-            call_user_func($options['on_stats'], $stats);
+            $stats = new TransferStats($request, $response, Utils::currentTime() - $startTime, $error, []);
+            ($options['on_stats'])($stats);
         }
     }
 
-    private function createResponse(
-        RequestInterface $request,
-        array $options,
-        $stream,
-        $startTime
-    ) {
+    /**
+     * @param resource $stream
+     */
+    private function createResponse(RequestInterface $request, array $options, $stream, ?float $startTime): PromiseInterface
+    {
         $hdrs = $this->lastHeaders;
         $this->lastHeaders = [];
-        $parts = explode(' ', array_shift($hdrs), 3);
-        $ver = explode('/', $parts[0])[1];
-        $status = $parts[1];
-        $reason = isset($parts[2]) ? $parts[2] : null;
-        $headers = \GuzzleHttp\headers_from_lines($hdrs);
-        list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
-        $stream = Psr7\stream_for($stream);
+
+        try {
+            [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($hdrs);
+        } catch (\Exception $e) {
+            return P\Create::rejectionFor(
+                new RequestException('An error was encountered while creating the response', $request, null, $e)
+            );
+        }
+
+        [$stream, $headers] = $this->checkDecode($options, $headers, $stream);
+        $stream = Psr7\Utils::streamFor($stream);
         $sink = $stream;
 
-        if (strcasecmp('HEAD', $request->getMethod())) {
+        if (\strcasecmp('HEAD', $request->getMethod())) {
             $sink = $this->createSink($stream, $options);
         }
 
-        $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
+        try {
+            $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
+        } catch (\Exception $e) {
+            return P\Create::rejectionFor(
+                new RequestException('An error was encountered while creating the response', $request, null, $e)
+            );
+        }
 
         if (isset($options['on_headers'])) {
             try {
                 $options['on_headers']($response);
             } catch (\Exception $e) {
-                $msg = 'An error was encountered during the on_headers event';
-                $ex = new RequestException($msg, $request, $response, $e);
-                return \GuzzleHttp\Promise\rejection_for($ex);
+                return P\Create::rejectionFor(
+                    new RequestException('An error was encountered during the on_headers event', $request, $response, $e)
+                );
             }
         }
 
         // Do not drain when the request is a HEAD request because they have
         // no body.
         if ($sink !== $stream) {
-            $this->drain(
-                $stream,
-                $sink,
-                $response->getHeaderLine('Content-Length')
-            );
+            $this->drain($stream, $sink, $response->getHeaderLine('Content-Length'));
         }
 
         $this->invokeStats($options, $request, $startTime, $response, null);
@@ -139,41 +145,37 @@ class StreamHandler
         return new FulfilledPromise($response);
     }
 
-    private function createSink(StreamInterface $stream, array $options)
+    private function createSink(StreamInterface $stream, array $options): StreamInterface
     {
         if (!empty($options['stream'])) {
             return $stream;
         }
 
-        $sink = isset($options['sink'])
-            ? $options['sink']
-            : fopen('php://temp', 'r+');
+        $sink = $options['sink'] ?? Psr7\Utils::tryFopen('php://temp', 'r+');
 
-        return is_string($sink)
-            ? new Psr7\LazyOpenStream($sink, 'w+')
-            : Psr7\stream_for($sink);
+        return \is_string($sink) ? new Psr7\LazyOpenStream($sink, 'w+') : Psr7\Utils::streamFor($sink);
     }
 
-    private function checkDecode(array $options, array $headers, $stream)
+    /**
+     * @param resource $stream
+     */
+    private function checkDecode(array $options, array $headers, $stream): array
     {
         // Automatically decode responses when instructed.
         if (!empty($options['decode_content'])) {
-            $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
+            $normalizedKeys = Utils::normalizeHeaderKeys($headers);
             if (isset($normalizedKeys['content-encoding'])) {
                 $encoding = $headers[$normalizedKeys['content-encoding']];
                 if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
-                    $stream = new Psr7\InflateStream(
-                        Psr7\stream_for($stream)
-                    );
-                    $headers['x-encoded-content-encoding']
-                        = $headers[$normalizedKeys['content-encoding']];
+                    $stream = new Psr7\InflateStream(Psr7\Utils::streamFor($stream));
+                    $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
+
                     // Remove content-encoding header
                     unset($headers[$normalizedKeys['content-encoding']]);
+
                     // Fix content-length header
                     if (isset($normalizedKeys['content-length'])) {
-                        $headers['x-encoded-content-length']
-                            = $headers[$normalizedKeys['content-length']];
-
+                        $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
                         $length = (int) $stream->getSize();
                         if ($length === 0) {
                             unset($headers[$normalizedKeys['content-length']]);
@@ -191,27 +193,21 @@ class StreamHandler
     /**
      * Drains the source stream into the "sink" client option.
      *
-     * @param StreamInterface $source
-     * @param StreamInterface $sink
-     * @param string          $contentLength Header specifying the amount of
-     *                                       data to read.
+     * @param string $contentLength Header specifying the amount of
+     *                              data to read.
      *
-     * @return StreamInterface
      * @throws \RuntimeException when the sink option is invalid.
      */
-    private function drain(
-        StreamInterface $source,
-        StreamInterface $sink,
-        $contentLength
-    ) {
+    private function drain(StreamInterface $source, StreamInterface $sink, string $contentLength): StreamInterface
+    {
         // If a content-length header is provided, then stop reading once
         // that number of bytes has been read. This can prevent infinitely
         // reading from a stream when dealing with servers that do not honor
         // Connection: Close headers.
-        Psr7\copy_to_stream(
+        Psr7\Utils::copyToStream(
             $source,
             $sink,
-            (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
+            (\strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
         );
 
         $sink->seek(0);
@@ -226,12 +222,13 @@ class StreamHandler
      * @param callable $callback Callable that returns stream resource
      *
      * @return resource
+     *
      * @throws \RuntimeException on error
      */
     private function createResource(callable $callback)
     {
-        $errors = null;
-        set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
+        $errors = [];
+        \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool {
             $errors[] = [
                 'message' => $msg,
                 'file'    => $file,
@@ -240,27 +237,37 @@ class StreamHandler
             return true;
         });
 
-        $resource = $callback();
-        restore_error_handler();
+        try {
+            $resource = $callback();
+        } finally {
+            \restore_error_handler();
+        }
 
         if (!$resource) {
             $message = 'Error creating resource: ';
             foreach ($errors as $err) {
                 foreach ($err as $key => $value) {
-                    $message .= "[$key] $value" . PHP_EOL;
+                    $message .= "[$key] $value" . \PHP_EOL;
                 }
             }
-            throw new \RuntimeException(trim($message));
+            throw new \RuntimeException(\trim($message));
         }
 
         return $resource;
     }
 
+    /**
+     * @return resource
+     */
     private function createStream(RequestInterface $request, array $options)
     {
         static $methods;
         if (!$methods) {
-            $methods = array_flip(get_class_methods(__CLASS__));
+            $methods = \array_flip(\get_class_methods(__CLASS__));
+        }
+
+        if (!\in_array($request->getUri()->getScheme(), ['http', 'https'])) {
+            throw new RequestException(\sprintf("The scheme '%s' is not supported.", $request->getUri()->getScheme()), $request);
         }
 
         // HTTP/1.1 streams using the PHP stream wrapper require a
@@ -279,7 +286,7 @@ class StreamHandler
         $params = [];
         $context = $this->getDefaultContext($request);
 
-        if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
+        if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) {
             throw new \InvalidArgumentException('on_headers must be callable');
         }
 
@@ -293,42 +300,39 @@ class StreamHandler
         }
 
         if (isset($options['stream_context'])) {
-            if (!is_array($options['stream_context'])) {
+            if (!\is_array($options['stream_context'])) {
                 throw new \InvalidArgumentException('stream_context must be an array');
             }
-            $context = array_replace_recursive(
-                $context,
-                $options['stream_context']
-            );
+            $context = \array_replace_recursive($context, $options['stream_context']);
         }
 
         // Microsoft NTLM authentication only supported with curl handler
-        if (isset($options['auth'])
-            && is_array($options['auth'])
-            && isset($options['auth'][2])
-            && 'ntlm' == $options['auth'][2]
-        ) {
+        if (isset($options['auth'][2]) && 'ntlm' === $options['auth'][2]) {
             throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
         }
 
         $uri = $this->resolveHost($request, $options);
 
-        $context = $this->createResource(
-            function () use ($context, $params) {
-                return stream_context_create($context, $params);
+        $contextResource = $this->createResource(
+            static function () use ($context, $params) {
+                return \stream_context_create($context, $params);
             }
         );
 
         return $this->createResource(
-            function () use ($uri, &$http_response_header, $context, $options) {
-                $resource = fopen((string) $uri, 'r', null, $context);
-                $this->lastHeaders = $http_response_header;
+            function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) {
+                $resource = @\fopen((string) $uri, 'r', false, $contextResource);
+                $this->lastHeaders = $http_response_header ?? [];
+
+                if (false === $resource) {
+                    throw new ConnectException(sprintf('Connection refused for URI %s', $uri), $request, null, $context);
+                }
 
                 if (isset($options['read_timeout'])) {
                     $readTimeout = $options['read_timeout'];
                     $sec = (int) $readTimeout;
                     $usec = ($readTimeout - $sec) * 100000;
-                    stream_set_timeout($resource, $sec, $usec);
+                    \stream_set_timeout($resource, $sec, $usec);
                 }
 
                 return $resource;
@@ -336,42 +340,31 @@ class StreamHandler
         );
     }
 
-    private function resolveHost(RequestInterface $request, array $options)
+    private function resolveHost(RequestInterface $request, array $options): UriInterface
     {
         $uri = $request->getUri();
 
-        if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
+        if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) {
             if ('v4' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_A);
-                if (!isset($records[0]['ip'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv4 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
+                $records = \dns_get_record($uri->getHost(), \DNS_A);
+                if (false === $records || !isset($records[0]['ip'])) {
+                    throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request);
                 }
-                $uri = $uri->withHost($records[0]['ip']);
-            } elseif ('v6' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_AAAA);
-                if (!isset($records[0]['ipv6'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv6 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
+                return $uri->withHost($records[0]['ip']);
+            }
+            if ('v6' === $options['force_ip_resolve']) {
+                $records = \dns_get_record($uri->getHost(), \DNS_AAAA);
+                if (false === $records || !isset($records[0]['ipv6'])) {
+                    throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request);
                 }
-                $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
+                return $uri->withHost('[' . $records[0]['ipv6'] . ']');
             }
         }
 
         return $uri;
     }
 
-    private function getDefaultContext(RequestInterface $request)
+    private function getDefaultContext(RequestInterface $request): array
     {
         $headers = '';
         foreach ($request->getHeaders() as $name => $value) {
@@ -388,11 +381,14 @@ class StreamHandler
                 'ignore_errors'    => true,
                 'follow_location'  => 0,
             ],
+            'ssl' => [
+                'peer_name' => $request->getUri()->getHost(),
+            ],
         ];
 
         $body = (string) $request->getBody();
 
-        if (!empty($body)) {
+        if ('' !== $body) {
             $context['http']['content'] = $body;
             // Prevent the HTTP handler from adding a Content-Type header.
             if (!$request->hasHeader('Content-Type')) {
@@ -400,55 +396,119 @@ class StreamHandler
             }
         }
 
-        $context['http']['header'] = rtrim($context['http']['header']);
+        $context['http']['header'] = \rtrim($context['http']['header']);
 
         return $context;
     }
 
-    private function add_proxy(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_proxy(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if (!is_array($value)) {
-            $options['http']['proxy'] = $value;
+        $uri = null;
+
+        if (!\is_array($value)) {
+            $uri = $value;
         } else {
             $scheme = $request->getUri()->getScheme();
             if (isset($value[$scheme])) {
-                if (!isset($value['no'])
-                    || !\GuzzleHttp\is_host_in_noproxy(
-                        $request->getUri()->getHost(),
-                        $value['no']
-                    )
-                ) {
-                    $options['http']['proxy'] = $value[$scheme];
+                if (!isset($value['no']) || !Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) {
+                    $uri = $value[$scheme];
+                }
+            }
+        }
+
+        if (!$uri) {
+            return;
+        }
+
+        $parsed = $this->parse_proxy($uri);
+        $options['http']['proxy'] = $parsed['proxy'];
+
+        if ($parsed['auth']) {
+            if (!isset($options['http']['header'])) {
+                $options['http']['header'] = [];
+            }
+            $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}";
+        }
+    }
+
+    /**
+     * Parses the given proxy URL to make it compatible with the format PHP's stream context expects.
+     */
+    private function parse_proxy(string $url): array
+    {
+        $parsed = \parse_url($url);
+
+        if ($parsed !== false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') {
+            if (isset($parsed['host']) && isset($parsed['port'])) {
+                $auth = null;
+                if (isset($parsed['user']) && isset($parsed['pass'])) {
+                    $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}");
                 }
+
+                return [
+                    'proxy' => "tcp://{$parsed['host']}:{$parsed['port']}",
+                    'auth' => $auth ? "Basic {$auth}" : null,
+                ];
             }
         }
+
+        // Return proxy as-is.
+        return [
+            'proxy' => $url,
+            'auth' => null,
+        ];
     }
 
-    private function add_timeout(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_timeout(RequestInterface $request, array &$options, $value, array &$params): void
     {
         if ($value > 0) {
             $options['http']['timeout'] = $value;
         }
     }
 
-    private function add_verify(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_crypto_method(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if ($value === true) {
-            // PHP 5.6 or greater will find the system cert by default. When
-            // < 5.6, use the Guzzle bundled cacert.
-            if (PHP_VERSION_ID < 50600) {
-                $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
-            }
-        } elseif (is_string($value)) {
-            $options['ssl']['cafile'] = $value;
-            if (!file_exists($value)) {
-                throw new \RuntimeException("SSL CA bundle not found: $value");
-            }
-        } elseif ($value === false) {
+        if (
+            $value === \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
+            || $value === \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
+            || $value === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
+            || (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && $value === \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT)
+        ) {
+            $options['http']['crypto_method'] = $value;
+
+            return;
+        }
+
+        throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
+    }
+
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void
+    {
+        if ($value === false) {
             $options['ssl']['verify_peer'] = false;
             $options['ssl']['verify_peer_name'] = false;
+
             return;
-        } else {
+        }
+
+        if (\is_string($value)) {
+            $options['ssl']['cafile'] = $value;
+            if (!\file_exists($value)) {
+                throw new \RuntimeException("SSL CA bundle not found: $value");
+            }
+        } elseif ($value !== true) {
             throw new \InvalidArgumentException('Invalid verify request option');
         }
 
@@ -457,88 +517,95 @@ class StreamHandler
         $options['ssl']['allow_self_signed'] = false;
     }
 
-    private function add_cert(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_cert(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if (is_array($value)) {
+        if (\is_array($value)) {
             $options['ssl']['passphrase'] = $value[1];
             $value = $value[0];
         }
 
-        if (!file_exists($value)) {
+        if (!\file_exists($value)) {
             throw new \RuntimeException("SSL certificate not found: {$value}");
         }
 
         $options['ssl']['local_cert'] = $value;
     }
 
-    private function add_progress(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_progress(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        $this->addNotification(
+        self::addNotification(
             $params,
-            function ($code, $a, $b, $c, $transferred, $total) use ($value) {
-                if ($code == STREAM_NOTIFY_PROGRESS) {
-                    $value($total, $transferred, null, null);
+            static function ($code, $a, $b, $c, $transferred, $total) use ($value) {
+                if ($code == \STREAM_NOTIFY_PROGRESS) {
+                    // The upload progress cannot be determined. Use 0 for cURL compatibility:
+                    // https://curl.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html
+                    $value($total, $transferred, 0, 0);
                 }
             }
         );
     }
 
-    private function add_debug(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_debug(RequestInterface $request, array &$options, $value, array &$params): void
     {
         if ($value === false) {
             return;
         }
 
         static $map = [
-            STREAM_NOTIFY_CONNECT       => 'CONNECT',
-            STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
-            STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
-            STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
-            STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
-            STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
-            STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
-            STREAM_NOTIFY_FAILURE       => 'FAILURE',
-            STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
-            STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
+            \STREAM_NOTIFY_CONNECT       => 'CONNECT',
+            \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
+            \STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
+            \STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
+            \STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
+            \STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
+            \STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
+            \STREAM_NOTIFY_FAILURE       => 'FAILURE',
+            \STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
+            \STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
         ];
-        static $args = ['severity', 'message', 'message_code',
-            'bytes_transferred', 'bytes_max'];
+        static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max'];
 
-        $value = \GuzzleHttp\debug_resource($value);
+        $value = Utils::debugResource($value);
         $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
-        $this->addNotification(
+        self::addNotification(
             $params,
-            function () use ($ident, $value, $map, $args) {
-                $passed = func_get_args();
-                $code = array_shift($passed);
-                fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
-                foreach (array_filter($passed) as $i => $v) {
-                    fwrite($value, $args[$i] . ': "' . $v . '" ');
+            static function (int $code, ...$passed) use ($ident, $value, $map, $args): void {
+                \fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
+                foreach (\array_filter($passed) as $i => $v) {
+                    \fwrite($value, $args[$i] . ': "' . $v . '" ');
                 }
-                fwrite($value, "\n");
+                \fwrite($value, "\n");
             }
         );
     }
 
-    private function addNotification(array &$params, callable $notify)
+    private static function addNotification(array &$params, callable $notify): void
     {
         // Wrap the existing function if needed.
         if (!isset($params['notification'])) {
             $params['notification'] = $notify;
         } else {
-            $params['notification'] = $this->callArray([
+            $params['notification'] = self::callArray([
                 $params['notification'],
                 $notify
             ]);
         }
     }
 
-    private function callArray(array $functions)
+    private static function callArray(array $functions): callable
     {
-        return function () use ($functions) {
-            $args = func_get_args();
+        return static function (...$args) use ($functions) {
             foreach ($functions as $fn) {
-                call_user_func_array($fn, $args);
+                $fn(...$args);
             }
         };
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
index 6a49cc0690..e0a1d11913 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Promise\PromiseInterface;
@@ -8,16 +9,24 @@ use Psr\Http\Message\ResponseInterface;
 /**
  * Creates a composed Guzzle handler function by stacking middlewares on top of
  * an HTTP handler function.
+ *
+ * @final
  */
 class HandlerStack
 {
-    /** @var callable|null */
+    /**
+     * @var (callable(RequestInterface, array): PromiseInterface)|null
+     */
     private $handler;
 
-    /** @var array */
+    /**
+     * @var array{(callable(callable(RequestInterface, array): PromiseInterface): callable), (string|null)}[]
+     */
     private $stack = [];
 
-    /** @var callable|null */
+    /**
+     * @var (callable(RequestInterface, array): PromiseInterface)|null
+     */
     private $cached;
 
     /**
@@ -31,15 +40,13 @@ class HandlerStack
      * The returned handler stack can be passed to a client in the "handler"
      * option.
      *
-     * @param callable $handler HTTP handler function to use with the stack. If no
-     *                          handler is provided, the best handler for your
-     *                          system will be utilized.
-     *
-     * @return HandlerStack
+     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler HTTP handler function to use with the stack. If no
+     *                                                                            handler is provided, the best handler for your
+     *                                                                            system will be utilized.
      */
-    public static function create(callable $handler = null)
+    public static function create(?callable $handler = null): self
     {
-        $stack = new self($handler ?: choose_handler());
+        $stack = new self($handler ?: Utils::chooseHandler());
         $stack->push(Middleware::httpErrors(), 'http_errors');
         $stack->push(Middleware::redirect(), 'allow_redirects');
         $stack->push(Middleware::cookies(), 'cookies');
@@ -49,7 +56,7 @@ class HandlerStack
     }
 
     /**
-     * @param callable $handler Underlying HTTP handler.
+     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler.
      */
     public function __construct(callable $handler = null)
     {
@@ -59,9 +66,6 @@ class HandlerStack
     /**
      * Invokes the handler stack as a composed handler
      *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
      * @return ResponseInterface|PromiseInterface
      */
     public function __invoke(RequestInterface $request, array $options)
@@ -80,12 +84,13 @@ class HandlerStack
     {
         $depth = 0;
         $stack = [];
-        if ($this->handler) {
+
+        if ($this->handler !== null) {
             $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
         }
 
         $result = '';
-        foreach (array_reverse($this->stack) as $tuple) {
+        foreach (\array_reverse($this->stack) as $tuple) {
             $depth++;
             $str = "{$depth}) Name: '{$tuple[1]}', ";
             $str .= "Function: " . $this->debugCallable($tuple[0]);
@@ -93,7 +98,7 @@ class HandlerStack
             $stack[] = $str;
         }
 
-        foreach (array_keys($stack) as $k) {
+        foreach (\array_keys($stack) as $k) {
             $result .= "< {$stack[$k]}\n";
         }
 
@@ -103,10 +108,10 @@ class HandlerStack
     /**
      * Set the HTTP handler that actually returns a promise.
      *
-     * @param callable $handler Accepts a request and array of options and
-     *                          returns a Promise.
+     * @param callable(RequestInterface, array): PromiseInterface $handler Accepts a request and array of options and
+     *                                                                     returns a Promise.
      */
-    public function setHandler(callable $handler)
+    public function setHandler(callable $handler): void
     {
         $this->handler = $handler;
         $this->cached = null;
@@ -114,33 +119,31 @@ class HandlerStack
 
     /**
      * Returns true if the builder has a handler.
-     *
-     * @return bool
      */
-    public function hasHandler()
+    public function hasHandler(): bool
     {
-        return (bool) $this->handler;
+        return $this->handler !== null ;
     }
 
     /**
      * Unshift a middleware to the bottom of the stack.
      *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $name       Name to register for this middleware.
      */
-    public function unshift(callable $middleware, $name = null)
+    public function unshift(callable $middleware, ?string $name = null): void
     {
-        array_unshift($this->stack, [$middleware, $name]);
+        \array_unshift($this->stack, [$middleware, $name]);
         $this->cached = null;
     }
 
     /**
      * Push a middleware to the top of the stack.
      *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $name       Name to register for this middleware.
      */
-    public function push(callable $middleware, $name = '')
+    public function push(callable $middleware, string $name = ''): void
     {
         $this->stack[] = [$middleware, $name];
         $this->cached = null;
@@ -149,11 +152,11 @@ class HandlerStack
     /**
      * Add a middleware before another middleware by name.
      *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
+     * @param string                       $findName   Middleware to find
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $withName   Name to register for this middleware.
      */
-    public function before($findName, callable $middleware, $withName = '')
+    public function before(string $findName, callable $middleware, string $withName = ''): void
     {
         $this->splice($findName, $withName, $middleware, true);
     }
@@ -161,11 +164,11 @@ class HandlerStack
     /**
      * Add a middleware after another middleware by name.
      *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
+     * @param string                       $findName   Middleware to find
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $withName   Name to register for this middleware.
      */
-    public function after($findName, callable $middleware, $withName = '')
+    public function after(string $findName, callable $middleware, string $withName = ''): void
     {
         $this->splice($findName, $withName, $middleware, false);
     }
@@ -175,13 +178,17 @@ class HandlerStack
      *
      * @param callable|string $remove Middleware to remove by instance or name.
      */
-    public function remove($remove)
+    public function remove($remove): void
     {
+        if (!is_string($remove) && !is_callable($remove)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a callable or string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
         $this->cached = null;
-        $idx = is_callable($remove) ? 0 : 1;
-        $this->stack = array_values(array_filter(
+        $idx = \is_callable($remove) ? 0 : 1;
+        $this->stack = \array_values(\array_filter(
             $this->stack,
-            function ($tuple) use ($idx, $remove) {
+            static function ($tuple) use ($idx, $remove) {
                 return $tuple[$idx] !== $remove;
             }
         ));
@@ -190,16 +197,17 @@ class HandlerStack
     /**
      * Compose the middleware and handler into a single callable function.
      *
-     * @return callable
+     * @return callable(RequestInterface, array): PromiseInterface
      */
-    public function resolve()
+    public function resolve(): callable
     {
-        if (!$this->cached) {
-            if (!($prev = $this->handler)) {
+        if ($this->cached === null) {
+            if (($prev = $this->handler) === null) {
                 throw new \LogicException('No handler has been specified');
             }
 
-            foreach (array_reverse($this->stack) as $fn) {
+            foreach (\array_reverse($this->stack) as $fn) {
+                /** @var callable(RequestInterface, array): PromiseInterface $prev */
                 $prev = $fn[0]($prev);
             }
 
@@ -209,11 +217,7 @@ class HandlerStack
         return $this->cached;
     }
 
-    /**
-     * @param string $name
-     * @return int
-     */
-    private function findByName($name)
+    private function findByName(string $name): int
     {
         foreach ($this->stack as $k => $v) {
             if ($v[1] === $name) {
@@ -226,13 +230,8 @@ class HandlerStack
 
     /**
      * Splices a function into the middleware list at a specific position.
-     *
-     * @param string   $findName
-     * @param string   $withName
-     * @param callable $middleware
-     * @param bool     $before
      */
-    private function splice($findName, $withName, callable $middleware, $before)
+    private function splice(string $findName, string $withName, callable $middleware, bool $before): void
     {
         $this->cached = null;
         $idx = $this->findByName($findName);
@@ -240,38 +239,37 @@ class HandlerStack
 
         if ($before) {
             if ($idx === 0) {
-                array_unshift($this->stack, $tuple);
+                \array_unshift($this->stack, $tuple);
             } else {
                 $replacement = [$tuple, $this->stack[$idx]];
-                array_splice($this->stack, $idx, 1, $replacement);
+                \array_splice($this->stack, $idx, 1, $replacement);
             }
-        } elseif ($idx === count($this->stack) - 1) {
+        } elseif ($idx === \count($this->stack) - 1) {
             $this->stack[] = $tuple;
         } else {
             $replacement = [$this->stack[$idx], $tuple];
-            array_splice($this->stack, $idx, 1, $replacement);
+            \array_splice($this->stack, $idx, 1, $replacement);
         }
     }
 
     /**
      * Provides a debug string for a given callable.
      *
-     * @param array|callable $fn Function to write as a string.
-     *
-     * @return string
+     * @param callable|string $fn Function to write as a string.
      */
-    private function debugCallable($fn)
+    private function debugCallable($fn): string
     {
-        if (is_string($fn)) {
+        if (\is_string($fn)) {
             return "callable({$fn})";
         }
 
-        if (is_array($fn)) {
-            return is_string($fn[0])
+        if (\is_array($fn)) {
+            return \is_string($fn[0])
                 ? "callable({$fn[0]}::{$fn[1]})"
-                : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
+                : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])";
         }
 
-        return 'callable(' . spl_object_hash($fn) . ')';
+        /** @var object $fn */
+        return 'callable(' . \spl_object_hash($fn) . ')';
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
index dc36bb524d..da499547f1 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use Psr\Http\Message\MessageInterface;
@@ -31,25 +32,31 @@ use Psr\Http\Message\ResponseInterface;
  * - {res_headers}:    Response headers
  * - {req_body}:       Request body
  * - {res_body}:       Response body
+ *
+ * @final
  */
-class MessageFormatter
+class MessageFormatter implements MessageFormatterInterface
 {
     /**
      * Apache Common Log Format.
-     * @link http://httpd.apache.org/docs/2.4/logs.html#common
+     *
+     * @link https://httpd.apache.org/docs/2.4/logs.html#common
+     *
      * @var string
      */
-    const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
-    const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
-    const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
+    public const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
+    public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
+    public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
 
-    /** @var string Template used to format log messages */
+    /**
+     * @var string Template used to format log messages
+     */
     private $template;
 
     /**
      * @param string $template Log message template
      */
-    public function __construct($template = self::CLF)
+    public function __construct(?string $template = self::CLF)
     {
         $this->template = $template ?: self::CLF;
     }
@@ -57,20 +64,16 @@ class MessageFormatter
     /**
      * Returns a formatted message string.
      *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     * @param \Exception        $error    Exception that was received
-     *
-     * @return string
+     * @param RequestInterface       $request  Request that was sent
+     * @param ResponseInterface|null $response Response that was received
+     * @param \Throwable|null        $error    Exception that was received
      */
-    public function format(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $error = null
-    ) {
+    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string
+    {
         $cache = [];
 
-        return preg_replace_callback(
+        /** @var string */
+        return \preg_replace_callback(
             '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
             function (array $matches) use ($request, $response, $error, &$cache) {
                 if (isset($cache[$matches[1]])) {
@@ -80,20 +83,20 @@ class MessageFormatter
                 $result = '';
                 switch ($matches[1]) {
                     case 'request':
-                        $result = Psr7\str($request);
+                        $result = Psr7\Message::toString($request);
                         break;
                     case 'response':
-                        $result = $response ? Psr7\str($response) : '';
+                        $result = $response ? Psr7\Message::toString($response) : '';
                         break;
                     case 'req_headers':
-                        $result = trim($request->getMethod()
+                        $result = \trim($request->getMethod()
                                 . ' ' . $request->getRequestTarget())
                             . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
                             . $this->headers($request);
                         break;
                     case 'res_headers':
                         $result = $response ?
-                            sprintf(
+                            \sprintf(
                                 'HTTP/%s %d %s',
                                 $response->getProtocolVersion(),
                                 $response->getStatusCode(),
@@ -102,17 +105,29 @@ class MessageFormatter
                             : 'NULL';
                         break;
                     case 'req_body':
-                        $result = $request->getBody();
+                        $result = $request->getBody()->__toString();
                         break;
                     case 'res_body':
-                        $result = $response ? $response->getBody() : 'NULL';
+                        if (!$response instanceof ResponseInterface) {
+                            $result = 'NULL';
+                            break;
+                        }
+
+                        $body = $response->getBody();
+
+                        if (!$body->isSeekable()) {
+                            $result = 'RESPONSE_NOT_LOGGEABLE';
+                            break;
+                        }
+
+                        $result = $response->getBody()->__toString();
                         break;
                     case 'ts':
                     case 'date_iso_8601':
-                        $result = gmdate('c');
+                        $result = \gmdate('c');
                         break;
                     case 'date_common_log':
-                        $result = date('d/M/Y:H:i:s O');
+                        $result = \date('d/M/Y:H:i:s O');
                         break;
                     case 'method':
                         $result = $request->getMethod();
@@ -122,7 +137,7 @@ class MessageFormatter
                         break;
                     case 'uri':
                     case 'url':
-                        $result = $request->getUri();
+                        $result = $request->getUri()->__toString();
                         break;
                     case 'target':
                         $result = $request->getRequestTarget();
@@ -139,7 +154,7 @@ class MessageFormatter
                         $result = $request->getHeaderLine('Host');
                         break;
                     case 'hostname':
-                        $result = gethostname();
+                        $result = \gethostname();
                         break;
                     case 'code':
                         $result = $response ? $response->getStatusCode() : 'NULL';
@@ -152,11 +167,11 @@ class MessageFormatter
                         break;
                     default:
                         // handle prefixed dynamic headers
-                        if (strpos($matches[1], 'req_header_') === 0) {
-                            $result = $request->getHeaderLine(substr($matches[1], 11));
-                        } elseif (strpos($matches[1], 'res_header_') === 0) {
+                        if (\strpos($matches[1], 'req_header_') === 0) {
+                            $result = $request->getHeaderLine(\substr($matches[1], 11));
+                        } elseif (\strpos($matches[1], 'res_header_') === 0) {
                             $result = $response
-                                ? $response->getHeaderLine(substr($matches[1], 11))
+                                ? $response->getHeaderLine(\substr($matches[1], 11))
                                 : 'NULL';
                         }
                 }
@@ -170,16 +185,14 @@ class MessageFormatter
 
     /**
      * Get headers from message as string
-     *
-     * @return string
      */
-    private function headers(MessageInterface $message)
+    private function headers(MessageInterface $message): string
     {
         $result = '';
         foreach ($message->getHeaders() as $name => $values) {
-            $result .= $name . ': ' . implode(', ', $values) . "\r\n";
+            $result .= $name . ': ' . \implode(', ', $values) . "\r\n";
         }
 
-        return trim($result);
+        return \trim($result);
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
new file mode 100644
index 0000000000..a39ac248ee
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+
+interface MessageFormatterInterface
+{
+    /**
+     * Returns a formatted message string.
+     *
+     * @param RequestInterface       $request  Request that was sent
+     * @param ResponseInterface|null $response Response that was received
+     * @param \Throwable|null        $error    Exception that was received
+     */
+    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string;
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
index bffc1974bb..7035c77ffa 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
@@ -1,10 +1,12 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJarInterface;
 use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise as P;
+use GuzzleHttp\Promise\PromiseInterface;
+use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerInterface;
 
@@ -21,10 +23,10 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function cookies()
+    public static function cookies(): callable
     {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
+        return static function (callable $handler): callable {
+            return static function ($request, array $options) use ($handler) {
                 if (empty($options['cookies'])) {
                     return $handler($request, $options);
                 } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
@@ -34,7 +36,7 @@ final class Middleware
                 $request = $cookieJar->withCookieHeader($request);
                 return $handler($request, $options)
                     ->then(
-                        function ($response) use ($cookieJar, $request) {
+                        static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface {
                             $cookieJar->extractCookies($request, $response);
                             return $response;
                         }
@@ -45,24 +47,26 @@ final class Middleware
 
     /**
      * Middleware that throws exceptions for 4xx or 5xx responses when the
-     * "http_error" request option is set to true.
+     * "http_errors" request option is set to true.
      *
-     * @return callable Returns a function that accepts the next handler.
+     * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages.
+     *
+     * @return callable(callable): callable Returns a function that accepts the next handler.
      */
-    public static function httpErrors()
+    public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable
     {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
+        return static function (callable $handler) use ($bodySummarizer): callable {
+            return static function ($request, array $options) use ($handler, $bodySummarizer) {
                 if (empty($options['http_errors'])) {
                     return $handler($request, $options);
                 }
                 return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request) {
+                    static function (ResponseInterface $response) use ($request, $bodySummarizer) {
                         $code = $response->getStatusCode();
                         if ($code < 400) {
                             return $response;
                         }
-                        throw RequestException::create($request, $response);
+                        throw RequestException::create($request, $response, null, [], $bodySummarizer);
                     }
                 );
             };
@@ -72,21 +76,22 @@ final class Middleware
     /**
      * Middleware that pushes history data to an ArrayAccess container.
      *
-     * @param array|\ArrayAccess $container Container to hold the history (by reference).
+     * @param array|\ArrayAccess<int, array> $container Container to hold the history (by reference).
+     *
+     * @return callable(callable): callable Returns a function that accepts the next handler.
      *
-     * @return callable Returns a function that accepts the next handler.
      * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
      */
-    public static function history(&$container)
+    public static function history(&$container): callable
     {
-        if (!is_array($container) && !$container instanceof \ArrayAccess) {
+        if (!\is_array($container) && !$container instanceof \ArrayAccess) {
             throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
         }
 
-        return function (callable $handler) use (&$container) {
-            return function ($request, array $options) use ($handler, &$container) {
+        return static function (callable $handler) use (&$container): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, &$container) {
                 return $handler($request, $options)->then(
-                    function ($value) use ($request, &$container, $options) {
+                    static function ($value) use ($request, &$container, $options) {
                         $container[] = [
                             'request'  => $request,
                             'response' => $value,
@@ -95,14 +100,14 @@ final class Middleware
                         ];
                         return $value;
                     },
-                    function ($reason) use ($request, &$container, $options) {
+                    static function ($reason) use ($request, &$container, $options) {
                         $container[] = [
                             'request'  => $request,
                             'response' => null,
                             'error'    => $reason,
                             'options'  => $options
                         ];
-                        return \GuzzleHttp\Promise\rejection_for($reason);
+                        return P\Create::rejectionFor($reason);
                     }
                 );
             };
@@ -122,10 +127,10 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function tap(callable $before = null, callable $after = null)
+    public static function tap(callable $before = null, callable $after = null): callable
     {
-        return function (callable $handler) use ($before, $after) {
-            return function ($request, array $options) use ($handler, $before, $after) {
+        return static function (callable $handler) use ($before, $after): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $before, $after) {
                 if ($before) {
                     $before($request, $options);
                 }
@@ -143,9 +148,9 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function redirect()
+    public static function redirect(): callable
     {
-        return function (callable $handler) {
+        return static function (callable $handler): RedirectMiddleware {
             return new RedirectMiddleware($handler);
         };
     }
@@ -165,9 +170,9 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function retry(callable $decider, callable $delay = null)
+    public static function retry(callable $decider, callable $delay = null): callable
     {
-        return function (callable $handler) use ($decider, $delay) {
+        return static function (callable $handler) use ($decider, $delay): RetryMiddleware {
             return new RetryMiddleware($decider, $handler, $delay);
         };
     }
@@ -176,29 +181,34 @@ final class Middleware
      * Middleware that logs requests, responses, and errors using a message
      * formatter.
      *
-     * @param LoggerInterface  $logger Logs messages.
-     * @param MessageFormatter $formatter Formatter used to create message strings.
-     * @param string           $logLevel Level at which to log requests.
+     * @phpstan-param \Psr\Log\LogLevel::* $logLevel  Level at which to log requests.
+     *
+     * @param LoggerInterface                            $logger    Logs messages.
+     * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings.
+     * @param string                                     $logLevel  Level at which to log requests.
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
+    public static function log(LoggerInterface $logger, $formatter, string $logLevel = 'info'): callable
     {
-        return function (callable $handler) use ($logger, $formatter, $logLevel) {
-            return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
+        // To be compatible with Guzzle 7.1.x we need to allow users to pass a MessageFormatter
+        if (!$formatter instanceof MessageFormatter && !$formatter instanceof MessageFormatterInterface) {
+            throw new \LogicException(sprintf('Argument 2 to %s::log() must be of type %s', self::class, MessageFormatterInterface::class));
+        }
+
+        return static function (callable $handler) use ($logger, $formatter, $logLevel): callable {
+            return static function (RequestInterface $request, array $options = []) use ($handler, $logger, $formatter, $logLevel) {
                 return $handler($request, $options)->then(
-                    function ($response) use ($logger, $request, $formatter, $logLevel) {
+                    static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface {
                         $message = $formatter->format($request, $response);
                         $logger->log($logLevel, $message);
                         return $response;
                     },
-                    function ($reason) use ($logger, $request, $formatter) {
-                        $response = $reason instanceof RequestException
-                            ? $reason->getResponse()
-                            : null;
-                        $message = $formatter->format($request, $response, $reason);
-                        $logger->notice($message);
-                        return \GuzzleHttp\Promise\rejection_for($reason);
+                    static function ($reason) use ($logger, $request, $formatter): PromiseInterface {
+                        $response = $reason instanceof RequestException ? $reason->getResponse() : null;
+                        $message = $formatter->format($request, $response, P\Create::exceptionFor($reason));
+                        $logger->error($message);
+                        return P\Create::rejectionFor($reason);
                     }
                 );
             };
@@ -208,12 +218,10 @@ final class Middleware
     /**
      * This middleware adds a default content-type if possible, a default
      * content-length or transfer-encoding header, and the expect header.
-     *
-     * @return callable
      */
-    public static function prepareBody()
+    public static function prepareBody(): callable
     {
-        return function (callable $handler) {
+        return static function (callable $handler): PrepareBodyMiddleware {
             return new PrepareBodyMiddleware($handler);
         };
     }
@@ -224,12 +232,11 @@ final class Middleware
      *
      * @param callable $fn Function that accepts a RequestInterface and returns
      *                     a RequestInterface.
-     * @return callable
      */
-    public static function mapRequest(callable $fn)
+    public static function mapRequest(callable $fn): callable
     {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
+        return static function (callable $handler) use ($fn): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $fn) {
                 return $handler($fn($request), $options);
             };
         };
@@ -241,12 +248,11 @@ final class Middleware
      *
      * @param callable $fn Function that accepts a ResponseInterface and
      *                     returns a ResponseInterface.
-     * @return callable
      */
-    public static function mapResponse(callable $fn)
+    public static function mapResponse(callable $fn): callable
     {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
+        return static function (callable $handler) use ($fn): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $fn) {
                 return $handler($request, $options)->then($fn);
             };
         };
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php b/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
index 5838db4f4c..6277c61fbc 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
@@ -1,6 +1,8 @@
 <?php
+
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\EachPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Promise\PromisorInterface;
@@ -16,10 +18,14 @@ use Psr\Http\Message\RequestInterface;
  * When a function is yielded by the iterator, the function is provided the
  * "request_options" array that should be merged on top of any existing
  * options, and the function MUST then return a wait-able promise.
+ *
+ * @final
  */
 class Pool implements PromisorInterface
 {
-    /** @var EachPromise */
+    /**
+     * @var EachPromise
+     */
     private $each;
 
     /**
@@ -27,20 +33,14 @@ class Pool implements PromisorInterface
      * @param array|\Iterator $requests Requests or functions that return
      *                                  requests to send concurrently.
      * @param array           $config   Associative array of options
-     *     - concurrency: (int) Maximum number of requests to send concurrently
-     *     - options: Array of request options to apply to each request.
-     *     - fulfilled: (callable) Function to invoke when a request completes.
-     *     - rejected: (callable) Function to invoke when a request is rejected.
+     *                                  - concurrency: (int) Maximum number of requests to send concurrently
+     *                                  - options: Array of request options to apply to each request.
+     *                                  - fulfilled: (callable) Function to invoke when a request completes.
+     *                                  - rejected: (callable) Function to invoke when a request is rejected.
      */
-    public function __construct(
-        ClientInterface $client,
-        $requests,
-        array $config = []
-    ) {
-        // Backwards compatibility.
-        if (isset($config['pool_size'])) {
-            $config['concurrency'] = $config['pool_size'];
-        } elseif (!isset($config['concurrency'])) {
+    public function __construct(ClientInterface $client, $requests, array $config = [])
+    {
+        if (!isset($config['concurrency'])) {
             $config['concurrency'] = 25;
         }
 
@@ -51,18 +51,15 @@ class Pool implements PromisorInterface
             $opts = [];
         }
 
-        $iterable = \GuzzleHttp\Promise\iter_for($requests);
-        $requests = function () use ($iterable, $client, $opts) {
+        $iterable = P\Create::iterFor($requests);
+        $requests = static function () use ($iterable, $client, $opts) {
             foreach ($iterable as $key => $rfn) {
                 if ($rfn instanceof RequestInterface) {
                     yield $key => $client->sendAsync($rfn, $opts);
-                } elseif (is_callable($rfn)) {
+                } elseif (\is_callable($rfn)) {
                     yield $key => $rfn($opts);
                 } else {
-                    throw new \InvalidArgumentException('Each value yielded by '
-                        . 'the iterator must be a Psr7\Http\Message\RequestInterface '
-                        . 'or a callable that returns a promise that fulfills '
-                        . 'with a Psr7\Message\Http\ResponseInterface object.');
+                    throw new \InvalidArgumentException('Each value yielded by the iterator must be a Psr7\Http\Message\RequestInterface or a callable that returns a promise that fulfills with a Psr7\Message\Http\ResponseInterface object.');
                 }
             }
         };
@@ -72,10 +69,8 @@ class Pool implements PromisorInterface
 
     /**
      * Get promise
-     *
-     * @return PromiseInterface
      */
-    public function promise()
+    public function promise(): PromiseInterface
     {
         return $this->each->promise();
     }
@@ -91,41 +86,37 @@ class Pool implements PromisorInterface
      * @param ClientInterface $client   Client used to send the requests
      * @param array|\Iterator $requests Requests to send concurrently.
      * @param array           $options  Passes through the options available in
-     *                                  {@see GuzzleHttp\Pool::__construct}
+     *                                  {@see \GuzzleHttp\Pool::__construct}
      *
      * @return array Returns an array containing the response or an exception
      *               in the same order that the requests were sent.
+     *
      * @throws \InvalidArgumentException if the event format is incorrect.
      */
-    public static function batch(
-        ClientInterface $client,
-        $requests,
-        array $options = []
-    ) {
+    public static function batch(ClientInterface $client, $requests, array $options = []): array
+    {
         $res = [];
         self::cmpCallback($options, 'fulfilled', $res);
         self::cmpCallback($options, 'rejected', $res);
         $pool = new static($client, $requests, $options);
         $pool->promise()->wait();
-        ksort($res);
+        \ksort($res);
 
         return $res;
     }
 
     /**
      * Execute callback(s)
-     *
-     * @return void
      */
-    private static function cmpCallback(array &$options, $name, array &$results)
+    private static function cmpCallback(array &$options, string $name, array &$results): void
     {
         if (!isset($options[$name])) {
-            $options[$name] = function ($v, $k) use (&$results) {
+            $options[$name] = static function ($v, $k) use (&$results) {
                 $results[$k] = $v;
             };
         } else {
             $currentFn = $options[$name];
-            $options[$name] = function ($v, $k) use (&$results, $currentFn) {
+            $options[$name] = static function ($v, $k) use (&$results, $currentFn) {
                 $currentFn($v, $k);
                 $results[$k] = $v;
             };
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
index 568a1e906c..7ca6283380 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
@@ -1,34 +1,32 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Prepares requests that contain a body, adding the Content-Length,
  * Content-Type, and Expect headers.
+ *
+ * @final
  */
 class PrepareBodyMiddleware
 {
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
     /**
-     * @param callable $nextHandler Next handler to invoke.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
      */
     public function __construct(callable $nextHandler)
     {
         $this->nextHandler = $nextHandler;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $fn = $this->nextHandler;
 
@@ -42,7 +40,7 @@ class PrepareBodyMiddleware
         // Add a default content-type if possible.
         if (!$request->hasHeader('Content-Type')) {
             if ($uri = $request->getBody()->getMetadata('uri')) {
-                if ($type = Psr7\mimetype_from_filename($uri)) {
+                if (is_string($uri) && $type = Psr7\MimeType::fromFilename($uri)) {
                     $modify['set_headers']['Content-Type'] = $type;
                 }
             }
@@ -63,25 +61,20 @@ class PrepareBodyMiddleware
         // Add the expect header if needed.
         $this->addExpectHeader($request, $options, $modify);
 
-        return $fn(Psr7\modify_request($request, $modify), $options);
+        return $fn(Psr7\Utils::modifyRequest($request, $modify), $options);
     }
 
     /**
      * Add expect header
-     *
-     * @return void
      */
-    private function addExpectHeader(
-        RequestInterface $request,
-        array $options,
-        array &$modify
-    ) {
+    private function addExpectHeader(RequestInterface $request, array $options, array &$modify): void
+    {
         // Determine if the Expect header should be used
         if ($request->hasHeader('Expect')) {
             return;
         }
 
-        $expect = isset($options['expect']) ? $options['expect'] : null;
+        $expect = $options['expect'] ?? null;
 
         // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
         if ($expect === false || $request->getProtocolVersion() < 1.1) {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
index 008a29b8c7..f67d448beb 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
@@ -1,10 +1,10 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\BadResponseException;
 use GuzzleHttp\Exception\TooManyRedirectsException;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -14,13 +14,18 @@ use Psr\Http\Message\UriInterface;
  *
  * Apply this middleware like other middleware using
  * {@see \GuzzleHttp\Middleware::redirect()}.
+ *
+ * @final
  */
 class RedirectMiddleware
 {
-    const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
+    public const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
 
-    const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
+    public const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
 
+    /**
+     * @var array
+     */
     public static $defaultSettings = [
         'max'             => 5,
         'protocols'       => ['http', 'https'],
@@ -29,24 +34,20 @@ class RedirectMiddleware
         'track_redirects' => false,
     ];
 
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
     /**
-     * @param callable $nextHandler Next handler to invoke.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
      */
     public function __construct(callable $nextHandler)
     {
         $this->nextHandler = $nextHandler;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $fn = $this->nextHandler;
 
@@ -56,7 +57,7 @@ class RedirectMiddleware
 
         if ($options['allow_redirects'] === true) {
             $options['allow_redirects'] = self::$defaultSettings;
-        } elseif (!is_array($options['allow_redirects'])) {
+        } elseif (!\is_array($options['allow_redirects'])) {
             throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
         } else {
             // Merge the default settings with the provided settings
@@ -74,24 +75,17 @@ class RedirectMiddleware
     }
 
     /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
      * @return ResponseInterface|PromiseInterface
      */
-    public function checkRedirect(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        if (substr($response->getStatusCode(), 0, 1) != '3'
+    public function checkRedirect(RequestInterface $request, array $options, ResponseInterface $response)
+    {
+        if (\strpos((string) $response->getStatusCode(), '3') !== 0
             || !$response->hasHeader('Location')
         ) {
             return $response;
         }
 
-        $this->guardMax($request, $options);
+        $this->guardMax($request, $response, $options);
         $nextRequest = $this->modifyRequest($request, $options, $response);
 
         // If authorization is handled by curl, unset it if URI is cross-origin.
@@ -103,15 +97,13 @@ class RedirectMiddleware
         }
 
         if (isset($options['allow_redirects']['on_redirect'])) {
-            call_user_func(
-                $options['allow_redirects']['on_redirect'],
+            ($options['allow_redirects']['on_redirect'])(
                 $request,
                 $response,
                 $nextRequest->getUri()
             );
         }
 
-        /** @var PromiseInterface|ResponseInterface $promise */
         $promise = $this($nextRequest, $options);
 
         // Add headers to be able to track history of redirects.
@@ -128,20 +120,19 @@ class RedirectMiddleware
 
     /**
      * Enable tracking on promise.
-     *
-     * @return PromiseInterface
      */
-    private function withTracking(PromiseInterface $promise, $uri, $statusCode)
+    private function withTracking(PromiseInterface $promise, string $uri, int $statusCode): PromiseInterface
     {
         return $promise->then(
-            function (ResponseInterface $response) use ($uri, $statusCode) {
+            static function (ResponseInterface $response) use ($uri, $statusCode) {
                 // Note that we are pushing to the front of the list as this
                 // would be an earlier response than what is currently present
                 // in the history header.
                 $historyHeader = $response->getHeader(self::HISTORY_HEADER);
                 $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
-                array_unshift($historyHeader, $uri);
-                array_unshift($statusHeader, $statusCode);
+                \array_unshift($historyHeader, $uri);
+                \array_unshift($statusHeader, (string) $statusCode);
+
                 return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
                                 ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
             }
@@ -151,38 +142,22 @@ class RedirectMiddleware
     /**
      * Check for too many redirects.
      *
-     * @return void
-     *
      * @throws TooManyRedirectsException Too many redirects.
      */
-    private function guardMax(RequestInterface $request, array &$options)
+    private function guardMax(RequestInterface $request, ResponseInterface $response, array &$options): void
     {
-        $current = isset($options['__redirect_count'])
-            ? $options['__redirect_count']
-            : 0;
+        $current = $options['__redirect_count']
+            ?? 0;
         $options['__redirect_count'] = $current + 1;
         $max = $options['allow_redirects']['max'];
 
         if ($options['__redirect_count'] > $max) {
-            throw new TooManyRedirectsException(
-                "Will not follow more than {$max} redirects",
-                $request
-            );
+            throw new TooManyRedirectsException("Will not follow more than {$max} redirects", $request, $response);
         }
     }
 
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
-     * @return RequestInterface
-     */
-    public function modifyRequest(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
+    public function modifyRequest(RequestInterface $request, array $options, ResponseInterface $response): RequestInterface
+    {
         // Request modifications to apply.
         $modify = [];
         $protocols = $options['allow_redirects']['protocols'];
@@ -194,18 +169,21 @@ class RedirectMiddleware
         if ($statusCode == 303 ||
             ($statusCode <= 302 && !$options['allow_redirects']['strict'])
         ) {
-            $modify['method'] = 'GET';
+            $safeMethods = ['GET', 'HEAD', 'OPTIONS'];
+            $requestMethod = $request->getMethod();
+
+            $modify['method'] = in_array($requestMethod, $safeMethods) ? $requestMethod : 'GET';
             $modify['body'] = '';
         }
 
         $uri = self::redirectUri($request, $response, $protocols);
         if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
-            $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
+            $idnOptions = ($options['idn_conversion'] === true) ? \IDNA_DEFAULT : $options['idn_conversion'];
             $uri = Utils::idnUriConvert($uri, $idnOptions);
         }
 
         $modify['uri'] = $uri;
-        Psr7\rewind_body($request);
+        Psr7\Message::rewindBody($request);
 
         // Add the Referer header if it is told to do so and only
         // add the header if we are not redirecting from https to http.
@@ -224,39 +202,25 @@ class RedirectMiddleware
             $modify['remove_headers'][] = 'Cookie';
         }
 
-        return Psr7\modify_request($request, $modify);
+        return Psr7\Utils::modifyRequest($request, $modify);
     }
 
     /**
      * Set the appropriate URL on the request based on the location header.
-     *
-     * @param RequestInterface  $request
-     * @param ResponseInterface $response
-     * @param array             $protocols
-     *
-     * @return UriInterface
      */
     private static function redirectUri(
         RequestInterface $request,
         ResponseInterface $response,
         array $protocols
-    ) {
+    ): UriInterface {
         $location = Psr7\UriResolver::resolve(
             $request->getUri(),
             new Psr7\Uri($response->getHeaderLine('Location'))
         );
 
         // Ensure that the redirect URI is allowed based on the protocols.
-        if (!in_array($location->getScheme(), $protocols)) {
-            throw new BadResponseException(
-                sprintf(
-                    'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
-                    $location,
-                    implode(', ', $protocols)
-                ),
-                $request,
-                $response
-            );
+        if (!\in_array($location->getScheme(), $protocols)) {
+            throw new BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response);
         }
 
         return $location;
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
index 355f658f03..542cd72c09 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 /**
@@ -31,7 +32,7 @@ final class RequestOptions
      *   response that was received, and the effective URI. Any return value
      *   from the on_redirect function is ignored.
      */
-    const ALLOW_REDIRECTS = 'allow_redirects';
+    public const ALLOW_REDIRECTS = 'allow_redirects';
 
     /**
      * auth: (array) Pass an array of HTTP authentication parameters to use
@@ -40,13 +41,13 @@ final class RequestOptions
      * authentication type in index [2]. Pass null to disable authentication
      * for a request.
      */
-    const AUTH = 'auth';
+    public const AUTH = 'auth';
 
     /**
      * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
      * Body to send in the request.
      */
-    const BODY = 'body';
+    public const BODY = 'body';
 
     /**
      * cert: (string|array) Set to a string to specify the path to a file
@@ -55,42 +56,54 @@ final class RequestOptions
      * file in the first array element followed by the certificate password
      * in the second array element.
      */
-    const CERT = 'cert';
+    public const CERT = 'cert';
 
     /**
      * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
      * Specifies whether or not cookies are used in a request or what cookie
      * jar to use or what cookies to send. This option only works if your
      * handler has the `cookie` middleware. Valid values are `false` and
-     * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
+     * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}.
      */
-    const COOKIES = 'cookies';
+    public const COOKIES = 'cookies';
 
     /**
      * connect_timeout: (float, default=0) Float describing the number of
      * seconds to wait while trying to connect to a server. Use 0 to wait
-     * indefinitely (the default behavior).
+     * 300 seconds (the default behavior).
+     */
+    public const CONNECT_TIMEOUT = 'connect_timeout';
+
+    /**
+     * crypto_method: (int) A value describing the minimum TLS protocol
+     * version to use.
+     *
+     * This setting must be set to one of the
+     * ``STREAM_CRYPTO_METHOD_TLS*_CLIENT`` constants. PHP 7.4 or higher is
+     * required in order to use TLS 1.3, and cURL 7.34.0 or higher is required
+     * in order to specify a crypto method, with cURL 7.52.0 or higher being
+     * required to use TLS 1.3.
      */
-    const CONNECT_TIMEOUT = 'connect_timeout';
+    public const CRYPTO_METHOD = 'crypto_method';
 
     /**
      * debug: (bool|resource) Set to true or set to a PHP stream returned by
      * fopen()  enable debug output with the HTTP handler used to send a
      * request.
      */
-    const DEBUG = 'debug';
+    public const DEBUG = 'debug';
 
     /**
      * decode_content: (bool, default=true) Specify whether or not
      * Content-Encoding responses (gzip, deflate, etc.) are automatically
      * decoded.
      */
-    const DECODE_CONTENT = 'decode_content';
+    public const DECODE_CONTENT = 'decode_content';
 
     /**
      * delay: (int) The amount of time to delay before sending in milliseconds.
      */
-    const DELAY = 'delay';
+    public const DELAY = 'delay';
 
     /**
      * expect: (bool|integer) Controls the behavior of the
@@ -108,7 +121,7 @@ final class RequestOptions
      * size of the body of a request is greater than 1 MB and a request is
      * using HTTP/1.1.
      */
-    const EXPECT = 'expect';
+    public const EXPECT = 'expect';
 
     /**
      * form_params: (array) Associative array of form field names to values
@@ -116,13 +129,13 @@ final class RequestOptions
      * header to application/x-www-form-urlencoded when no Content-Type header
      * is already present.
      */
-    const FORM_PARAMS = 'form_params';
+    public const FORM_PARAMS = 'form_params';
 
     /**
      * headers: (array) Associative array of HTTP headers. Each value MUST be
      * a string or array of strings.
      */
-    const HEADERS = 'headers';
+    public const HEADERS = 'headers';
 
     /**
      * http_errors: (bool, default=true) Set to false to disable exceptions
@@ -130,7 +143,7 @@ final class RequestOptions
      * exceptions will be thrown for 4xx and 5xx responses. This option only
      * works if your handler has the `httpErrors` middleware.
      */
-    const HTTP_ERRORS = 'http_errors';
+    public const HTTP_ERRORS = 'http_errors';
 
     /**
      * idn: (bool|int, default=true) A combination of IDNA_* constants for
@@ -138,14 +151,14 @@ final class RequestOptions
      * disable IDN support completely, or to true to use the default
      * configuration (IDNA_DEFAULT constant).
      */
-    const IDN_CONVERSION = 'idn_conversion';
+    public const IDN_CONVERSION = 'idn_conversion';
 
     /**
      * json: (mixed) Adds JSON data to a request. The provided value is JSON
      * encoded and a Content-Type header of application/json will be added to
      * the request if no Content-Type header is already present.
      */
-    const JSON = 'json';
+    public const JSON = 'json';
 
     /**
      * multipart: (array) Array of associative arrays, each containing a
@@ -156,14 +169,14 @@ final class RequestOptions
      * the part. If no "filename" key is present, then no "filename" attribute
      * will be added to the part.
      */
-    const MULTIPART = 'multipart';
+    public const MULTIPART = 'multipart';
 
     /**
      * on_headers: (callable) A callable that is invoked when the HTTP headers
      * of the response have been received but the body has not yet begun to
      * download.
      */
-    const ON_HEADERS = 'on_headers';
+    public const ON_HEADERS = 'on_headers';
 
     /**
      * on_stats: (callable) allows you to get access to transfer statistics of
@@ -174,7 +187,7 @@ final class RequestOptions
      * the error encountered. Included in the data is the total amount of time
      * taken to send the request.
      */
-    const ON_STATS = 'on_stats';
+    public const ON_STATS = 'on_stats';
 
     /**
      * progress: (callable) Defines a function to invoke when transfer
@@ -183,14 +196,14 @@ final class RequestOptions
      * number of bytes downloaded so far, the number of bytes expected to be
      * uploaded, the number of bytes uploaded so far.
      */
-    const PROGRESS = 'progress';
+    public const PROGRESS = 'progress';
 
     /**
      * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
      * array to specify different proxies for different protocols (where the
      * key is the protocol and the value is a proxy string).
      */
-    const PROXY = 'proxy';
+    public const PROXY = 'proxy';
 
     /**
      * query: (array|string) Associative array of query string values to add
@@ -198,14 +211,14 @@ final class RequestOptions
      * the string representation. Pass a string value if you need more
      * control than what this method provides
      */
-    const QUERY = 'query';
+    public const QUERY = 'query';
 
     /**
      * sink: (resource|string|StreamInterface) Where the data of the
      * response is written to. Defaults to a PHP temp stream. Providing a
      * string will write data to a file by the given name.
      */
-    const SINK = 'sink';
+    public const SINK = 'sink';
 
     /**
      * synchronous: (bool) Set to true to inform HTTP handlers that you intend
@@ -213,7 +226,7 @@ final class RequestOptions
      * that a promise is still returned if you are using one of the async
      * client methods.
      */
-    const SYNCHRONOUS = 'synchronous';
+    public const SYNCHRONOUS = 'synchronous';
 
     /**
      * ssl_key: (array|string) Specify the path to a file containing a private
@@ -221,13 +234,13 @@ final class RequestOptions
      * containing the path to the SSL key in the first array element followed
      * by the password required for the certificate in the second element.
      */
-    const SSL_KEY = 'ssl_key';
+    public const SSL_KEY = 'ssl_key';
 
     /**
      * stream: Set to true to attempt to stream a response rather than
      * download it all up-front.
      */
-    const STREAM = 'stream';
+    public const STREAM = 'stream';
 
     /**
      * verify: (bool|string, default=true) Describes the SSL certificate
@@ -237,27 +250,27 @@ final class RequestOptions
      * is insecure!). Set to a string to provide the path to a CA bundle on
      * disk to enable verification using a custom certificate.
      */
-    const VERIFY = 'verify';
+    public const VERIFY = 'verify';
 
     /**
      * timeout: (float, default=0) Float describing the timeout of the
      * request in seconds. Use 0 to wait indefinitely (the default behavior).
      */
-    const TIMEOUT = 'timeout';
+    public const TIMEOUT = 'timeout';
 
     /**
      * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
      * the body read timeout, for stream requests.
      */
-    const READ_TIMEOUT = 'read_timeout';
+    public const READ_TIMEOUT = 'read_timeout';
 
     /**
      * version: (float) Specifies the HTTP protocol version to attempt to use.
      */
-    const VERSION = 'version';
+    public const VERSION = 'version';
 
     /**
      * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
      */
-    const FORCE_IP_RESOLVE = 'force_ip_resolve';
+    public const FORCE_IP_RESOLVE = 'force_ip_resolve';
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
index 5acc8c5c39..0236a9d547 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
@@ -1,42 +1,47 @@
 <?php
+
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 
 /**
  * Middleware that retries requests based on the boolean result of
  * invoking the provided "decider" function.
+ *
+ * @final
  */
 class RetryMiddleware
 {
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
-    /** @var callable */
+    /**
+     * @var callable
+     */
     private $decider;
 
-    /** @var callable */
+    /**
+     * @var callable(int)
+     */
     private $delay;
 
     /**
-     * @param callable $decider     Function that accepts the number of retries,
-     *                              a request, [response], and [exception] and
-     *                              returns true if the request is to be
-     *                              retried.
-     * @param callable $nextHandler Next handler to invoke.
-     * @param callable $delay       Function that accepts the number of retries
-     *                              and [response] and returns the number of
-     *                              milliseconds to delay.
+     * @param callable                                            $decider     Function that accepts the number of retries,
+     *                                                                         a request, [response], and [exception] and
+     *                                                                         returns true if the request is to be
+     *                                                                         retried.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
+     * @param (callable(int): int)|null                           $delay       Function that accepts the number of retries
+     *                                                                         and returns the number of
+     *                                                                         milliseconds to delay.
      */
-    public function __construct(
-        callable $decider,
-        callable $nextHandler,
-        callable $delay = null
-    ) {
+    public function __construct(callable $decider, callable $nextHandler, callable $delay = null)
+    {
         $this->decider = $decider;
         $this->nextHandler = $nextHandler;
         $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
@@ -45,22 +50,14 @@ class RetryMiddleware
     /**
      * Default exponential backoff delay function.
      *
-     * @param int $retries
-     *
      * @return int milliseconds.
      */
-    public static function exponentialDelay($retries)
+    public static function exponentialDelay(int $retries): int
     {
-        return (int) pow(2, $retries - 1) * 1000;
+        return (int) \pow(2, $retries - 1) * 1000;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (!isset($options['retries'])) {
             $options['retries'] = 0;
@@ -76,52 +73,43 @@ class RetryMiddleware
 
     /**
      * Execute fulfilled closure
-     *
-     * @return mixed
      */
-    private function onFulfilled(RequestInterface $req, array $options)
+    private function onFulfilled(RequestInterface $request, array $options): callable
     {
-        return function ($value) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
+        return function ($value) use ($request, $options) {
+            if (!($this->decider)(
                 $options['retries'],
-                $req,
+                $request,
                 $value,
                 null
             )) {
                 return $value;
             }
-            return $this->doRetry($req, $options, $value);
+            return $this->doRetry($request, $options, $value);
         };
     }
 
     /**
      * Execute rejected closure
-     *
-     * @return callable
      */
-    private function onRejected(RequestInterface $req, array $options)
+    private function onRejected(RequestInterface $req, array $options): callable
     {
         return function ($reason) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
+            if (!($this->decider)(
                 $options['retries'],
                 $req,
                 null,
                 $reason
             )) {
-                return \GuzzleHttp\Promise\rejection_for($reason);
+                return P\Create::rejectionFor($reason);
             }
             return $this->doRetry($req, $options);
         };
     }
 
-    /**
-     * @return self
-     */
-    private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
+    private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface
     {
-        $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
+        $options['delay'] = ($this->delay)(++$options['retries'], $response, $request);
 
         return $this($request, $options);
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php b/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
index 87fb3c0016..93fa334c8d 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use Psr\Http\Message\RequestInterface;
@@ -11,10 +12,29 @@ use Psr\Http\Message\UriInterface;
  */
 final class TransferStats
 {
+    /**
+     * @var RequestInterface
+     */
     private $request;
+
+    /**
+     * @var ResponseInterface|null
+     */
     private $response;
+
+    /**
+     * @var float|null
+     */
     private $transferTime;
+
+    /**
+     * @var array
+     */
     private $handlerStats;
+
+    /**
+     * @var mixed|null
+     */
     private $handlerErrorData;
 
     /**
@@ -26,10 +46,10 @@ final class TransferStats
      */
     public function __construct(
         RequestInterface $request,
-        ResponseInterface $response = null,
-        $transferTime = null,
+        ?ResponseInterface $response = null,
+        ?float $transferTime = null,
         $handlerErrorData = null,
-        $handlerStats = []
+        array $handlerStats = []
     ) {
         $this->request = $request;
         $this->response = $response;
@@ -38,30 +58,23 @@ final class TransferStats
         $this->handlerStats = $handlerStats;
     }
 
-    /**
-     * @return RequestInterface
-     */
-    public function getRequest()
+    public function getRequest(): RequestInterface
     {
         return $this->request;
     }
 
     /**
      * Returns the response that was received (if any).
-     *
-     * @return ResponseInterface|null
      */
-    public function getResponse()
+    public function getResponse(): ?ResponseInterface
     {
         return $this->response;
     }
 
     /**
      * Returns true if a response was received.
-     *
-     * @return bool
      */
-    public function hasResponse()
+    public function hasResponse(): bool
     {
         return $this->response !== null;
     }
@@ -82,10 +95,8 @@ final class TransferStats
 
     /**
      * Get the effective URI the request was sent to.
-     *
-     * @return UriInterface
      */
-    public function getEffectiveUri()
+    public function getEffectiveUri(): UriInterface
     {
         return $this->request->getUri();
     }
@@ -95,17 +106,15 @@ final class TransferStats
      *
      * @return float|null Time in seconds.
      */
-    public function getTransferTime()
+    public function getTransferTime(): ?float
     {
         return $this->transferTime;
     }
 
     /**
      * Gets an array of all of the handler specific transfer data.
-     *
-     * @return array
      */
-    public function getHandlerStats()
+    public function getHandlerStats(): array
     {
         return $this->handlerStats;
     }
@@ -117,10 +126,8 @@ final class TransferStats
      *
      * @return mixed|null
      */
-    public function getHandlerStat($stat)
+    public function getHandlerStat(string $stat)
     {
-        return isset($this->handlerStats[$stat])
-            ? $this->handlerStats[$stat]
-            : null;
+        return $this->handlerStats[$stat] ?? null;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 96dcfd09cd..0000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * Expands URI templates. Userland implementation of PECL uri_template.
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-class UriTemplate
-{
-    /** @var string URI template */
-    private $template;
-
-    /** @var array Variables to use in the template expansion */
-    private $variables;
-
-    /** @var array Hash for quick operator lookups */
-    private static $operatorHash = [
-        ''  => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '+' => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
-        '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
-        '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
-        ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
-        '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
-        '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
-    ];
-
-    /** @var array Delimiters */
-    private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
-        '&', '\'', '(', ')', '*', '+', ',', ';', '='];
-
-    /** @var array Percent encoded delimiters */
-    private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
-        '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
-        '%3B', '%3D'];
-
-    public function expand($template, array $variables)
-    {
-        if (false === strpos($template, '{')) {
-            return $template;
-        }
-
-        $this->template = $template;
-        $this->variables = $variables;
-
-        return preg_replace_callback(
-            '/\{([^\}]+)\}/',
-            [$this, 'expandMatch'],
-            $this->template
-        );
-    }
-
-    /**
-     * Parse an expression into parts
-     *
-     * @param string $expression Expression to parse
-     *
-     * @return array Returns an associative array of parts
-     */
-    private function parseExpression($expression)
-    {
-        $result = [];
-
-        if (isset(self::$operatorHash[$expression[0]])) {
-            $result['operator'] = $expression[0];
-            $expression = substr($expression, 1);
-        } else {
-            $result['operator'] = '';
-        }
-
-        foreach (explode(',', $expression) as $value) {
-            $value = trim($value);
-            $varspec = [];
-            if ($colonPos = strpos($value, ':')) {
-                $varspec['value'] = substr($value, 0, $colonPos);
-                $varspec['modifier'] = ':';
-                $varspec['position'] = (int) substr($value, $colonPos + 1);
-            } elseif (substr($value, -1) === '*') {
-                $varspec['modifier'] = '*';
-                $varspec['value'] = substr($value, 0, -1);
-            } else {
-                $varspec['value'] = (string) $value;
-                $varspec['modifier'] = '';
-            }
-            $result['values'][] = $varspec;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Process an expansion
-     *
-     * @param array $matches Matches met in the preg_replace_callback
-     *
-     * @return string Returns the replacement string
-     */
-    private function expandMatch(array $matches)
-    {
-        static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
-
-        $replacements = [];
-        $parsed = self::parseExpression($matches[1]);
-        $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
-        $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
-        $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
-        foreach ($parsed['values'] as $value) {
-            if (!isset($this->variables[$value['value']])) {
-                continue;
-            }
-
-            $variable = $this->variables[$value['value']];
-            $actuallyUseQuery = $useQuery;
-            $expanded = '';
-
-            if (is_array($variable)) {
-                $isAssoc = $this->isAssoc($variable);
-                $kvp = [];
-                foreach ($variable as $key => $var) {
-                    if ($isAssoc) {
-                        $key = rawurlencode($key);
-                        $isNestedArray = is_array($var);
-                    } else {
-                        $isNestedArray = false;
-                    }
-
-                    if (!$isNestedArray) {
-                        $var = rawurlencode($var);
-                        if ($parsed['operator'] === '+' ||
-                            $parsed['operator'] === '#'
-                        ) {
-                            $var = $this->decodeReserved($var);
-                        }
-                    }
-
-                    if ($value['modifier'] === '*') {
-                        if ($isAssoc) {
-                            if ($isNestedArray) {
-                                // Nested arrays must allow for deeply nested
-                                // structures.
-                                $var = strtr(
-                                    http_build_query([$key => $var]),
-                                    $rfc1738to3986
-                                );
-                            } else {
-                                $var = $key . '=' . $var;
-                            }
-                        } elseif ($key > 0 && $actuallyUseQuery) {
-                            $var = $value['value'] . '=' . $var;
-                        }
-                    }
-
-                    $kvp[$key] = $var;
-                }
-
-                if (empty($variable)) {
-                    $actuallyUseQuery = false;
-                } elseif ($value['modifier'] === '*') {
-                    $expanded = implode($joiner, $kvp);
-                    if ($isAssoc) {
-                        // Don't prepend the value name when using the explode
-                        // modifier with an associative array.
-                        $actuallyUseQuery = false;
-                    }
-                } else {
-                    if ($isAssoc) {
-                        // When an associative array is encountered and the
-                        // explode modifier is not set, then the result must be
-                        // a comma separated list of keys followed by their
-                        // respective values.
-                        foreach ($kvp as $k => &$v) {
-                            $v = $k . ',' . $v;
-                        }
-                    }
-                    $expanded = implode(',', $kvp);
-                }
-            } else {
-                if ($value['modifier'] === ':') {
-                    $variable = substr($variable, 0, $value['position']);
-                }
-                $expanded = rawurlencode($variable);
-                if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
-                    $expanded = $this->decodeReserved($expanded);
-                }
-            }
-
-            if ($actuallyUseQuery) {
-                if (!$expanded && $joiner !== '&') {
-                    $expanded = $value['value'];
-                } else {
-                    $expanded = $value['value'] . '=' . $expanded;
-                }
-            }
-
-            $replacements[] = $expanded;
-        }
-
-        $ret = implode($joiner, $replacements);
-        if ($ret && $prefix) {
-            return $prefix . $ret;
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Determines if an array is associative.
-     *
-     * This makes the assumption that input arrays are sequences or hashes.
-     * This assumption is a tradeoff for accuracy in favor of speed, but it
-     * should work in almost every case where input is supplied for a URI
-     * template.
-     *
-     * @param array $array Array to check
-     *
-     * @return bool
-     */
-    private function isAssoc(array $array)
-    {
-        return $array && array_keys($array)[0] !== 0;
-    }
-
-    /**
-     * Removes percent encoding on reserved characters (used with + and #
-     * modifiers).
-     *
-     * @param string $string String to fix
-     *
-     * @return string
-     */
-    private function decodeReserved($string)
-    {
-        return str_replace(self::$delimsPct, self::$delims, $string);
-    }
-}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php b/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
index c698acbf02..e355f3212f 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
@@ -1,41 +1,334 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\InvalidArgumentException;
+use GuzzleHttp\Handler\CurlHandler;
+use GuzzleHttp\Handler\CurlMultiHandler;
+use GuzzleHttp\Handler\Proxy;
+use GuzzleHttp\Handler\StreamHandler;
 use Psr\Http\Message\UriInterface;
-use Symfony\Polyfill\Intl\Idn\Idn;
 
 final class Utils
 {
+    /**
+     * Debug function used to describe the provided value type and class.
+     *
+     * @param mixed $input
+     *
+     * @return string Returns a string containing the type of the variable and
+     *                if a class is provided, the class name.
+     */
+    public static function describeType($input): string
+    {
+        switch (\gettype($input)) {
+            case 'object':
+                return 'object(' . \get_class($input) . ')';
+            case 'array':
+                return 'array(' . \count($input) . ')';
+            default:
+                \ob_start();
+                \var_dump($input);
+                // normalize float vs double
+                /** @var string $varDumpContent */
+                $varDumpContent = \ob_get_clean();
+
+                return \str_replace('double(', 'float(', \rtrim($varDumpContent));
+        }
+    }
+
+    /**
+     * Parses an array of header lines into an associative array of headers.
+     *
+     * @param iterable $lines Header lines array of strings in the following
+     *                        format: "Name: Value"
+     */
+    public static function headersFromLines(iterable $lines): array
+    {
+        $headers = [];
+
+        foreach ($lines as $line) {
+            $parts = \explode(':', $line, 2);
+            $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null;
+        }
+
+        return $headers;
+    }
+
+    /**
+     * Returns a debug stream based on the provided variable.
+     *
+     * @param mixed $value Optional value
+     *
+     * @return resource
+     */
+    public static function debugResource($value = null)
+    {
+        if (\is_resource($value)) {
+            return $value;
+        }
+        if (\defined('STDOUT')) {
+            return \STDOUT;
+        }
+
+        return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w');
+    }
+
+    /**
+     * Chooses and creates a default handler to use based on the environment.
+     *
+     * The returned handler is not wrapped by any default middlewares.
+     *
+     * @throws \RuntimeException if no viable Handler is available.
+     *
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
+     */
+    public static function chooseHandler(): callable
+    {
+        $handler = null;
+
+        if (\defined('CURLOPT_CUSTOMREQUEST')) {
+            if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) {
+                $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
+            } elseif (\function_exists('curl_exec')) {
+                $handler = new CurlHandler();
+            } elseif (\function_exists('curl_multi_exec')) {
+                $handler = new CurlMultiHandler();
+            }
+        }
+
+        if (\ini_get('allow_url_fopen')) {
+            $handler = $handler
+                ? Proxy::wrapStreaming($handler, new StreamHandler())
+                : new StreamHandler();
+        } elseif (!$handler) {
+            throw new \RuntimeException('GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.');
+        }
+
+        return $handler;
+    }
+
+    /**
+     * Get the default User-Agent string to use with Guzzle.
+     */
+    public static function defaultUserAgent(): string
+    {
+        return sprintf('GuzzleHttp/%d', ClientInterface::MAJOR_VERSION);
+    }
+
+    /**
+     * Returns the default cacert bundle for the current system.
+     *
+     * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
+     * If those settings are not configured, then the common locations for
+     * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
+     * and Windows are checked. If any of these file locations are found on
+     * disk, they will be utilized.
+     *
+     * Note: the result of this function is cached for subsequent calls.
+     *
+     * @throws \RuntimeException if no bundle can be found.
+     *
+     * @deprecated Utils::defaultCaBundle will be removed in guzzlehttp/guzzle:8.0. This method is not needed in PHP 5.6+.
+     */
+    public static function defaultCaBundle(): string
+    {
+        static $cached = null;
+        static $cafiles = [
+            // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
+            '/etc/pki/tls/certs/ca-bundle.crt',
+            // Ubuntu, Debian (provided by the ca-certificates package)
+            '/etc/ssl/certs/ca-certificates.crt',
+            // FreeBSD (provided by the ca_root_nss package)
+            '/usr/local/share/certs/ca-root-nss.crt',
+            // SLES 12 (provided by the ca-certificates package)
+            '/var/lib/ca-certificates/ca-bundle.pem',
+            // OS X provided by homebrew (using the default path)
+            '/usr/local/etc/openssl/cert.pem',
+            // Google app engine
+            '/etc/ca-certificates.crt',
+            // Windows?
+            'C:\\windows\\system32\\curl-ca-bundle.crt',
+            'C:\\windows\\curl-ca-bundle.crt',
+        ];
+
+        if ($cached) {
+            return $cached;
+        }
+
+        if ($ca = \ini_get('openssl.cafile')) {
+            return $cached = $ca;
+        }
+
+        if ($ca = \ini_get('curl.cainfo')) {
+            return $cached = $ca;
+        }
+
+        foreach ($cafiles as $filename) {
+            if (\file_exists($filename)) {
+                return $cached = $filename;
+            }
+        }
+
+        throw new \RuntimeException(
+            <<< EOT
+No system CA bundle could be found in any of the the common system locations.
+PHP versions earlier than 5.6 are not properly configured to use the system's
+CA bundle by default. In order to verify peer certificates, you will need to
+supply the path on disk to a certificate bundle to the 'verify' request
+option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
+need a specific certificate bundle, then Mozilla provides a commonly used CA
+bundle which can be downloaded here (provided by the maintainer of cURL):
+https://curl.haxx.se/ca/cacert.pem. Once
+you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
+ini setting to point to the path to the file, allowing you to omit the 'verify'
+request option. See https://curl.haxx.se/docs/sslcerts.html for more
+information.
+EOT
+        );
+    }
+
+    /**
+     * Creates an associative array of lowercase header names to the actual
+     * header casing.
+     */
+    public static function normalizeHeaderKeys(array $headers): array
+    {
+        $result = [];
+        foreach (\array_keys($headers) as $key) {
+            $result[\strtolower($key)] = $key;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Returns true if the provided host matches any of the no proxy areas.
+     *
+     * This method will strip a port from the host if it is present. Each pattern
+     * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
+     * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
+     * "baz.foo.com", but ".foo.com" != "foo.com").
+     *
+     * Areas are matched in the following cases:
+     * 1. "*" (without quotes) always matches any hosts.
+     * 2. An exact match.
+     * 3. The area starts with "." and the area is the last part of the host. e.g.
+     *    '.mit.edu' will match any host that ends with '.mit.edu'.
+     *
+     * @param string   $host         Host to check against the patterns.
+     * @param string[] $noProxyArray An array of host patterns.
+     *
+     * @throws InvalidArgumentException
+     */
+    public static function isHostInNoProxy(string $host, array $noProxyArray): bool
+    {
+        if (\strlen($host) === 0) {
+            throw new InvalidArgumentException('Empty host provided');
+        }
+
+        // Strip port if present.
+        [$host] = \explode(':', $host, 2);
+
+        foreach ($noProxyArray as $area) {
+            // Always match on wildcards.
+            if ($area === '*') {
+                return true;
+            }
+
+            if (empty($area)) {
+                // Don't match on empty values.
+                continue;
+            }
+
+            if ($area === $host) {
+                // Exact matches.
+                return true;
+            }
+            // Special match if the area when prefixed with ".". Remove any
+            // existing leading "." and add a new leading ".".
+            $area = '.' . \ltrim($area, '.');
+            if (\substr($host, -(\strlen($area))) === $area) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Wrapper for json_decode that throws when an error occurs.
+     *
+     * @param string $json    JSON data to parse
+     * @param bool   $assoc   When true, returned objects will be converted
+     *                        into associative arrays.
+     * @param int    $depth   User specified recursion depth.
+     * @param int    $options Bitmask of JSON decode options.
+     *
+     * @return object|array|string|int|float|bool|null
+     *
+     * @throws InvalidArgumentException if the JSON cannot be decoded.
+     *
+     * @link https://www.php.net/manual/en/function.json-decode.php
+     */
+    public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
+    {
+        $data = \json_decode($json, $assoc, $depth, $options);
+        if (\JSON_ERROR_NONE !== \json_last_error()) {
+            throw new InvalidArgumentException('json_decode error: ' . \json_last_error_msg());
+        }
+
+        return $data;
+    }
+
+    /**
+     * Wrapper for JSON encoding that throws when an error occurs.
+     *
+     * @param mixed $value   The value being encoded
+     * @param int   $options JSON encode option bitmask
+     * @param int   $depth   Set the maximum depth. Must be greater than zero.
+     *
+     * @throws InvalidArgumentException if the JSON cannot be encoded.
+     *
+     * @link https://www.php.net/manual/en/function.json-encode.php
+     */
+    public static function jsonEncode($value, int $options = 0, int $depth = 512): string
+    {
+        $json = \json_encode($value, $options, $depth);
+        if (\JSON_ERROR_NONE !== \json_last_error()) {
+            throw new InvalidArgumentException('json_encode error: ' . \json_last_error_msg());
+        }
+
+        /** @var string */
+        return $json;
+    }
+
     /**
      * Wrapper for the hrtime() or microtime() functions
      * (depending on the PHP version, one of the two is used)
      *
-     * @return float|mixed UNIX timestamp
+     * @return float UNIX timestamp
      *
      * @internal
      */
-    public static function currentTime()
+    public static function currentTime(): float
     {
-        return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
+        return (float) \function_exists('hrtime') ? \hrtime(true) / 1e9 : \microtime(true);
     }
 
     /**
-     * @param int $options
-     *
-     * @return UriInterface
      * @throws InvalidArgumentException
      *
      * @internal
      */
-    public static function idnUriConvert(UriInterface $uri, $options = 0)
+    public static function idnUriConvert(UriInterface $uri, int $options = 0): UriInterface
     {
         if ($uri->getHost()) {
             $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
             if ($asciiHost === false) {
-                $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
+                $errorBitSet = $info['errors'] ?? 0;
 
-                $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
+                $errorConstants = array_filter(array_keys(get_defined_constants()), static function (string $name): bool {
                     return substr($name, 0, 11) === 'IDNA_ERROR_';
                 });
 
@@ -52,11 +345,10 @@ final class Utils
                 }
 
                 throw new InvalidArgumentException($errorMessage);
-            } else {
-                if ($uri->getHost() !== $asciiHost) {
-                    // Replace URI only if the ASCII version is different
-                    $uri = $uri->withHost($asciiHost);
-                }
+            }
+            if ($uri->getHost() !== $asciiHost) {
+                // Replace URI only if the ASCII version is different
+                $uri = $uri->withHost($asciiHost);
             }
         }
 
@@ -64,29 +356,30 @@ final class Utils
     }
 
     /**
-     * @param string $domain
-     * @param int    $options
-     * @param array  $info
-     *
-     * @return string|false
+     * @internal
      */
-    private static function idnToAsci($domain, $options, &$info = [])
+    public static function getenv(string $name): ?string
     {
-        if (\preg_match('%^[ -~]+$%', $domain) === 1) {
-            return $domain;
+        if (isset($_SERVER[$name])) {
+            return (string) $_SERVER[$name];
         }
 
-        if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
-            return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
+        if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== false && $value !== null) {
+            return (string) $value;
         }
 
-        /*
-         * The Idn class is marked as @internal. Verify that class and method exists.
-         */
-        if (method_exists(Idn::class, 'idn_to_ascii')) {
-            return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
+        return null;
+    }
+
+    /**
+     * @return string|false
+     */
+    private static function idnToAsci(string $domain, int $options, ?array &$info = [])
+    {
+        if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) {
+            return \idn_to_ascii($domain, $options, \INTL_IDNA_VARIANT_UTS46, $info);
         }
 
-        throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
+        throw new \Error('ext-idn or symfony/polyfill-intl-idn not loaded or too old');
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/functions.php b/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
index c2afd8c7bb..a70d2cbf3f 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
@@ -1,77 +1,34 @@
 <?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Handler\CurlHandler;
-use GuzzleHttp\Handler\CurlMultiHandler;
-use GuzzleHttp\Handler\Proxy;
-use GuzzleHttp\Handler\StreamHandler;
-
-/**
- * Expands a URI template
- *
- * @param string $template  URI template
- * @param array  $variables Template variables
- *
- * @return string
- */
-function uri_template($template, array $variables)
-{
-    if (extension_loaded('uri_template')) {
-        // @codeCoverageIgnoreStart
-        return \uri_template($template, $variables);
-        // @codeCoverageIgnoreEnd
-    }
 
-    static $uriTemplate;
-    if (!$uriTemplate) {
-        $uriTemplate = new UriTemplate();
-    }
-
-    return $uriTemplate->expand($template, $variables);
-}
+namespace GuzzleHttp;
 
 /**
  * Debug function used to describe the provided value type and class.
  *
- * @param mixed $input
+ * @param mixed $input Any type of variable to describe the type of. This
+ *                     parameter misses a typehint because of that.
  *
  * @return string Returns a string containing the type of the variable and
  *                if a class is provided, the class name.
+ *
+ * @deprecated describe_type will be removed in guzzlehttp/guzzle:8.0. Use Utils::describeType instead.
  */
-function describe_type($input)
+function describe_type($input): string
 {
-    switch (gettype($input)) {
-        case 'object':
-            return 'object(' . get_class($input) . ')';
-        case 'array':
-            return 'array(' . count($input) . ')';
-        default:
-            ob_start();
-            var_dump($input);
-            // normalize float vs double
-            return str_replace('double(', 'float(', rtrim(ob_get_clean()));
-    }
+    return Utils::describeType($input);
 }
 
 /**
  * Parses an array of header lines into an associative array of headers.
  *
  * @param iterable $lines Header lines array of strings in the following
- *                     format: "Name: Value"
- * @return array
+ *                        format: "Name: Value"
+ *
+ * @deprecated headers_from_lines will be removed in guzzlehttp/guzzle:8.0. Use Utils::headersFromLines instead.
  */
-function headers_from_lines($lines)
+function headers_from_lines(iterable $lines): array
 {
-    $headers = [];
-
-    foreach ($lines as $line) {
-        $parts = explode(':', $line, 2);
-        $headers[trim($parts[0])][] = isset($parts[1])
-            ? trim($parts[1])
-            : null;
-    }
-
-    return $headers;
+    return Utils::headersFromLines($lines);
 }
 
 /**
@@ -80,16 +37,12 @@ function headers_from_lines($lines)
  * @param mixed $value Optional value
  *
  * @return resource
+ *
+ * @deprecated debug_resource will be removed in guzzlehttp/guzzle:8.0. Use Utils::debugResource instead.
  */
 function debug_resource($value = null)
 {
-    if (is_resource($value)) {
-        return $value;
-    } elseif (defined('STDOUT')) {
-        return STDOUT;
-    }
-
-    return fopen('php://output', 'w');
+    return Utils::debugResource($value);
 }
 
 /**
@@ -97,50 +50,25 @@ function debug_resource($value = null)
  *
  * The returned handler is not wrapped by any default middlewares.
  *
- * @return callable Returns the best handler for the given system.
  * @throws \RuntimeException if no viable Handler is available.
+ *
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
+ *
+ * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead.
  */
-function choose_handler()
+function choose_handler(): callable
 {
-    $handler = null;
-    if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
-        $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
-    } elseif (function_exists('curl_exec')) {
-        $handler = new CurlHandler();
-    } elseif (function_exists('curl_multi_exec')) {
-        $handler = new CurlMultiHandler();
-    }
-
-    if (ini_get('allow_url_fopen')) {
-        $handler = $handler
-            ? Proxy::wrapStreaming($handler, new StreamHandler())
-            : new StreamHandler();
-    } elseif (!$handler) {
-        throw new \RuntimeException('GuzzleHttp requires cURL, the '
-            . 'allow_url_fopen ini setting, or a custom HTTP handler.');
-    }
-
-    return $handler;
+    return Utils::chooseHandler();
 }
 
 /**
- * Get the default User-Agent string to use with Guzzle
+ * Get the default User-Agent string to use with Guzzle.
  *
- * @return string
+ * @deprecated default_user_agent will be removed in guzzlehttp/guzzle:8.0. Use Utils::defaultUserAgent instead.
  */
-function default_user_agent()
+function default_user_agent(): string
 {
-    static $defaultAgent = '';
-
-    if (!$defaultAgent) {
-        $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
-        if (extension_loaded('curl') && function_exists('curl_version')) {
-            $defaultAgent .= ' curl/' . \curl_version()['version'];
-        }
-        $defaultAgent .= ' PHP/' . PHP_VERSION;
-    }
-
-    return $defaultAgent;
+    return Utils::defaultUserAgent();
 }
 
 /**
@@ -154,82 +82,24 @@ function default_user_agent()
  *
  * Note: the result of this function is cached for subsequent calls.
  *
- * @return string
  * @throws \RuntimeException if no bundle can be found.
+ *
+ * @deprecated default_ca_bundle will be removed in guzzlehttp/guzzle:8.0. This function is not needed in PHP 5.6+.
  */
-function default_ca_bundle()
+function default_ca_bundle(): string
 {
-    static $cached = null;
-    static $cafiles = [
-        // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
-        '/etc/pki/tls/certs/ca-bundle.crt',
-        // Ubuntu, Debian (provided by the ca-certificates package)
-        '/etc/ssl/certs/ca-certificates.crt',
-        // FreeBSD (provided by the ca_root_nss package)
-        '/usr/local/share/certs/ca-root-nss.crt',
-        // SLES 12 (provided by the ca-certificates package)
-        '/var/lib/ca-certificates/ca-bundle.pem',
-        // OS X provided by homebrew (using the default path)
-        '/usr/local/etc/openssl/cert.pem',
-        // Google app engine
-        '/etc/ca-certificates.crt',
-        // Windows?
-        'C:\\windows\\system32\\curl-ca-bundle.crt',
-        'C:\\windows\\curl-ca-bundle.crt',
-    ];
-
-    if ($cached) {
-        return $cached;
-    }
-
-    if ($ca = ini_get('openssl.cafile')) {
-        return $cached = $ca;
-    }
-
-    if ($ca = ini_get('curl.cainfo')) {
-        return $cached = $ca;
-    }
-
-    foreach ($cafiles as $filename) {
-        if (file_exists($filename)) {
-            return $cached = $filename;
-        }
-    }
-
-    throw new \RuntimeException(
-        <<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
-    );
+    return Utils::defaultCaBundle();
 }
 
 /**
  * Creates an associative array of lowercase header names to the actual
  * header casing.
  *
- * @param array $headers
- *
- * @return array
+ * @deprecated normalize_header_keys will be removed in guzzlehttp/guzzle:8.0. Use Utils::normalizeHeaderKeys instead.
  */
-function normalize_header_keys(array $headers)
+function normalize_header_keys(array $headers): array
 {
-    $result = [];
-    foreach (array_keys($headers) as $key) {
-        $result[strtolower($key)] = $key;
-    }
-
-    return $result;
+    return Utils::normalizeHeaderKeys($headers);
 }
 
 /**
@@ -246,89 +116,52 @@ function normalize_header_keys(array $headers)
  * 3. The area starts with "." and the area is the last part of the host. e.g.
  *    '.mit.edu' will match any host that ends with '.mit.edu'.
  *
- * @param string $host         Host to check against the patterns.
- * @param array  $noProxyArray An array of host patterns.
+ * @param string   $host         Host to check against the patterns.
+ * @param string[] $noProxyArray An array of host patterns.
+ *
+ * @throws Exception\InvalidArgumentException
  *
- * @return bool
+ * @deprecated is_host_in_noproxy will be removed in guzzlehttp/guzzle:8.0. Use Utils::isHostInNoProxy instead.
  */
-function is_host_in_noproxy($host, array $noProxyArray)
+function is_host_in_noproxy(string $host, array $noProxyArray): bool
 {
-    if (strlen($host) === 0) {
-        throw new \InvalidArgumentException('Empty host provided');
-    }
-
-    // Strip port if present.
-    if (strpos($host, ':')) {
-        $host = explode($host, ':', 2)[0];
-    }
-
-    foreach ($noProxyArray as $area) {
-        // Always match on wildcards.
-        if ($area === '*') {
-            return true;
-        } elseif (empty($area)) {
-            // Don't match on empty values.
-            continue;
-        } elseif ($area === $host) {
-            // Exact matches.
-            return true;
-        } else {
-            // Special match if the area when prefixed with ".". Remove any
-            // existing leading "." and add a new leading ".".
-            $area = '.' . ltrim($area, '.');
-            if (substr($host, -(strlen($area))) === $area) {
-                return true;
-            }
-        }
-    }
-
-    return false;
+    return Utils::isHostInNoProxy($host, $noProxyArray);
 }
 
 /**
  * Wrapper for json_decode that throws when an error occurs.
  *
  * @param string $json    JSON data to parse
- * @param bool $assoc     When true, returned objects will be converted
+ * @param bool   $assoc   When true, returned objects will be converted
  *                        into associative arrays.
  * @param int    $depth   User specified recursion depth.
  * @param int    $options Bitmask of JSON decode options.
  *
- * @return mixed
+ * @return object|array|string|int|float|bool|null
+ *
  * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
- * @link http://www.php.net/manual/en/function.json-decode.php
+ *
+ * @link https://www.php.net/manual/en/function.json-decode.php
+ * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead.
  */
-function json_decode($json, $assoc = false, $depth = 512, $options = 0)
+function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
 {
-    $data = \json_decode($json, $assoc, $depth, $options);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_decode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $data;
+    return Utils::jsonDecode($json, $assoc, $depth, $options);
 }
 
 /**
  * Wrapper for JSON encoding that throws when an error occurs.
  *
  * @param mixed $value   The value being encoded
- * @param int    $options JSON encode option bitmask
- * @param int    $depth   Set the maximum depth. Must be greater than zero.
+ * @param int   $options JSON encode option bitmask
+ * @param int   $depth   Set the maximum depth. Must be greater than zero.
  *
- * @return string
  * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
- * @link http://www.php.net/manual/en/function.json-encode.php
+ *
+ * @link https://www.php.net/manual/en/function.json-encode.php
+ * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead.
  */
-function json_encode($value, $options = 0, $depth = 512)
+function json_encode($value, int $options = 0, int $depth = 512): string
 {
-    $json = \json_encode($value, $options, $depth);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_encode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $json;
+    return Utils::jsonEncode($value, $options, $depth);
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php b/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
index a93393acc4..6636a4224d 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
@@ -1,6 +1,6 @@
 <?php
 
 // Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\uri_template')) {
+if (!\function_exists('GuzzleHttp\describe_type')) {
     require __DIR__ . '/functions.php';
 }
diff --git a/civicrm/vendor/symfony/deprecation-contracts/.gitignore b/civicrm/vendor/symfony/deprecation-contracts/.gitignore
new file mode 100644
index 0000000000..c49a5d8df5
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md b/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md
new file mode 100644
index 0000000000..7932e26132
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md
@@ -0,0 +1,5 @@
+CHANGELOG
+=========
+
+The changelog is maintained for all Symfony contracts at the following URL:
+https://github.com/symfony/contracts/blob/main/CHANGELOG.md
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE b/civicrm/vendor/symfony/deprecation-contracts/LICENSE
similarity index 96%
rename from civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE
rename to civicrm/vendor/symfony/deprecation-contracts/LICENSE
index 4cd8bdd300..406242ff28 100644
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE
+++ b/civicrm/vendor/symfony/deprecation-contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2019 Fabien Potencier
+Copyright (c) 2020-2022 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/civicrm/vendor/symfony/deprecation-contracts/README.md b/civicrm/vendor/symfony/deprecation-contracts/README.md
new file mode 100644
index 0000000000..4957933a6c
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/README.md
@@ -0,0 +1,26 @@
+Symfony Deprecation Contracts
+=============================
+
+A generic function and convention to trigger deprecation notices.
+
+This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices.
+
+By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component,
+the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments.
+
+The function requires at least 3 arguments:
+ - the name of the Composer package that is triggering the deprecation
+ - the version of the package that introduced the deprecation
+ - the message of the deprecation
+ - more arguments can be provided: they will be inserted in the message using `printf()` formatting
+
+Example:
+```php
+trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin');
+```
+
+This will generate the following message:
+`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
+
+While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty
+`function trigger_deprecation() {}` in your application.
diff --git a/civicrm/vendor/symfony/deprecation-contracts/composer.json b/civicrm/vendor/symfony/deprecation-contracts/composer.json
new file mode 100644
index 0000000000..cc7cc12372
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/composer.json
@@ -0,0 +1,35 @@
+{
+    "name": "symfony/deprecation-contracts",
+    "type": "library",
+    "description": "A generic function and convention to trigger deprecation notices",
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=7.1"
+    },
+    "autoload": {
+        "files": [
+            "function.php"
+        ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-main": "2.5-dev"
+        },
+        "thanks": {
+            "name": "symfony/contracts",
+            "url": "https://github.com/symfony/contracts"
+        }
+    }
+}
diff --git a/civicrm/vendor/symfony/deprecation-contracts/function.php b/civicrm/vendor/symfony/deprecation-contracts/function.php
new file mode 100644
index 0000000000..d4371504a0
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/function.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (!function_exists('trigger_deprecation')) {
+    /**
+     * Triggers a silenced deprecation notice.
+     *
+     * @param string $package The name of the Composer package that is triggering the deprecation
+     * @param string $version The version of the package that introduced the deprecation
+     * @param string $message The message of the deprecation
+     * @param mixed  ...$args Values to insert in the message using printf() formatting
+     *
+     * @author Nicolas Grekas <p@tchwork.com>
+     */
+    function trigger_deprecation(string $package, string $version, string $message, ...$args): void
+    {
+        @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
+    }
+}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php b/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php
deleted file mode 100644
index 86710b94e5..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php
+++ /dev/null
@@ -1,925 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-use Exception;
-use Normalizer;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
-
-/**
- * @see https://www.unicode.org/reports/tr46/
- *
- * @internal
- */
-final class Idn
-{
-    public const ERROR_EMPTY_LABEL = 1;
-    public const ERROR_LABEL_TOO_LONG = 2;
-    public const ERROR_DOMAIN_NAME_TOO_LONG = 4;
-    public const ERROR_LEADING_HYPHEN = 8;
-    public const ERROR_TRAILING_HYPHEN = 0x10;
-    public const ERROR_HYPHEN_3_4 = 0x20;
-    public const ERROR_LEADING_COMBINING_MARK = 0x40;
-    public const ERROR_DISALLOWED = 0x80;
-    public const ERROR_PUNYCODE = 0x100;
-    public const ERROR_LABEL_HAS_DOT = 0x200;
-    public const ERROR_INVALID_ACE_LABEL = 0x400;
-    public const ERROR_BIDI = 0x800;
-    public const ERROR_CONTEXTJ = 0x1000;
-    public const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
-    public const ERROR_CONTEXTO_DIGITS = 0x4000;
-
-    public const INTL_IDNA_VARIANT_2003 = 0;
-    public const INTL_IDNA_VARIANT_UTS46 = 1;
-
-    public const IDNA_DEFAULT = 0;
-    public const IDNA_ALLOW_UNASSIGNED = 1;
-    public const IDNA_USE_STD3_RULES = 2;
-    public const IDNA_CHECK_BIDI = 4;
-    public const IDNA_CHECK_CONTEXTJ = 8;
-    public const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
-    public const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
-
-    public const MAX_DOMAIN_SIZE = 253;
-    public const MAX_LABEL_SIZE = 63;
-
-    public const BASE = 36;
-    public const TMIN = 1;
-    public const TMAX = 26;
-    public const SKEW = 38;
-    public const DAMP = 700;
-    public const INITIAL_BIAS = 72;
-    public const INITIAL_N = 128;
-    public const DELIMITER = '-';
-    public const MAX_INT = 2147483647;
-
-    /**
-     * Contains the numeric value of a basic code point (for use in representing integers) in the
-     * range 0 to BASE-1, or -1 if b is does not represent a value.
-     *
-     * @var array<int, int>
-     */
-    private static $basicToDigit = [
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    ];
-
-    /**
-     * @var array<int, int>
-     */
-    private static $virama;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $ignored;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $deviation;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $disallowed_STD3_mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed_STD3_valid;
-
-    /**
-     * @var bool
-     */
-    private static $mappingTableLoaded = false;
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToASCII
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
-        }
-
-        $options = [
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
-            'VerifyDnsLength' => true,
-        ];
-        $info = new Info();
-        $labels = self::process((string) $domainName, $options, $info);
-
-        foreach ($labels as $i => $label) {
-            // Only convert labels to punycode that contain non-ASCII code points
-            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
-                try {
-                    $label = 'xn--'.self::punycodeEncode($label);
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-                }
-
-                $labels[$i] = $label;
-            }
-        }
-
-        if ($options['VerifyDnsLength']) {
-            self::validateDomainAndLabelLength($labels, $info);
-        }
-
-        $idna_info = [
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        ];
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToUnicode
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
-        }
-
-        $info = new Info();
-        $labels = self::process((string) $domainName, [
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
-        ], $info);
-        $idna_info = [
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        ];
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @param string $label
-     *
-     * @return bool
-     */
-    private static function isValidContextJ(array $codePoints, $label)
-    {
-        if (!isset(self::$virama)) {
-            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
-        }
-
-        $offset = 0;
-
-        foreach ($codePoints as $i => $codePoint) {
-            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
-                continue;
-            }
-
-            if (!isset($codePoints[$i - 1])) {
-                return false;
-            }
-
-            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
-            if (isset(self::$virama[$codePoints[$i - 1]])) {
-                continue;
-            }
-
-            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
-            // True;
-            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
-            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) {
-                $offset += \strlen($matches[1][0]);
-
-                continue;
-            }
-
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
-     *
-     * @param string              $input
-     * @param array<string, bool> $options
-     *
-     * @return string
-     */
-    private static function mapCodePoints($input, array $options, Info $info)
-    {
-        $str = '';
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-        $transitional = $options['Transitional_Processing'];
-
-        foreach (self::utf8Decode($input) as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-
-            switch ($data['status']) {
-                case 'disallowed':
-                    $info->errors |= self::ERROR_DISALLOWED;
-
-                    // no break.
-
-                case 'valid':
-                    $str .= mb_chr($codePoint, 'utf-8');
-
-                    break;
-
-                case 'ignored':
-                    // Do nothing.
-                    break;
-
-                case 'mapped':
-                    $str .= $data['mapping'];
-
-                    break;
-
-                case 'deviation':
-                    $info->transitionalDifferent = true;
-                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
-
-                    break;
-            }
-        }
-
-        return $str;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Processing
-     *
-     * @param string              $domain
-     * @param array<string, bool> $options
-     *
-     * @return array<int, string>
-     */
-    private static function process($domain, array $options, Info $info)
-    {
-        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
-        // we need to respect the VerifyDnsLength option.
-        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
-
-        if ($checkForEmptyLabels && '' === $domain) {
-            $info->errors |= self::ERROR_EMPTY_LABEL;
-
-            return [$domain];
-        }
-
-        // Step 1. Map each code point in the domain name string
-        $domain = self::mapCodePoints($domain, $options, $info);
-
-        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
-            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
-        }
-
-        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
-        $labels = explode('.', $domain);
-        $lastLabelIndex = \count($labels) - 1;
-
-        // Step 4. Convert and validate each label in the domain name string.
-        foreach ($labels as $i => $label) {
-            $validationOptions = $options;
-
-            if ('xn--' === substr($label, 0, 4)) {
-                try {
-                    $label = self::punycodeDecode(substr($label, 4));
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-
-                    continue;
-                }
-
-                $validationOptions['Transitional_Processing'] = false;
-                $labels[$i] = $label;
-            }
-
-            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
-        }
-
-        if ($info->bidiDomain && !$info->validBidiDomain) {
-            $info->errors |= self::ERROR_BIDI;
-        }
-
-        // Any input domain name string that does not record an error has been successfully
-        // processed according to this specification. Conversely, if an input domain_name string
-        // causes an error, then the processing of the input domain_name string fails. Determining
-        // what to do with error input is up to the caller, and not in the scope of this document.
-        return $labels;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc5893#section-2
-     *
-     * @param string $label
-     */
-    private static function validateBidiLabel($label, Info $info)
-    {
-        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
-            $info->bidiDomain = true;
-
-            // Step 1. The first character must be a character with Bidi property L, R, or AL.
-            // If it has the R or AL property, it is an RTL label
-            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
-            // CS, ET, ON, BN, or NSM are allowed.
-            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
-            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
-            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
-            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            return;
-        }
-
-        // We are a LTR label
-        // Step 1. The first character must be a character with Bidi property L, R, or AL.
-        // If it has the L property, it is an LTR label.
-        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
-        // ES, CS, ET, ON, BN, or NSM are allowed.
-        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
-        // EN, followed by zero or more characters with Bidi property NSM.
-        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-    }
-
-    /**
-     * @param array<int, string> $labels
-     */
-    private static function validateDomainAndLabelLength(array $labels, Info $info)
-    {
-        $maxDomainSize = self::MAX_DOMAIN_SIZE;
-        $length = \count($labels);
-
-        // Number of "." delimiters.
-        $domainLength = $length - 1;
-
-        // If the last label is empty and it is not the first label, then it is the root label.
-        // Increase the max size by 1, making it 254, to account for the root label's "."
-        // delimiter. This also means we don't need to check the last label's length for being too
-        // long.
-        if ($length > 1 && '' === $labels[$length - 1]) {
-            ++$maxDomainSize;
-            --$length;
-        }
-
-        for ($i = 0; $i < $length; ++$i) {
-            $bytes = \strlen($labels[$i]);
-            $domainLength += $bytes;
-
-            if ($bytes > self::MAX_LABEL_SIZE) {
-                $info->errors |= self::ERROR_LABEL_TOO_LONG;
-            }
-        }
-
-        if ($domainLength > $maxDomainSize) {
-            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
-        }
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
-     *
-     * @param string              $label
-     * @param array<string, bool> $options
-     * @param bool                $canBeEmpty
-     */
-    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
-    {
-        if ('' === $label) {
-            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
-                $info->errors |= self::ERROR_EMPTY_LABEL;
-            }
-
-            return;
-        }
-
-        // Step 1. The label must be in Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
-            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
-        }
-
-        $codePoints = self::utf8Decode($label);
-
-        if ($options['CheckHyphens']) {
-            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
-            // in both the thrid and fourth positions.
-            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
-                $info->errors |= self::ERROR_HYPHEN_3_4;
-            }
-
-            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
-            // HYPHEN-MINUS character.
-            if ('-' === substr($label, 0, 1)) {
-                $info->errors |= self::ERROR_LEADING_HYPHEN;
-            }
-
-            if ('-' === substr($label, -1, 1)) {
-                $info->errors |= self::ERROR_TRAILING_HYPHEN;
-            }
-        }
-
-        // Step 4. The label must not contain a U+002E (.) FULL STOP.
-        if (false !== strpos($label, '.')) {
-            $info->errors |= self::ERROR_LABEL_HAS_DOT;
-        }
-
-        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
-        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
-            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
-        }
-
-        // Step 6. Each code point in the label must only have certain status values according to
-        // Section 5, IDNA Mapping Table:
-        $transitional = $options['Transitional_Processing'];
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-
-        foreach ($codePoints as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-            $status = $data['status'];
-
-            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
-                continue;
-            }
-
-            $info->errors |= self::ERROR_DISALLOWED;
-
-            break;
-        }
-
-        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
-        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
-        // [IDNA2008].
-        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
-            $info->errors |= self::ERROR_CONTEXTJ;
-        }
-
-        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
-        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
-        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
-            self::validateBidiLabel($label, $info);
-        }
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.2
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeDecode($input)
-    {
-        $n = self::INITIAL_N;
-        $out = 0;
-        $i = 0;
-        $bias = self::INITIAL_BIAS;
-        $lastDelimIndex = strrpos($input, self::DELIMITER);
-        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
-        $inputLength = \strlen($input);
-        $output = [];
-        $bytes = array_map('ord', str_split($input));
-
-        for ($j = 0; $j < $b; ++$j) {
-            if ($bytes[$j] > 0x7F) {
-                throw new Exception('Invalid input');
-            }
-
-            $output[$out++] = $input[$j];
-        }
-
-        if ($b > 0) {
-            ++$b;
-        }
-
-        for ($in = $b; $in < $inputLength; ++$out) {
-            $oldi = $i;
-            $w = 1;
-
-            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                if ($in >= $inputLength) {
-                    throw new Exception('Invalid input');
-                }
-
-                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
-
-                if ($digit < 0) {
-                    throw new Exception('Invalid input');
-                }
-
-                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $i += $digit * $w;
-
-                if ($k <= $bias) {
-                    $t = self::TMIN;
-                } elseif ($k >= $bias + self::TMAX) {
-                    $t = self::TMAX;
-                } else {
-                    $t = $k - $bias;
-                }
-
-                if ($digit < $t) {
-                    break;
-                }
-
-                $baseMinusT = self::BASE - $t;
-
-                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $w *= $baseMinusT;
-            }
-
-            $outPlusOne = $out + 1;
-            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
-
-            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
-                throw new Exception('Integer overflow');
-            }
-
-            $n += intdiv($i, $outPlusOne);
-            $i %= $outPlusOne;
-            array_splice($output, $i++, 0, [mb_chr($n, 'utf-8')]);
-        }
-
-        return implode('', $output);
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.3
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeEncode($input)
-    {
-        $n = self::INITIAL_N;
-        $delta = 0;
-        $out = 0;
-        $bias = self::INITIAL_BIAS;
-        $inputLength = 0;
-        $output = '';
-        $iter = self::utf8Decode($input);
-
-        foreach ($iter as $codePoint) {
-            ++$inputLength;
-
-            if ($codePoint < 0x80) {
-                $output .= \chr($codePoint);
-                ++$out;
-            }
-        }
-
-        $h = $out;
-        $b = $out;
-
-        if ($b > 0) {
-            $output .= self::DELIMITER;
-            ++$out;
-        }
-
-        while ($h < $inputLength) {
-            $m = self::MAX_INT;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint >= $n && $codePoint < $m) {
-                    $m = $codePoint;
-                }
-            }
-
-            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
-                throw new Exception('Integer overflow');
-            }
-
-            $delta += ($m - $n) * ($h + 1);
-            $n = $m;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint < $n && 0 === ++$delta) {
-                    throw new Exception('Integer overflow');
-                }
-
-                if ($codePoint === $n) {
-                    $q = $delta;
-
-                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                        if ($k <= $bias) {
-                            $t = self::TMIN;
-                        } elseif ($k >= $bias + self::TMAX) {
-                            $t = self::TMAX;
-                        } else {
-                            $t = $k - $bias;
-                        }
-
-                        if ($q < $t) {
-                            break;
-                        }
-
-                        $qMinusT = $q - $t;
-                        $baseMinusT = self::BASE - $t;
-                        $output .= self::encodeDigit($t + $qMinusT % $baseMinusT, false);
-                        ++$out;
-                        $q = intdiv($qMinusT, $baseMinusT);
-                    }
-
-                    $output .= self::encodeDigit($q, false);
-                    ++$out;
-                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
-                    $delta = 0;
-                    ++$h;
-                }
-            }
-
-            ++$delta;
-            ++$n;
-        }
-
-        return $output;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.1
-     *
-     * @param int  $delta
-     * @param int  $numPoints
-     * @param bool $firstTime
-     *
-     * @return int
-     */
-    private static function adaptBias($delta, $numPoints, $firstTime)
-    {
-        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
-        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
-        $delta += intdiv($delta, $numPoints);
-        $k = 0;
-
-        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
-            $delta = intdiv($delta, self::BASE - self::TMIN);
-            $k += self::BASE;
-        }
-
-        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
-    }
-
-    /**
-     * @param int  $d
-     * @param bool $flag
-     *
-     * @return string
-     */
-    private static function encodeDigit($d, $flag)
-    {
-        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
-    }
-
-    /**
-     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
-     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
-     *
-     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
-     *
-     * @param string $input
-     *
-     * @return array<int, int>
-     */
-    private static function utf8Decode($input)
-    {
-        $bytesSeen = 0;
-        $bytesNeeded = 0;
-        $lowerBoundary = 0x80;
-        $upperBoundary = 0xBF;
-        $codePoint = 0;
-        $codePoints = [];
-        $length = \strlen($input);
-
-        for ($i = 0; $i < $length; ++$i) {
-            $byte = \ord($input[$i]);
-
-            if (0 === $bytesNeeded) {
-                if ($byte >= 0x00 && $byte <= 0x7F) {
-                    $codePoints[] = $byte;
-
-                    continue;
-                }
-
-                if ($byte >= 0xC2 && $byte <= 0xDF) {
-                    $bytesNeeded = 1;
-                    $codePoint = $byte & 0x1F;
-                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
-                    if (0xE0 === $byte) {
-                        $lowerBoundary = 0xA0;
-                    } elseif (0xED === $byte) {
-                        $upperBoundary = 0x9F;
-                    }
-
-                    $bytesNeeded = 2;
-                    $codePoint = $byte & 0xF;
-                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
-                    if (0xF0 === $byte) {
-                        $lowerBoundary = 0x90;
-                    } elseif (0xF4 === $byte) {
-                        $upperBoundary = 0x8F;
-                    }
-
-                    $bytesNeeded = 3;
-                    $codePoint = $byte & 0x7;
-                } else {
-                    $codePoints[] = 0xFFFD;
-                }
-
-                continue;
-            }
-
-            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
-                $codePoint = 0;
-                $bytesNeeded = 0;
-                $bytesSeen = 0;
-                $lowerBoundary = 0x80;
-                $upperBoundary = 0xBF;
-                --$i;
-                $codePoints[] = 0xFFFD;
-
-                continue;
-            }
-
-            $lowerBoundary = 0x80;
-            $upperBoundary = 0xBF;
-            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
-
-            if (++$bytesSeen !== $bytesNeeded) {
-                continue;
-            }
-
-            $codePoints[] = $codePoint;
-            $codePoint = 0;
-            $bytesNeeded = 0;
-            $bytesSeen = 0;
-        }
-
-        // String unexpectedly ended, so append a U+FFFD code point.
-        if (0 !== $bytesNeeded) {
-            $codePoints[] = 0xFFFD;
-        }
-
-        return $codePoints;
-    }
-
-    /**
-     * @param int  $codePoint
-     * @param bool $useSTD3ASCIIRules
-     *
-     * @return array{status: string, mapping?: string}
-     */
-    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
-    {
-        if (!self::$mappingTableLoaded) {
-            self::$mappingTableLoaded = true;
-            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
-            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
-            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
-            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
-            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
-            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
-        }
-
-        if (isset(self::$mapped[$codePoint])) {
-            return ['status' => 'mapped', 'mapping' => self::$mapped[$codePoint]];
-        }
-
-        if (isset(self::$ignored[$codePoint])) {
-            return ['status' => 'ignored'];
-        }
-
-        if (isset(self::$deviation[$codePoint])) {
-            return ['status' => 'deviation', 'mapping' => self::$deviation[$codePoint]];
-        }
-
-        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
-            return ['status' => 'disallowed'];
-        }
-
-        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
-
-        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
-            $status = 'disallowed';
-
-            if (!$useSTD3ASCIIRules) {
-                $status = $isDisallowedMapped ? 'mapped' : 'valid';
-            }
-
-            if ($isDisallowedMapped) {
-                return ['status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]];
-            }
-
-            return ['status' => $status];
-        }
-
-        return ['status' => 'valid'];
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Info.php b/civicrm/vendor/symfony/polyfill-intl-idn/Info.php
deleted file mode 100644
index 25c3582b2a..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Info.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-/**
- * @internal
- */
-class Info
-{
-    public $bidiDomain = false;
-    public $errors = 0;
-    public $validBidiDomain = true;
-    public $transitionalDifferent = false;
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE b/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE
deleted file mode 100644
index 03c5e25774..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/README.md b/civicrm/vendor/symfony/polyfill-intl-idn/README.md
deleted file mode 100644
index cae551705a..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Intl: Idn
-============================
-
-This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
deleted file mode 100644
index 5bb70e48ac..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class DisallowedRanges
-{
-    /**
-     * @param int $codePoint
-     *
-     * @return bool
-     */
-    public static function inRange($codePoint)
-    {
-        if ($codePoint >= 128 && $codePoint <= 159) {
-            return true;
-        }
-
-        if ($codePoint >= 2155 && $codePoint <= 2207) {
-            return true;
-        }
-
-        if ($codePoint >= 3676 && $codePoint <= 3712) {
-            return true;
-        }
-
-        if ($codePoint >= 3808 && $codePoint <= 3839) {
-            return true;
-        }
-
-        if ($codePoint >= 4059 && $codePoint <= 4095) {
-            return true;
-        }
-
-        if ($codePoint >= 4256 && $codePoint <= 4293) {
-            return true;
-        }
-
-        if ($codePoint >= 6849 && $codePoint <= 6911) {
-            return true;
-        }
-
-        if ($codePoint >= 11859 && $codePoint <= 11903) {
-            return true;
-        }
-
-        if ($codePoint >= 42955 && $codePoint <= 42996) {
-            return true;
-        }
-
-        if ($codePoint >= 55296 && $codePoint <= 57343) {
-            return true;
-        }
-
-        if ($codePoint >= 57344 && $codePoint <= 63743) {
-            return true;
-        }
-
-        if ($codePoint >= 64218 && $codePoint <= 64255) {
-            return true;
-        }
-
-        if ($codePoint >= 64976 && $codePoint <= 65007) {
-            return true;
-        }
-
-        if ($codePoint >= 65630 && $codePoint <= 65663) {
-            return true;
-        }
-
-        if ($codePoint >= 65953 && $codePoint <= 65999) {
-            return true;
-        }
-
-        if ($codePoint >= 66046 && $codePoint <= 66175) {
-            return true;
-        }
-
-        if ($codePoint >= 66518 && $codePoint <= 66559) {
-            return true;
-        }
-
-        if ($codePoint >= 66928 && $codePoint <= 67071) {
-            return true;
-        }
-
-        if ($codePoint >= 67432 && $codePoint <= 67583) {
-            return true;
-        }
-
-        if ($codePoint >= 67760 && $codePoint <= 67807) {
-            return true;
-        }
-
-        if ($codePoint >= 67904 && $codePoint <= 67967) {
-            return true;
-        }
-
-        if ($codePoint >= 68256 && $codePoint <= 68287) {
-            return true;
-        }
-
-        if ($codePoint >= 68528 && $codePoint <= 68607) {
-            return true;
-        }
-
-        if ($codePoint >= 68681 && $codePoint <= 68735) {
-            return true;
-        }
-
-        if ($codePoint >= 68922 && $codePoint <= 69215) {
-            return true;
-        }
-
-        if ($codePoint >= 69298 && $codePoint <= 69375) {
-            return true;
-        }
-
-        if ($codePoint >= 69466 && $codePoint <= 69551) {
-            return true;
-        }
-
-        if ($codePoint >= 70207 && $codePoint <= 70271) {
-            return true;
-        }
-
-        if ($codePoint >= 70517 && $codePoint <= 70655) {
-            return true;
-        }
-
-        if ($codePoint >= 70874 && $codePoint <= 71039) {
-            return true;
-        }
-
-        if ($codePoint >= 71134 && $codePoint <= 71167) {
-            return true;
-        }
-
-        if ($codePoint >= 71370 && $codePoint <= 71423) {
-            return true;
-        }
-
-        if ($codePoint >= 71488 && $codePoint <= 71679) {
-            return true;
-        }
-
-        if ($codePoint >= 71740 && $codePoint <= 71839) {
-            return true;
-        }
-
-        if ($codePoint >= 72026 && $codePoint <= 72095) {
-            return true;
-        }
-
-        if ($codePoint >= 72441 && $codePoint <= 72703) {
-            return true;
-        }
-
-        if ($codePoint >= 72887 && $codePoint <= 72959) {
-            return true;
-        }
-
-        if ($codePoint >= 73130 && $codePoint <= 73439) {
-            return true;
-        }
-
-        if ($codePoint >= 73465 && $codePoint <= 73647) {
-            return true;
-        }
-
-        if ($codePoint >= 74650 && $codePoint <= 74751) {
-            return true;
-        }
-
-        if ($codePoint >= 75076 && $codePoint <= 77823) {
-            return true;
-        }
-
-        if ($codePoint >= 78905 && $codePoint <= 82943) {
-            return true;
-        }
-
-        if ($codePoint >= 83527 && $codePoint <= 92159) {
-            return true;
-        }
-
-        if ($codePoint >= 92784 && $codePoint <= 92879) {
-            return true;
-        }
-
-        if ($codePoint >= 93072 && $codePoint <= 93759) {
-            return true;
-        }
-
-        if ($codePoint >= 93851 && $codePoint <= 93951) {
-            return true;
-        }
-
-        if ($codePoint >= 94112 && $codePoint <= 94175) {
-            return true;
-        }
-
-        if ($codePoint >= 101590 && $codePoint <= 101631) {
-            return true;
-        }
-
-        if ($codePoint >= 101641 && $codePoint <= 110591) {
-            return true;
-        }
-
-        if ($codePoint >= 110879 && $codePoint <= 110927) {
-            return true;
-        }
-
-        if ($codePoint >= 111356 && $codePoint <= 113663) {
-            return true;
-        }
-
-        if ($codePoint >= 113828 && $codePoint <= 118783) {
-            return true;
-        }
-
-        if ($codePoint >= 119366 && $codePoint <= 119519) {
-            return true;
-        }
-
-        if ($codePoint >= 119673 && $codePoint <= 119807) {
-            return true;
-        }
-
-        if ($codePoint >= 121520 && $codePoint <= 122879) {
-            return true;
-        }
-
-        if ($codePoint >= 122923 && $codePoint <= 123135) {
-            return true;
-        }
-
-        if ($codePoint >= 123216 && $codePoint <= 123583) {
-            return true;
-        }
-
-        if ($codePoint >= 123648 && $codePoint <= 124927) {
-            return true;
-        }
-
-        if ($codePoint >= 125143 && $codePoint <= 125183) {
-            return true;
-        }
-
-        if ($codePoint >= 125280 && $codePoint <= 126064) {
-            return true;
-        }
-
-        if ($codePoint >= 126133 && $codePoint <= 126208) {
-            return true;
-        }
-
-        if ($codePoint >= 126270 && $codePoint <= 126463) {
-            return true;
-        }
-
-        if ($codePoint >= 126652 && $codePoint <= 126703) {
-            return true;
-        }
-
-        if ($codePoint >= 126706 && $codePoint <= 126975) {
-            return true;
-        }
-
-        if ($codePoint >= 127406 && $codePoint <= 127461) {
-            return true;
-        }
-
-        if ($codePoint >= 127590 && $codePoint <= 127743) {
-            return true;
-        }
-
-        if ($codePoint >= 129202 && $codePoint <= 129279) {
-            return true;
-        }
-
-        if ($codePoint >= 129751 && $codePoint <= 129791) {
-            return true;
-        }
-
-        if ($codePoint >= 129995 && $codePoint <= 130031) {
-            return true;
-        }
-
-        if ($codePoint >= 130042 && $codePoint <= 131069) {
-            return true;
-        }
-
-        if ($codePoint >= 173790 && $codePoint <= 173823) {
-            return true;
-        }
-
-        if ($codePoint >= 191457 && $codePoint <= 194559) {
-            return true;
-        }
-
-        if ($codePoint >= 195102 && $codePoint <= 196605) {
-            return true;
-        }
-
-        if ($codePoint >= 201547 && $codePoint <= 262141) {
-            return true;
-        }
-
-        if ($codePoint >= 262144 && $codePoint <= 327677) {
-            return true;
-        }
-
-        if ($codePoint >= 327680 && $codePoint <= 393213) {
-            return true;
-        }
-
-        if ($codePoint >= 393216 && $codePoint <= 458749) {
-            return true;
-        }
-
-        if ($codePoint >= 458752 && $codePoint <= 524285) {
-            return true;
-        }
-
-        if ($codePoint >= 524288 && $codePoint <= 589821) {
-            return true;
-        }
-
-        if ($codePoint >= 589824 && $codePoint <= 655357) {
-            return true;
-        }
-
-        if ($codePoint >= 655360 && $codePoint <= 720893) {
-            return true;
-        }
-
-        if ($codePoint >= 720896 && $codePoint <= 786429) {
-            return true;
-        }
-
-        if ($codePoint >= 786432 && $codePoint <= 851965) {
-            return true;
-        }
-
-        if ($codePoint >= 851968 && $codePoint <= 917501) {
-            return true;
-        }
-
-        if ($codePoint >= 917536 && $codePoint <= 917631) {
-            return true;
-        }
-
-        if ($codePoint >= 917632 && $codePoint <= 917759) {
-            return true;
-        }
-
-        if ($codePoint >= 918000 && $codePoint <= 983037) {
-            return true;
-        }
-
-        if ($codePoint >= 983040 && $codePoint <= 1048573) {
-            return true;
-        }
-
-        if ($codePoint >= 1048576 && $codePoint <= 1114109) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
deleted file mode 100644
index 5c1c51ddee..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class Regex
-{
-    const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\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{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D02}-\x{0D03}\x{0D3B}-\x{0D3C}\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}\x{0D81}\x{0D82}-\x{0D83}\x{0DCA}\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}-\x{0F3F}\x{0F71}-\x{0F7E}\x{0F7F}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102B}-\x{102C}\x{102D}-\x{1030}\x{1031}\x{1032}-\x{1037}\x{1038}\x{1039}-\x{103A}\x{103B}-\x{103C}\x{103D}-\x{103E}\x{1056}-\x{1057}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}\x{1083}-\x{1084}\x{1085}-\x{1086}\x{1087}-\x{108C}\x{108D}\x{108F}\x{109A}-\x{109C}\x{109D}\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{17B6}\x{17B7}-\x{17BD}\x{17BE}-\x{17C5}\x{17C6}\x{17C7}-\x{17C8}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1923}-\x{1926}\x{1927}-\x{1928}\x{1929}-\x{192B}\x{1930}-\x{1931}\x{1932}\x{1933}-\x{1938}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A19}-\x{1A1A}\x{1A1B}\x{1A55}\x{1A56}\x{1A57}\x{1A58}-\x{1A5E}\x{1A60}\x{1A61}\x{1A62}\x{1A63}-\x{1A64}\x{1A65}-\x{1A6C}\x{1A6D}-\x{1A72}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B04}\x{1B34}\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}-\x{1B44}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1B82}\x{1BA1}\x{1BA2}-\x{1BA5}\x{1BA6}-\x{1BA7}\x{1BA8}-\x{1BA9}\x{1BAA}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE7}\x{1BE8}-\x{1BE9}\x{1BEA}-\x{1BEC}\x{1BED}\x{1BEE}\x{1BEF}-\x{1BF1}\x{1BF2}-\x{1BF3}\x{1C24}-\x{1C2B}\x{1C2C}-\x{1C33}\x{1C34}-\x{1C35}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE1}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF7}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{302E}-\x{302F}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}\x{A82C}\x{A880}-\x{A881}\x{A8B4}-\x{A8C3}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A952}-\x{A953}\x{A980}-\x{A982}\x{A983}\x{A9B3}\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}-\x{A9BD}\x{A9BE}-\x{A9C0}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA2F}-\x{AA30}\x{AA31}-\x{AA32}\x{AA33}-\x{AA34}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA4D}\x{AA7B}\x{AA7C}\x{AA7D}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEB}\x{AAEC}-\x{AAED}\x{AAEE}-\x{AAEF}\x{AAF5}\x{AAF6}\x{ABE3}-\x{ABE4}\x{ABE5}\x{ABE6}-\x{ABE7}\x{ABE8}\x{ABE9}-\x{ABEA}\x{ABEC}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\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{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11000}\x{11001}\x{11002}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{11082}\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112C}\x{1112D}-\x{11134}\x{11145}-\x{11146}\x{11173}\x{11180}-\x{11181}\x{11182}\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}-\x{111C0}\x{111C9}-\x{111CC}\x{111CE}\x{111CF}\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}\x{11234}\x{11235}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E0}-\x{112E2}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{11302}-\x{11303}\x{1133B}-\x{1133C}\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11357}\x{11362}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}\x{11442}-\x{11444}\x{11445}\x{11446}\x{1145E}\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}\x{114BF}-\x{114C0}\x{114C1}\x{114C2}-\x{114C3}\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115BC}-\x{115BD}\x{115BE}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{1163D}\x{1163E}\x{1163F}-\x{11640}\x{116AB}\x{116AC}\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}\x{116B6}\x{116B7}\x{1171D}-\x{1171F}\x{11720}-\x{11721}\x{11722}-\x{11725}\x{11726}\x{11727}-\x{1172B}\x{1182C}-\x{1182E}\x{1182F}-\x{11837}\x{11838}\x{11839}-\x{1183A}\x{11930}-\x{11935}\x{11937}-\x{11938}\x{1193B}-\x{1193C}\x{1193D}\x{1193E}\x{11940}\x{11942}\x{11943}\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DF}\x{119E0}\x{119E4}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A39}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A57}-\x{11A58}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A97}\x{11A98}-\x{11A99}\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3E}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CA9}\x{11CAA}-\x{11CB0}\x{11CB1}\x{11CB2}-\x{11CB3}\x{11CB4}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D8A}-\x{11D8E}\x{11D90}-\x{11D91}\x{11D93}-\x{11D94}\x{11D95}\x{11D96}\x{11D97}\x{11EF3}-\x{11EF4}\x{11EF5}-\x{11EF6}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F51}-\x{16F87}\x{16F8F}-\x{16F92}\x{16FE4}\x{16FF0}-\x{16FF1}\x{1BC9D}-\x{1BC9E}\x{1D165}-\x{1D166}\x{1D167}-\x{1D169}\x{1D16D}-\x{1D172}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]/u';
-
-    const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-
-    const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\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{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\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{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\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{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\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{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\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{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\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{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{11660}-\x{1166C}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\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{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{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\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{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\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{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\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{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\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{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\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{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{169B}\x{169C}\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{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\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{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{2060}-\x{2064}\x{2065}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{11660}-\x{1166C}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\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{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{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\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{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1D7CE}-\x{1D7FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\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{0B55}-\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{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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\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{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{17DD}\x{180B}-\x{180D}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\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{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\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{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{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-    const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
-    const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
-    const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\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{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\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{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\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{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\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{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\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{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\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{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{11660}-\x{1166C}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\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{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{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\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{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\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{0B55}-\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{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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\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{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{17DD}\x{180B}-\x{180D}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\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{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\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{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{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-
-    const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\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{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\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{0B55}-\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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\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{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{17DD}\x{180B}-\x{180D}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\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{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\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{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*\x{200C}[\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\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{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\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{0B55}-\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{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\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{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{17DD}\x{180B}-\x{180D}\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{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\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{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\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{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\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{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\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{111CF}\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{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\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{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\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{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*)[\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}\x{0867}\x{0869}-\x{086A}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}\x{10D22}\x{10F33}\x{10F54}\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}]/u';
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
deleted file mode 100644
index 0bbd335677..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-return array (
-  223 => 'ss',
-  962 => 'σ',
-  8204 => '',
-  8205 => '',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
deleted file mode 100644
index 25a5f564d5..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
+++ /dev/null
@@ -1,2638 +0,0 @@
-<?php
-
-return array (
-  888 => true,
-  889 => true,
-  896 => true,
-  897 => true,
-  898 => true,
-  899 => true,
-  907 => true,
-  909 => true,
-  930 => true,
-  1216 => true,
-  1328 => true,
-  1367 => true,
-  1368 => true,
-  1419 => true,
-  1420 => true,
-  1424 => true,
-  1480 => true,
-  1481 => true,
-  1482 => true,
-  1483 => true,
-  1484 => true,
-  1485 => true,
-  1486 => true,
-  1487 => true,
-  1515 => true,
-  1516 => true,
-  1517 => true,
-  1518 => true,
-  1525 => true,
-  1526 => true,
-  1527 => true,
-  1528 => true,
-  1529 => true,
-  1530 => true,
-  1531 => true,
-  1532 => true,
-  1533 => true,
-  1534 => true,
-  1535 => true,
-  1536 => true,
-  1537 => true,
-  1538 => true,
-  1539 => true,
-  1540 => true,
-  1541 => true,
-  1564 => true,
-  1565 => true,
-  1757 => true,
-  1806 => true,
-  1807 => true,
-  1867 => true,
-  1868 => true,
-  1970 => true,
-  1971 => true,
-  1972 => true,
-  1973 => true,
-  1974 => true,
-  1975 => true,
-  1976 => true,
-  1977 => true,
-  1978 => true,
-  1979 => true,
-  1980 => true,
-  1981 => true,
-  1982 => true,
-  1983 => true,
-  2043 => true,
-  2044 => true,
-  2094 => true,
-  2095 => true,
-  2111 => true,
-  2140 => true,
-  2141 => true,
-  2143 => true,
-  2229 => true,
-  2248 => true,
-  2249 => true,
-  2250 => true,
-  2251 => true,
-  2252 => true,
-  2253 => true,
-  2254 => true,
-  2255 => true,
-  2256 => true,
-  2257 => true,
-  2258 => true,
-  2274 => true,
-  2436 => true,
-  2445 => true,
-  2446 => true,
-  2449 => true,
-  2450 => true,
-  2473 => true,
-  2481 => true,
-  2483 => true,
-  2484 => true,
-  2485 => true,
-  2490 => true,
-  2491 => true,
-  2501 => true,
-  2502 => true,
-  2505 => true,
-  2506 => true,
-  2511 => true,
-  2512 => true,
-  2513 => true,
-  2514 => true,
-  2515 => true,
-  2516 => true,
-  2517 => true,
-  2518 => true,
-  2520 => true,
-  2521 => true,
-  2522 => true,
-  2523 => true,
-  2526 => true,
-  2532 => true,
-  2533 => true,
-  2559 => true,
-  2560 => true,
-  2564 => true,
-  2571 => true,
-  2572 => true,
-  2573 => true,
-  2574 => true,
-  2577 => true,
-  2578 => true,
-  2601 => true,
-  2609 => true,
-  2612 => true,
-  2615 => true,
-  2618 => true,
-  2619 => true,
-  2621 => true,
-  2627 => true,
-  2628 => true,
-  2629 => true,
-  2630 => true,
-  2633 => true,
-  2634 => true,
-  2638 => true,
-  2639 => true,
-  2640 => true,
-  2642 => true,
-  2643 => true,
-  2644 => true,
-  2645 => true,
-  2646 => true,
-  2647 => true,
-  2648 => true,
-  2653 => true,
-  2655 => true,
-  2656 => true,
-  2657 => true,
-  2658 => true,
-  2659 => true,
-  2660 => true,
-  2661 => true,
-  2679 => true,
-  2680 => true,
-  2681 => true,
-  2682 => true,
-  2683 => true,
-  2684 => true,
-  2685 => true,
-  2686 => true,
-  2687 => true,
-  2688 => true,
-  2692 => true,
-  2702 => true,
-  2706 => true,
-  2729 => true,
-  2737 => true,
-  2740 => true,
-  2746 => true,
-  2747 => true,
-  2758 => true,
-  2762 => true,
-  2766 => true,
-  2767 => true,
-  2769 => true,
-  2770 => true,
-  2771 => true,
-  2772 => true,
-  2773 => true,
-  2774 => true,
-  2775 => true,
-  2776 => true,
-  2777 => true,
-  2778 => true,
-  2779 => true,
-  2780 => true,
-  2781 => true,
-  2782 => true,
-  2783 => true,
-  2788 => true,
-  2789 => true,
-  2802 => true,
-  2803 => true,
-  2804 => true,
-  2805 => true,
-  2806 => true,
-  2807 => true,
-  2808 => true,
-  2816 => true,
-  2820 => true,
-  2829 => true,
-  2830 => true,
-  2833 => true,
-  2834 => true,
-  2857 => true,
-  2865 => true,
-  2868 => true,
-  2874 => true,
-  2875 => true,
-  2885 => true,
-  2886 => true,
-  2889 => true,
-  2890 => true,
-  2894 => true,
-  2895 => true,
-  2896 => true,
-  2897 => true,
-  2898 => true,
-  2899 => true,
-  2900 => true,
-  2904 => true,
-  2905 => true,
-  2906 => true,
-  2907 => true,
-  2910 => true,
-  2916 => true,
-  2917 => true,
-  2936 => true,
-  2937 => true,
-  2938 => true,
-  2939 => true,
-  2940 => true,
-  2941 => true,
-  2942 => true,
-  2943 => true,
-  2944 => true,
-  2945 => true,
-  2948 => true,
-  2955 => true,
-  2956 => true,
-  2957 => true,
-  2961 => true,
-  2966 => true,
-  2967 => true,
-  2968 => true,
-  2971 => true,
-  2973 => true,
-  2976 => true,
-  2977 => true,
-  2978 => true,
-  2981 => true,
-  2982 => true,
-  2983 => true,
-  2987 => true,
-  2988 => true,
-  2989 => true,
-  3002 => true,
-  3003 => true,
-  3004 => true,
-  3005 => true,
-  3011 => true,
-  3012 => true,
-  3013 => true,
-  3017 => true,
-  3022 => true,
-  3023 => true,
-  3025 => true,
-  3026 => true,
-  3027 => true,
-  3028 => true,
-  3029 => true,
-  3030 => true,
-  3032 => true,
-  3033 => true,
-  3034 => true,
-  3035 => true,
-  3036 => true,
-  3037 => true,
-  3038 => true,
-  3039 => true,
-  3040 => true,
-  3041 => true,
-  3042 => true,
-  3043 => true,
-  3044 => true,
-  3045 => true,
-  3067 => true,
-  3068 => true,
-  3069 => true,
-  3070 => true,
-  3071 => true,
-  3085 => true,
-  3089 => true,
-  3113 => true,
-  3130 => true,
-  3131 => true,
-  3132 => true,
-  3141 => true,
-  3145 => true,
-  3150 => true,
-  3151 => true,
-  3152 => true,
-  3153 => true,
-  3154 => true,
-  3155 => true,
-  3156 => true,
-  3159 => true,
-  3163 => true,
-  3164 => true,
-  3165 => true,
-  3166 => true,
-  3167 => true,
-  3172 => true,
-  3173 => true,
-  3184 => true,
-  3185 => true,
-  3186 => true,
-  3187 => true,
-  3188 => true,
-  3189 => true,
-  3190 => true,
-  3213 => true,
-  3217 => true,
-  3241 => true,
-  3252 => true,
-  3258 => true,
-  3259 => true,
-  3269 => true,
-  3273 => true,
-  3278 => true,
-  3279 => true,
-  3280 => true,
-  3281 => true,
-  3282 => true,
-  3283 => true,
-  3284 => true,
-  3287 => true,
-  3288 => true,
-  3289 => true,
-  3290 => true,
-  3291 => true,
-  3292 => true,
-  3293 => true,
-  3295 => true,
-  3300 => true,
-  3301 => true,
-  3312 => true,
-  3315 => true,
-  3316 => true,
-  3317 => true,
-  3318 => true,
-  3319 => true,
-  3320 => true,
-  3321 => true,
-  3322 => true,
-  3323 => true,
-  3324 => true,
-  3325 => true,
-  3326 => true,
-  3327 => true,
-  3341 => true,
-  3345 => true,
-  3397 => true,
-  3401 => true,
-  3408 => true,
-  3409 => true,
-  3410 => true,
-  3411 => true,
-  3428 => true,
-  3429 => true,
-  3456 => true,
-  3460 => true,
-  3479 => true,
-  3480 => true,
-  3481 => true,
-  3506 => true,
-  3516 => true,
-  3518 => true,
-  3519 => true,
-  3527 => true,
-  3528 => true,
-  3529 => true,
-  3531 => true,
-  3532 => true,
-  3533 => true,
-  3534 => true,
-  3541 => true,
-  3543 => true,
-  3552 => true,
-  3553 => true,
-  3554 => true,
-  3555 => true,
-  3556 => true,
-  3557 => true,
-  3568 => true,
-  3569 => true,
-  3573 => true,
-  3574 => true,
-  3575 => true,
-  3576 => true,
-  3577 => true,
-  3578 => true,
-  3579 => true,
-  3580 => true,
-  3581 => true,
-  3582 => true,
-  3583 => true,
-  3584 => true,
-  3643 => true,
-  3644 => true,
-  3645 => true,
-  3646 => true,
-  3715 => true,
-  3717 => true,
-  3723 => true,
-  3748 => true,
-  3750 => true,
-  3774 => true,
-  3775 => true,
-  3781 => true,
-  3783 => true,
-  3790 => true,
-  3791 => true,
-  3802 => true,
-  3803 => true,
-  3912 => true,
-  3949 => true,
-  3950 => true,
-  3951 => true,
-  3952 => true,
-  3992 => true,
-  4029 => true,
-  4045 => true,
-  4294 => true,
-  4296 => true,
-  4297 => true,
-  4298 => true,
-  4299 => true,
-  4300 => true,
-  4302 => true,
-  4303 => true,
-  4447 => true,
-  4448 => true,
-  4681 => true,
-  4686 => true,
-  4687 => true,
-  4695 => true,
-  4697 => true,
-  4702 => true,
-  4703 => true,
-  4745 => true,
-  4750 => true,
-  4751 => true,
-  4785 => true,
-  4790 => true,
-  4791 => true,
-  4799 => true,
-  4801 => true,
-  4806 => true,
-  4807 => true,
-  4823 => true,
-  4881 => true,
-  4886 => true,
-  4887 => true,
-  4955 => true,
-  4956 => true,
-  4989 => true,
-  4990 => true,
-  4991 => true,
-  5018 => true,
-  5019 => true,
-  5020 => true,
-  5021 => true,
-  5022 => true,
-  5023 => true,
-  5110 => true,
-  5111 => true,
-  5118 => true,
-  5119 => true,
-  5760 => true,
-  5789 => true,
-  5790 => true,
-  5791 => true,
-  5881 => true,
-  5882 => true,
-  5883 => true,
-  5884 => true,
-  5885 => true,
-  5886 => true,
-  5887 => true,
-  5901 => true,
-  5909 => true,
-  5910 => true,
-  5911 => true,
-  5912 => true,
-  5913 => true,
-  5914 => true,
-  5915 => true,
-  5916 => true,
-  5917 => true,
-  5918 => true,
-  5919 => true,
-  5943 => true,
-  5944 => true,
-  5945 => true,
-  5946 => true,
-  5947 => true,
-  5948 => true,
-  5949 => true,
-  5950 => true,
-  5951 => true,
-  5972 => true,
-  5973 => true,
-  5974 => true,
-  5975 => true,
-  5976 => true,
-  5977 => true,
-  5978 => true,
-  5979 => true,
-  5980 => true,
-  5981 => true,
-  5982 => true,
-  5983 => true,
-  5997 => true,
-  6001 => true,
-  6004 => true,
-  6005 => true,
-  6006 => true,
-  6007 => true,
-  6008 => true,
-  6009 => true,
-  6010 => true,
-  6011 => true,
-  6012 => true,
-  6013 => true,
-  6014 => true,
-  6015 => true,
-  6068 => true,
-  6069 => true,
-  6110 => true,
-  6111 => true,
-  6122 => true,
-  6123 => true,
-  6124 => true,
-  6125 => true,
-  6126 => true,
-  6127 => true,
-  6138 => true,
-  6139 => true,
-  6140 => true,
-  6141 => true,
-  6142 => true,
-  6143 => true,
-  6150 => true,
-  6158 => true,
-  6159 => true,
-  6170 => true,
-  6171 => true,
-  6172 => true,
-  6173 => true,
-  6174 => true,
-  6175 => true,
-  6265 => true,
-  6266 => true,
-  6267 => true,
-  6268 => true,
-  6269 => true,
-  6270 => true,
-  6271 => true,
-  6315 => true,
-  6316 => true,
-  6317 => true,
-  6318 => true,
-  6319 => true,
-  6390 => true,
-  6391 => true,
-  6392 => true,
-  6393 => true,
-  6394 => true,
-  6395 => true,
-  6396 => true,
-  6397 => true,
-  6398 => true,
-  6399 => true,
-  6431 => true,
-  6444 => true,
-  6445 => true,
-  6446 => true,
-  6447 => true,
-  6460 => true,
-  6461 => true,
-  6462 => true,
-  6463 => true,
-  6465 => true,
-  6466 => true,
-  6467 => true,
-  6510 => true,
-  6511 => true,
-  6517 => true,
-  6518 => true,
-  6519 => true,
-  6520 => true,
-  6521 => true,
-  6522 => true,
-  6523 => true,
-  6524 => true,
-  6525 => true,
-  6526 => true,
-  6527 => true,
-  6572 => true,
-  6573 => true,
-  6574 => true,
-  6575 => true,
-  6602 => true,
-  6603 => true,
-  6604 => true,
-  6605 => true,
-  6606 => true,
-  6607 => true,
-  6619 => true,
-  6620 => true,
-  6621 => true,
-  6684 => true,
-  6685 => true,
-  6751 => true,
-  6781 => true,
-  6782 => true,
-  6794 => true,
-  6795 => true,
-  6796 => true,
-  6797 => true,
-  6798 => true,
-  6799 => true,
-  6810 => true,
-  6811 => true,
-  6812 => true,
-  6813 => true,
-  6814 => true,
-  6815 => true,
-  6830 => true,
-  6831 => true,
-  6988 => true,
-  6989 => true,
-  6990 => true,
-  6991 => true,
-  7037 => true,
-  7038 => true,
-  7039 => true,
-  7156 => true,
-  7157 => true,
-  7158 => true,
-  7159 => true,
-  7160 => true,
-  7161 => true,
-  7162 => true,
-  7163 => true,
-  7224 => true,
-  7225 => true,
-  7226 => true,
-  7242 => true,
-  7243 => true,
-  7244 => true,
-  7305 => true,
-  7306 => true,
-  7307 => true,
-  7308 => true,
-  7309 => true,
-  7310 => true,
-  7311 => true,
-  7355 => true,
-  7356 => true,
-  7368 => true,
-  7369 => true,
-  7370 => true,
-  7371 => true,
-  7372 => true,
-  7373 => true,
-  7374 => true,
-  7375 => true,
-  7419 => true,
-  7420 => true,
-  7421 => true,
-  7422 => true,
-  7423 => true,
-  7674 => true,
-  7958 => true,
-  7959 => true,
-  7966 => true,
-  7967 => true,
-  8006 => true,
-  8007 => true,
-  8014 => true,
-  8015 => true,
-  8024 => true,
-  8026 => true,
-  8028 => true,
-  8030 => true,
-  8062 => true,
-  8063 => true,
-  8117 => true,
-  8133 => true,
-  8148 => true,
-  8149 => true,
-  8156 => true,
-  8176 => true,
-  8177 => true,
-  8181 => true,
-  8191 => true,
-  8206 => true,
-  8207 => true,
-  8228 => true,
-  8229 => true,
-  8230 => true,
-  8232 => true,
-  8233 => true,
-  8234 => true,
-  8235 => true,
-  8236 => true,
-  8237 => true,
-  8238 => true,
-  8289 => true,
-  8290 => true,
-  8291 => true,
-  8293 => true,
-  8294 => true,
-  8295 => true,
-  8296 => true,
-  8297 => true,
-  8298 => true,
-  8299 => true,
-  8300 => true,
-  8301 => true,
-  8302 => true,
-  8303 => true,
-  8306 => true,
-  8307 => true,
-  8335 => true,
-  8349 => true,
-  8350 => true,
-  8351 => true,
-  8384 => true,
-  8385 => true,
-  8386 => true,
-  8387 => true,
-  8388 => true,
-  8389 => true,
-  8390 => true,
-  8391 => true,
-  8392 => true,
-  8393 => true,
-  8394 => true,
-  8395 => true,
-  8396 => true,
-  8397 => true,
-  8398 => true,
-  8399 => true,
-  8433 => true,
-  8434 => true,
-  8435 => true,
-  8436 => true,
-  8437 => true,
-  8438 => true,
-  8439 => true,
-  8440 => true,
-  8441 => true,
-  8442 => true,
-  8443 => true,
-  8444 => true,
-  8445 => true,
-  8446 => true,
-  8447 => true,
-  8498 => true,
-  8579 => true,
-  8588 => true,
-  8589 => true,
-  8590 => true,
-  8591 => true,
-  9255 => true,
-  9256 => true,
-  9257 => true,
-  9258 => true,
-  9259 => true,
-  9260 => true,
-  9261 => true,
-  9262 => true,
-  9263 => true,
-  9264 => true,
-  9265 => true,
-  9266 => true,
-  9267 => true,
-  9268 => true,
-  9269 => true,
-  9270 => true,
-  9271 => true,
-  9272 => true,
-  9273 => true,
-  9274 => true,
-  9275 => true,
-  9276 => true,
-  9277 => true,
-  9278 => true,
-  9279 => true,
-  9291 => true,
-  9292 => true,
-  9293 => true,
-  9294 => true,
-  9295 => true,
-  9296 => true,
-  9297 => true,
-  9298 => true,
-  9299 => true,
-  9300 => true,
-  9301 => true,
-  9302 => true,
-  9303 => true,
-  9304 => true,
-  9305 => true,
-  9306 => true,
-  9307 => true,
-  9308 => true,
-  9309 => true,
-  9310 => true,
-  9311 => true,
-  9352 => true,
-  9353 => true,
-  9354 => true,
-  9355 => true,
-  9356 => true,
-  9357 => true,
-  9358 => true,
-  9359 => true,
-  9360 => true,
-  9361 => true,
-  9362 => true,
-  9363 => true,
-  9364 => true,
-  9365 => true,
-  9366 => true,
-  9367 => true,
-  9368 => true,
-  9369 => true,
-  9370 => true,
-  9371 => true,
-  11124 => true,
-  11125 => true,
-  11158 => true,
-  11311 => true,
-  11359 => true,
-  11508 => true,
-  11509 => true,
-  11510 => true,
-  11511 => true,
-  11512 => true,
-  11558 => true,
-  11560 => true,
-  11561 => true,
-  11562 => true,
-  11563 => true,
-  11564 => true,
-  11566 => true,
-  11567 => true,
-  11624 => true,
-  11625 => true,
-  11626 => true,
-  11627 => true,
-  11628 => true,
-  11629 => true,
-  11630 => true,
-  11633 => true,
-  11634 => true,
-  11635 => true,
-  11636 => true,
-  11637 => true,
-  11638 => true,
-  11639 => true,
-  11640 => true,
-  11641 => true,
-  11642 => true,
-  11643 => true,
-  11644 => true,
-  11645 => true,
-  11646 => true,
-  11671 => true,
-  11672 => true,
-  11673 => true,
-  11674 => true,
-  11675 => true,
-  11676 => true,
-  11677 => true,
-  11678 => true,
-  11679 => true,
-  11687 => true,
-  11695 => true,
-  11703 => true,
-  11711 => true,
-  11719 => true,
-  11727 => true,
-  11735 => true,
-  11743 => true,
-  11930 => true,
-  12020 => true,
-  12021 => true,
-  12022 => true,
-  12023 => true,
-  12024 => true,
-  12025 => true,
-  12026 => true,
-  12027 => true,
-  12028 => true,
-  12029 => true,
-  12030 => true,
-  12031 => true,
-  12246 => true,
-  12247 => true,
-  12248 => true,
-  12249 => true,
-  12250 => true,
-  12251 => true,
-  12252 => true,
-  12253 => true,
-  12254 => true,
-  12255 => true,
-  12256 => true,
-  12257 => true,
-  12258 => true,
-  12259 => true,
-  12260 => true,
-  12261 => true,
-  12262 => true,
-  12263 => true,
-  12264 => true,
-  12265 => true,
-  12266 => true,
-  12267 => true,
-  12268 => true,
-  12269 => true,
-  12270 => true,
-  12271 => true,
-  12272 => true,
-  12273 => true,
-  12274 => true,
-  12275 => true,
-  12276 => true,
-  12277 => true,
-  12278 => true,
-  12279 => true,
-  12280 => true,
-  12281 => true,
-  12282 => true,
-  12283 => true,
-  12284 => true,
-  12285 => true,
-  12286 => true,
-  12287 => true,
-  12352 => true,
-  12439 => true,
-  12440 => true,
-  12544 => true,
-  12545 => true,
-  12546 => true,
-  12547 => true,
-  12548 => true,
-  12592 => true,
-  12644 => true,
-  12687 => true,
-  12772 => true,
-  12773 => true,
-  12774 => true,
-  12775 => true,
-  12776 => true,
-  12777 => true,
-  12778 => true,
-  12779 => true,
-  12780 => true,
-  12781 => true,
-  12782 => true,
-  12783 => true,
-  12831 => true,
-  13250 => true,
-  13255 => true,
-  13272 => true,
-  40957 => true,
-  40958 => true,
-  40959 => true,
-  42125 => true,
-  42126 => true,
-  42127 => true,
-  42183 => true,
-  42184 => true,
-  42185 => true,
-  42186 => true,
-  42187 => true,
-  42188 => true,
-  42189 => true,
-  42190 => true,
-  42191 => true,
-  42540 => true,
-  42541 => true,
-  42542 => true,
-  42543 => true,
-  42544 => true,
-  42545 => true,
-  42546 => true,
-  42547 => true,
-  42548 => true,
-  42549 => true,
-  42550 => true,
-  42551 => true,
-  42552 => true,
-  42553 => true,
-  42554 => true,
-  42555 => true,
-  42556 => true,
-  42557 => true,
-  42558 => true,
-  42559 => true,
-  42744 => true,
-  42745 => true,
-  42746 => true,
-  42747 => true,
-  42748 => true,
-  42749 => true,
-  42750 => true,
-  42751 => true,
-  42944 => true,
-  42945 => true,
-  43053 => true,
-  43054 => true,
-  43055 => true,
-  43066 => true,
-  43067 => true,
-  43068 => true,
-  43069 => true,
-  43070 => true,
-  43071 => true,
-  43128 => true,
-  43129 => true,
-  43130 => true,
-  43131 => true,
-  43132 => true,
-  43133 => true,
-  43134 => true,
-  43135 => true,
-  43206 => true,
-  43207 => true,
-  43208 => true,
-  43209 => true,
-  43210 => true,
-  43211 => true,
-  43212 => true,
-  43213 => true,
-  43226 => true,
-  43227 => true,
-  43228 => true,
-  43229 => true,
-  43230 => true,
-  43231 => true,
-  43348 => true,
-  43349 => true,
-  43350 => true,
-  43351 => true,
-  43352 => true,
-  43353 => true,
-  43354 => true,
-  43355 => true,
-  43356 => true,
-  43357 => true,
-  43358 => true,
-  43389 => true,
-  43390 => true,
-  43391 => true,
-  43470 => true,
-  43482 => true,
-  43483 => true,
-  43484 => true,
-  43485 => true,
-  43519 => true,
-  43575 => true,
-  43576 => true,
-  43577 => true,
-  43578 => true,
-  43579 => true,
-  43580 => true,
-  43581 => true,
-  43582 => true,
-  43583 => true,
-  43598 => true,
-  43599 => true,
-  43610 => true,
-  43611 => true,
-  43715 => true,
-  43716 => true,
-  43717 => true,
-  43718 => true,
-  43719 => true,
-  43720 => true,
-  43721 => true,
-  43722 => true,
-  43723 => true,
-  43724 => true,
-  43725 => true,
-  43726 => true,
-  43727 => true,
-  43728 => true,
-  43729 => true,
-  43730 => true,
-  43731 => true,
-  43732 => true,
-  43733 => true,
-  43734 => true,
-  43735 => true,
-  43736 => true,
-  43737 => true,
-  43738 => true,
-  43767 => true,
-  43768 => true,
-  43769 => true,
-  43770 => true,
-  43771 => true,
-  43772 => true,
-  43773 => true,
-  43774 => true,
-  43775 => true,
-  43776 => true,
-  43783 => true,
-  43784 => true,
-  43791 => true,
-  43792 => true,
-  43799 => true,
-  43800 => true,
-  43801 => true,
-  43802 => true,
-  43803 => true,
-  43804 => true,
-  43805 => true,
-  43806 => true,
-  43807 => true,
-  43815 => true,
-  43823 => true,
-  43884 => true,
-  43885 => true,
-  43886 => true,
-  43887 => true,
-  44014 => true,
-  44015 => true,
-  44026 => true,
-  44027 => true,
-  44028 => true,
-  44029 => true,
-  44030 => true,
-  44031 => true,
-  55204 => true,
-  55205 => true,
-  55206 => true,
-  55207 => true,
-  55208 => true,
-  55209 => true,
-  55210 => true,
-  55211 => true,
-  55212 => true,
-  55213 => true,
-  55214 => true,
-  55215 => true,
-  55239 => true,
-  55240 => true,
-  55241 => true,
-  55242 => true,
-  55292 => true,
-  55293 => true,
-  55294 => true,
-  55295 => true,
-  64110 => true,
-  64111 => true,
-  64263 => true,
-  64264 => true,
-  64265 => true,
-  64266 => true,
-  64267 => true,
-  64268 => true,
-  64269 => true,
-  64270 => true,
-  64271 => true,
-  64272 => true,
-  64273 => true,
-  64274 => true,
-  64280 => true,
-  64281 => true,
-  64282 => true,
-  64283 => true,
-  64284 => true,
-  64311 => true,
-  64317 => true,
-  64319 => true,
-  64322 => true,
-  64325 => true,
-  64450 => true,
-  64451 => true,
-  64452 => true,
-  64453 => true,
-  64454 => true,
-  64455 => true,
-  64456 => true,
-  64457 => true,
-  64458 => true,
-  64459 => true,
-  64460 => true,
-  64461 => true,
-  64462 => true,
-  64463 => true,
-  64464 => true,
-  64465 => true,
-  64466 => true,
-  64832 => true,
-  64833 => true,
-  64834 => true,
-  64835 => true,
-  64836 => true,
-  64837 => true,
-  64838 => true,
-  64839 => true,
-  64840 => true,
-  64841 => true,
-  64842 => true,
-  64843 => true,
-  64844 => true,
-  64845 => true,
-  64846 => true,
-  64847 => true,
-  64912 => true,
-  64913 => true,
-  64968 => true,
-  64969 => true,
-  64970 => true,
-  64971 => true,
-  64972 => true,
-  64973 => true,
-  64974 => true,
-  64975 => true,
-  65022 => true,
-  65023 => true,
-  65042 => true,
-  65049 => true,
-  65050 => true,
-  65051 => true,
-  65052 => true,
-  65053 => true,
-  65054 => true,
-  65055 => true,
-  65072 => true,
-  65106 => true,
-  65107 => true,
-  65127 => true,
-  65132 => true,
-  65133 => true,
-  65134 => true,
-  65135 => true,
-  65141 => true,
-  65277 => true,
-  65278 => true,
-  65280 => true,
-  65440 => true,
-  65471 => true,
-  65472 => true,
-  65473 => true,
-  65480 => true,
-  65481 => true,
-  65488 => true,
-  65489 => true,
-  65496 => true,
-  65497 => true,
-  65501 => true,
-  65502 => true,
-  65503 => true,
-  65511 => true,
-  65519 => true,
-  65520 => true,
-  65521 => true,
-  65522 => true,
-  65523 => true,
-  65524 => true,
-  65525 => true,
-  65526 => true,
-  65527 => true,
-  65528 => true,
-  65529 => true,
-  65530 => true,
-  65531 => true,
-  65532 => true,
-  65533 => true,
-  65534 => true,
-  65535 => true,
-  65548 => true,
-  65575 => true,
-  65595 => true,
-  65598 => true,
-  65614 => true,
-  65615 => true,
-  65787 => true,
-  65788 => true,
-  65789 => true,
-  65790 => true,
-  65791 => true,
-  65795 => true,
-  65796 => true,
-  65797 => true,
-  65798 => true,
-  65844 => true,
-  65845 => true,
-  65846 => true,
-  65935 => true,
-  65949 => true,
-  65950 => true,
-  65951 => true,
-  66205 => true,
-  66206 => true,
-  66207 => true,
-  66257 => true,
-  66258 => true,
-  66259 => true,
-  66260 => true,
-  66261 => true,
-  66262 => true,
-  66263 => true,
-  66264 => true,
-  66265 => true,
-  66266 => true,
-  66267 => true,
-  66268 => true,
-  66269 => true,
-  66270 => true,
-  66271 => true,
-  66300 => true,
-  66301 => true,
-  66302 => true,
-  66303 => true,
-  66340 => true,
-  66341 => true,
-  66342 => true,
-  66343 => true,
-  66344 => true,
-  66345 => true,
-  66346 => true,
-  66347 => true,
-  66348 => true,
-  66379 => true,
-  66380 => true,
-  66381 => true,
-  66382 => true,
-  66383 => true,
-  66427 => true,
-  66428 => true,
-  66429 => true,
-  66430 => true,
-  66431 => true,
-  66462 => true,
-  66500 => true,
-  66501 => true,
-  66502 => true,
-  66503 => true,
-  66718 => true,
-  66719 => true,
-  66730 => true,
-  66731 => true,
-  66732 => true,
-  66733 => true,
-  66734 => true,
-  66735 => true,
-  66772 => true,
-  66773 => true,
-  66774 => true,
-  66775 => true,
-  66812 => true,
-  66813 => true,
-  66814 => true,
-  66815 => true,
-  66856 => true,
-  66857 => true,
-  66858 => true,
-  66859 => true,
-  66860 => true,
-  66861 => true,
-  66862 => true,
-  66863 => true,
-  66916 => true,
-  66917 => true,
-  66918 => true,
-  66919 => true,
-  66920 => true,
-  66921 => true,
-  66922 => true,
-  66923 => true,
-  66924 => true,
-  66925 => true,
-  66926 => true,
-  67383 => true,
-  67384 => true,
-  67385 => true,
-  67386 => true,
-  67387 => true,
-  67388 => true,
-  67389 => true,
-  67390 => true,
-  67391 => true,
-  67414 => true,
-  67415 => true,
-  67416 => true,
-  67417 => true,
-  67418 => true,
-  67419 => true,
-  67420 => true,
-  67421 => true,
-  67422 => true,
-  67423 => true,
-  67590 => true,
-  67591 => true,
-  67593 => true,
-  67638 => true,
-  67641 => true,
-  67642 => true,
-  67643 => true,
-  67645 => true,
-  67646 => true,
-  67670 => true,
-  67743 => true,
-  67744 => true,
-  67745 => true,
-  67746 => true,
-  67747 => true,
-  67748 => true,
-  67749 => true,
-  67750 => true,
-  67827 => true,
-  67830 => true,
-  67831 => true,
-  67832 => true,
-  67833 => true,
-  67834 => true,
-  67868 => true,
-  67869 => true,
-  67870 => true,
-  67898 => true,
-  67899 => true,
-  67900 => true,
-  67901 => true,
-  67902 => true,
-  68024 => true,
-  68025 => true,
-  68026 => true,
-  68027 => true,
-  68048 => true,
-  68049 => true,
-  68100 => true,
-  68103 => true,
-  68104 => true,
-  68105 => true,
-  68106 => true,
-  68107 => true,
-  68116 => true,
-  68120 => true,
-  68150 => true,
-  68151 => true,
-  68155 => true,
-  68156 => true,
-  68157 => true,
-  68158 => true,
-  68169 => true,
-  68170 => true,
-  68171 => true,
-  68172 => true,
-  68173 => true,
-  68174 => true,
-  68175 => true,
-  68185 => true,
-  68186 => true,
-  68187 => true,
-  68188 => true,
-  68189 => true,
-  68190 => true,
-  68191 => true,
-  68327 => true,
-  68328 => true,
-  68329 => true,
-  68330 => true,
-  68343 => true,
-  68344 => true,
-  68345 => true,
-  68346 => true,
-  68347 => true,
-  68348 => true,
-  68349 => true,
-  68350 => true,
-  68351 => true,
-  68406 => true,
-  68407 => true,
-  68408 => true,
-  68438 => true,
-  68439 => true,
-  68467 => true,
-  68468 => true,
-  68469 => true,
-  68470 => true,
-  68471 => true,
-  68498 => true,
-  68499 => true,
-  68500 => true,
-  68501 => true,
-  68502 => true,
-  68503 => true,
-  68504 => true,
-  68509 => true,
-  68510 => true,
-  68511 => true,
-  68512 => true,
-  68513 => true,
-  68514 => true,
-  68515 => true,
-  68516 => true,
-  68517 => true,
-  68518 => true,
-  68519 => true,
-  68520 => true,
-  68787 => true,
-  68788 => true,
-  68789 => true,
-  68790 => true,
-  68791 => true,
-  68792 => true,
-  68793 => true,
-  68794 => true,
-  68795 => true,
-  68796 => true,
-  68797 => true,
-  68798 => true,
-  68799 => true,
-  68851 => true,
-  68852 => true,
-  68853 => true,
-  68854 => true,
-  68855 => true,
-  68856 => true,
-  68857 => true,
-  68904 => true,
-  68905 => true,
-  68906 => true,
-  68907 => true,
-  68908 => true,
-  68909 => true,
-  68910 => true,
-  68911 => true,
-  69247 => true,
-  69290 => true,
-  69294 => true,
-  69295 => true,
-  69416 => true,
-  69417 => true,
-  69418 => true,
-  69419 => true,
-  69420 => true,
-  69421 => true,
-  69422 => true,
-  69423 => true,
-  69580 => true,
-  69581 => true,
-  69582 => true,
-  69583 => true,
-  69584 => true,
-  69585 => true,
-  69586 => true,
-  69587 => true,
-  69588 => true,
-  69589 => true,
-  69590 => true,
-  69591 => true,
-  69592 => true,
-  69593 => true,
-  69594 => true,
-  69595 => true,
-  69596 => true,
-  69597 => true,
-  69598 => true,
-  69599 => true,
-  69623 => true,
-  69624 => true,
-  69625 => true,
-  69626 => true,
-  69627 => true,
-  69628 => true,
-  69629 => true,
-  69630 => true,
-  69631 => true,
-  69710 => true,
-  69711 => true,
-  69712 => true,
-  69713 => true,
-  69744 => true,
-  69745 => true,
-  69746 => true,
-  69747 => true,
-  69748 => true,
-  69749 => true,
-  69750 => true,
-  69751 => true,
-  69752 => true,
-  69753 => true,
-  69754 => true,
-  69755 => true,
-  69756 => true,
-  69757 => true,
-  69758 => true,
-  69821 => true,
-  69826 => true,
-  69827 => true,
-  69828 => true,
-  69829 => true,
-  69830 => true,
-  69831 => true,
-  69832 => true,
-  69833 => true,
-  69834 => true,
-  69835 => true,
-  69836 => true,
-  69837 => true,
-  69838 => true,
-  69839 => true,
-  69865 => true,
-  69866 => true,
-  69867 => true,
-  69868 => true,
-  69869 => true,
-  69870 => true,
-  69871 => true,
-  69882 => true,
-  69883 => true,
-  69884 => true,
-  69885 => true,
-  69886 => true,
-  69887 => true,
-  69941 => true,
-  69960 => true,
-  69961 => true,
-  69962 => true,
-  69963 => true,
-  69964 => true,
-  69965 => true,
-  69966 => true,
-  69967 => true,
-  70007 => true,
-  70008 => true,
-  70009 => true,
-  70010 => true,
-  70011 => true,
-  70012 => true,
-  70013 => true,
-  70014 => true,
-  70015 => true,
-  70112 => true,
-  70133 => true,
-  70134 => true,
-  70135 => true,
-  70136 => true,
-  70137 => true,
-  70138 => true,
-  70139 => true,
-  70140 => true,
-  70141 => true,
-  70142 => true,
-  70143 => true,
-  70162 => true,
-  70279 => true,
-  70281 => true,
-  70286 => true,
-  70302 => true,
-  70314 => true,
-  70315 => true,
-  70316 => true,
-  70317 => true,
-  70318 => true,
-  70319 => true,
-  70379 => true,
-  70380 => true,
-  70381 => true,
-  70382 => true,
-  70383 => true,
-  70394 => true,
-  70395 => true,
-  70396 => true,
-  70397 => true,
-  70398 => true,
-  70399 => true,
-  70404 => true,
-  70413 => true,
-  70414 => true,
-  70417 => true,
-  70418 => true,
-  70441 => true,
-  70449 => true,
-  70452 => true,
-  70458 => true,
-  70469 => true,
-  70470 => true,
-  70473 => true,
-  70474 => true,
-  70478 => true,
-  70479 => true,
-  70481 => true,
-  70482 => true,
-  70483 => true,
-  70484 => true,
-  70485 => true,
-  70486 => true,
-  70488 => true,
-  70489 => true,
-  70490 => true,
-  70491 => true,
-  70492 => true,
-  70500 => true,
-  70501 => true,
-  70509 => true,
-  70510 => true,
-  70511 => true,
-  70748 => true,
-  70754 => true,
-  70755 => true,
-  70756 => true,
-  70757 => true,
-  70758 => true,
-  70759 => true,
-  70760 => true,
-  70761 => true,
-  70762 => true,
-  70763 => true,
-  70764 => true,
-  70765 => true,
-  70766 => true,
-  70767 => true,
-  70768 => true,
-  70769 => true,
-  70770 => true,
-  70771 => true,
-  70772 => true,
-  70773 => true,
-  70774 => true,
-  70775 => true,
-  70776 => true,
-  70777 => true,
-  70778 => true,
-  70779 => true,
-  70780 => true,
-  70781 => true,
-  70782 => true,
-  70783 => true,
-  70856 => true,
-  70857 => true,
-  70858 => true,
-  70859 => true,
-  70860 => true,
-  70861 => true,
-  70862 => true,
-  70863 => true,
-  71094 => true,
-  71095 => true,
-  71237 => true,
-  71238 => true,
-  71239 => true,
-  71240 => true,
-  71241 => true,
-  71242 => true,
-  71243 => true,
-  71244 => true,
-  71245 => true,
-  71246 => true,
-  71247 => true,
-  71258 => true,
-  71259 => true,
-  71260 => true,
-  71261 => true,
-  71262 => true,
-  71263 => true,
-  71277 => true,
-  71278 => true,
-  71279 => true,
-  71280 => true,
-  71281 => true,
-  71282 => true,
-  71283 => true,
-  71284 => true,
-  71285 => true,
-  71286 => true,
-  71287 => true,
-  71288 => true,
-  71289 => true,
-  71290 => true,
-  71291 => true,
-  71292 => true,
-  71293 => true,
-  71294 => true,
-  71295 => true,
-  71353 => true,
-  71354 => true,
-  71355 => true,
-  71356 => true,
-  71357 => true,
-  71358 => true,
-  71359 => true,
-  71451 => true,
-  71452 => true,
-  71468 => true,
-  71469 => true,
-  71470 => true,
-  71471 => true,
-  71923 => true,
-  71924 => true,
-  71925 => true,
-  71926 => true,
-  71927 => true,
-  71928 => true,
-  71929 => true,
-  71930 => true,
-  71931 => true,
-  71932 => true,
-  71933 => true,
-  71934 => true,
-  71943 => true,
-  71944 => true,
-  71946 => true,
-  71947 => true,
-  71956 => true,
-  71959 => true,
-  71990 => true,
-  71993 => true,
-  71994 => true,
-  72007 => true,
-  72008 => true,
-  72009 => true,
-  72010 => true,
-  72011 => true,
-  72012 => true,
-  72013 => true,
-  72014 => true,
-  72015 => true,
-  72104 => true,
-  72105 => true,
-  72152 => true,
-  72153 => true,
-  72165 => true,
-  72166 => true,
-  72167 => true,
-  72168 => true,
-  72169 => true,
-  72170 => true,
-  72171 => true,
-  72172 => true,
-  72173 => true,
-  72174 => true,
-  72175 => true,
-  72176 => true,
-  72177 => true,
-  72178 => true,
-  72179 => true,
-  72180 => true,
-  72181 => true,
-  72182 => true,
-  72183 => true,
-  72184 => true,
-  72185 => true,
-  72186 => true,
-  72187 => true,
-  72188 => true,
-  72189 => true,
-  72190 => true,
-  72191 => true,
-  72264 => true,
-  72265 => true,
-  72266 => true,
-  72267 => true,
-  72268 => true,
-  72269 => true,
-  72270 => true,
-  72271 => true,
-  72355 => true,
-  72356 => true,
-  72357 => true,
-  72358 => true,
-  72359 => true,
-  72360 => true,
-  72361 => true,
-  72362 => true,
-  72363 => true,
-  72364 => true,
-  72365 => true,
-  72366 => true,
-  72367 => true,
-  72368 => true,
-  72369 => true,
-  72370 => true,
-  72371 => true,
-  72372 => true,
-  72373 => true,
-  72374 => true,
-  72375 => true,
-  72376 => true,
-  72377 => true,
-  72378 => true,
-  72379 => true,
-  72380 => true,
-  72381 => true,
-  72382 => true,
-  72383 => true,
-  72713 => true,
-  72759 => true,
-  72774 => true,
-  72775 => true,
-  72776 => true,
-  72777 => true,
-  72778 => true,
-  72779 => true,
-  72780 => true,
-  72781 => true,
-  72782 => true,
-  72783 => true,
-  72813 => true,
-  72814 => true,
-  72815 => true,
-  72848 => true,
-  72849 => true,
-  72872 => true,
-  72967 => true,
-  72970 => true,
-  73015 => true,
-  73016 => true,
-  73017 => true,
-  73019 => true,
-  73022 => true,
-  73032 => true,
-  73033 => true,
-  73034 => true,
-  73035 => true,
-  73036 => true,
-  73037 => true,
-  73038 => true,
-  73039 => true,
-  73050 => true,
-  73051 => true,
-  73052 => true,
-  73053 => true,
-  73054 => true,
-  73055 => true,
-  73062 => true,
-  73065 => true,
-  73103 => true,
-  73106 => true,
-  73113 => true,
-  73114 => true,
-  73115 => true,
-  73116 => true,
-  73117 => true,
-  73118 => true,
-  73119 => true,
-  73649 => true,
-  73650 => true,
-  73651 => true,
-  73652 => true,
-  73653 => true,
-  73654 => true,
-  73655 => true,
-  73656 => true,
-  73657 => true,
-  73658 => true,
-  73659 => true,
-  73660 => true,
-  73661 => true,
-  73662 => true,
-  73663 => true,
-  73714 => true,
-  73715 => true,
-  73716 => true,
-  73717 => true,
-  73718 => true,
-  73719 => true,
-  73720 => true,
-  73721 => true,
-  73722 => true,
-  73723 => true,
-  73724 => true,
-  73725 => true,
-  73726 => true,
-  74863 => true,
-  74869 => true,
-  74870 => true,
-  74871 => true,
-  74872 => true,
-  74873 => true,
-  74874 => true,
-  74875 => true,
-  74876 => true,
-  74877 => true,
-  74878 => true,
-  74879 => true,
-  78895 => true,
-  78896 => true,
-  78897 => true,
-  78898 => true,
-  78899 => true,
-  78900 => true,
-  78901 => true,
-  78902 => true,
-  78903 => true,
-  78904 => true,
-  92729 => true,
-  92730 => true,
-  92731 => true,
-  92732 => true,
-  92733 => true,
-  92734 => true,
-  92735 => true,
-  92767 => true,
-  92778 => true,
-  92779 => true,
-  92780 => true,
-  92781 => true,
-  92910 => true,
-  92911 => true,
-  92918 => true,
-  92919 => true,
-  92920 => true,
-  92921 => true,
-  92922 => true,
-  92923 => true,
-  92924 => true,
-  92925 => true,
-  92926 => true,
-  92927 => true,
-  92998 => true,
-  92999 => true,
-  93000 => true,
-  93001 => true,
-  93002 => true,
-  93003 => true,
-  93004 => true,
-  93005 => true,
-  93006 => true,
-  93007 => true,
-  93018 => true,
-  93026 => true,
-  93048 => true,
-  93049 => true,
-  93050 => true,
-  93051 => true,
-  93052 => true,
-  94027 => true,
-  94028 => true,
-  94029 => true,
-  94030 => true,
-  94088 => true,
-  94089 => true,
-  94090 => true,
-  94091 => true,
-  94092 => true,
-  94093 => true,
-  94094 => true,
-  94181 => true,
-  94182 => true,
-  94183 => true,
-  94184 => true,
-  94185 => true,
-  94186 => true,
-  94187 => true,
-  94188 => true,
-  94189 => true,
-  94190 => true,
-  94191 => true,
-  94194 => true,
-  94195 => true,
-  94196 => true,
-  94197 => true,
-  94198 => true,
-  94199 => true,
-  94200 => true,
-  94201 => true,
-  94202 => true,
-  94203 => true,
-  94204 => true,
-  94205 => true,
-  94206 => true,
-  94207 => true,
-  100344 => true,
-  100345 => true,
-  100346 => true,
-  100347 => true,
-  100348 => true,
-  100349 => true,
-  100350 => true,
-  100351 => true,
-  110931 => true,
-  110932 => true,
-  110933 => true,
-  110934 => true,
-  110935 => true,
-  110936 => true,
-  110937 => true,
-  110938 => true,
-  110939 => true,
-  110940 => true,
-  110941 => true,
-  110942 => true,
-  110943 => true,
-  110944 => true,
-  110945 => true,
-  110946 => true,
-  110947 => true,
-  110952 => true,
-  110953 => true,
-  110954 => true,
-  110955 => true,
-  110956 => true,
-  110957 => true,
-  110958 => true,
-  110959 => true,
-  113771 => true,
-  113772 => true,
-  113773 => true,
-  113774 => true,
-  113775 => true,
-  113789 => true,
-  113790 => true,
-  113791 => true,
-  113801 => true,
-  113802 => true,
-  113803 => true,
-  113804 => true,
-  113805 => true,
-  113806 => true,
-  113807 => true,
-  113818 => true,
-  113819 => true,
-  119030 => true,
-  119031 => true,
-  119032 => true,
-  119033 => true,
-  119034 => true,
-  119035 => true,
-  119036 => true,
-  119037 => true,
-  119038 => true,
-  119039 => true,
-  119079 => true,
-  119080 => true,
-  119155 => true,
-  119156 => true,
-  119157 => true,
-  119158 => true,
-  119159 => true,
-  119160 => true,
-  119161 => true,
-  119162 => true,
-  119273 => true,
-  119274 => true,
-  119275 => true,
-  119276 => true,
-  119277 => true,
-  119278 => true,
-  119279 => true,
-  119280 => true,
-  119281 => true,
-  119282 => true,
-  119283 => true,
-  119284 => true,
-  119285 => true,
-  119286 => true,
-  119287 => true,
-  119288 => true,
-  119289 => true,
-  119290 => true,
-  119291 => true,
-  119292 => true,
-  119293 => true,
-  119294 => true,
-  119295 => true,
-  119540 => true,
-  119541 => true,
-  119542 => true,
-  119543 => true,
-  119544 => true,
-  119545 => true,
-  119546 => true,
-  119547 => true,
-  119548 => true,
-  119549 => true,
-  119550 => true,
-  119551 => true,
-  119639 => true,
-  119640 => true,
-  119641 => true,
-  119642 => true,
-  119643 => true,
-  119644 => true,
-  119645 => true,
-  119646 => true,
-  119647 => true,
-  119893 => true,
-  119965 => true,
-  119968 => true,
-  119969 => true,
-  119971 => true,
-  119972 => true,
-  119975 => true,
-  119976 => true,
-  119981 => true,
-  119994 => true,
-  119996 => true,
-  120004 => true,
-  120070 => true,
-  120075 => true,
-  120076 => true,
-  120085 => true,
-  120093 => true,
-  120122 => true,
-  120127 => true,
-  120133 => true,
-  120135 => true,
-  120136 => true,
-  120137 => true,
-  120145 => true,
-  120486 => true,
-  120487 => true,
-  120780 => true,
-  120781 => true,
-  121484 => true,
-  121485 => true,
-  121486 => true,
-  121487 => true,
-  121488 => true,
-  121489 => true,
-  121490 => true,
-  121491 => true,
-  121492 => true,
-  121493 => true,
-  121494 => true,
-  121495 => true,
-  121496 => true,
-  121497 => true,
-  121498 => true,
-  121504 => true,
-  122887 => true,
-  122905 => true,
-  122906 => true,
-  122914 => true,
-  122917 => true,
-  123181 => true,
-  123182 => true,
-  123183 => true,
-  123198 => true,
-  123199 => true,
-  123210 => true,
-  123211 => true,
-  123212 => true,
-  123213 => true,
-  123642 => true,
-  123643 => true,
-  123644 => true,
-  123645 => true,
-  123646 => true,
-  125125 => true,
-  125126 => true,
-  125260 => true,
-  125261 => true,
-  125262 => true,
-  125263 => true,
-  125274 => true,
-  125275 => true,
-  125276 => true,
-  125277 => true,
-  126468 => true,
-  126496 => true,
-  126499 => true,
-  126501 => true,
-  126502 => true,
-  126504 => true,
-  126515 => true,
-  126520 => true,
-  126522 => true,
-  126524 => true,
-  126525 => true,
-  126526 => true,
-  126527 => true,
-  126528 => true,
-  126529 => true,
-  126531 => true,
-  126532 => true,
-  126533 => true,
-  126534 => true,
-  126536 => true,
-  126538 => true,
-  126540 => true,
-  126544 => true,
-  126547 => true,
-  126549 => true,
-  126550 => true,
-  126552 => true,
-  126554 => true,
-  126556 => true,
-  126558 => true,
-  126560 => true,
-  126563 => true,
-  126565 => true,
-  126566 => true,
-  126571 => true,
-  126579 => true,
-  126584 => true,
-  126589 => true,
-  126591 => true,
-  126602 => true,
-  126620 => true,
-  126621 => true,
-  126622 => true,
-  126623 => true,
-  126624 => true,
-  126628 => true,
-  126634 => true,
-  127020 => true,
-  127021 => true,
-  127022 => true,
-  127023 => true,
-  127124 => true,
-  127125 => true,
-  127126 => true,
-  127127 => true,
-  127128 => true,
-  127129 => true,
-  127130 => true,
-  127131 => true,
-  127132 => true,
-  127133 => true,
-  127134 => true,
-  127135 => true,
-  127151 => true,
-  127152 => true,
-  127168 => true,
-  127184 => true,
-  127222 => true,
-  127223 => true,
-  127224 => true,
-  127225 => true,
-  127226 => true,
-  127227 => true,
-  127228 => true,
-  127229 => true,
-  127230 => true,
-  127231 => true,
-  127232 => true,
-  127491 => true,
-  127492 => true,
-  127493 => true,
-  127494 => true,
-  127495 => true,
-  127496 => true,
-  127497 => true,
-  127498 => true,
-  127499 => true,
-  127500 => true,
-  127501 => true,
-  127502 => true,
-  127503 => true,
-  127548 => true,
-  127549 => true,
-  127550 => true,
-  127551 => true,
-  127561 => true,
-  127562 => true,
-  127563 => true,
-  127564 => true,
-  127565 => true,
-  127566 => true,
-  127567 => true,
-  127570 => true,
-  127571 => true,
-  127572 => true,
-  127573 => true,
-  127574 => true,
-  127575 => true,
-  127576 => true,
-  127577 => true,
-  127578 => true,
-  127579 => true,
-  127580 => true,
-  127581 => true,
-  127582 => true,
-  127583 => true,
-  128728 => true,
-  128729 => true,
-  128730 => true,
-  128731 => true,
-  128732 => true,
-  128733 => true,
-  128734 => true,
-  128735 => true,
-  128749 => true,
-  128750 => true,
-  128751 => true,
-  128765 => true,
-  128766 => true,
-  128767 => true,
-  128884 => true,
-  128885 => true,
-  128886 => true,
-  128887 => true,
-  128888 => true,
-  128889 => true,
-  128890 => true,
-  128891 => true,
-  128892 => true,
-  128893 => true,
-  128894 => true,
-  128895 => true,
-  128985 => true,
-  128986 => true,
-  128987 => true,
-  128988 => true,
-  128989 => true,
-  128990 => true,
-  128991 => true,
-  129004 => true,
-  129005 => true,
-  129006 => true,
-  129007 => true,
-  129008 => true,
-  129009 => true,
-  129010 => true,
-  129011 => true,
-  129012 => true,
-  129013 => true,
-  129014 => true,
-  129015 => true,
-  129016 => true,
-  129017 => true,
-  129018 => true,
-  129019 => true,
-  129020 => true,
-  129021 => true,
-  129022 => true,
-  129023 => true,
-  129036 => true,
-  129037 => true,
-  129038 => true,
-  129039 => true,
-  129096 => true,
-  129097 => true,
-  129098 => true,
-  129099 => true,
-  129100 => true,
-  129101 => true,
-  129102 => true,
-  129103 => true,
-  129114 => true,
-  129115 => true,
-  129116 => true,
-  129117 => true,
-  129118 => true,
-  129119 => true,
-  129160 => true,
-  129161 => true,
-  129162 => true,
-  129163 => true,
-  129164 => true,
-  129165 => true,
-  129166 => true,
-  129167 => true,
-  129198 => true,
-  129199 => true,
-  129401 => true,
-  129484 => true,
-  129620 => true,
-  129621 => true,
-  129622 => true,
-  129623 => true,
-  129624 => true,
-  129625 => true,
-  129626 => true,
-  129627 => true,
-  129628 => true,
-  129629 => true,
-  129630 => true,
-  129631 => true,
-  129646 => true,
-  129647 => true,
-  129653 => true,
-  129654 => true,
-  129655 => true,
-  129659 => true,
-  129660 => true,
-  129661 => true,
-  129662 => true,
-  129663 => true,
-  129671 => true,
-  129672 => true,
-  129673 => true,
-  129674 => true,
-  129675 => true,
-  129676 => true,
-  129677 => true,
-  129678 => true,
-  129679 => true,
-  129705 => true,
-  129706 => true,
-  129707 => true,
-  129708 => true,
-  129709 => true,
-  129710 => true,
-  129711 => true,
-  129719 => true,
-  129720 => true,
-  129721 => true,
-  129722 => true,
-  129723 => true,
-  129724 => true,
-  129725 => true,
-  129726 => true,
-  129727 => true,
-  129731 => true,
-  129732 => true,
-  129733 => true,
-  129734 => true,
-  129735 => true,
-  129736 => true,
-  129737 => true,
-  129738 => true,
-  129739 => true,
-  129740 => true,
-  129741 => true,
-  129742 => true,
-  129743 => true,
-  129939 => true,
-  131070 => true,
-  131071 => true,
-  177973 => true,
-  177974 => true,
-  177975 => true,
-  177976 => true,
-  177977 => true,
-  177978 => true,
-  177979 => true,
-  177980 => true,
-  177981 => true,
-  177982 => true,
-  177983 => true,
-  178206 => true,
-  178207 => true,
-  183970 => true,
-  183971 => true,
-  183972 => true,
-  183973 => true,
-  183974 => true,
-  183975 => true,
-  183976 => true,
-  183977 => true,
-  183978 => true,
-  183979 => true,
-  183980 => true,
-  183981 => true,
-  183982 => true,
-  183983 => true,
-  194664 => true,
-  194676 => true,
-  194847 => true,
-  194911 => true,
-  195007 => true,
-  196606 => true,
-  196607 => true,
-  262142 => true,
-  262143 => true,
-  327678 => true,
-  327679 => true,
-  393214 => true,
-  393215 => true,
-  458750 => true,
-  458751 => true,
-  524286 => true,
-  524287 => true,
-  589822 => true,
-  589823 => true,
-  655358 => true,
-  655359 => true,
-  720894 => true,
-  720895 => true,
-  786430 => true,
-  786431 => true,
-  851966 => true,
-  851967 => true,
-  917502 => true,
-  917503 => true,
-  917504 => true,
-  917505 => true,
-  917506 => true,
-  917507 => true,
-  917508 => true,
-  917509 => true,
-  917510 => true,
-  917511 => true,
-  917512 => true,
-  917513 => true,
-  917514 => true,
-  917515 => true,
-  917516 => true,
-  917517 => true,
-  917518 => true,
-  917519 => true,
-  917520 => true,
-  917521 => true,
-  917522 => true,
-  917523 => true,
-  917524 => true,
-  917525 => true,
-  917526 => true,
-  917527 => true,
-  917528 => true,
-  917529 => true,
-  917530 => true,
-  917531 => true,
-  917532 => true,
-  917533 => true,
-  917534 => true,
-  917535 => true,
-  983038 => true,
-  983039 => true,
-  1048574 => true,
-  1048575 => true,
-  1114110 => true,
-  1114111 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
deleted file mode 100644
index 54f21cc0cd..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-return array (
-  160 => ' ',
-  168 => ' ̈',
-  175 => ' Ì„',
-  180 => ' ́',
-  184 => ' ̧',
-  728 => ' ̆',
-  729 => ' ̇',
-  730 => ' ÌŠ',
-  731 => ' ̨',
-  732 => ' ̃',
-  733 => ' Ì‹',
-  890 => ' ι',
-  894 => ';',
-  900 => ' ́',
-  901 => ' ̈́',
-  8125 => ' Ì“',
-  8127 => ' Ì“',
-  8128 => ' Í‚',
-  8129 => ' ̈͂',
-  8141 => ' Ì“Ì€',
-  8142 => ' ̓́',
-  8143 => ' Ì“Í‚',
-  8157 => ' ̔̀',
-  8158 => ' ̔́',
-  8159 => ' ̔͂',
-  8173 => ' ̈̀',
-  8174 => ' ̈́',
-  8175 => '`',
-  8189 => ' ́',
-  8190 => ' Ì”',
-  8192 => ' ',
-  8193 => ' ',
-  8194 => ' ',
-  8195 => ' ',
-  8196 => ' ',
-  8197 => ' ',
-  8198 => ' ',
-  8199 => ' ',
-  8200 => ' ',
-  8201 => ' ',
-  8202 => ' ',
-  8215 => ' ̳',
-  8239 => ' ',
-  8252 => '!!',
-  8254 => ' Ì…',
-  8263 => '??',
-  8264 => '?!',
-  8265 => '!?',
-  8287 => ' ',
-  8314 => '+',
-  8316 => '=',
-  8317 => '(',
-  8318 => ')',
-  8330 => '+',
-  8332 => '=',
-  8333 => '(',
-  8334 => ')',
-  8448 => 'a/c',
-  8449 => 'a/s',
-  8453 => 'c/o',
-  8454 => 'c/u',
-  9332 => '(1)',
-  9333 => '(2)',
-  9334 => '(3)',
-  9335 => '(4)',
-  9336 => '(5)',
-  9337 => '(6)',
-  9338 => '(7)',
-  9339 => '(8)',
-  9340 => '(9)',
-  9341 => '(10)',
-  9342 => '(11)',
-  9343 => '(12)',
-  9344 => '(13)',
-  9345 => '(14)',
-  9346 => '(15)',
-  9347 => '(16)',
-  9348 => '(17)',
-  9349 => '(18)',
-  9350 => '(19)',
-  9351 => '(20)',
-  9372 => '(a)',
-  9373 => '(b)',
-  9374 => '(c)',
-  9375 => '(d)',
-  9376 => '(e)',
-  9377 => '(f)',
-  9378 => '(g)',
-  9379 => '(h)',
-  9380 => '(i)',
-  9381 => '(j)',
-  9382 => '(k)',
-  9383 => '(l)',
-  9384 => '(m)',
-  9385 => '(n)',
-  9386 => '(o)',
-  9387 => '(p)',
-  9388 => '(q)',
-  9389 => '(r)',
-  9390 => '(s)',
-  9391 => '(t)',
-  9392 => '(u)',
-  9393 => '(v)',
-  9394 => '(w)',
-  9395 => '(x)',
-  9396 => '(y)',
-  9397 => '(z)',
-  10868 => '::=',
-  10869 => '==',
-  10870 => '===',
-  12288 => ' ',
-  12443 => ' ã‚™',
-  12444 => ' ã‚š',
-  12800 => '(á„€)',
-  12801 => '(á„‚)',
-  12802 => '(ᄃ)',
-  12803 => '(á„…)',
-  12804 => '(ᄆ)',
-  12805 => '(ᄇ)',
-  12806 => '(ᄉ)',
-  12807 => '(á„‹)',
-  12808 => '(ᄌ)',
-  12809 => '(á„Ž)',
-  12810 => '(ᄏ)',
-  12811 => '(ᄐ)',
-  12812 => '(á„‘)',
-  12813 => '(á„’)',
-  12814 => '(ê°€)',
-  12815 => '(나)',
-  12816 => '(다)',
-  12817 => '(라)',
-  12818 => '(마)',
-  12819 => '(ë°”)',
-  12820 => '(사)',
-  12821 => '(ì•„)',
-  12822 => '(자)',
-  12823 => '(ì°¨)',
-  12824 => '(ì¹´)',
-  12825 => '(타)',
-  12826 => '(파)',
-  12827 => '(하)',
-  12828 => '(주)',
-  12829 => '(오전)',
-  12830 => '(오후)',
-  12832 => '(一)',
-  12833 => '(二)',
-  12834 => '(三)',
-  12835 => '(å››)',
-  12836 => '(五)',
-  12837 => '(å…­)',
-  12838 => '(七)',
-  12839 => '(å…«)',
-  12840 => '(九)',
-  12841 => '(十)',
-  12842 => '(月)',
-  12843 => '(火)',
-  12844 => '(æ°´)',
-  12845 => '(木)',
-  12846 => '(金)',
-  12847 => '(土)',
-  12848 => '(æ—¥)',
-  12849 => '(æ ª)',
-  12850 => '(有)',
-  12851 => '(社)',
-  12852 => '(名)',
-  12853 => '(特)',
-  12854 => '(財)',
-  12855 => '(祝)',
-  12856 => '(労)',
-  12857 => '(代)',
-  12858 => '(呼)',
-  12859 => '(å­¦)',
-  12860 => '(監)',
-  12861 => '(企)',
-  12862 => '(資)',
-  12863 => '(協)',
-  12864 => '(祭)',
-  12865 => '(休)',
-  12866 => '(自)',
-  12867 => '(至)',
-  64297 => '+',
-  64606 => ' ٌّ',
-  64607 => ' ٍّ',
-  64608 => ' ÙŽÙ‘',
-  64609 => ' ُّ',
-  64610 => ' ِّ',
-  64611 => ' ّٰ',
-  65018 => 'صلى الله عليه وسلم',
-  65019 => 'جل جلاله',
-  65040 => ',',
-  65043 => ':',
-  65044 => ';',
-  65045 => '!',
-  65046 => '?',
-  65075 => '_',
-  65076 => '_',
-  65077 => '(',
-  65078 => ')',
-  65079 => '{',
-  65080 => '}',
-  65095 => '[',
-  65096 => ']',
-  65097 => ' Ì…',
-  65098 => ' Ì…',
-  65099 => ' Ì…',
-  65100 => ' Ì…',
-  65101 => '_',
-  65102 => '_',
-  65103 => '_',
-  65104 => ',',
-  65108 => ';',
-  65109 => ':',
-  65110 => '?',
-  65111 => '!',
-  65113 => '(',
-  65114 => ')',
-  65115 => '{',
-  65116 => '}',
-  65119 => '#',
-  65120 => '&',
-  65121 => '*',
-  65122 => '+',
-  65124 => '<',
-  65125 => '>',
-  65126 => '=',
-  65128 => '\\',
-  65129 => '$',
-  65130 => '%',
-  65131 => '@',
-  65136 => ' Ù‹',
-  65138 => ' ٌ',
-  65140 => ' ٍ',
-  65142 => ' ÙŽ',
-  65144 => ' ُ',
-  65146 => ' ِ',
-  65148 => ' Ù‘',
-  65150 => ' Ù’',
-  65281 => '!',
-  65282 => '"',
-  65283 => '#',
-  65284 => '$',
-  65285 => '%',
-  65286 => '&',
-  65287 => '\'',
-  65288 => '(',
-  65289 => ')',
-  65290 => '*',
-  65291 => '+',
-  65292 => ',',
-  65295 => '/',
-  65306 => ':',
-  65307 => ';',
-  65308 => '<',
-  65309 => '=',
-  65310 => '>',
-  65311 => '?',
-  65312 => '@',
-  65339 => '[',
-  65340 => '\\',
-  65341 => ']',
-  65342 => '^',
-  65343 => '_',
-  65344 => '`',
-  65371 => '{',
-  65372 => '|',
-  65373 => '}',
-  65374 => '~',
-  65507 => ' Ì„',
-  127233 => '0,',
-  127234 => '1,',
-  127235 => '2,',
-  127236 => '3,',
-  127237 => '4,',
-  127238 => '5,',
-  127239 => '6,',
-  127240 => '7,',
-  127241 => '8,',
-  127242 => '9,',
-  127248 => '(a)',
-  127249 => '(b)',
-  127250 => '(c)',
-  127251 => '(d)',
-  127252 => '(e)',
-  127253 => '(f)',
-  127254 => '(g)',
-  127255 => '(h)',
-  127256 => '(i)',
-  127257 => '(j)',
-  127258 => '(k)',
-  127259 => '(l)',
-  127260 => '(m)',
-  127261 => '(n)',
-  127262 => '(o)',
-  127263 => '(p)',
-  127264 => '(q)',
-  127265 => '(r)',
-  127266 => '(s)',
-  127267 => '(t)',
-  127268 => '(u)',
-  127269 => '(v)',
-  127270 => '(w)',
-  127271 => '(x)',
-  127272 => '(y)',
-  127273 => '(z)',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
deleted file mode 100644
index 223396ec4c..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-return array (
-  0 => true,
-  1 => true,
-  2 => true,
-  3 => true,
-  4 => true,
-  5 => true,
-  6 => true,
-  7 => true,
-  8 => true,
-  9 => true,
-  10 => true,
-  11 => true,
-  12 => true,
-  13 => true,
-  14 => true,
-  15 => true,
-  16 => true,
-  17 => true,
-  18 => true,
-  19 => true,
-  20 => true,
-  21 => true,
-  22 => true,
-  23 => true,
-  24 => true,
-  25 => true,
-  26 => true,
-  27 => true,
-  28 => true,
-  29 => true,
-  30 => true,
-  31 => true,
-  32 => true,
-  33 => true,
-  34 => true,
-  35 => true,
-  36 => true,
-  37 => true,
-  38 => true,
-  39 => true,
-  40 => true,
-  41 => true,
-  42 => true,
-  43 => true,
-  44 => true,
-  47 => true,
-  58 => true,
-  59 => true,
-  60 => true,
-  61 => true,
-  62 => true,
-  63 => true,
-  64 => true,
-  91 => true,
-  92 => true,
-  93 => true,
-  94 => true,
-  95 => true,
-  96 => true,
-  123 => true,
-  124 => true,
-  125 => true,
-  126 => true,
-  127 => true,
-  8800 => true,
-  8814 => true,
-  8815 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
deleted file mode 100644
index b377844130..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-return array (
-  173 => true,
-  847 => true,
-  6155 => true,
-  6156 => true,
-  6157 => true,
-  8203 => true,
-  8288 => true,
-  8292 => true,
-  65024 => true,
-  65025 => true,
-  65026 => true,
-  65027 => true,
-  65028 => true,
-  65029 => true,
-  65030 => true,
-  65031 => true,
-  65032 => true,
-  65033 => true,
-  65034 => true,
-  65035 => true,
-  65036 => true,
-  65037 => true,
-  65038 => true,
-  65039 => true,
-  65279 => true,
-  113824 => true,
-  113825 => true,
-  113826 => true,
-  113827 => true,
-  917760 => true,
-  917761 => true,
-  917762 => true,
-  917763 => true,
-  917764 => true,
-  917765 => true,
-  917766 => true,
-  917767 => true,
-  917768 => true,
-  917769 => true,
-  917770 => true,
-  917771 => true,
-  917772 => true,
-  917773 => true,
-  917774 => true,
-  917775 => true,
-  917776 => true,
-  917777 => true,
-  917778 => true,
-  917779 => true,
-  917780 => true,
-  917781 => true,
-  917782 => true,
-  917783 => true,
-  917784 => true,
-  917785 => true,
-  917786 => true,
-  917787 => true,
-  917788 => true,
-  917789 => true,
-  917790 => true,
-  917791 => true,
-  917792 => true,
-  917793 => true,
-  917794 => true,
-  917795 => true,
-  917796 => true,
-  917797 => true,
-  917798 => true,
-  917799 => true,
-  917800 => true,
-  917801 => true,
-  917802 => true,
-  917803 => true,
-  917804 => true,
-  917805 => true,
-  917806 => true,
-  917807 => true,
-  917808 => true,
-  917809 => true,
-  917810 => true,
-  917811 => true,
-  917812 => true,
-  917813 => true,
-  917814 => true,
-  917815 => true,
-  917816 => true,
-  917817 => true,
-  917818 => true,
-  917819 => true,
-  917820 => true,
-  917821 => true,
-  917822 => true,
-  917823 => true,
-  917824 => true,
-  917825 => true,
-  917826 => true,
-  917827 => true,
-  917828 => true,
-  917829 => true,
-  917830 => true,
-  917831 => true,
-  917832 => true,
-  917833 => true,
-  917834 => true,
-  917835 => true,
-  917836 => true,
-  917837 => true,
-  917838 => true,
-  917839 => true,
-  917840 => true,
-  917841 => true,
-  917842 => true,
-  917843 => true,
-  917844 => true,
-  917845 => true,
-  917846 => true,
-  917847 => true,
-  917848 => true,
-  917849 => true,
-  917850 => true,
-  917851 => true,
-  917852 => true,
-  917853 => true,
-  917854 => true,
-  917855 => true,
-  917856 => true,
-  917857 => true,
-  917858 => true,
-  917859 => true,
-  917860 => true,
-  917861 => true,
-  917862 => true,
-  917863 => true,
-  917864 => true,
-  917865 => true,
-  917866 => true,
-  917867 => true,
-  917868 => true,
-  917869 => true,
-  917870 => true,
-  917871 => true,
-  917872 => true,
-  917873 => true,
-  917874 => true,
-  917875 => true,
-  917876 => true,
-  917877 => true,
-  917878 => true,
-  917879 => true,
-  917880 => true,
-  917881 => true,
-  917882 => true,
-  917883 => true,
-  917884 => true,
-  917885 => true,
-  917886 => true,
-  917887 => true,
-  917888 => true,
-  917889 => true,
-  917890 => true,
-  917891 => true,
-  917892 => true,
-  917893 => true,
-  917894 => true,
-  917895 => true,
-  917896 => true,
-  917897 => true,
-  917898 => true,
-  917899 => true,
-  917900 => true,
-  917901 => true,
-  917902 => true,
-  917903 => true,
-  917904 => true,
-  917905 => true,
-  917906 => true,
-  917907 => true,
-  917908 => true,
-  917909 => true,
-  917910 => true,
-  917911 => true,
-  917912 => true,
-  917913 => true,
-  917914 => true,
-  917915 => true,
-  917916 => true,
-  917917 => true,
-  917918 => true,
-  917919 => true,
-  917920 => true,
-  917921 => true,
-  917922 => true,
-  917923 => true,
-  917924 => true,
-  917925 => true,
-  917926 => true,
-  917927 => true,
-  917928 => true,
-  917929 => true,
-  917930 => true,
-  917931 => true,
-  917932 => true,
-  917933 => true,
-  917934 => true,
-  917935 => true,
-  917936 => true,
-  917937 => true,
-  917938 => true,
-  917939 => true,
-  917940 => true,
-  917941 => true,
-  917942 => true,
-  917943 => true,
-  917944 => true,
-  917945 => true,
-  917946 => true,
-  917947 => true,
-  917948 => true,
-  917949 => true,
-  917950 => true,
-  917951 => true,
-  917952 => true,
-  917953 => true,
-  917954 => true,
-  917955 => true,
-  917956 => true,
-  917957 => true,
-  917958 => true,
-  917959 => true,
-  917960 => true,
-  917961 => true,
-  917962 => true,
-  917963 => true,
-  917964 => true,
-  917965 => true,
-  917966 => true,
-  917967 => true,
-  917968 => true,
-  917969 => true,
-  917970 => true,
-  917971 => true,
-  917972 => true,
-  917973 => true,
-  917974 => true,
-  917975 => true,
-  917976 => true,
-  917977 => true,
-  917978 => true,
-  917979 => true,
-  917980 => true,
-  917981 => true,
-  917982 => true,
-  917983 => true,
-  917984 => true,
-  917985 => true,
-  917986 => true,
-  917987 => true,
-  917988 => true,
-  917989 => true,
-  917990 => true,
-  917991 => true,
-  917992 => true,
-  917993 => true,
-  917994 => true,
-  917995 => true,
-  917996 => true,
-  917997 => true,
-  917998 => true,
-  917999 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
deleted file mode 100644
index 9b85fe9d3f..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
+++ /dev/null
@@ -1,5778 +0,0 @@
-<?php
-
-return array (
-  65 => 'a',
-  66 => 'b',
-  67 => 'c',
-  68 => 'd',
-  69 => 'e',
-  70 => 'f',
-  71 => 'g',
-  72 => 'h',
-  73 => 'i',
-  74 => 'j',
-  75 => 'k',
-  76 => 'l',
-  77 => 'm',
-  78 => 'n',
-  79 => 'o',
-  80 => 'p',
-  81 => 'q',
-  82 => 'r',
-  83 => 's',
-  84 => 't',
-  85 => 'u',
-  86 => 'v',
-  87 => 'w',
-  88 => 'x',
-  89 => 'y',
-  90 => 'z',
-  170 => 'a',
-  178 => '2',
-  179 => '3',
-  181 => 'μ',
-  185 => '1',
-  186 => 'o',
-  188 => '1⁄4',
-  189 => '1⁄2',
-  190 => '3⁄4',
-  192 => 'à',
-  193 => 'á',
-  194 => 'â',
-  195 => 'ã',
-  196 => 'ä',
-  197 => 'Ã¥',
-  198 => 'æ',
-  199 => 'ç',
-  200 => 'è',
-  201 => 'é',
-  202 => 'ê',
-  203 => 'ë',
-  204 => 'ì',
-  205 => 'í',
-  206 => 'î',
-  207 => 'ï',
-  208 => 'ð',
-  209 => 'ñ',
-  210 => 'ò',
-  211 => 'ó',
-  212 => 'ô',
-  213 => 'õ',
-  214 => 'ö',
-  216 => 'ø',
-  217 => 'ù',
-  218 => 'ú',
-  219 => 'û',
-  220 => 'ü',
-  221 => 'ý',
-  222 => 'þ',
-  256 => 'ā',
-  258 => 'ă',
-  260 => 'Ä…',
-  262 => 'ć',
-  264 => 'ĉ',
-  266 => 'Ä‹',
-  268 => 'č',
-  270 => 'ď',
-  272 => 'Ä‘',
-  274 => 'Ä“',
-  276 => 'Ä•',
-  278 => 'Ä—',
-  280 => 'Ä™',
-  282 => 'Ä›',
-  284 => 'ĝ',
-  286 => 'ÄŸ',
-  288 => 'Ä¡',
-  290 => 'Ä£',
-  292 => 'Ä¥',
-  294 => 'ħ',
-  296 => 'Ä©',
-  298 => 'Ä«',
-  300 => 'Ä­',
-  302 => 'į',
-  304 => 'i̇',
-  306 => 'ij',
-  307 => 'ij',
-  308 => 'ĵ',
-  310 => 'Ä·',
-  313 => 'ĺ',
-  315 => 'ļ',
-  317 => 'ľ',
-  319 => 'l·',
-  320 => 'l·',
-  321 => 'Å‚',
-  323 => 'Å„',
-  325 => 'ņ',
-  327 => 'ň',
-  329 => 'ʼn',
-  330 => 'Å‹',
-  332 => 'ō',
-  334 => 'ŏ',
-  336 => 'Å‘',
-  338 => 'Å“',
-  340 => 'Å•',
-  342 => 'Å—',
-  344 => 'Å™',
-  346 => 'Å›',
-  348 => 'ŝ',
-  350 => 'ÅŸ',
-  352 => 'Å¡',
-  354 => 'Å£',
-  356 => 'Å¥',
-  358 => 'ŧ',
-  360 => 'Å©',
-  362 => 'Å«',
-  364 => 'Å­',
-  366 => 'ů',
-  368 => 'ű',
-  370 => 'ų',
-  372 => 'ŵ',
-  374 => 'Å·',
-  376 => 'ÿ',
-  377 => 'ź',
-  379 => 'ż',
-  381 => 'ž',
-  383 => 's',
-  385 => 'É“',
-  386 => 'ƃ',
-  388 => 'Æ…',
-  390 => 'É”',
-  391 => 'ƈ',
-  393 => 'É–',
-  394 => 'É—',
-  395 => 'ƌ',
-  398 => 'ǝ',
-  399 => 'É™',
-  400 => 'É›',
-  401 => 'Æ’',
-  403 => 'É ',
-  404 => 'É£',
-  406 => 'É©',
-  407 => 'ɨ',
-  408 => 'Æ™',
-  412 => 'ɯ',
-  413 => 'ɲ',
-  415 => 'ɵ',
-  416 => 'Æ¡',
-  418 => 'Æ£',
-  420 => 'Æ¥',
-  422 => 'Ê€',
-  423 => 'ƨ',
-  425 => 'ʃ',
-  428 => 'Æ­',
-  430 => 'ʈ',
-  431 => 'Æ°',
-  433 => 'ÊŠ',
-  434 => 'Ê‹',
-  435 => 'Æ´',
-  437 => 'ƶ',
-  439 => 'Ê’',
-  440 => 'ƹ',
-  444 => 'ƽ',
-  452 => 'dž',
-  453 => 'dž',
-  454 => 'dž',
-  455 => 'lj',
-  456 => 'lj',
-  457 => 'lj',
-  458 => 'nj',
-  459 => 'nj',
-  460 => 'nj',
-  461 => 'ÇŽ',
-  463 => 'ǐ',
-  465 => 'Ç’',
-  467 => 'Ç”',
-  469 => 'Ç–',
-  471 => 'ǘ',
-  473 => 'Çš',
-  475 => 'ǜ',
-  478 => 'ÇŸ',
-  480 => 'Ç¡',
-  482 => 'Ç£',
-  484 => 'Ç¥',
-  486 => 'ǧ',
-  488 => 'Ç©',
-  490 => 'Ç«',
-  492 => 'Ç­',
-  494 => 'ǯ',
-  497 => 'dz',
-  498 => 'dz',
-  499 => 'dz',
-  500 => 'ǵ',
-  502 => 'Æ•',
-  503 => 'Æ¿',
-  504 => 'ǹ',
-  506 => 'Ç»',
-  508 => 'ǽ',
-  510 => 'Ç¿',
-  512 => 'ȁ',
-  514 => 'ȃ',
-  516 => 'È…',
-  518 => 'ȇ',
-  520 => 'ȉ',
-  522 => 'È‹',
-  524 => 'ȍ',
-  526 => 'ȏ',
-  528 => 'È‘',
-  530 => 'È“',
-  532 => 'È•',
-  534 => 'È—',
-  536 => 'È™',
-  538 => 'È›',
-  540 => 'ȝ',
-  542 => 'ÈŸ',
-  544 => 'Æž',
-  546 => 'È£',
-  548 => 'È¥',
-  550 => 'ȧ',
-  552 => 'È©',
-  554 => 'È«',
-  556 => 'È­',
-  558 => 'ȯ',
-  560 => 'ȱ',
-  562 => 'ȳ',
-  570 => 'â±¥',
-  571 => 'ȼ',
-  573 => 'Æš',
-  574 => 'ⱦ',
-  577 => 'É‚',
-  579 => 'Æ€',
-  580 => 'ʉ',
-  581 => 'ʌ',
-  582 => 'ɇ',
-  584 => 'ɉ',
-  586 => 'É‹',
-  588 => 'ɍ',
-  590 => 'ɏ',
-  688 => 'h',
-  689 => 'ɦ',
-  690 => 'j',
-  691 => 'r',
-  692 => 'ɹ',
-  693 => 'É»',
-  694 => 'ʁ',
-  695 => 'w',
-  696 => 'y',
-  736 => 'É£',
-  737 => 'l',
-  738 => 's',
-  739 => 'x',
-  740 => 'Ê•',
-  832 => 'Ì€',
-  833 => '́',
-  835 => 'Ì“',
-  836 => '̈́',
-  837 => 'ι',
-  880 => 'ͱ',
-  882 => 'ͳ',
-  884 => 'ʹ',
-  886 => 'Í·',
-  895 => 'ϳ',
-  902 => 'ά',
-  903 => '·',
-  904 => 'έ',
-  905 => 'ή',
-  906 => 'ί',
-  908 => 'ό',
-  910 => 'ύ',
-  911 => 'ÏŽ',
-  913 => 'α',
-  914 => 'β',
-  915 => 'γ',
-  916 => 'δ',
-  917 => 'ε',
-  918 => 'ζ',
-  919 => 'η',
-  920 => 'θ',
-  921 => 'ι',
-  922 => 'κ',
-  923 => 'λ',
-  924 => 'μ',
-  925 => 'ν',
-  926 => 'ξ',
-  927 => 'ο',
-  928 => 'Ï€',
-  929 => 'ρ',
-  931 => 'σ',
-  932 => 'Ï„',
-  933 => 'Ï…',
-  934 => 'φ',
-  935 => 'χ',
-  936 => 'ψ',
-  937 => 'ω',
-  938 => 'ÏŠ',
-  939 => 'Ï‹',
-  975 => 'Ï—',
-  976 => 'β',
-  977 => 'θ',
-  978 => 'Ï…',
-  979 => 'ύ',
-  980 => 'Ï‹',
-  981 => 'φ',
-  982 => 'Ï€',
-  984 => 'Ï™',
-  986 => 'Ï›',
-  988 => 'ϝ',
-  990 => 'ÏŸ',
-  992 => 'Ï¡',
-  994 => 'Ï£',
-  996 => 'Ï¥',
-  998 => 'ϧ',
-  1000 => 'Ï©',
-  1002 => 'Ï«',
-  1004 => 'Ï­',
-  1006 => 'ϯ',
-  1008 => 'κ',
-  1009 => 'ρ',
-  1010 => 'σ',
-  1012 => 'θ',
-  1013 => 'ε',
-  1015 => 'ϸ',
-  1017 => 'σ',
-  1018 => 'Ï»',
-  1021 => 'Í»',
-  1022 => 'ͼ',
-  1023 => 'ͽ',
-  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 => 'я',
-  1120 => 'Ñ¡',
-  1122 => 'Ñ£',
-  1124 => 'Ñ¥',
-  1126 => 'ѧ',
-  1128 => 'Ñ©',
-  1130 => 'Ñ«',
-  1132 => 'Ñ­',
-  1134 => 'ѯ',
-  1136 => 'ѱ',
-  1138 => 'ѳ',
-  1140 => 'ѵ',
-  1142 => 'Ñ·',
-  1144 => 'ѹ',
-  1146 => 'Ñ»',
-  1148 => 'ѽ',
-  1150 => 'Ñ¿',
-  1152 => 'ҁ',
-  1162 => 'Ò‹',
-  1164 => 'ҍ',
-  1166 => 'ҏ',
-  1168 => 'Ò‘',
-  1170 => 'Ò“',
-  1172 => 'Ò•',
-  1174 => 'Ò—',
-  1176 => 'Ò™',
-  1178 => 'Ò›',
-  1180 => 'ҝ',
-  1182 => 'ÒŸ',
-  1184 => 'Ò¡',
-  1186 => 'Ò£',
-  1188 => 'Ò¥',
-  1190 => 'Ò§',
-  1192 => 'Ò©',
-  1194 => 'Ò«',
-  1196 => 'Ò­',
-  1198 => 'Ò¯',
-  1200 => 'Ò±',
-  1202 => 'Ò³',
-  1204 => 'Òµ',
-  1206 => 'Ò·',
-  1208 => 'Ò¹',
-  1210 => 'Ò»',
-  1212 => 'Ò½',
-  1214 => 'Ò¿',
-  1217 => 'Ó‚',
-  1219 => 'Ó„',
-  1221 => 'Ó†',
-  1223 => 'Óˆ',
-  1225 => 'ÓŠ',
-  1227 => 'ӌ',
-  1229 => 'ÓŽ',
-  1232 => 'Ó‘',
-  1234 => 'Ó“',
-  1236 => 'Ó•',
-  1238 => 'Ó—',
-  1240 => 'Ó™',
-  1242 => 'Ó›',
-  1244 => 'ӝ',
-  1246 => 'ÓŸ',
-  1248 => 'Ó¡',
-  1250 => 'Ó£',
-  1252 => 'Ó¥',
-  1254 => 'Ó§',
-  1256 => 'Ó©',
-  1258 => 'Ó«',
-  1260 => 'Ó­',
-  1262 => 'Ó¯',
-  1264 => 'Ó±',
-  1266 => 'Ó³',
-  1268 => 'Óµ',
-  1270 => 'Ó·',
-  1272 => 'Ó¹',
-  1274 => 'Ó»',
-  1276 => 'Ó½',
-  1278 => 'Ó¿',
-  1280 => 'ԁ',
-  1282 => 'Ôƒ',
-  1284 => 'Ô…',
-  1286 => 'Ô‡',
-  1288 => 'Ô‰',
-  1290 => 'Ô‹',
-  1292 => 'ԍ',
-  1294 => 'ԏ',
-  1296 => 'Ô‘',
-  1298 => 'Ô“',
-  1300 => 'Ô•',
-  1302 => 'Ô—',
-  1304 => 'Ô™',
-  1306 => 'Ô›',
-  1308 => 'ԝ',
-  1310 => 'ÔŸ',
-  1312 => 'Ô¡',
-  1314 => 'Ô£',
-  1316 => 'Ô¥',
-  1318 => 'Ô§',
-  1320 => 'Ô©',
-  1322 => 'Ô«',
-  1324 => 'Ô­',
-  1326 => 'Ô¯',
-  1329 => 'Õ¡',
-  1330 => 'Õ¢',
-  1331 => 'Õ£',
-  1332 => 'Õ¤',
-  1333 => 'Õ¥',
-  1334 => 'Õ¦',
-  1335 => 'Õ§',
-  1336 => 'Õ¨',
-  1337 => 'Õ©',
-  1338 => 'Õª',
-  1339 => 'Õ«',
-  1340 => 'Õ¬',
-  1341 => 'Õ­',
-  1342 => 'Õ®',
-  1343 => 'Õ¯',
-  1344 => 'Õ°',
-  1345 => 'Õ±',
-  1346 => 'Õ²',
-  1347 => 'Õ³',
-  1348 => 'Õ´',
-  1349 => 'Õµ',
-  1350 => 'Õ¶',
-  1351 => 'Õ·',
-  1352 => 'Õ¸',
-  1353 => 'Õ¹',
-  1354 => 'Õº',
-  1355 => 'Õ»',
-  1356 => 'Õ¼',
-  1357 => 'Õ½',
-  1358 => 'Õ¾',
-  1359 => 'Õ¿',
-  1360 => 'Ö€',
-  1361 => 'ց',
-  1362 => 'Ö‚',
-  1363 => 'Öƒ',
-  1364 => 'Ö„',
-  1365 => 'Ö…',
-  1366 => 'Ö†',
-  1415 => 'Õ¥Ö‚',
-  1653 => 'اٴ',
-  1654 => 'وٴ',
-  1655 => 'Û‡Ù´',
-  1656 => 'يٴ',
-  2392 => 'क़',
-  2393 => 'ख़',
-  2394 => 'ग़',
-  2395 => 'ज़',
-  2396 => 'ड़',
-  2397 => 'ढ़',
-  2398 => 'फ़',
-  2399 => 'य़',
-  2524 => 'ড়',
-  2525 => 'ঢ়',
-  2527 => 'য়',
-  2611 => 'ਲ਼',
-  2614 => 'ਸ਼',
-  2649 => 'ਖ਼',
-  2650 => 'ਗ਼',
-  2651 => 'ਜ਼',
-  2654 => 'ਫ਼',
-  2908 => 'ଡ଼',
-  2909 => 'ଢ଼',
-  3635 => 'ํา',
-  3763 => 'ໍາ',
-  3804 => 'ຫນ',
-  3805 => 'ຫມ',
-  3852 => '་',
-  3907 => 'གྷ',
-  3917 => 'ཌྷ',
-  3922 => 'དྷ',
-  3927 => 'བྷ',
-  3932 => 'ཛྷ',
-  3945 => 'ཀྵ',
-  3955 => 'ཱི',
-  3957 => 'ཱུ',
-  3958 => 'ྲྀ',
-  3959 => 'ྲཱྀ',
-  3960 => 'ླྀ',
-  3961 => 'ླཱྀ',
-  3969 => 'ཱྀ',
-  3987 => 'ྒྷ',
-  3997 => 'ྜྷ',
-  4002 => 'ྡྷ',
-  4007 => 'ྦྷ',
-  4012 => 'ྫྷ',
-  4025 => 'ྐྵ',
-  4295 => 'â´§',
-  4301 => 'â´­',
-  4348 => 'ნ',
-  5112 => 'Ᏸ',
-  5113 => 'Ᏹ',
-  5114 => 'Ᏺ',
-  5115 => 'Ᏻ',
-  5116 => 'Ᏼ',
-  5117 => 'Ᏽ',
-  7296 => 'в',
-  7297 => 'д',
-  7298 => 'о',
-  7299 => 'с',
-  7300 => 'Ñ‚',
-  7301 => 'Ñ‚',
-  7302 => 'ÑŠ',
-  7303 => 'Ñ£',
-  7304 => 'ꙋ',
-  7312 => 'ა',
-  7313 => 'ბ',
-  7314 => 'გ',
-  7315 => 'დ',
-  7316 => 'ე',
-  7317 => 'ვ',
-  7318 => 'ზ',
-  7319 => 'თ',
-  7320 => 'ი',
-  7321 => 'კ',
-  7322 => 'ლ',
-  7323 => 'მ',
-  7324 => 'ნ',
-  7325 => 'ო',
-  7326 => 'პ',
-  7327 => 'ჟ',
-  7328 => 'რ',
-  7329 => 'ს',
-  7330 => 'ტ',
-  7331 => 'უ',
-  7332 => 'ფ',
-  7333 => 'ქ',
-  7334 => 'ღ',
-  7335 => 'ყ',
-  7336 => 'შ',
-  7337 => 'ჩ',
-  7338 => 'ც',
-  7339 => 'ძ',
-  7340 => 'წ',
-  7341 => 'ჭ',
-  7342 => 'ხ',
-  7343 => 'ჯ',
-  7344 => 'ჰ',
-  7345 => 'ჱ',
-  7346 => 'ჲ',
-  7347 => 'ჳ',
-  7348 => 'ჴ',
-  7349 => 'ჵ',
-  7350 => 'ჶ',
-  7351 => 'ჷ',
-  7352 => 'ჸ',
-  7353 => 'ჹ',
-  7354 => 'ჺ',
-  7357 => 'ჽ',
-  7358 => 'ჾ',
-  7359 => 'ჿ',
-  7468 => 'a',
-  7469 => 'æ',
-  7470 => 'b',
-  7472 => 'd',
-  7473 => 'e',
-  7474 => 'ǝ',
-  7475 => 'g',
-  7476 => 'h',
-  7477 => 'i',
-  7478 => 'j',
-  7479 => 'k',
-  7480 => 'l',
-  7481 => 'm',
-  7482 => 'n',
-  7484 => 'o',
-  7485 => 'È£',
-  7486 => 'p',
-  7487 => 'r',
-  7488 => 't',
-  7489 => 'u',
-  7490 => 'w',
-  7491 => 'a',
-  7492 => 'ɐ',
-  7493 => 'É‘',
-  7494 => 'á´‚',
-  7495 => 'b',
-  7496 => 'd',
-  7497 => 'e',
-  7498 => 'É™',
-  7499 => 'É›',
-  7500 => 'ɜ',
-  7501 => 'g',
-  7503 => 'k',
-  7504 => 'm',
-  7505 => 'Å‹',
-  7506 => 'o',
-  7507 => 'É”',
-  7508 => 'á´–',
-  7509 => 'á´—',
-  7510 => 'p',
-  7511 => 't',
-  7512 => 'u',
-  7513 => 'ᴝ',
-  7514 => 'ɯ',
-  7515 => 'v',
-  7516 => 'á´¥',
-  7517 => 'β',
-  7518 => 'γ',
-  7519 => 'δ',
-  7520 => 'φ',
-  7521 => 'χ',
-  7522 => 'i',
-  7523 => 'r',
-  7524 => 'u',
-  7525 => 'v',
-  7526 => 'β',
-  7527 => 'γ',
-  7528 => 'ρ',
-  7529 => 'φ',
-  7530 => 'χ',
-  7544 => 'н',
-  7579 => 'É’',
-  7580 => 'c',
-  7581 => 'É•',
-  7582 => 'ð',
-  7583 => 'ɜ',
-  7584 => 'f',
-  7585 => 'ÉŸ',
-  7586 => 'É¡',
-  7587 => 'É¥',
-  7588 => 'ɨ',
-  7589 => 'É©',
-  7590 => 'ɪ',
-  7591 => 'áµ»',
-  7592 => 'ʝ',
-  7593 => 'É­',
-  7594 => 'ᶅ',
-  7595 => 'ÊŸ',
-  7596 => 'ɱ',
-  7597 => 'É°',
-  7598 => 'ɲ',
-  7599 => 'ɳ',
-  7600 => 'É´',
-  7601 => 'ɵ',
-  7602 => 'ɸ',
-  7603 => 'Ê‚',
-  7604 => 'ʃ',
-  7605 => 'Æ«',
-  7606 => 'ʉ',
-  7607 => 'ÊŠ',
-  7608 => 'ᴜ',
-  7609 => 'Ê‹',
-  7610 => 'ʌ',
-  7611 => 'z',
-  7612 => 'ʐ',
-  7613 => 'Ê‘',
-  7614 => 'Ê’',
-  7615 => 'θ',
-  7680 => 'ḁ',
-  7682 => 'ḃ',
-  7684 => 'ḅ',
-  7686 => 'ḇ',
-  7688 => 'ḉ',
-  7690 => 'ḋ',
-  7692 => 'ḍ',
-  7694 => 'ḏ',
-  7696 => 'ḑ',
-  7698 => 'ḓ',
-  7700 => 'ḕ',
-  7702 => 'ḗ',
-  7704 => 'ḙ',
-  7706 => 'ḛ',
-  7708 => 'ḝ',
-  7710 => 'ḟ',
-  7712 => 'ḡ',
-  7714 => 'ḣ',
-  7716 => 'ḥ',
-  7718 => 'ḧ',
-  7720 => 'ḩ',
-  7722 => 'ḫ',
-  7724 => 'ḭ',
-  7726 => 'ḯ',
-  7728 => 'ḱ',
-  7730 => 'ḳ',
-  7732 => 'ḵ',
-  7734 => 'ḷ',
-  7736 => 'ḹ',
-  7738 => 'ḻ',
-  7740 => 'ḽ',
-  7742 => 'ḿ',
-  7744 => 'ṁ',
-  7746 => 'ṃ',
-  7748 => 'á¹…',
-  7750 => 'ṇ',
-  7752 => 'ṉ',
-  7754 => 'ṋ',
-  7756 => 'ṍ',
-  7758 => 'ṏ',
-  7760 => 'ṑ',
-  7762 => 'ṓ',
-  7764 => 'ṕ',
-  7766 => 'á¹—',
-  7768 => 'á¹™',
-  7770 => 'á¹›',
-  7772 => 'ṝ',
-  7774 => 'ṟ',
-  7776 => 'ṡ',
-  7778 => 'á¹£',
-  7780 => 'á¹¥',
-  7782 => 'ṧ',
-  7784 => 'ṩ',
-  7786 => 'ṫ',
-  7788 => 'á¹­',
-  7790 => 'ṯ',
-  7792 => 'á¹±',
-  7794 => 'á¹³',
-  7796 => 'á¹µ',
-  7798 => 'á¹·',
-  7800 => 'á¹¹',
-  7802 => 'á¹»',
-  7804 => 'á¹½',
-  7806 => 'ṿ',
-  7808 => 'ẁ',
-  7810 => 'ẃ',
-  7812 => 'ẅ',
-  7814 => 'ẇ',
-  7816 => 'ẉ',
-  7818 => 'ẋ',
-  7820 => 'ẍ',
-  7822 => 'ẏ',
-  7824 => 'ẑ',
-  7826 => 'ẓ',
-  7828 => 'ẕ',
-  7834 => 'aʾ',
-  7835 => 'ṡ',
-  7838 => 'ss',
-  7840 => 'ạ',
-  7842 => 'ả',
-  7844 => 'ấ',
-  7846 => 'ầ',
-  7848 => 'ẩ',
-  7850 => 'ẫ',
-  7852 => 'ậ',
-  7854 => 'ắ',
-  7856 => 'ằ',
-  7858 => 'ẳ',
-  7860 => 'ẵ',
-  7862 => 'ặ',
-  7864 => 'ẹ',
-  7866 => 'ẻ',
-  7868 => 'ẽ',
-  7870 => 'ế',
-  7872 => 'ề',
-  7874 => 'ể',
-  7876 => 'á»…',
-  7878 => 'ệ',
-  7880 => 'ỉ',
-  7882 => 'ị',
-  7884 => 'ọ',
-  7886 => 'ỏ',
-  7888 => 'ố',
-  7890 => 'ồ',
-  7892 => 'ổ',
-  7894 => 'á»—',
-  7896 => 'á»™',
-  7898 => 'á»›',
-  7900 => 'ờ',
-  7902 => 'ở',
-  7904 => 'ỡ',
-  7906 => 'ợ',
-  7908 => 'ụ',
-  7910 => 'ủ',
-  7912 => 'ứ',
-  7914 => 'ừ',
-  7916 => 'á»­',
-  7918 => 'ữ',
-  7920 => 'á»±',
-  7922 => 'ỳ',
-  7924 => 'ỵ',
-  7926 => 'á»·',
-  7928 => 'ỹ',
-  7930 => 'á»»',
-  7932 => 'ỽ',
-  7934 => 'ỿ',
-  7944 => 'á¼€',
-  7945 => 'ἁ',
-  7946 => 'ἂ',
-  7947 => 'ἃ',
-  7948 => 'ἄ',
-  7949 => 'á¼…',
-  7950 => 'ἆ',
-  7951 => 'ἇ',
-  7960 => 'ἐ',
-  7961 => 'ἑ',
-  7962 => 'á¼’',
-  7963 => 'ἓ',
-  7964 => 'á¼”',
-  7965 => 'ἕ',
-  7976 => 'á¼ ',
-  7977 => 'ἡ',
-  7978 => 'á¼¢',
-  7979 => 'á¼£',
-  7980 => 'ἤ',
-  7981 => 'á¼¥',
-  7982 => 'ἦ',
-  7983 => 'ἧ',
-  7992 => 'á¼°',
-  7993 => 'á¼±',
-  7994 => 'á¼²',
-  7995 => 'á¼³',
-  7996 => 'á¼´',
-  7997 => 'á¼µ',
-  7998 => 'ἶ',
-  7999 => 'á¼·',
-  8008 => 'á½€',
-  8009 => 'ὁ',
-  8010 => 'ὂ',
-  8011 => 'ὃ',
-  8012 => 'ὄ',
-  8013 => 'á½…',
-  8025 => 'ὑ',
-  8027 => 'ὓ',
-  8029 => 'ὕ',
-  8031 => 'á½—',
-  8040 => 'á½ ',
-  8041 => 'ὡ',
-  8042 => 'á½¢',
-  8043 => 'á½£',
-  8044 => 'ὤ',
-  8045 => 'á½¥',
-  8046 => 'ὦ',
-  8047 => 'ὧ',
-  8049 => 'ά',
-  8051 => 'έ',
-  8053 => 'ή',
-  8055 => 'ί',
-  8057 => 'ό',
-  8059 => 'ύ',
-  8061 => 'ÏŽ',
-  8064 => 'ἀι',
-  8065 => 'ἁι',
-  8066 => 'ἂι',
-  8067 => 'ἃι',
-  8068 => 'ἄι',
-  8069 => 'ἅι',
-  8070 => 'ἆι',
-  8071 => 'ἇι',
-  8072 => 'ἀι',
-  8073 => 'ἁι',
-  8074 => 'ἂι',
-  8075 => 'ἃι',
-  8076 => 'ἄι',
-  8077 => 'ἅι',
-  8078 => 'ἆι',
-  8079 => 'ἇι',
-  8080 => 'ἠι',
-  8081 => 'ἡι',
-  8082 => 'ἢι',
-  8083 => 'ἣι',
-  8084 => 'ἤι',
-  8085 => 'ἥι',
-  8086 => 'ἦι',
-  8087 => 'ἧι',
-  8088 => 'ἠι',
-  8089 => 'ἡι',
-  8090 => 'ἢι',
-  8091 => 'ἣι',
-  8092 => 'ἤι',
-  8093 => 'ἥι',
-  8094 => 'ἦι',
-  8095 => 'ἧι',
-  8096 => 'ὠι',
-  8097 => 'ὡι',
-  8098 => 'ὢι',
-  8099 => 'ὣι',
-  8100 => 'ὤι',
-  8101 => 'ὥι',
-  8102 => 'ὦι',
-  8103 => 'ὧι',
-  8104 => 'ὠι',
-  8105 => 'ὡι',
-  8106 => 'ὢι',
-  8107 => 'ὣι',
-  8108 => 'ὤι',
-  8109 => 'ὥι',
-  8110 => 'ὦι',
-  8111 => 'ὧι',
-  8114 => 'ὰι',
-  8115 => 'αι',
-  8116 => 'άι',
-  8119 => 'ᾶι',
-  8120 => 'á¾°',
-  8121 => 'á¾±',
-  8122 => 'á½°',
-  8123 => 'ά',
-  8124 => 'αι',
-  8126 => 'ι',
-  8130 => 'ὴι',
-  8131 => 'ηι',
-  8132 => 'ήι',
-  8135 => 'ῆι',
-  8136 => 'á½²',
-  8137 => 'έ',
-  8138 => 'á½´',
-  8139 => 'ή',
-  8140 => 'ηι',
-  8147 => 'ΐ',
-  8152 => 'ῐ',
-  8153 => 'á¿‘',
-  8154 => 'ὶ',
-  8155 => 'ί',
-  8163 => 'ΰ',
-  8168 => 'á¿ ',
-  8169 => 'á¿¡',
-  8170 => 'ὺ',
-  8171 => 'ύ',
-  8172 => 'á¿¥',
-  8178 => 'ὼι',
-  8179 => 'ωι',
-  8180 => 'ώι',
-  8183 => 'ῶι',
-  8184 => 'ὸ',
-  8185 => 'ό',
-  8186 => 'á½¼',
-  8187 => 'ÏŽ',
-  8188 => 'ωι',
-  8209 => '‐',
-  8243 => '′′',
-  8244 => '′′′',
-  8246 => '‵‵',
-  8247 => '‵‵‵',
-  8279 => '′′′′',
-  8304 => '0',
-  8305 => 'i',
-  8308 => '4',
-  8309 => '5',
-  8310 => '6',
-  8311 => '7',
-  8312 => '8',
-  8313 => '9',
-  8315 => '−',
-  8319 => 'n',
-  8320 => '0',
-  8321 => '1',
-  8322 => '2',
-  8323 => '3',
-  8324 => '4',
-  8325 => '5',
-  8326 => '6',
-  8327 => '7',
-  8328 => '8',
-  8329 => '9',
-  8331 => '−',
-  8336 => 'a',
-  8337 => 'e',
-  8338 => 'o',
-  8339 => 'x',
-  8340 => 'É™',
-  8341 => 'h',
-  8342 => 'k',
-  8343 => 'l',
-  8344 => 'm',
-  8345 => 'n',
-  8346 => 'p',
-  8347 => 's',
-  8348 => 't',
-  8360 => 'rs',
-  8450 => 'c',
-  8451 => '°c',
-  8455 => 'É›',
-  8457 => '°f',
-  8458 => 'g',
-  8459 => 'h',
-  8460 => 'h',
-  8461 => 'h',
-  8462 => 'h',
-  8463 => 'ħ',
-  8464 => 'i',
-  8465 => 'i',
-  8466 => 'l',
-  8467 => 'l',
-  8469 => 'n',
-  8470 => 'no',
-  8473 => 'p',
-  8474 => 'q',
-  8475 => 'r',
-  8476 => 'r',
-  8477 => 'r',
-  8480 => 'sm',
-  8481 => 'tel',
-  8482 => 'tm',
-  8484 => 'z',
-  8486 => 'ω',
-  8488 => 'z',
-  8490 => 'k',
-  8491 => 'Ã¥',
-  8492 => 'b',
-  8493 => 'c',
-  8495 => 'e',
-  8496 => 'e',
-  8497 => 'f',
-  8499 => 'm',
-  8500 => 'o',
-  8501 => 'א',
-  8502 => 'ב',
-  8503 => '×’',
-  8504 => 'ד',
-  8505 => 'i',
-  8507 => 'fax',
-  8508 => 'Ï€',
-  8509 => 'γ',
-  8510 => 'γ',
-  8511 => 'Ï€',
-  8512 => '∑',
-  8517 => 'd',
-  8518 => 'd',
-  8519 => 'e',
-  8520 => 'i',
-  8521 => 'j',
-  8528 => '1⁄7',
-  8529 => '1⁄9',
-  8530 => '1⁄10',
-  8531 => '1⁄3',
-  8532 => '2⁄3',
-  8533 => '1⁄5',
-  8534 => '2⁄5',
-  8535 => '3⁄5',
-  8536 => '4⁄5',
-  8537 => '1⁄6',
-  8538 => '5⁄6',
-  8539 => '1⁄8',
-  8540 => '3⁄8',
-  8541 => '5⁄8',
-  8542 => '7⁄8',
-  8543 => '1⁄',
-  8544 => 'i',
-  8545 => 'ii',
-  8546 => 'iii',
-  8547 => 'iv',
-  8548 => 'v',
-  8549 => 'vi',
-  8550 => 'vii',
-  8551 => 'viii',
-  8552 => 'ix',
-  8553 => 'x',
-  8554 => 'xi',
-  8555 => 'xii',
-  8556 => 'l',
-  8557 => 'c',
-  8558 => 'd',
-  8559 => 'm',
-  8560 => 'i',
-  8561 => 'ii',
-  8562 => 'iii',
-  8563 => 'iv',
-  8564 => 'v',
-  8565 => 'vi',
-  8566 => 'vii',
-  8567 => 'viii',
-  8568 => 'ix',
-  8569 => 'x',
-  8570 => 'xi',
-  8571 => 'xii',
-  8572 => 'l',
-  8573 => 'c',
-  8574 => 'd',
-  8575 => 'm',
-  8585 => '0⁄3',
-  8748 => '∫∫',
-  8749 => '∫∫∫',
-  8751 => '∮∮',
-  8752 => '∮∮∮',
-  9001 => '〈',
-  9002 => '〉',
-  9312 => '1',
-  9313 => '2',
-  9314 => '3',
-  9315 => '4',
-  9316 => '5',
-  9317 => '6',
-  9318 => '7',
-  9319 => '8',
-  9320 => '9',
-  9321 => '10',
-  9322 => '11',
-  9323 => '12',
-  9324 => '13',
-  9325 => '14',
-  9326 => '15',
-  9327 => '16',
-  9328 => '17',
-  9329 => '18',
-  9330 => '19',
-  9331 => '20',
-  9398 => 'a',
-  9399 => 'b',
-  9400 => 'c',
-  9401 => 'd',
-  9402 => 'e',
-  9403 => 'f',
-  9404 => 'g',
-  9405 => 'h',
-  9406 => 'i',
-  9407 => 'j',
-  9408 => 'k',
-  9409 => 'l',
-  9410 => 'm',
-  9411 => 'n',
-  9412 => 'o',
-  9413 => 'p',
-  9414 => 'q',
-  9415 => 'r',
-  9416 => 's',
-  9417 => 't',
-  9418 => 'u',
-  9419 => 'v',
-  9420 => 'w',
-  9421 => 'x',
-  9422 => 'y',
-  9423 => 'z',
-  9424 => 'a',
-  9425 => 'b',
-  9426 => 'c',
-  9427 => 'd',
-  9428 => 'e',
-  9429 => 'f',
-  9430 => 'g',
-  9431 => 'h',
-  9432 => 'i',
-  9433 => 'j',
-  9434 => 'k',
-  9435 => 'l',
-  9436 => 'm',
-  9437 => 'n',
-  9438 => 'o',
-  9439 => 'p',
-  9440 => 'q',
-  9441 => 'r',
-  9442 => 's',
-  9443 => 't',
-  9444 => 'u',
-  9445 => 'v',
-  9446 => 'w',
-  9447 => 'x',
-  9448 => 'y',
-  9449 => 'z',
-  9450 => '0',
-  10764 => '∫∫∫∫',
-  10972 => '⫝̸',
-  11264 => 'â°°',
-  11265 => 'â°±',
-  11266 => 'â°²',
-  11267 => 'â°³',
-  11268 => 'â°´',
-  11269 => 'â°µ',
-  11270 => 'â°¶',
-  11271 => 'â°·',
-  11272 => 'â°¸',
-  11273 => 'â°¹',
-  11274 => 'â°º',
-  11275 => 'â°»',
-  11276 => 'â°¼',
-  11277 => 'â°½',
-  11278 => 'â°¾',
-  11279 => 'â°¿',
-  11280 => 'â±€',
-  11281 => 'ⱁ',
-  11282 => 'ⱂ',
-  11283 => 'ⱃ',
-  11284 => 'ⱄ',
-  11285 => 'â±…',
-  11286 => 'ⱆ',
-  11287 => 'ⱇ',
-  11288 => 'ⱈ',
-  11289 => 'ⱉ',
-  11290 => 'ⱊ',
-  11291 => 'ⱋ',
-  11292 => 'ⱌ',
-  11293 => 'ⱍ',
-  11294 => 'ⱎ',
-  11295 => 'ⱏ',
-  11296 => 'ⱐ',
-  11297 => 'ⱑ',
-  11298 => 'â±’',
-  11299 => 'ⱓ',
-  11300 => 'â±”',
-  11301 => 'ⱕ',
-  11302 => 'â±–',
-  11303 => 'â±—',
-  11304 => 'ⱘ',
-  11305 => 'â±™',
-  11306 => 'ⱚ',
-  11307 => 'â±›',
-  11308 => 'ⱜ',
-  11309 => 'ⱝ',
-  11310 => 'ⱞ',
-  11360 => 'ⱡ',
-  11362 => 'É«',
-  11363 => 'áµ½',
-  11364 => 'ɽ',
-  11367 => 'ⱨ',
-  11369 => 'ⱪ',
-  11371 => 'ⱬ',
-  11373 => 'É‘',
-  11374 => 'ɱ',
-  11375 => 'ɐ',
-  11376 => 'É’',
-  11378 => 'â±³',
-  11381 => 'ⱶ',
-  11388 => 'j',
-  11389 => 'v',
-  11390 => 'È¿',
-  11391 => 'É€',
-  11392 => 'ⲁ',
-  11394 => 'ⲃ',
-  11396 => 'â²…',
-  11398 => 'ⲇ',
-  11400 => 'ⲉ',
-  11402 => 'ⲋ',
-  11404 => 'ⲍ',
-  11406 => 'ⲏ',
-  11408 => 'ⲑ',
-  11410 => 'ⲓ',
-  11412 => 'ⲕ',
-  11414 => 'â²—',
-  11416 => 'â²™',
-  11418 => 'â²›',
-  11420 => 'ⲝ',
-  11422 => 'ⲟ',
-  11424 => 'ⲡ',
-  11426 => 'â²£',
-  11428 => 'â²¥',
-  11430 => 'ⲧ',
-  11432 => 'ⲩ',
-  11434 => 'ⲫ',
-  11436 => 'â²­',
-  11438 => 'ⲯ',
-  11440 => 'â²±',
-  11442 => 'â²³',
-  11444 => 'â²µ',
-  11446 => 'â²·',
-  11448 => 'â²¹',
-  11450 => 'â²»',
-  11452 => 'â²½',
-  11454 => 'ⲿ',
-  11456 => 'ⳁ',
-  11458 => 'ⳃ',
-  11460 => 'â³…',
-  11462 => 'ⳇ',
-  11464 => 'ⳉ',
-  11466 => 'ⳋ',
-  11468 => 'ⳍ',
-  11470 => 'ⳏ',
-  11472 => 'ⳑ',
-  11474 => 'ⳓ',
-  11476 => 'ⳕ',
-  11478 => 'â³—',
-  11480 => 'â³™',
-  11482 => 'â³›',
-  11484 => 'ⳝ',
-  11486 => 'ⳟ',
-  11488 => 'ⳡ',
-  11490 => 'â³£',
-  11499 => 'ⳬ',
-  11501 => 'â³®',
-  11506 => 'â³³',
-  11631 => 'ⵡ',
-  11935 => '母',
-  12019 => '龟',
-  12032 => '一',
-  12033 => '丨',
-  12034 => '丶',
-  12035 => '丿',
-  12036 => 'ä¹™',
-  12037 => '亅',
-  12038 => '二',
-  12039 => '亠',
-  12040 => '人',
-  12041 => 'å„¿',
-  12042 => 'å…¥',
-  12043 => 'å…«',
-  12044 => '冂',
-  12045 => '冖',
-  12046 => '冫',
-  12047 => '几',
-  12048 => '凵',
-  12049 => '刀',
-  12050 => '力',
-  12051 => '勹',
-  12052 => '匕',
-  12053 => '匚',
-  12054 => '匸',
-  12055 => '十',
-  12056 => '卜',
-  12057 => '卩',
-  12058 => '厂',
-  12059 => '厶',
-  12060 => '又',
-  12061 => '口',
-  12062 => 'å›—',
-  12063 => '土',
-  12064 => '士',
-  12065 => '夂',
-  12066 => '夊',
-  12067 => '夕',
-  12068 => '大',
-  12069 => '女',
-  12070 => '子',
-  12071 => '宀',
-  12072 => '寸',
-  12073 => '小',
-  12074 => 'å°¢',
-  12075 => 'å°¸',
-  12076 => 'å±®',
-  12077 => 'å±±',
-  12078 => 'å·›',
-  12079 => 'å·¥',
-  12080 => 'å·±',
-  12081 => 'å·¾',
-  12082 => 'å¹²',
-  12083 => '幺',
-  12084 => '广',
-  12085 => 'å»´',
-  12086 => '廾',
-  12087 => '弋',
-  12088 => '弓',
-  12089 => '彐',
-  12090 => '彡',
-  12091 => 'å½³',
-  12092 => '心',
-  12093 => '戈',
-  12094 => '戶',
-  12095 => '手',
-  12096 => '支',
-  12097 => 'æ”´',
-  12098 => 'æ–‡',
-  12099 => 'æ–—',
-  12100 => 'æ–¤',
-  12101 => 'æ–¹',
-  12102 => 'æ— ',
-  12103 => 'æ—¥',
-  12104 => 'æ›°',
-  12105 => '月',
-  12106 => '木',
-  12107 => '欠',
-  12108 => 'æ­¢',
-  12109 => 'æ­¹',
-  12110 => '殳',
-  12111 => '毋',
-  12112 => '比',
-  12113 => '毛',
-  12114 => '氏',
-  12115 => 'æ°”',
-  12116 => 'æ°´',
-  12117 => '火',
-  12118 => '爪',
-  12119 => '父',
-  12120 => '爻',
-  12121 => '爿',
-  12122 => '片',
-  12123 => '牙',
-  12124 => '牛',
-  12125 => '犬',
-  12126 => '玄',
-  12127 => '玉',
-  12128 => '瓜',
-  12129 => '瓦',
-  12130 => '甘',
-  12131 => '生',
-  12132 => '用',
-  12133 => 'ç”°',
-  12134 => 'ç–‹',
-  12135 => 'ç–’',
-  12136 => '癶',
-  12137 => '白',
-  12138 => 'çš®',
-  12139 => 'çš¿',
-  12140 => 'ç›®',
-  12141 => '矛',
-  12142 => '矢',
-  12143 => '石',
-  12144 => '示',
-  12145 => '禸',
-  12146 => '禾',
-  12147 => 'ç©´',
-  12148 => 'ç«‹',
-  12149 => '竹',
-  12150 => 'ç±³',
-  12151 => '糸',
-  12152 => '缶',
-  12153 => '网',
-  12154 => '羊',
-  12155 => 'ç¾½',
-  12156 => '老',
-  12157 => '而',
-  12158 => '耒',
-  12159 => '耳',
-  12160 => '聿',
-  12161 => '肉',
-  12162 => '臣',
-  12163 => '自',
-  12164 => '至',
-  12165 => '臼',
-  12166 => '舌',
-  12167 => '舛',
-  12168 => '舟',
-  12169 => '艮',
-  12170 => '色',
-  12171 => '艸',
-  12172 => '虍',
-  12173 => '虫',
-  12174 => 'è¡€',
-  12175 => '行',
-  12176 => 'è¡£',
-  12177 => '襾',
-  12178 => '見',
-  12179 => '角',
-  12180 => '言',
-  12181 => 'è°·',
-  12182 => '豆',
-  12183 => '豕',
-  12184 => '豸',
-  12185 => '貝',
-  12186 => '赤',
-  12187 => 'èµ°',
-  12188 => '足',
-  12189 => '身',
-  12190 => '車',
-  12191 => 'è¾›',
-  12192 => 'è¾°',
-  12193 => 'è¾µ',
-  12194 => 'é‚‘',
-  12195 => 'é…‰',
-  12196 => '釆',
-  12197 => '里',
-  12198 => '金',
-  12199 => 'é•·',
-  12200 => 'é–€',
-  12201 => '阜',
-  12202 => '隶',
-  12203 => 'éš¹',
-  12204 => '雨',
-  12205 => '靑',
-  12206 => '非',
-  12207 => '面',
-  12208 => '革',
-  12209 => '韋',
-  12210 => '韭',
-  12211 => '音',
-  12212 => '頁',
-  12213 => '風',
-  12214 => '飛',
-  12215 => '食',
-  12216 => '首',
-  12217 => '香',
-  12218 => '馬',
-  12219 => '骨',
-  12220 => '高',
-  12221 => 'é«Ÿ',
-  12222 => '鬥',
-  12223 => '鬯',
-  12224 => '鬲',
-  12225 => '鬼',
-  12226 => 'é­š',
-  12227 => 'é³¥',
-  12228 => 'é¹µ',
-  12229 => '鹿',
-  12230 => '麥',
-  12231 => '麻',
-  12232 => '黃',
-  12233 => '黍',
-  12234 => '黑',
-  12235 => '黹',
-  12236 => '黽',
-  12237 => '鼎',
-  12238 => '鼓',
-  12239 => 'é¼ ',
-  12240 => 'é¼»',
-  12241 => '齊',
-  12242 => 'é½’',
-  12243 => '龍',
-  12244 => '龜',
-  12245 => 'é¾ ',
-  12290 => '.',
-  12342 => '〒',
-  12344 => '十',
-  12345 => '卄',
-  12346 => '卅',
-  12447 => 'より',
-  12543 => 'コト',
-  12593 => 'á„€',
-  12594 => 'ᄁ',
-  12595 => 'ᆪ',
-  12596 => 'á„‚',
-  12597 => 'ᆬ',
-  12598 => 'ᆭ',
-  12599 => 'ᄃ',
-  12600 => 'á„„',
-  12601 => 'á„…',
-  12602 => 'ᆰ',
-  12603 => 'ᆱ',
-  12604 => 'ᆲ',
-  12605 => 'ᆳ',
-  12606 => 'ᆴ',
-  12607 => 'ᆵ',
-  12608 => 'á„š',
-  12609 => 'ᄆ',
-  12610 => 'ᄇ',
-  12611 => 'ᄈ',
-  12612 => 'á„¡',
-  12613 => 'ᄉ',
-  12614 => 'á„Š',
-  12615 => 'á„‹',
-  12616 => 'ᄌ',
-  12617 => 'ᄍ',
-  12618 => 'á„Ž',
-  12619 => 'ᄏ',
-  12620 => 'ᄐ',
-  12621 => 'á„‘',
-  12622 => 'á„’',
-  12623 => 'á…¡',
-  12624 => 'á…¢',
-  12625 => 'á…£',
-  12626 => 'á…¤',
-  12627 => 'á…¥',
-  12628 => 'á…¦',
-  12629 => 'á…§',
-  12630 => 'á…¨',
-  12631 => 'á…©',
-  12632 => 'á…ª',
-  12633 => 'á…«',
-  12634 => 'á…¬',
-  12635 => 'á…­',
-  12636 => 'á…®',
-  12637 => 'á…¯',
-  12638 => 'á…°',
-  12639 => 'á…±',
-  12640 => 'á…²',
-  12641 => 'á…³',
-  12642 => 'á…´',
-  12643 => 'á…µ',
-  12645 => 'á„”',
-  12646 => 'á„•',
-  12647 => 'ᇇ',
-  12648 => 'ᇈ',
-  12649 => 'ᇌ',
-  12650 => 'ᇎ',
-  12651 => 'ᇓ',
-  12652 => 'ᇗ',
-  12653 => 'ᇙ',
-  12654 => 'ᄜ',
-  12655 => 'ᇝ',
-  12656 => 'ᇟ',
-  12657 => 'ᄝ',
-  12658 => 'á„ž',
-  12659 => 'á„ ',
-  12660 => 'á„¢',
-  12661 => 'á„£',
-  12662 => 'ᄧ',
-  12663 => 'á„©',
-  12664 => 'á„«',
-  12665 => 'ᄬ',
-  12666 => 'á„­',
-  12667 => 'á„®',
-  12668 => 'ᄯ',
-  12669 => 'ᄲ',
-  12670 => 'ᄶ',
-  12671 => 'á…€',
-  12672 => 'á…‡',
-  12673 => 'ᅌ',
-  12674 => 'ᇱ',
-  12675 => 'ᇲ',
-  12676 => 'á…—',
-  12677 => 'á…˜',
-  12678 => 'á…™',
-  12679 => 'ᆄ',
-  12680 => 'ᆅ',
-  12681 => 'ᆈ',
-  12682 => 'ᆑ',
-  12683 => 'ᆒ',
-  12684 => 'ᆔ',
-  12685 => 'ᆞ',
-  12686 => 'ᆡ',
-  12690 => '一',
-  12691 => '二',
-  12692 => '三',
-  12693 => 'å››',
-  12694 => '上',
-  12695 => '中',
-  12696 => '下',
-  12697 => '甲',
-  12698 => 'ä¹™',
-  12699 => '丙',
-  12700 => '丁',
-  12701 => '天',
-  12702 => '地',
-  12703 => '人',
-  12868 => '問',
-  12869 => 'å¹¼',
-  12870 => 'æ–‡',
-  12871 => '箏',
-  12880 => 'pte',
-  12881 => '21',
-  12882 => '22',
-  12883 => '23',
-  12884 => '24',
-  12885 => '25',
-  12886 => '26',
-  12887 => '27',
-  12888 => '28',
-  12889 => '29',
-  12890 => '30',
-  12891 => '31',
-  12892 => '32',
-  12893 => '33',
-  12894 => '34',
-  12895 => '35',
-  12896 => 'á„€',
-  12897 => 'á„‚',
-  12898 => 'ᄃ',
-  12899 => 'á„…',
-  12900 => 'ᄆ',
-  12901 => 'ᄇ',
-  12902 => 'ᄉ',
-  12903 => 'á„‹',
-  12904 => 'ᄌ',
-  12905 => 'á„Ž',
-  12906 => 'ᄏ',
-  12907 => 'ᄐ',
-  12908 => 'á„‘',
-  12909 => 'á„’',
-  12910 => 'ê°€',
-  12911 => '나',
-  12912 => '다',
-  12913 => '라',
-  12914 => '마',
-  12915 => 'ë°”',
-  12916 => '사',
-  12917 => 'ì•„',
-  12918 => '자',
-  12919 => 'ì°¨',
-  12920 => 'ì¹´',
-  12921 => '타',
-  12922 => '파',
-  12923 => '하',
-  12924 => '참고',
-  12925 => '주의',
-  12926 => 'ìš°',
-  12928 => '一',
-  12929 => '二',
-  12930 => '三',
-  12931 => 'å››',
-  12932 => '五',
-  12933 => 'å…­',
-  12934 => '七',
-  12935 => 'å…«',
-  12936 => '九',
-  12937 => '十',
-  12938 => '月',
-  12939 => '火',
-  12940 => 'æ°´',
-  12941 => '木',
-  12942 => '金',
-  12943 => '土',
-  12944 => 'æ—¥',
-  12945 => 'æ ª',
-  12946 => '有',
-  12947 => '社',
-  12948 => '名',
-  12949 => '特',
-  12950 => '財',
-  12951 => '祝',
-  12952 => '労',
-  12953 => '秘',
-  12954 => 'ç”·',
-  12955 => '女',
-  12956 => '適',
-  12957 => '優',
-  12958 => '印',
-  12959 => '注',
-  12960 => 'é …',
-  12961 => '休',
-  12962 => '写',
-  12963 => 'æ­£',
-  12964 => '上',
-  12965 => '中',
-  12966 => '下',
-  12967 => 'å·¦',
-  12968 => '右',
-  12969 => '医',
-  12970 => 'å®—',
-  12971 => 'å­¦',
-  12972 => '監',
-  12973 => '企',
-  12974 => '資',
-  12975 => '協',
-  12976 => '夜',
-  12977 => '36',
-  12978 => '37',
-  12979 => '38',
-  12980 => '39',
-  12981 => '40',
-  12982 => '41',
-  12983 => '42',
-  12984 => '43',
-  12985 => '44',
-  12986 => '45',
-  12987 => '46',
-  12988 => '47',
-  12989 => '48',
-  12990 => '49',
-  12991 => '50',
-  12992 => '1月',
-  12993 => '2月',
-  12994 => '3月',
-  12995 => '4月',
-  12996 => '5月',
-  12997 => '6月',
-  12998 => '7月',
-  12999 => '8月',
-  13000 => '9月',
-  13001 => '10月',
-  13002 => '11月',
-  13003 => '12月',
-  13004 => 'hg',
-  13005 => 'erg',
-  13006 => 'ev',
-  13007 => 'ltd',
-  13008 => 'ã‚¢',
-  13009 => 'イ',
-  13010 => 'ウ',
-  13011 => 'エ',
-  13012 => 'オ',
-  13013 => 'ã‚«',
-  13014 => 'ã‚­',
-  13015 => 'ク',
-  13016 => 'ケ',
-  13017 => 'コ',
-  13018 => 'サ',
-  13019 => 'ã‚·',
-  13020 => 'ス',
-  13021 => 'ã‚»',
-  13022 => 'ソ',
-  13023 => 'ã‚¿',
-  13024 => 'チ',
-  13025 => 'ツ',
-  13026 => 'テ',
-  13027 => 'ト',
-  13028 => 'ナ',
-  13029 => 'ニ',
-  13030 => 'ヌ',
-  13031 => 'ネ',
-  13032 => 'ノ',
-  13033 => 'ハ',
-  13034 => 'ヒ',
-  13035 => 'フ',
-  13036 => 'ヘ',
-  13037 => 'ホ',
-  13038 => 'マ',
-  13039 => 'ミ',
-  13040 => 'ム',
-  13041 => 'メ',
-  13042 => 'モ',
-  13043 => 'ヤ',
-  13044 => 'ユ',
-  13045 => 'ヨ',
-  13046 => 'ラ',
-  13047 => 'リ',
-  13048 => 'ル',
-  13049 => 'レ',
-  13050 => 'ロ',
-  13051 => 'ワ',
-  13052 => 'ヰ',
-  13053 => 'ヱ',
-  13054 => 'ヲ',
-  13055 => '令和',
-  13056 => 'アパート',
-  13057 => 'アルファ',
-  13058 => 'アンペア',
-  13059 => 'アール',
-  13060 => 'イニング',
-  13061 => 'インチ',
-  13062 => 'ウォン',
-  13063 => 'エスクード',
-  13064 => 'エーカー',
-  13065 => 'オンス',
-  13066 => 'オーム',
-  13067 => 'カイリ',
-  13068 => 'カラット',
-  13069 => 'カロリー',
-  13070 => 'ガロン',
-  13071 => 'ガンマ',
-  13072 => 'ギガ',
-  13073 => 'ギニー',
-  13074 => 'キュリー',
-  13075 => 'ギルダー',
-  13076 => 'キロ',
-  13077 => 'キログラム',
-  13078 => 'キロメートル',
-  13079 => 'キロワット',
-  13080 => 'グラム',
-  13081 => 'グラムトン',
-  13082 => 'クルゼイロ',
-  13083 => 'クローネ',
-  13084 => 'ケース',
-  13085 => 'コルナ',
-  13086 => 'コーポ',
-  13087 => 'サイクル',
-  13088 => 'サンチーム',
-  13089 => 'シリング',
-  13090 => 'センチ',
-  13091 => 'セント',
-  13092 => 'ダース',
-  13093 => 'デシ',
-  13094 => 'ドル',
-  13095 => 'トン',
-  13096 => 'ナノ',
-  13097 => 'ノット',
-  13098 => 'ハイツ',
-  13099 => 'パーセント',
-  13100 => 'パーツ',
-  13101 => 'バーレル',
-  13102 => 'ピアストル',
-  13103 => 'ピクル',
-  13104 => 'ピコ',
-  13105 => 'ビル',
-  13106 => 'ファラッド',
-  13107 => 'フィート',
-  13108 => 'ブッシェル',
-  13109 => 'フラン',
-  13110 => 'ヘクタール',
-  13111 => 'ペソ',
-  13112 => 'ペニヒ',
-  13113 => 'ヘルツ',
-  13114 => 'ペンス',
-  13115 => 'ページ',
-  13116 => 'ベータ',
-  13117 => 'ポイント',
-  13118 => 'ボルト',
-  13119 => 'ホン',
-  13120 => 'ポンド',
-  13121 => 'ホール',
-  13122 => 'ホーン',
-  13123 => 'マイクロ',
-  13124 => 'マイル',
-  13125 => 'マッハ',
-  13126 => 'マルク',
-  13127 => 'マンション',
-  13128 => 'ミクロン',
-  13129 => 'ミリ',
-  13130 => 'ミリバール',
-  13131 => 'メガ',
-  13132 => 'メガトン',
-  13133 => 'メートル',
-  13134 => 'ヤード',
-  13135 => 'ヤール',
-  13136 => 'ユアン',
-  13137 => 'リットル',
-  13138 => 'リラ',
-  13139 => 'ルピー',
-  13140 => 'ルーブル',
-  13141 => 'レム',
-  13142 => 'レントゲン',
-  13143 => 'ワット',
-  13144 => '0点',
-  13145 => '1点',
-  13146 => '2点',
-  13147 => '3点',
-  13148 => '4点',
-  13149 => '5点',
-  13150 => '6点',
-  13151 => '7点',
-  13152 => '8点',
-  13153 => '9点',
-  13154 => '10点',
-  13155 => '11点',
-  13156 => '12点',
-  13157 => '13点',
-  13158 => '14点',
-  13159 => '15点',
-  13160 => '16点',
-  13161 => '17点',
-  13162 => '18点',
-  13163 => '19点',
-  13164 => '20点',
-  13165 => '21点',
-  13166 => '22点',
-  13167 => '23点',
-  13168 => '24点',
-  13169 => 'hpa',
-  13170 => 'da',
-  13171 => 'au',
-  13172 => 'bar',
-  13173 => 'ov',
-  13174 => 'pc',
-  13175 => 'dm',
-  13176 => 'dm2',
-  13177 => 'dm3',
-  13178 => 'iu',
-  13179 => '平成',
-  13180 => '昭和',
-  13181 => '大正',
-  13182 => '明治',
-  13183 => '株式会社',
-  13184 => 'pa',
-  13185 => 'na',
-  13186 => 'μa',
-  13187 => 'ma',
-  13188 => 'ka',
-  13189 => 'kb',
-  13190 => 'mb',
-  13191 => 'gb',
-  13192 => 'cal',
-  13193 => 'kcal',
-  13194 => 'pf',
-  13195 => 'nf',
-  13196 => 'μf',
-  13197 => 'μg',
-  13198 => 'mg',
-  13199 => 'kg',
-  13200 => 'hz',
-  13201 => 'khz',
-  13202 => 'mhz',
-  13203 => 'ghz',
-  13204 => 'thz',
-  13205 => 'μl',
-  13206 => 'ml',
-  13207 => 'dl',
-  13208 => 'kl',
-  13209 => 'fm',
-  13210 => 'nm',
-  13211 => 'μm',
-  13212 => 'mm',
-  13213 => 'cm',
-  13214 => 'km',
-  13215 => 'mm2',
-  13216 => 'cm2',
-  13217 => 'm2',
-  13218 => 'km2',
-  13219 => 'mm3',
-  13220 => 'cm3',
-  13221 => 'm3',
-  13222 => 'km3',
-  13223 => 'm∕s',
-  13224 => 'm∕s2',
-  13225 => 'pa',
-  13226 => 'kpa',
-  13227 => 'mpa',
-  13228 => 'gpa',
-  13229 => 'rad',
-  13230 => 'rad∕s',
-  13231 => 'rad∕s2',
-  13232 => 'ps',
-  13233 => 'ns',
-  13234 => 'μs',
-  13235 => 'ms',
-  13236 => 'pv',
-  13237 => 'nv',
-  13238 => 'μv',
-  13239 => 'mv',
-  13240 => 'kv',
-  13241 => 'mv',
-  13242 => 'pw',
-  13243 => 'nw',
-  13244 => 'μw',
-  13245 => 'mw',
-  13246 => 'kw',
-  13247 => 'mw',
-  13248 => 'kω',
-  13249 => 'mω',
-  13251 => 'bq',
-  13252 => 'cc',
-  13253 => 'cd',
-  13254 => 'c∕kg',
-  13256 => 'db',
-  13257 => 'gy',
-  13258 => 'ha',
-  13259 => 'hp',
-  13260 => 'in',
-  13261 => 'kk',
-  13262 => 'km',
-  13263 => 'kt',
-  13264 => 'lm',
-  13265 => 'ln',
-  13266 => 'log',
-  13267 => 'lx',
-  13268 => 'mb',
-  13269 => 'mil',
-  13270 => 'mol',
-  13271 => 'ph',
-  13273 => 'ppm',
-  13274 => 'pr',
-  13275 => 'sr',
-  13276 => 'sv',
-  13277 => 'wb',
-  13278 => 'v∕m',
-  13279 => 'a∕m',
-  13280 => '1æ—¥',
-  13281 => '2æ—¥',
-  13282 => '3æ—¥',
-  13283 => '4æ—¥',
-  13284 => '5æ—¥',
-  13285 => '6æ—¥',
-  13286 => '7æ—¥',
-  13287 => '8æ—¥',
-  13288 => '9æ—¥',
-  13289 => '10æ—¥',
-  13290 => '11æ—¥',
-  13291 => '12æ—¥',
-  13292 => '13æ—¥',
-  13293 => '14æ—¥',
-  13294 => '15æ—¥',
-  13295 => '16æ—¥',
-  13296 => '17æ—¥',
-  13297 => '18æ—¥',
-  13298 => '19æ—¥',
-  13299 => '20æ—¥',
-  13300 => '21æ—¥',
-  13301 => '22æ—¥',
-  13302 => '23æ—¥',
-  13303 => '24æ—¥',
-  13304 => '25æ—¥',
-  13305 => '26æ—¥',
-  13306 => '27æ—¥',
-  13307 => '28æ—¥',
-  13308 => '29æ—¥',
-  13309 => '30æ—¥',
-  13310 => '31æ—¥',
-  13311 => 'gal',
-  42560 => 'ꙁ',
-  42562 => 'ꙃ',
-  42564 => 'ê™…',
-  42566 => 'ꙇ',
-  42568 => 'ꙉ',
-  42570 => 'ꙋ',
-  42572 => 'ꙍ',
-  42574 => 'ꙏ',
-  42576 => 'ꙑ',
-  42578 => 'ꙓ',
-  42580 => 'ꙕ',
-  42582 => 'ê™—',
-  42584 => 'ê™™',
-  42586 => 'ê™›',
-  42588 => 'ꙝ',
-  42590 => 'ꙟ',
-  42592 => 'ꙡ',
-  42594 => 'ꙣ',
-  42596 => 'ꙥ',
-  42598 => 'ꙧ',
-  42600 => 'ꙩ',
-  42602 => 'ꙫ',
-  42604 => 'ê™­',
-  42624 => 'ꚁ',
-  42626 => 'ꚃ',
-  42628 => 'êš…',
-  42630 => 'ꚇ',
-  42632 => 'ꚉ',
-  42634 => 'êš‹',
-  42636 => 'ꚍ',
-  42638 => 'ꚏ',
-  42640 => 'êš‘',
-  42642 => 'êš“',
-  42644 => 'êš•',
-  42646 => 'êš—',
-  42648 => 'êš™',
-  42650 => 'êš›',
-  42652 => 'ÑŠ',
-  42653 => 'ь',
-  42786 => 'ꜣ',
-  42788 => 'ꜥ',
-  42790 => 'ꜧ',
-  42792 => 'ꜩ',
-  42794 => 'ꜫ',
-  42796 => 'ꜭ',
-  42798 => 'ꜯ',
-  42802 => 'ꜳ',
-  42804 => 'ꜵ',
-  42806 => 'ꜷ',
-  42808 => 'ꜹ',
-  42810 => 'ꜻ',
-  42812 => 'ꜽ',
-  42814 => 'ꜿ',
-  42816 => 'ꝁ',
-  42818 => 'ꝃ',
-  42820 => 'ꝅ',
-  42822 => 'ꝇ',
-  42824 => 'ꝉ',
-  42826 => 'ꝋ',
-  42828 => 'ꝍ',
-  42830 => 'ꝏ',
-  42832 => 'ꝑ',
-  42834 => 'ꝓ',
-  42836 => 'ꝕ',
-  42838 => 'ꝗ',
-  42840 => 'ꝙ',
-  42842 => 'ꝛ',
-  42844 => 'ꝝ',
-  42846 => 'ꝟ',
-  42848 => 'ꝡ',
-  42850 => 'ꝣ',
-  42852 => 'ꝥ',
-  42854 => 'ꝧ',
-  42856 => 'ꝩ',
-  42858 => 'ꝫ',
-  42860 => 'ꝭ',
-  42862 => 'ꝯ',
-  42864 => 'ꝯ',
-  42873 => 'ꝺ',
-  42875 => 'ꝼ',
-  42877 => 'áµ¹',
-  42878 => 'ꝿ',
-  42880 => 'ꞁ',
-  42882 => 'ꞃ',
-  42884 => 'êž…',
-  42886 => 'ꞇ',
-  42891 => 'ꞌ',
-  42893 => 'É¥',
-  42896 => 'êž‘',
-  42898 => 'êž“',
-  42902 => 'êž—',
-  42904 => 'êž™',
-  42906 => 'êž›',
-  42908 => 'ꞝ',
-  42910 => 'ꞟ',
-  42912 => 'êž¡',
-  42914 => 'ꞣ',
-  42916 => 'ꞥ',
-  42918 => 'ꞧ',
-  42920 => 'êž©',
-  42922 => 'ɦ',
-  42923 => 'ɜ',
-  42924 => 'É¡',
-  42925 => 'ɬ',
-  42926 => 'ɪ',
-  42928 => 'Êž',
-  42929 => 'ʇ',
-  42930 => 'ʝ',
-  42931 => 'ê­“',
-  42932 => 'êžµ',
-  42934 => 'êž·',
-  42936 => 'êž¹',
-  42938 => 'êž»',
-  42940 => 'êž½',
-  42942 => 'êž¿',
-  42946 => 'ꟃ',
-  42948 => 'êž”',
-  42949 => 'Ê‚',
-  42950 => 'ᶎ',
-  42951 => 'ꟈ',
-  42953 => 'ꟊ',
-  42997 => 'ꟶ',
-  43000 => 'ħ',
-  43001 => 'Å“',
-  43868 => 'ꜧ',
-  43869 => 'ꬷ',
-  43870 => 'É«',
-  43871 => 'ê­’',
-  43881 => 'ʍ',
-  43888 => 'Ꭰ',
-  43889 => 'Ꭱ',
-  43890 => 'Ꭲ',
-  43891 => 'Ꭳ',
-  43892 => 'Ꭴ',
-  43893 => 'Ꭵ',
-  43894 => 'Ꭶ',
-  43895 => 'Ꭷ',
-  43896 => 'Ꭸ',
-  43897 => 'Ꭹ',
-  43898 => 'Ꭺ',
-  43899 => 'Ꭻ',
-  43900 => 'Ꭼ',
-  43901 => 'Ꭽ',
-  43902 => 'Ꭾ',
-  43903 => 'Ꭿ',
-  43904 => 'Ꮀ',
-  43905 => 'Ꮁ',
-  43906 => 'Ꮂ',
-  43907 => 'Ꮃ',
-  43908 => 'Ꮄ',
-  43909 => 'Ꮅ',
-  43910 => 'Ꮆ',
-  43911 => 'Ꮇ',
-  43912 => 'Ꮈ',
-  43913 => 'Ꮉ',
-  43914 => 'Ꮊ',
-  43915 => 'Ꮋ',
-  43916 => 'Ꮌ',
-  43917 => 'Ꮍ',
-  43918 => 'Ꮎ',
-  43919 => 'Ꮏ',
-  43920 => 'Ꮐ',
-  43921 => 'Ꮑ',
-  43922 => 'Ꮒ',
-  43923 => 'Ꮓ',
-  43924 => 'Ꮔ',
-  43925 => 'Ꮕ',
-  43926 => 'Ꮖ',
-  43927 => 'Ꮗ',
-  43928 => 'Ꮘ',
-  43929 => 'Ꮙ',
-  43930 => 'Ꮚ',
-  43931 => 'Ꮛ',
-  43932 => 'Ꮜ',
-  43933 => 'Ꮝ',
-  43934 => 'Ꮞ',
-  43935 => 'Ꮟ',
-  43936 => 'Ꮠ',
-  43937 => 'Ꮡ',
-  43938 => 'Ꮢ',
-  43939 => 'Ꮣ',
-  43940 => 'Ꮤ',
-  43941 => 'Ꮥ',
-  43942 => 'Ꮦ',
-  43943 => 'Ꮧ',
-  43944 => 'Ꮨ',
-  43945 => 'Ꮩ',
-  43946 => 'Ꮪ',
-  43947 => 'Ꮫ',
-  43948 => 'Ꮬ',
-  43949 => 'Ꮭ',
-  43950 => 'Ꮮ',
-  43951 => 'Ꮯ',
-  43952 => 'Ꮰ',
-  43953 => 'Ꮱ',
-  43954 => 'Ꮲ',
-  43955 => 'Ꮳ',
-  43956 => 'Ꮴ',
-  43957 => 'Ꮵ',
-  43958 => 'Ꮶ',
-  43959 => 'Ꮷ',
-  43960 => 'Ꮸ',
-  43961 => 'Ꮹ',
-  43962 => 'Ꮺ',
-  43963 => 'Ꮻ',
-  43964 => 'Ꮼ',
-  43965 => 'Ꮽ',
-  43966 => 'Ꮾ',
-  43967 => 'Ꮿ',
-  63744 => '豈',
-  63745 => 'æ›´',
-  63746 => '車',
-  63747 => '賈',
-  63748 => '滑',
-  63749 => '串',
-  63750 => '句',
-  63751 => '龜',
-  63752 => '龜',
-  63753 => '契',
-  63754 => '金',
-  63755 => 'å–‡',
-  63756 => '奈',
-  63757 => '懶',
-  63758 => '癩',
-  63759 => 'ç¾…',
-  63760 => '蘿',
-  63761 => '螺',
-  63762 => '裸',
-  63763 => '邏',
-  63764 => '樂',
-  63765 => 'æ´›',
-  63766 => '烙',
-  63767 => '珞',
-  63768 => '落',
-  63769 => 'é…ª',
-  63770 => '駱',
-  63771 => '亂',
-  63772 => '卵',
-  63773 => '欄',
-  63774 => '爛',
-  63775 => '蘭',
-  63776 => '鸞',
-  63777 => '嵐',
-  63778 => 'æ¿«',
-  63779 => '藍',
-  63780 => '襤',
-  63781 => '拉',
-  63782 => '臘',
-  63783 => 'è Ÿ',
-  63784 => '廊',
-  63785 => '朗',
-  63786 => '浪',
-  63787 => '狼',
-  63788 => '郎',
-  63789 => '來',
-  63790 => '冷',
-  63791 => 'å‹ž',
-  63792 => 'æ“„',
-  63793 => 'æ«“',
-  63794 => '爐',
-  63795 => '盧',
-  63796 => '老',
-  63797 => '蘆',
-  63798 => '虜',
-  63799 => 'è·¯',
-  63800 => '露',
-  63801 => 'é­¯',
-  63802 => 'é·º',
-  63803 => '碌',
-  63804 => '祿',
-  63805 => '綠',
-  63806 => '菉',
-  63807 => '錄',
-  63808 => '鹿',
-  63809 => 'è«–',
-  63810 => '壟',
-  63811 => '弄',
-  63812 => 'ç± ',
-  63813 => '聾',
-  63814 => '牢',
-  63815 => '磊',
-  63816 => '賂',
-  63817 => 'é›·',
-  63818 => '壘',
-  63819 => 'å±¢',
-  63820 => '樓',
-  63821 => 'æ·š',
-  63822 => '漏',
-  63823 => 'ç´¯',
-  63824 => '縷',
-  63825 => '陋',
-  63826 => 'å‹’',
-  63827 => 'è‚‹',
-  63828 => '凜',
-  63829 => '凌',
-  63830 => '稜',
-  63831 => '綾',
-  63832 => '菱',
-  63833 => '陵',
-  63834 => '讀',
-  63835 => '拏',
-  63836 => '樂',
-  63837 => '諾',
-  63838 => '丹',
-  63839 => '寧',
-  63840 => '怒',
-  63841 => '率',
-  63842 => 'ç•°',
-  63843 => '北',
-  63844 => '磻',
-  63845 => '便',
-  63846 => '復',
-  63847 => '不',
-  63848 => '泌',
-  63849 => '數',
-  63850 => 'ç´¢',
-  63851 => '參',
-  63852 => 'å¡ž',
-  63853 => '省',
-  63854 => '葉',
-  63855 => '說',
-  63856 => '殺',
-  63857 => 'è¾°',
-  63858 => '沈',
-  63859 => '拾',
-  63860 => 'è‹¥',
-  63861 => '掠',
-  63862 => 'ç•¥',
-  63863 => '亮',
-  63864 => 'å…©',
-  63865 => '凉',
-  63866 => '梁',
-  63867 => '糧',
-  63868 => '良',
-  63869 => 'è«’',
-  63870 => '量',
-  63871 => '勵',
-  63872 => 'å‘‚',
-  63873 => '女',
-  63874 => '廬',
-  63875 => 'æ—…',
-  63876 => '濾',
-  63877 => '礪',
-  63878 => 'é–­',
-  63879 => '驪',
-  63880 => '麗',
-  63881 => '黎',
-  63882 => '力',
-  63883 => '曆',
-  63884 => 'æ­·',
-  63885 => 'è½¢',
-  63886 => 'å¹´',
-  63887 => '憐',
-  63888 => '戀',
-  63889 => 'æ’š',
-  63890 => 'æ¼£',
-  63891 => 'ç…‰',
-  63892 => 'ç’‰',
-  63893 => '秊',
-  63894 => 'ç·´',
-  63895 => '聯',
-  63896 => '輦',
-  63897 => 'è“®',
-  63898 => '連',
-  63899 => '鍊',
-  63900 => '列',
-  63901 => '劣',
-  63902 => 'å’½',
-  63903 => '烈',
-  63904 => '裂',
-  63905 => '說',
-  63906 => '廉',
-  63907 => '念',
-  63908 => '捻',
-  63909 => 'æ®®',
-  63910 => 'ç°¾',
-  63911 => '獵',
-  63912 => '令',
-  63913 => '囹',
-  63914 => '寧',
-  63915 => '嶺',
-  63916 => '怜',
-  63917 => '玲',
-  63918 => 'ç‘©',
-  63919 => '羚',
-  63920 => '聆',
-  63921 => '鈴',
-  63922 => '零',
-  63923 => '靈',
-  63924 => 'é ˜',
-  63925 => '例',
-  63926 => '禮',
-  63927 => '醴',
-  63928 => '隸',
-  63929 => '惡',
-  63930 => '了',
-  63931 => '僚',
-  63932 => '寮',
-  63933 => 'å°¿',
-  63934 => 'æ–™',
-  63935 => '樂',
-  63936 => '燎',
-  63937 => '療',
-  63938 => '蓼',
-  63939 => '遼',
-  63940 => '龍',
-  63941 => '暈',
-  63942 => '阮',
-  63943 => '劉',
-  63944 => '杻',
-  63945 => '柳',
-  63946 => '流',
-  63947 => '溜',
-  63948 => '琉',
-  63949 => 'ç•™',
-  63950 => 'ç¡«',
-  63951 => '紐',
-  63952 => 'é¡ž',
-  63953 => 'å…­',
-  63954 => '戮',
-  63955 => '陸',
-  63956 => '倫',
-  63957 => 'å´™',
-  63958 => 'æ·ª',
-  63959 => '輪',
-  63960 => '律',
-  63961 => 'æ…„',
-  63962 => 'æ —',
-  63963 => '率',
-  63964 => '隆',
-  63965 => '利',
-  63966 => '吏',
-  63967 => 'å±¥',
-  63968 => '易',
-  63969 => '李',
-  63970 => '梨',
-  63971 => 'æ³¥',
-  63972 => '理',
-  63973 => 'ç—¢',
-  63974 => 'ç½¹',
-  63975 => '裏',
-  63976 => '裡',
-  63977 => '里',
-  63978 => '離',
-  63979 => '匿',
-  63980 => '溺',
-  63981 => '吝',
-  63982 => '燐',
-  63983 => 'ç’˜',
-  63984 => 'è—º',
-  63985 => '隣',
-  63986 => 'é±—',
-  63987 => '麟',
-  63988 => 'æž—',
-  63989 => 'æ·‹',
-  63990 => '臨',
-  63991 => 'ç«‹',
-  63992 => '笠',
-  63993 => 'ç²’',
-  63994 => 'ç‹€',
-  63995 => 'ç‚™',
-  63996 => 'è­˜',
-  63997 => '什',
-  63998 => '茶',
-  63999 => '刺',
-  64000 => '切',
-  64001 => '度',
-  64002 => 'æ‹“',
-  64003 => 'ç³–',
-  64004 => 'å®…',
-  64005 => 'æ´ž',
-  64006 => 'æš´',
-  64007 => 'è¼»',
-  64008 => '行',
-  64009 => '降',
-  64010 => '見',
-  64011 => '廓',
-  64012 => 'å…€',
-  64013 => 'å—€',
-  64016 => 'å¡š',
-  64018 => 'æ™´',
-  64021 => '凞',
-  64022 => '猪',
-  64023 => '益',
-  64024 => '礼',
-  64025 => '神',
-  64026 => '祥',
-  64027 => '福',
-  64028 => '靖',
-  64029 => 'ç²¾',
-  64030 => 'ç¾½',
-  64032 => '蘒',
-  64034 => '諸',
-  64037 => '逸',
-  64038 => '都',
-  64042 => '飯',
-  64043 => '飼',
-  64044 => '館',
-  64045 => '鶴',
-  64046 => '郞',
-  64047 => 'éš·',
-  64048 => 'ä¾®',
-  64049 => '僧',
-  64050 => '免',
-  64051 => '勉',
-  64052 => '勤',
-  64053 => '卑',
-  64054 => '喝',
-  64055 => '嘆',
-  64056 => '器',
-  64057 => 'å¡€',
-  64058 => '墨',
-  64059 => '層',
-  64060 => 'å±®',
-  64061 => 'æ‚”',
-  64062 => 'æ…¨',
-  64063 => '憎',
-  64064 => '懲',
-  64065 => '敏',
-  64066 => 'æ—¢',
-  64067 => 'æš‘',
-  64068 => '梅',
-  64069 => 'æµ·',
-  64070 => '渚',
-  64071 => 'æ¼¢',
-  64072 => 'ç…®',
-  64073 => '爫',
-  64074 => '琢',
-  64075 => '碑',
-  64076 => '社',
-  64077 => '祉',
-  64078 => '祈',
-  64079 => '祐',
-  64080 => '祖',
-  64081 => '祝',
-  64082 => '禍',
-  64083 => '禎',
-  64084 => 'ç©€',
-  64085 => '突',
-  64086 => '節',
-  64087 => 'ç·´',
-  64088 => '縉',
-  64089 => '繁',
-  64090 => 'ç½²',
-  64091 => '者',
-  64092 => '臭',
-  64093 => '艹',
-  64094 => '艹',
-  64095 => 'è‘—',
-  64096 => '褐',
-  64097 => '視',
-  64098 => '謁',
-  64099 => '謹',
-  64100 => '賓',
-  64101 => 'è´ˆ',
-  64102 => '辶',
-  64103 => '逸',
-  64104 => '難',
-  64105 => '響',
-  64106 => 'é »',
-  64107 => '恵',
-  64108 => '𤋮',
-  64109 => '舘',
-  64112 => '並',
-  64113 => '况',
-  64114 => 'å…¨',
-  64115 => 'ä¾€',
-  64116 => 'å……',
-  64117 => '冀',
-  64118 => '勇',
-  64119 => '勺',
-  64120 => '喝',
-  64121 => 'å••',
-  64122 => 'å–™',
-  64123 => 'å—¢',
-  64124 => 'å¡š',
-  64125 => '墳',
-  64126 => '奄',
-  64127 => '奔',
-  64128 => 'å©¢',
-  64129 => '嬨',
-  64130 => 'å»’',
-  64131 => 'å»™',
-  64132 => '彩',
-  64133 => 'å¾­',
-  64134 => '惘',
-  64135 => 'æ…Ž',
-  64136 => '愈',
-  64137 => '憎',
-  64138 => 'æ… ',
-  64139 => '懲',
-  64140 => '戴',
-  64141 => '揄',
-  64142 => '搜',
-  64143 => 'æ‘’',
-  64144 => 'æ•–',
-  64145 => 'æ™´',
-  64146 => '朗',
-  64147 => '望',
-  64148 => '杖',
-  64149 => 'æ­¹',
-  64150 => '殺',
-  64151 => '流',
-  64152 => 'æ»›',
-  64153 => '滋',
-  64154 => 'æ¼¢',
-  64155 => '瀞',
-  64156 => 'ç…®',
-  64157 => '瞧',
-  64158 => '爵',
-  64159 => '犯',
-  64160 => '猪',
-  64161 => '瑱',
-  64162 => '甆',
-  64163 => 'ç”»',
-  64164 => '瘝',
-  64165 => '瘟',
-  64166 => '益',
-  64167 => 'ç››',
-  64168 => 'ç›´',
-  64169 => '睊',
-  64170 => '着',
-  64171 => '磌',
-  64172 => '窱',
-  64173 => '節',
-  64174 => 'ç±»',
-  64175 => 'çµ›',
-  64176 => 'ç·´',
-  64177 => 'ç¼¾',
-  64178 => '者',
-  64179 => '荒',
-  64180 => '華',
-  64181 => '蝹',
-  64182 => '襁',
-  64183 => '覆',
-  64184 => '視',
-  64185 => '調',
-  64186 => '諸',
-  64187 => 'è«‹',
-  64188 => '謁',
-  64189 => '諾',
-  64190 => 'è«­',
-  64191 => '謹',
-  64192 => '變',
-  64193 => 'è´ˆ',
-  64194 => '輸',
-  64195 => '遲',
-  64196 => '醙',
-  64197 => '鉶',
-  64198 => '陼',
-  64199 => '難',
-  64200 => '靖',
-  64201 => '韛',
-  64202 => '響',
-  64203 => 'é ‹',
-  64204 => 'é »',
-  64205 => '鬒',
-  64206 => '龜',
-  64207 => '𢡊',
-  64208 => '𢡄',
-  64209 => '𣏕',
-  64210 => '㮝',
-  64211 => '䀘',
-  64212 => '䀹',
-  64213 => '𥉉',
-  64214 => '𥳐',
-  64215 => '𧻓',
-  64216 => '齃',
-  64217 => '龎',
-  64256 => 'ff',
-  64257 => 'fi',
-  64258 => 'fl',
-  64259 => 'ffi',
-  64260 => 'ffl',
-  64261 => 'st',
-  64262 => 'st',
-  64275 => 'Õ´Õ¶',
-  64276 => 'Õ´Õ¥',
-  64277 => 'Õ´Õ«',
-  64278 => 'Õ¾Õ¶',
-  64279 => 'Õ´Õ­',
-  64285 => '×™Ö´',
-  64287 => 'ײַ',
-  64288 => '×¢',
-  64289 => 'א',
-  64290 => 'ד',
-  64291 => '×”',
-  64292 => '×›',
-  64293 => 'ל',
-  64294 => 'ם',
-  64295 => 'ר',
-  64296 => 'ת',
-  64298 => 'שׁ',
-  64299 => 'שׂ',
-  64300 => 'שּׁ',
-  64301 => 'שּׂ',
-  64302 => 'אַ',
-  64303 => 'אָ',
-  64304 => 'אּ',
-  64305 => 'בּ',
-  64306 => '×’Ö¼',
-  64307 => 'דּ',
-  64308 => '×”Ö¼',
-  64309 => 'וּ',
-  64310 => '×–Ö¼',
-  64312 => 'טּ',
-  64313 => '×™Ö¼',
-  64314 => 'ךּ',
-  64315 => '×›Ö¼',
-  64316 => 'לּ',
-  64318 => 'מּ',
-  64320 => '× Ö¼',
-  64321 => 'סּ',
-  64323 => '×£Ö¼',
-  64324 => 'פּ',
-  64326 => 'צּ',
-  64327 => 'קּ',
-  64328 => 'רּ',
-  64329 => 'שּ',
-  64330 => 'תּ',
-  64331 => 'וֹ',
-  64332 => 'בֿ',
-  64333 => '×›Ö¿',
-  64334 => 'פֿ',
-  64335 => 'אל',
-  64336 => 'Ù±',
-  64337 => 'Ù±',
-  64338 => 'Ù»',
-  64339 => 'Ù»',
-  64340 => 'Ù»',
-  64341 => 'Ù»',
-  64342 => 'Ù¾',
-  64343 => 'Ù¾',
-  64344 => 'Ù¾',
-  64345 => 'Ù¾',
-  64346 => 'Ú€',
-  64347 => 'Ú€',
-  64348 => 'Ú€',
-  64349 => 'Ú€',
-  64350 => 'Ùº',
-  64351 => 'Ùº',
-  64352 => 'Ùº',
-  64353 => 'Ùº',
-  64354 => 'Ù¿',
-  64355 => 'Ù¿',
-  64356 => 'Ù¿',
-  64357 => 'Ù¿',
-  64358 => 'Ù¹',
-  64359 => 'Ù¹',
-  64360 => 'Ù¹',
-  64361 => 'Ù¹',
-  64362 => 'Ú¤',
-  64363 => 'Ú¤',
-  64364 => 'Ú¤',
-  64365 => 'Ú¤',
-  64366 => 'Ú¦',
-  64367 => 'Ú¦',
-  64368 => 'Ú¦',
-  64369 => 'Ú¦',
-  64370 => 'Ú„',
-  64371 => 'Ú„',
-  64372 => 'Ú„',
-  64373 => 'Ú„',
-  64374 => 'Úƒ',
-  64375 => 'Úƒ',
-  64376 => 'Úƒ',
-  64377 => 'Úƒ',
-  64378 => 'Ú†',
-  64379 => 'Ú†',
-  64380 => 'Ú†',
-  64381 => 'Ú†',
-  64382 => 'Ú‡',
-  64383 => 'Ú‡',
-  64384 => 'Ú‡',
-  64385 => 'Ú‡',
-  64386 => 'ڍ',
-  64387 => 'ڍ',
-  64388 => 'ڌ',
-  64389 => 'ڌ',
-  64390 => 'ÚŽ',
-  64391 => 'ÚŽ',
-  64392 => 'Úˆ',
-  64393 => 'Úˆ',
-  64394 => 'Ú˜',
-  64395 => 'Ú˜',
-  64396 => 'Ú‘',
-  64397 => 'Ú‘',
-  64398 => 'Ú©',
-  64399 => 'Ú©',
-  64400 => 'Ú©',
-  64401 => 'Ú©',
-  64402 => 'Ú¯',
-  64403 => 'Ú¯',
-  64404 => 'Ú¯',
-  64405 => 'Ú¯',
-  64406 => 'Ú³',
-  64407 => 'Ú³',
-  64408 => 'Ú³',
-  64409 => 'Ú³',
-  64410 => 'Ú±',
-  64411 => 'Ú±',
-  64412 => 'Ú±',
-  64413 => 'Ú±',
-  64414 => 'Úº',
-  64415 => 'Úº',
-  64416 => 'Ú»',
-  64417 => 'Ú»',
-  64418 => 'Ú»',
-  64419 => 'Ú»',
-  64420 => 'Û€',
-  64421 => 'Û€',
-  64422 => 'ہ',
-  64423 => 'ہ',
-  64424 => 'ہ',
-  64425 => 'ہ',
-  64426 => 'Ú¾',
-  64427 => 'Ú¾',
-  64428 => 'Ú¾',
-  64429 => 'Ú¾',
-  64430 => 'Û’',
-  64431 => 'Û’',
-  64432 => 'Û“',
-  64433 => 'Û“',
-  64467 => 'Ú­',
-  64468 => 'Ú­',
-  64469 => 'Ú­',
-  64470 => 'Ú­',
-  64471 => 'Û‡',
-  64472 => 'Û‡',
-  64473 => 'Û†',
-  64474 => 'Û†',
-  64475 => 'Ûˆ',
-  64476 => 'Ûˆ',
-  64477 => 'Û‡Ù´',
-  64478 => 'Û‹',
-  64479 => 'Û‹',
-  64480 => 'Û…',
-  64481 => 'Û…',
-  64482 => 'Û‰',
-  64483 => 'Û‰',
-  64484 => 'ې',
-  64485 => 'ې',
-  64486 => 'ې',
-  64487 => 'ې',
-  64488 => 'Ù‰',
-  64489 => 'Ù‰',
-  64490 => 'ئا',
-  64491 => 'ئا',
-  64492 => 'ئە',
-  64493 => 'ئە',
-  64494 => 'ئو',
-  64495 => 'ئو',
-  64496 => 'ئۇ',
-  64497 => 'ئۇ',
-  64498 => 'ئۆ',
-  64499 => 'ئۆ',
-  64500 => 'ئۈ',
-  64501 => 'ئۈ',
-  64502 => 'ئې',
-  64503 => 'ئې',
-  64504 => 'ئې',
-  64505 => 'ئى',
-  64506 => 'ئى',
-  64507 => 'ئى',
-  64508 => 'ی',
-  64509 => 'ی',
-  64510 => 'ی',
-  64511 => 'ی',
-  64512 => 'ئج',
-  64513 => 'ئح',
-  64514 => 'ئم',
-  64515 => 'ئى',
-  64516 => 'ئي',
-  64517 => 'بج',
-  64518 => 'بح',
-  64519 => 'بخ',
-  64520 => 'بم',
-  64521 => 'بى',
-  64522 => 'بي',
-  64523 => 'تج',
-  64524 => 'تح',
-  64525 => 'تخ',
-  64526 => 'تم',
-  64527 => 'تى',
-  64528 => 'تي',
-  64529 => 'ثج',
-  64530 => 'ثم',
-  64531 => 'ثى',
-  64532 => 'ثي',
-  64533 => 'جح',
-  64534 => 'جم',
-  64535 => 'حج',
-  64536 => 'حم',
-  64537 => 'خج',
-  64538 => 'خح',
-  64539 => 'خم',
-  64540 => 'سج',
-  64541 => 'سح',
-  64542 => 'سخ',
-  64543 => 'سم',
-  64544 => 'صح',
-  64545 => 'صم',
-  64546 => 'ضج',
-  64547 => 'ضح',
-  64548 => 'ضخ',
-  64549 => 'ضم',
-  64550 => 'طح',
-  64551 => 'طم',
-  64552 => 'ظم',
-  64553 => 'عج',
-  64554 => 'عم',
-  64555 => 'غج',
-  64556 => 'غم',
-  64557 => 'فج',
-  64558 => 'فح',
-  64559 => 'فخ',
-  64560 => 'فم',
-  64561 => 'فى',
-  64562 => 'في',
-  64563 => 'قح',
-  64564 => 'قم',
-  64565 => 'قى',
-  64566 => 'قي',
-  64567 => 'كا',
-  64568 => 'كج',
-  64569 => 'كح',
-  64570 => 'كخ',
-  64571 => 'كل',
-  64572 => 'كم',
-  64573 => 'كى',
-  64574 => 'كي',
-  64575 => 'لج',
-  64576 => 'لح',
-  64577 => 'لخ',
-  64578 => 'لم',
-  64579 => 'لى',
-  64580 => 'لي',
-  64581 => 'مج',
-  64582 => 'مح',
-  64583 => 'مخ',
-  64584 => 'مم',
-  64585 => 'مى',
-  64586 => 'مي',
-  64587 => 'نج',
-  64588 => 'نح',
-  64589 => 'نخ',
-  64590 => 'نم',
-  64591 => 'نى',
-  64592 => 'ني',
-  64593 => 'هج',
-  64594 => 'هم',
-  64595 => 'هى',
-  64596 => 'هي',
-  64597 => 'يج',
-  64598 => 'يح',
-  64599 => 'يخ',
-  64600 => 'يم',
-  64601 => 'يى',
-  64602 => 'يي',
-  64603 => 'ذٰ',
-  64604 => 'رٰ',
-  64605 => 'ىٰ',
-  64612 => 'ئر',
-  64613 => 'ئز',
-  64614 => 'ئم',
-  64615 => 'ئن',
-  64616 => 'ئى',
-  64617 => 'ئي',
-  64618 => 'بر',
-  64619 => 'بز',
-  64620 => 'بم',
-  64621 => 'بن',
-  64622 => 'بى',
-  64623 => 'بي',
-  64624 => 'تر',
-  64625 => 'تز',
-  64626 => 'تم',
-  64627 => 'تن',
-  64628 => 'تى',
-  64629 => 'تي',
-  64630 => 'ثر',
-  64631 => 'ثز',
-  64632 => 'ثم',
-  64633 => 'ثن',
-  64634 => 'ثى',
-  64635 => 'ثي',
-  64636 => 'فى',
-  64637 => 'في',
-  64638 => 'قى',
-  64639 => 'قي',
-  64640 => 'كا',
-  64641 => 'كل',
-  64642 => 'كم',
-  64643 => 'كى',
-  64644 => 'كي',
-  64645 => 'لم',
-  64646 => 'لى',
-  64647 => 'لي',
-  64648 => 'ما',
-  64649 => 'مم',
-  64650 => 'نر',
-  64651 => 'نز',
-  64652 => 'نم',
-  64653 => 'نن',
-  64654 => 'نى',
-  64655 => 'ني',
-  64656 => 'ىٰ',
-  64657 => 'ير',
-  64658 => 'يز',
-  64659 => 'يم',
-  64660 => 'ين',
-  64661 => 'يى',
-  64662 => 'يي',
-  64663 => 'ئج',
-  64664 => 'ئح',
-  64665 => 'ئخ',
-  64666 => 'ئم',
-  64667 => 'ئه',
-  64668 => 'بج',
-  64669 => 'بح',
-  64670 => 'بخ',
-  64671 => 'بم',
-  64672 => 'به',
-  64673 => 'تج',
-  64674 => 'تح',
-  64675 => 'تخ',
-  64676 => 'تم',
-  64677 => 'ته',
-  64678 => 'ثم',
-  64679 => 'جح',
-  64680 => 'جم',
-  64681 => 'حج',
-  64682 => 'حم',
-  64683 => 'خج',
-  64684 => 'خم',
-  64685 => 'سج',
-  64686 => 'سح',
-  64687 => 'سخ',
-  64688 => 'سم',
-  64689 => 'صح',
-  64690 => 'صخ',
-  64691 => 'صم',
-  64692 => 'ضج',
-  64693 => 'ضح',
-  64694 => 'ضخ',
-  64695 => 'ضم',
-  64696 => 'طح',
-  64697 => 'ظم',
-  64698 => 'عج',
-  64699 => 'عم',
-  64700 => 'غج',
-  64701 => 'غم',
-  64702 => 'فج',
-  64703 => 'فح',
-  64704 => 'فخ',
-  64705 => 'فم',
-  64706 => 'قح',
-  64707 => 'قم',
-  64708 => 'كج',
-  64709 => 'كح',
-  64710 => 'كخ',
-  64711 => 'كل',
-  64712 => 'كم',
-  64713 => 'لج',
-  64714 => 'لح',
-  64715 => 'لخ',
-  64716 => 'لم',
-  64717 => 'له',
-  64718 => 'مج',
-  64719 => 'مح',
-  64720 => 'مخ',
-  64721 => 'مم',
-  64722 => 'نج',
-  64723 => 'نح',
-  64724 => 'نخ',
-  64725 => 'نم',
-  64726 => 'نه',
-  64727 => 'هج',
-  64728 => 'هم',
-  64729 => 'هٰ',
-  64730 => 'يج',
-  64731 => 'يح',
-  64732 => 'يخ',
-  64733 => 'يم',
-  64734 => 'يه',
-  64735 => 'ئم',
-  64736 => 'ئه',
-  64737 => 'بم',
-  64738 => 'به',
-  64739 => 'تم',
-  64740 => 'ته',
-  64741 => 'ثم',
-  64742 => 'ثه',
-  64743 => 'سم',
-  64744 => 'سه',
-  64745 => 'شم',
-  64746 => 'شه',
-  64747 => 'كل',
-  64748 => 'كم',
-  64749 => 'لم',
-  64750 => 'نم',
-  64751 => 'نه',
-  64752 => 'يم',
-  64753 => 'يه',
-  64754 => 'Ù€ÙŽÙ‘',
-  64755 => 'ـُّ',
-  64756 => 'ـِّ',
-  64757 => 'طى',
-  64758 => 'طي',
-  64759 => 'عى',
-  64760 => 'عي',
-  64761 => 'غى',
-  64762 => 'غي',
-  64763 => 'سى',
-  64764 => 'سي',
-  64765 => 'شى',
-  64766 => 'شي',
-  64767 => 'حى',
-  64768 => 'حي',
-  64769 => 'جى',
-  64770 => 'جي',
-  64771 => 'خى',
-  64772 => 'خي',
-  64773 => 'صى',
-  64774 => 'صي',
-  64775 => 'ضى',
-  64776 => 'ضي',
-  64777 => 'شج',
-  64778 => 'شح',
-  64779 => 'شخ',
-  64780 => 'شم',
-  64781 => 'شر',
-  64782 => 'سر',
-  64783 => 'صر',
-  64784 => 'ضر',
-  64785 => 'طى',
-  64786 => 'طي',
-  64787 => 'عى',
-  64788 => 'عي',
-  64789 => 'غى',
-  64790 => 'غي',
-  64791 => 'سى',
-  64792 => 'سي',
-  64793 => 'شى',
-  64794 => 'شي',
-  64795 => 'حى',
-  64796 => 'حي',
-  64797 => 'جى',
-  64798 => 'جي',
-  64799 => 'خى',
-  64800 => 'خي',
-  64801 => 'صى',
-  64802 => 'صي',
-  64803 => 'ضى',
-  64804 => 'ضي',
-  64805 => 'شج',
-  64806 => 'شح',
-  64807 => 'شخ',
-  64808 => 'شم',
-  64809 => 'شر',
-  64810 => 'سر',
-  64811 => 'صر',
-  64812 => 'ضر',
-  64813 => 'شج',
-  64814 => 'شح',
-  64815 => 'شخ',
-  64816 => 'شم',
-  64817 => 'سه',
-  64818 => 'شه',
-  64819 => 'طم',
-  64820 => 'سج',
-  64821 => 'سح',
-  64822 => 'سخ',
-  64823 => 'شج',
-  64824 => 'شح',
-  64825 => 'شخ',
-  64826 => 'طم',
-  64827 => 'ظم',
-  64828 => 'اً',
-  64829 => 'اً',
-  64848 => 'تجم',
-  64849 => 'تحج',
-  64850 => 'تحج',
-  64851 => 'تحم',
-  64852 => 'تخم',
-  64853 => 'تمج',
-  64854 => 'تمح',
-  64855 => 'تمخ',
-  64856 => 'جمح',
-  64857 => 'جمح',
-  64858 => 'حمي',
-  64859 => 'حمى',
-  64860 => 'سحج',
-  64861 => 'سجح',
-  64862 => 'سجى',
-  64863 => 'سمح',
-  64864 => 'سمح',
-  64865 => 'سمج',
-  64866 => 'سمم',
-  64867 => 'سمم',
-  64868 => 'صحح',
-  64869 => 'صحح',
-  64870 => 'صمم',
-  64871 => 'شحم',
-  64872 => 'شحم',
-  64873 => 'شجي',
-  64874 => 'شمخ',
-  64875 => 'شمخ',
-  64876 => 'شمم',
-  64877 => 'شمم',
-  64878 => 'ضحى',
-  64879 => 'ضخم',
-  64880 => 'ضخم',
-  64881 => 'طمح',
-  64882 => 'طمح',
-  64883 => 'طمم',
-  64884 => 'طمي',
-  64885 => 'عجم',
-  64886 => 'عمم',
-  64887 => 'عمم',
-  64888 => 'عمى',
-  64889 => 'غمم',
-  64890 => 'غمي',
-  64891 => 'غمى',
-  64892 => 'فخم',
-  64893 => 'فخم',
-  64894 => 'قمح',
-  64895 => 'قمم',
-  64896 => 'لحم',
-  64897 => 'لحي',
-  64898 => 'لحى',
-  64899 => 'لجج',
-  64900 => 'لجج',
-  64901 => 'لخم',
-  64902 => 'لخم',
-  64903 => 'لمح',
-  64904 => 'لمح',
-  64905 => 'محج',
-  64906 => 'محم',
-  64907 => 'محي',
-  64908 => 'مجح',
-  64909 => 'مجم',
-  64910 => 'مخج',
-  64911 => 'مخم',
-  64914 => 'مجخ',
-  64915 => 'همج',
-  64916 => 'همم',
-  64917 => 'نحم',
-  64918 => 'نحى',
-  64919 => 'نجم',
-  64920 => 'نجم',
-  64921 => 'نجى',
-  64922 => 'نمي',
-  64923 => 'نمى',
-  64924 => 'يمم',
-  64925 => 'يمم',
-  64926 => 'بخي',
-  64927 => 'تجي',
-  64928 => 'تجى',
-  64929 => 'تخي',
-  64930 => 'تخى',
-  64931 => 'تمي',
-  64932 => 'تمى',
-  64933 => 'جمي',
-  64934 => 'جحى',
-  64935 => 'جمى',
-  64936 => 'سخى',
-  64937 => 'صحي',
-  64938 => 'شحي',
-  64939 => 'ضحي',
-  64940 => 'لجي',
-  64941 => 'لمي',
-  64942 => 'يحي',
-  64943 => 'يجي',
-  64944 => 'يمي',
-  64945 => 'ممي',
-  64946 => 'قمي',
-  64947 => 'نحي',
-  64948 => 'قمح',
-  64949 => 'لحم',
-  64950 => 'عمي',
-  64951 => 'كمي',
-  64952 => 'نجح',
-  64953 => 'مخي',
-  64954 => 'لجم',
-  64955 => 'كمم',
-  64956 => 'لجم',
-  64957 => 'نجح',
-  64958 => 'جحي',
-  64959 => 'حجي',
-  64960 => 'مجي',
-  64961 => 'فمي',
-  64962 => 'بحي',
-  64963 => 'كمم',
-  64964 => 'عجم',
-  64965 => 'صمم',
-  64966 => 'سخي',
-  64967 => 'نجي',
-  65008 => 'صلے',
-  65009 => 'قلے',
-  65010 => 'الله',
-  65011 => 'اكبر',
-  65012 => 'محمد',
-  65013 => 'صلعم',
-  65014 => 'رسول',
-  65015 => 'عليه',
-  65016 => 'وسلم',
-  65017 => 'صلى',
-  65020 => 'ریال',
-  65041 => '、',
-  65047 => '〖',
-  65048 => '〗',
-  65073 => '—',
-  65074 => '–',
-  65081 => '〔',
-  65082 => '〕',
-  65083 => '【',
-  65084 => '】',
-  65085 => '《',
-  65086 => '》',
-  65087 => '〈',
-  65088 => '〉',
-  65089 => '「',
-  65090 => '」',
-  65091 => '『',
-  65092 => '』',
-  65105 => '、',
-  65112 => '—',
-  65117 => '〔',
-  65118 => '〕',
-  65123 => '-',
-  65137 => 'ـً',
-  65143 => 'Ù€ÙŽ',
-  65145 => 'ـُ',
-  65147 => 'ـِ',
-  65149 => 'ـّ',
-  65151 => 'ـْ',
-  65152 => 'Ø¡',
-  65153 => 'Ø¢',
-  65154 => 'Ø¢',
-  65155 => 'Ø£',
-  65156 => 'Ø£',
-  65157 => 'ؤ',
-  65158 => 'ؤ',
-  65159 => 'Ø¥',
-  65160 => 'Ø¥',
-  65161 => 'ئ',
-  65162 => 'ئ',
-  65163 => 'ئ',
-  65164 => 'ئ',
-  65165 => 'ا',
-  65166 => 'ا',
-  65167 => 'ب',
-  65168 => 'ب',
-  65169 => 'ب',
-  65170 => 'ب',
-  65171 => 'Ø©',
-  65172 => 'Ø©',
-  65173 => 'ت',
-  65174 => 'ت',
-  65175 => 'ت',
-  65176 => 'ت',
-  65177 => 'Ø«',
-  65178 => 'Ø«',
-  65179 => 'Ø«',
-  65180 => 'Ø«',
-  65181 => 'ج',
-  65182 => 'ج',
-  65183 => 'ج',
-  65184 => 'ج',
-  65185 => 'Ø­',
-  65186 => 'Ø­',
-  65187 => 'Ø­',
-  65188 => 'Ø­',
-  65189 => 'Ø®',
-  65190 => 'Ø®',
-  65191 => 'Ø®',
-  65192 => 'Ø®',
-  65193 => 'د',
-  65194 => 'د',
-  65195 => 'Ø°',
-  65196 => 'Ø°',
-  65197 => 'ر',
-  65198 => 'ر',
-  65199 => 'ز',
-  65200 => 'ز',
-  65201 => 'س',
-  65202 => 'س',
-  65203 => 'س',
-  65204 => 'س',
-  65205 => 'Ø´',
-  65206 => 'Ø´',
-  65207 => 'Ø´',
-  65208 => 'Ø´',
-  65209 => 'ص',
-  65210 => 'ص',
-  65211 => 'ص',
-  65212 => 'ص',
-  65213 => 'ض',
-  65214 => 'ض',
-  65215 => 'ض',
-  65216 => 'ض',
-  65217 => 'Ø·',
-  65218 => 'Ø·',
-  65219 => 'Ø·',
-  65220 => 'Ø·',
-  65221 => 'ظ',
-  65222 => 'ظ',
-  65223 => 'ظ',
-  65224 => 'ظ',
-  65225 => 'ع',
-  65226 => 'ع',
-  65227 => 'ع',
-  65228 => 'ع',
-  65229 => 'غ',
-  65230 => 'غ',
-  65231 => 'غ',
-  65232 => 'غ',
-  65233 => 'ف',
-  65234 => 'ف',
-  65235 => 'ف',
-  65236 => 'ف',
-  65237 => 'Ù‚',
-  65238 => 'Ù‚',
-  65239 => 'Ù‚',
-  65240 => 'Ù‚',
-  65241 => 'Ùƒ',
-  65242 => 'Ùƒ',
-  65243 => 'Ùƒ',
-  65244 => 'Ùƒ',
-  65245 => 'Ù„',
-  65246 => 'Ù„',
-  65247 => 'Ù„',
-  65248 => 'Ù„',
-  65249 => 'Ù…',
-  65250 => 'Ù…',
-  65251 => 'Ù…',
-  65252 => 'Ù…',
-  65253 => 'Ù†',
-  65254 => 'Ù†',
-  65255 => 'Ù†',
-  65256 => 'Ù†',
-  65257 => 'Ù‡',
-  65258 => 'Ù‡',
-  65259 => 'Ù‡',
-  65260 => 'Ù‡',
-  65261 => 'Ùˆ',
-  65262 => 'Ùˆ',
-  65263 => 'Ù‰',
-  65264 => 'Ù‰',
-  65265 => 'ÙŠ',
-  65266 => 'ÙŠ',
-  65267 => 'ÙŠ',
-  65268 => 'ÙŠ',
-  65269 => 'لآ',
-  65270 => 'لآ',
-  65271 => 'لأ',
-  65272 => 'لأ',
-  65273 => 'لإ',
-  65274 => 'لإ',
-  65275 => 'لا',
-  65276 => 'لا',
-  65293 => '-',
-  65294 => '.',
-  65296 => '0',
-  65297 => '1',
-  65298 => '2',
-  65299 => '3',
-  65300 => '4',
-  65301 => '5',
-  65302 => '6',
-  65303 => '7',
-  65304 => '8',
-  65305 => '9',
-  65313 => 'a',
-  65314 => 'b',
-  65315 => 'c',
-  65316 => 'd',
-  65317 => 'e',
-  65318 => 'f',
-  65319 => 'g',
-  65320 => 'h',
-  65321 => 'i',
-  65322 => 'j',
-  65323 => 'k',
-  65324 => 'l',
-  65325 => 'm',
-  65326 => 'n',
-  65327 => 'o',
-  65328 => 'p',
-  65329 => 'q',
-  65330 => 'r',
-  65331 => 's',
-  65332 => 't',
-  65333 => 'u',
-  65334 => 'v',
-  65335 => 'w',
-  65336 => 'x',
-  65337 => 'y',
-  65338 => 'z',
-  65345 => 'a',
-  65346 => 'b',
-  65347 => 'c',
-  65348 => 'd',
-  65349 => 'e',
-  65350 => 'f',
-  65351 => 'g',
-  65352 => 'h',
-  65353 => 'i',
-  65354 => 'j',
-  65355 => 'k',
-  65356 => 'l',
-  65357 => 'm',
-  65358 => 'n',
-  65359 => 'o',
-  65360 => 'p',
-  65361 => 'q',
-  65362 => 'r',
-  65363 => 's',
-  65364 => 't',
-  65365 => 'u',
-  65366 => 'v',
-  65367 => 'w',
-  65368 => 'x',
-  65369 => 'y',
-  65370 => 'z',
-  65375 => '⦅',
-  65376 => '⦆',
-  65377 => '.',
-  65378 => '「',
-  65379 => '」',
-  65380 => '、',
-  65381 => '・',
-  65382 => 'ヲ',
-  65383 => 'ã‚¡',
-  65384 => 'ã‚£',
-  65385 => 'ã‚¥',
-  65386 => 'ェ',
-  65387 => 'ã‚©',
-  65388 => 'ャ',
-  65389 => 'ュ',
-  65390 => 'ョ',
-  65391 => 'ッ',
-  65392 => 'ー',
-  65393 => 'ã‚¢',
-  65394 => 'イ',
-  65395 => 'ウ',
-  65396 => 'エ',
-  65397 => 'オ',
-  65398 => 'ã‚«',
-  65399 => 'ã‚­',
-  65400 => 'ク',
-  65401 => 'ケ',
-  65402 => 'コ',
-  65403 => 'サ',
-  65404 => 'ã‚·',
-  65405 => 'ス',
-  65406 => 'ã‚»',
-  65407 => 'ソ',
-  65408 => 'ã‚¿',
-  65409 => 'チ',
-  65410 => 'ツ',
-  65411 => 'テ',
-  65412 => 'ト',
-  65413 => 'ナ',
-  65414 => 'ニ',
-  65415 => 'ヌ',
-  65416 => 'ネ',
-  65417 => 'ノ',
-  65418 => 'ハ',
-  65419 => 'ヒ',
-  65420 => 'フ',
-  65421 => 'ヘ',
-  65422 => 'ホ',
-  65423 => 'マ',
-  65424 => 'ミ',
-  65425 => 'ム',
-  65426 => 'メ',
-  65427 => 'モ',
-  65428 => 'ヤ',
-  65429 => 'ユ',
-  65430 => 'ヨ',
-  65431 => 'ラ',
-  65432 => 'リ',
-  65433 => 'ル',
-  65434 => 'レ',
-  65435 => 'ロ',
-  65436 => 'ワ',
-  65437 => 'ン',
-  65438 => 'ã‚™',
-  65439 => 'ã‚š',
-  65441 => 'á„€',
-  65442 => 'ᄁ',
-  65443 => 'ᆪ',
-  65444 => 'á„‚',
-  65445 => 'ᆬ',
-  65446 => 'ᆭ',
-  65447 => 'ᄃ',
-  65448 => 'á„„',
-  65449 => 'á„…',
-  65450 => 'ᆰ',
-  65451 => 'ᆱ',
-  65452 => 'ᆲ',
-  65453 => 'ᆳ',
-  65454 => 'ᆴ',
-  65455 => 'ᆵ',
-  65456 => 'á„š',
-  65457 => 'ᄆ',
-  65458 => 'ᄇ',
-  65459 => 'ᄈ',
-  65460 => 'á„¡',
-  65461 => 'ᄉ',
-  65462 => 'á„Š',
-  65463 => 'á„‹',
-  65464 => 'ᄌ',
-  65465 => 'ᄍ',
-  65466 => 'á„Ž',
-  65467 => 'ᄏ',
-  65468 => 'ᄐ',
-  65469 => 'á„‘',
-  65470 => 'á„’',
-  65474 => 'á…¡',
-  65475 => 'á…¢',
-  65476 => 'á…£',
-  65477 => 'á…¤',
-  65478 => 'á…¥',
-  65479 => 'á…¦',
-  65482 => 'á…§',
-  65483 => 'á…¨',
-  65484 => 'á…©',
-  65485 => 'á…ª',
-  65486 => 'á…«',
-  65487 => 'á…¬',
-  65490 => 'á…­',
-  65491 => 'á…®',
-  65492 => 'á…¯',
-  65493 => 'á…°',
-  65494 => 'á…±',
-  65495 => 'á…²',
-  65498 => 'á…³',
-  65499 => 'á…´',
-  65500 => 'á…µ',
-  65504 => '¢',
-  65505 => '£',
-  65506 => '¬',
-  65508 => '¦',
-  65509 => 'Â¥',
-  65510 => 'â‚©',
-  65512 => '│',
-  65513 => '←',
-  65514 => '↑',
-  65515 => '→',
-  65516 => '↓',
-  65517 => 'â– ',
-  65518 => 'â—‹',
-  66560 => '𐐨',
-  66561 => '𐐩',
-  66562 => '𐐪',
-  66563 => '𐐫',
-  66564 => '𐐬',
-  66565 => '𐐭',
-  66566 => '𐐮',
-  66567 => '𐐯',
-  66568 => '𐐰',
-  66569 => '𐐱',
-  66570 => '𐐲',
-  66571 => '𐐳',
-  66572 => '𐐴',
-  66573 => '𐐵',
-  66574 => '𐐶',
-  66575 => '𐐷',
-  66576 => '𐐸',
-  66577 => '𐐹',
-  66578 => '𐐺',
-  66579 => '𐐻',
-  66580 => '𐐼',
-  66581 => '𐐽',
-  66582 => '𐐾',
-  66583 => '𐐿',
-  66584 => '𐑀',
-  66585 => '𐑁',
-  66586 => '𐑂',
-  66587 => '𐑃',
-  66588 => '𐑄',
-  66589 => '𐑅',
-  66590 => '𐑆',
-  66591 => '𐑇',
-  66592 => '𐑈',
-  66593 => '𐑉',
-  66594 => '𐑊',
-  66595 => '𐑋',
-  66596 => '𐑌',
-  66597 => '𐑍',
-  66598 => '𐑎',
-  66599 => '𐑏',
-  66736 => '𐓘',
-  66737 => '𐓙',
-  66738 => '𐓚',
-  66739 => '𐓛',
-  66740 => '𐓜',
-  66741 => '𐓝',
-  66742 => '𐓞',
-  66743 => '𐓟',
-  66744 => '𐓠',
-  66745 => '𐓡',
-  66746 => '𐓢',
-  66747 => '𐓣',
-  66748 => '𐓤',
-  66749 => '𐓥',
-  66750 => '𐓦',
-  66751 => '𐓧',
-  66752 => '𐓨',
-  66753 => '𐓩',
-  66754 => '𐓪',
-  66755 => '𐓫',
-  66756 => '𐓬',
-  66757 => '𐓭',
-  66758 => '𐓮',
-  66759 => '𐓯',
-  66760 => '𐓰',
-  66761 => '𐓱',
-  66762 => '𐓲',
-  66763 => '𐓳',
-  66764 => '𐓴',
-  66765 => '𐓵',
-  66766 => '𐓶',
-  66767 => '𐓷',
-  66768 => '𐓸',
-  66769 => '𐓹',
-  66770 => '𐓺',
-  66771 => '𐓻',
-  68736 => '𐳀',
-  68737 => '𐳁',
-  68738 => '𐳂',
-  68739 => '𐳃',
-  68740 => '𐳄',
-  68741 => '𐳅',
-  68742 => '𐳆',
-  68743 => '𐳇',
-  68744 => '𐳈',
-  68745 => '𐳉',
-  68746 => '𐳊',
-  68747 => '𐳋',
-  68748 => '𐳌',
-  68749 => '𐳍',
-  68750 => '𐳎',
-  68751 => '𐳏',
-  68752 => '𐳐',
-  68753 => '𐳑',
-  68754 => '𐳒',
-  68755 => '𐳓',
-  68756 => '𐳔',
-  68757 => '𐳕',
-  68758 => '𐳖',
-  68759 => '𐳗',
-  68760 => '𐳘',
-  68761 => '𐳙',
-  68762 => '𐳚',
-  68763 => '𐳛',
-  68764 => '𐳜',
-  68765 => '𐳝',
-  68766 => '𐳞',
-  68767 => '𐳟',
-  68768 => '𐳠',
-  68769 => '𐳡',
-  68770 => '𐳢',
-  68771 => '𐳣',
-  68772 => '𐳤',
-  68773 => '𐳥',
-  68774 => '𐳦',
-  68775 => '𐳧',
-  68776 => '𐳨',
-  68777 => '𐳩',
-  68778 => '𐳪',
-  68779 => '𐳫',
-  68780 => '𐳬',
-  68781 => '𐳭',
-  68782 => '𐳮',
-  68783 => '𐳯',
-  68784 => '𐳰',
-  68785 => '𐳱',
-  68786 => '𐳲',
-  71840 => 'ð‘£€',
-  71841 => '𑣁',
-  71842 => '𑣂',
-  71843 => '𑣃',
-  71844 => '𑣄',
-  71845 => 'ð‘£…',
-  71846 => '𑣆',
-  71847 => '𑣇',
-  71848 => '𑣈',
-  71849 => '𑣉',
-  71850 => '𑣊',
-  71851 => '𑣋',
-  71852 => '𑣌',
-  71853 => '𑣍',
-  71854 => '𑣎',
-  71855 => '𑣏',
-  71856 => '𑣐',
-  71857 => '𑣑',
-  71858 => 'ð‘£’',
-  71859 => '𑣓',
-  71860 => 'ð‘£”',
-  71861 => '𑣕',
-  71862 => 'ð‘£–',
-  71863 => 'ð‘£—',
-  71864 => '𑣘',
-  71865 => 'ð‘£™',
-  71866 => '𑣚',
-  71867 => 'ð‘£›',
-  71868 => '𑣜',
-  71869 => '𑣝',
-  71870 => '𑣞',
-  71871 => '𑣟',
-  93760 => 'ð–¹ ',
-  93761 => '𖹡',
-  93762 => 'ð–¹¢',
-  93763 => 'ð–¹£',
-  93764 => '𖹤',
-  93765 => 'ð–¹¥',
-  93766 => '𖹦',
-  93767 => '𖹧',
-  93768 => '𖹨',
-  93769 => '𖹩',
-  93770 => '𖹪',
-  93771 => '𖹫',
-  93772 => '𖹬',
-  93773 => 'ð–¹­',
-  93774 => 'ð–¹®',
-  93775 => '𖹯',
-  93776 => 'ð–¹°',
-  93777 => 'ð–¹±',
-  93778 => 'ð–¹²',
-  93779 => 'ð–¹³',
-  93780 => 'ð–¹´',
-  93781 => 'ð–¹µ',
-  93782 => '𖹶',
-  93783 => 'ð–¹·',
-  93784 => '𖹸',
-  93785 => 'ð–¹¹',
-  93786 => '𖹺',
-  93787 => 'ð–¹»',
-  93788 => 'ð–¹¼',
-  93789 => 'ð–¹½',
-  93790 => 'ð–¹¾',
-  93791 => '𖹿',
-  119134 => '𝅗𝅥',
-  119135 => '𝅘𝅥',
-  119136 => '𝅘𝅥𝅮',
-  119137 => '𝅘𝅥𝅯',
-  119138 => '𝅘𝅥𝅰',
-  119139 => '𝅘𝅥𝅱',
-  119140 => '𝅘𝅥𝅲',
-  119227 => '𝆹𝅥',
-  119228 => '𝆺𝅥',
-  119229 => '𝆹𝅥𝅮',
-  119230 => '𝆺𝅥𝅮',
-  119231 => '𝆹𝅥𝅯',
-  119232 => '𝆺𝅥𝅯',
-  119808 => 'a',
-  119809 => 'b',
-  119810 => 'c',
-  119811 => 'd',
-  119812 => 'e',
-  119813 => 'f',
-  119814 => 'g',
-  119815 => 'h',
-  119816 => 'i',
-  119817 => 'j',
-  119818 => 'k',
-  119819 => 'l',
-  119820 => 'm',
-  119821 => 'n',
-  119822 => 'o',
-  119823 => 'p',
-  119824 => 'q',
-  119825 => 'r',
-  119826 => 's',
-  119827 => 't',
-  119828 => 'u',
-  119829 => 'v',
-  119830 => 'w',
-  119831 => 'x',
-  119832 => 'y',
-  119833 => 'z',
-  119834 => 'a',
-  119835 => 'b',
-  119836 => 'c',
-  119837 => 'd',
-  119838 => 'e',
-  119839 => 'f',
-  119840 => 'g',
-  119841 => 'h',
-  119842 => 'i',
-  119843 => 'j',
-  119844 => 'k',
-  119845 => 'l',
-  119846 => 'm',
-  119847 => 'n',
-  119848 => 'o',
-  119849 => 'p',
-  119850 => 'q',
-  119851 => 'r',
-  119852 => 's',
-  119853 => 't',
-  119854 => 'u',
-  119855 => 'v',
-  119856 => 'w',
-  119857 => 'x',
-  119858 => 'y',
-  119859 => 'z',
-  119860 => 'a',
-  119861 => 'b',
-  119862 => 'c',
-  119863 => 'd',
-  119864 => 'e',
-  119865 => 'f',
-  119866 => 'g',
-  119867 => 'h',
-  119868 => 'i',
-  119869 => 'j',
-  119870 => 'k',
-  119871 => 'l',
-  119872 => 'm',
-  119873 => 'n',
-  119874 => 'o',
-  119875 => 'p',
-  119876 => 'q',
-  119877 => 'r',
-  119878 => 's',
-  119879 => 't',
-  119880 => 'u',
-  119881 => 'v',
-  119882 => 'w',
-  119883 => 'x',
-  119884 => 'y',
-  119885 => 'z',
-  119886 => 'a',
-  119887 => 'b',
-  119888 => 'c',
-  119889 => 'd',
-  119890 => 'e',
-  119891 => 'f',
-  119892 => 'g',
-  119894 => 'i',
-  119895 => 'j',
-  119896 => 'k',
-  119897 => 'l',
-  119898 => 'm',
-  119899 => 'n',
-  119900 => 'o',
-  119901 => 'p',
-  119902 => 'q',
-  119903 => 'r',
-  119904 => 's',
-  119905 => 't',
-  119906 => 'u',
-  119907 => 'v',
-  119908 => 'w',
-  119909 => 'x',
-  119910 => 'y',
-  119911 => 'z',
-  119912 => 'a',
-  119913 => 'b',
-  119914 => 'c',
-  119915 => 'd',
-  119916 => 'e',
-  119917 => 'f',
-  119918 => 'g',
-  119919 => 'h',
-  119920 => 'i',
-  119921 => 'j',
-  119922 => 'k',
-  119923 => 'l',
-  119924 => 'm',
-  119925 => 'n',
-  119926 => 'o',
-  119927 => 'p',
-  119928 => 'q',
-  119929 => 'r',
-  119930 => 's',
-  119931 => 't',
-  119932 => 'u',
-  119933 => 'v',
-  119934 => 'w',
-  119935 => 'x',
-  119936 => 'y',
-  119937 => 'z',
-  119938 => 'a',
-  119939 => 'b',
-  119940 => 'c',
-  119941 => 'd',
-  119942 => 'e',
-  119943 => 'f',
-  119944 => 'g',
-  119945 => 'h',
-  119946 => 'i',
-  119947 => 'j',
-  119948 => 'k',
-  119949 => 'l',
-  119950 => 'm',
-  119951 => 'n',
-  119952 => 'o',
-  119953 => 'p',
-  119954 => 'q',
-  119955 => 'r',
-  119956 => 's',
-  119957 => 't',
-  119958 => 'u',
-  119959 => 'v',
-  119960 => 'w',
-  119961 => 'x',
-  119962 => 'y',
-  119963 => 'z',
-  119964 => 'a',
-  119966 => 'c',
-  119967 => 'd',
-  119970 => 'g',
-  119973 => 'j',
-  119974 => 'k',
-  119977 => 'n',
-  119978 => 'o',
-  119979 => 'p',
-  119980 => 'q',
-  119982 => 's',
-  119983 => 't',
-  119984 => 'u',
-  119985 => 'v',
-  119986 => 'w',
-  119987 => 'x',
-  119988 => 'y',
-  119989 => 'z',
-  119990 => 'a',
-  119991 => 'b',
-  119992 => 'c',
-  119993 => 'd',
-  119995 => 'f',
-  119997 => 'h',
-  119998 => 'i',
-  119999 => 'j',
-  120000 => 'k',
-  120001 => 'l',
-  120002 => 'm',
-  120003 => 'n',
-  120005 => 'p',
-  120006 => 'q',
-  120007 => 'r',
-  120008 => 's',
-  120009 => 't',
-  120010 => 'u',
-  120011 => 'v',
-  120012 => 'w',
-  120013 => 'x',
-  120014 => 'y',
-  120015 => 'z',
-  120016 => 'a',
-  120017 => 'b',
-  120018 => 'c',
-  120019 => 'd',
-  120020 => 'e',
-  120021 => 'f',
-  120022 => 'g',
-  120023 => 'h',
-  120024 => 'i',
-  120025 => 'j',
-  120026 => 'k',
-  120027 => 'l',
-  120028 => 'm',
-  120029 => 'n',
-  120030 => 'o',
-  120031 => 'p',
-  120032 => 'q',
-  120033 => 'r',
-  120034 => 's',
-  120035 => 't',
-  120036 => 'u',
-  120037 => 'v',
-  120038 => 'w',
-  120039 => 'x',
-  120040 => 'y',
-  120041 => 'z',
-  120042 => 'a',
-  120043 => 'b',
-  120044 => 'c',
-  120045 => 'd',
-  120046 => 'e',
-  120047 => 'f',
-  120048 => 'g',
-  120049 => 'h',
-  120050 => 'i',
-  120051 => 'j',
-  120052 => 'k',
-  120053 => 'l',
-  120054 => 'm',
-  120055 => 'n',
-  120056 => 'o',
-  120057 => 'p',
-  120058 => 'q',
-  120059 => 'r',
-  120060 => 's',
-  120061 => 't',
-  120062 => 'u',
-  120063 => 'v',
-  120064 => 'w',
-  120065 => 'x',
-  120066 => 'y',
-  120067 => 'z',
-  120068 => 'a',
-  120069 => 'b',
-  120071 => 'd',
-  120072 => 'e',
-  120073 => 'f',
-  120074 => 'g',
-  120077 => 'j',
-  120078 => 'k',
-  120079 => 'l',
-  120080 => 'm',
-  120081 => 'n',
-  120082 => 'o',
-  120083 => 'p',
-  120084 => 'q',
-  120086 => 's',
-  120087 => 't',
-  120088 => 'u',
-  120089 => 'v',
-  120090 => 'w',
-  120091 => 'x',
-  120092 => 'y',
-  120094 => 'a',
-  120095 => 'b',
-  120096 => 'c',
-  120097 => 'd',
-  120098 => 'e',
-  120099 => 'f',
-  120100 => 'g',
-  120101 => 'h',
-  120102 => 'i',
-  120103 => 'j',
-  120104 => 'k',
-  120105 => 'l',
-  120106 => 'm',
-  120107 => 'n',
-  120108 => 'o',
-  120109 => 'p',
-  120110 => 'q',
-  120111 => 'r',
-  120112 => 's',
-  120113 => 't',
-  120114 => 'u',
-  120115 => 'v',
-  120116 => 'w',
-  120117 => 'x',
-  120118 => 'y',
-  120119 => 'z',
-  120120 => 'a',
-  120121 => 'b',
-  120123 => 'd',
-  120124 => 'e',
-  120125 => 'f',
-  120126 => 'g',
-  120128 => 'i',
-  120129 => 'j',
-  120130 => 'k',
-  120131 => 'l',
-  120132 => 'm',
-  120134 => 'o',
-  120138 => 's',
-  120139 => 't',
-  120140 => 'u',
-  120141 => 'v',
-  120142 => 'w',
-  120143 => 'x',
-  120144 => 'y',
-  120146 => 'a',
-  120147 => 'b',
-  120148 => 'c',
-  120149 => 'd',
-  120150 => 'e',
-  120151 => 'f',
-  120152 => 'g',
-  120153 => 'h',
-  120154 => 'i',
-  120155 => 'j',
-  120156 => 'k',
-  120157 => 'l',
-  120158 => 'm',
-  120159 => 'n',
-  120160 => 'o',
-  120161 => 'p',
-  120162 => 'q',
-  120163 => 'r',
-  120164 => 's',
-  120165 => 't',
-  120166 => 'u',
-  120167 => 'v',
-  120168 => 'w',
-  120169 => 'x',
-  120170 => 'y',
-  120171 => 'z',
-  120172 => 'a',
-  120173 => 'b',
-  120174 => 'c',
-  120175 => 'd',
-  120176 => 'e',
-  120177 => 'f',
-  120178 => 'g',
-  120179 => 'h',
-  120180 => 'i',
-  120181 => 'j',
-  120182 => 'k',
-  120183 => 'l',
-  120184 => 'm',
-  120185 => 'n',
-  120186 => 'o',
-  120187 => 'p',
-  120188 => 'q',
-  120189 => 'r',
-  120190 => 's',
-  120191 => 't',
-  120192 => 'u',
-  120193 => 'v',
-  120194 => 'w',
-  120195 => 'x',
-  120196 => 'y',
-  120197 => 'z',
-  120198 => 'a',
-  120199 => 'b',
-  120200 => 'c',
-  120201 => 'd',
-  120202 => 'e',
-  120203 => 'f',
-  120204 => 'g',
-  120205 => 'h',
-  120206 => 'i',
-  120207 => 'j',
-  120208 => 'k',
-  120209 => 'l',
-  120210 => 'm',
-  120211 => 'n',
-  120212 => 'o',
-  120213 => 'p',
-  120214 => 'q',
-  120215 => 'r',
-  120216 => 's',
-  120217 => 't',
-  120218 => 'u',
-  120219 => 'v',
-  120220 => 'w',
-  120221 => 'x',
-  120222 => 'y',
-  120223 => 'z',
-  120224 => 'a',
-  120225 => 'b',
-  120226 => 'c',
-  120227 => 'd',
-  120228 => 'e',
-  120229 => 'f',
-  120230 => 'g',
-  120231 => 'h',
-  120232 => 'i',
-  120233 => 'j',
-  120234 => 'k',
-  120235 => 'l',
-  120236 => 'm',
-  120237 => 'n',
-  120238 => 'o',
-  120239 => 'p',
-  120240 => 'q',
-  120241 => 'r',
-  120242 => 's',
-  120243 => 't',
-  120244 => 'u',
-  120245 => 'v',
-  120246 => 'w',
-  120247 => 'x',
-  120248 => 'y',
-  120249 => 'z',
-  120250 => 'a',
-  120251 => 'b',
-  120252 => 'c',
-  120253 => 'd',
-  120254 => 'e',
-  120255 => 'f',
-  120256 => 'g',
-  120257 => 'h',
-  120258 => 'i',
-  120259 => 'j',
-  120260 => 'k',
-  120261 => 'l',
-  120262 => 'm',
-  120263 => 'n',
-  120264 => 'o',
-  120265 => 'p',
-  120266 => 'q',
-  120267 => 'r',
-  120268 => 's',
-  120269 => 't',
-  120270 => 'u',
-  120271 => 'v',
-  120272 => 'w',
-  120273 => 'x',
-  120274 => 'y',
-  120275 => 'z',
-  120276 => 'a',
-  120277 => 'b',
-  120278 => 'c',
-  120279 => 'd',
-  120280 => 'e',
-  120281 => 'f',
-  120282 => 'g',
-  120283 => 'h',
-  120284 => 'i',
-  120285 => 'j',
-  120286 => 'k',
-  120287 => 'l',
-  120288 => 'm',
-  120289 => 'n',
-  120290 => 'o',
-  120291 => 'p',
-  120292 => 'q',
-  120293 => 'r',
-  120294 => 's',
-  120295 => 't',
-  120296 => 'u',
-  120297 => 'v',
-  120298 => 'w',
-  120299 => 'x',
-  120300 => 'y',
-  120301 => 'z',
-  120302 => 'a',
-  120303 => 'b',
-  120304 => 'c',
-  120305 => 'd',
-  120306 => 'e',
-  120307 => 'f',
-  120308 => 'g',
-  120309 => 'h',
-  120310 => 'i',
-  120311 => 'j',
-  120312 => 'k',
-  120313 => 'l',
-  120314 => 'm',
-  120315 => 'n',
-  120316 => 'o',
-  120317 => 'p',
-  120318 => 'q',
-  120319 => 'r',
-  120320 => 's',
-  120321 => 't',
-  120322 => 'u',
-  120323 => 'v',
-  120324 => 'w',
-  120325 => 'x',
-  120326 => 'y',
-  120327 => 'z',
-  120328 => 'a',
-  120329 => 'b',
-  120330 => 'c',
-  120331 => 'd',
-  120332 => 'e',
-  120333 => 'f',
-  120334 => 'g',
-  120335 => 'h',
-  120336 => 'i',
-  120337 => 'j',
-  120338 => 'k',
-  120339 => 'l',
-  120340 => 'm',
-  120341 => 'n',
-  120342 => 'o',
-  120343 => 'p',
-  120344 => 'q',
-  120345 => 'r',
-  120346 => 's',
-  120347 => 't',
-  120348 => 'u',
-  120349 => 'v',
-  120350 => 'w',
-  120351 => 'x',
-  120352 => 'y',
-  120353 => 'z',
-  120354 => 'a',
-  120355 => 'b',
-  120356 => 'c',
-  120357 => 'd',
-  120358 => 'e',
-  120359 => 'f',
-  120360 => 'g',
-  120361 => 'h',
-  120362 => 'i',
-  120363 => 'j',
-  120364 => 'k',
-  120365 => 'l',
-  120366 => 'm',
-  120367 => 'n',
-  120368 => 'o',
-  120369 => 'p',
-  120370 => 'q',
-  120371 => 'r',
-  120372 => 's',
-  120373 => 't',
-  120374 => 'u',
-  120375 => 'v',
-  120376 => 'w',
-  120377 => 'x',
-  120378 => 'y',
-  120379 => 'z',
-  120380 => 'a',
-  120381 => 'b',
-  120382 => 'c',
-  120383 => 'd',
-  120384 => 'e',
-  120385 => 'f',
-  120386 => 'g',
-  120387 => 'h',
-  120388 => 'i',
-  120389 => 'j',
-  120390 => 'k',
-  120391 => 'l',
-  120392 => 'm',
-  120393 => 'n',
-  120394 => 'o',
-  120395 => 'p',
-  120396 => 'q',
-  120397 => 'r',
-  120398 => 's',
-  120399 => 't',
-  120400 => 'u',
-  120401 => 'v',
-  120402 => 'w',
-  120403 => 'x',
-  120404 => 'y',
-  120405 => 'z',
-  120406 => 'a',
-  120407 => 'b',
-  120408 => 'c',
-  120409 => 'd',
-  120410 => 'e',
-  120411 => 'f',
-  120412 => 'g',
-  120413 => 'h',
-  120414 => 'i',
-  120415 => 'j',
-  120416 => 'k',
-  120417 => 'l',
-  120418 => 'm',
-  120419 => 'n',
-  120420 => 'o',
-  120421 => 'p',
-  120422 => 'q',
-  120423 => 'r',
-  120424 => 's',
-  120425 => 't',
-  120426 => 'u',
-  120427 => 'v',
-  120428 => 'w',
-  120429 => 'x',
-  120430 => 'y',
-  120431 => 'z',
-  120432 => 'a',
-  120433 => 'b',
-  120434 => 'c',
-  120435 => 'd',
-  120436 => 'e',
-  120437 => 'f',
-  120438 => 'g',
-  120439 => 'h',
-  120440 => 'i',
-  120441 => 'j',
-  120442 => 'k',
-  120443 => 'l',
-  120444 => 'm',
-  120445 => 'n',
-  120446 => 'o',
-  120447 => 'p',
-  120448 => 'q',
-  120449 => 'r',
-  120450 => 's',
-  120451 => 't',
-  120452 => 'u',
-  120453 => 'v',
-  120454 => 'w',
-  120455 => 'x',
-  120456 => 'y',
-  120457 => 'z',
-  120458 => 'a',
-  120459 => 'b',
-  120460 => 'c',
-  120461 => 'd',
-  120462 => 'e',
-  120463 => 'f',
-  120464 => 'g',
-  120465 => 'h',
-  120466 => 'i',
-  120467 => 'j',
-  120468 => 'k',
-  120469 => 'l',
-  120470 => 'm',
-  120471 => 'n',
-  120472 => 'o',
-  120473 => 'p',
-  120474 => 'q',
-  120475 => 'r',
-  120476 => 's',
-  120477 => 't',
-  120478 => 'u',
-  120479 => 'v',
-  120480 => 'w',
-  120481 => 'x',
-  120482 => 'y',
-  120483 => 'z',
-  120484 => 'ı',
-  120485 => 'È·',
-  120488 => 'α',
-  120489 => 'β',
-  120490 => 'γ',
-  120491 => 'δ',
-  120492 => 'ε',
-  120493 => 'ζ',
-  120494 => 'η',
-  120495 => 'θ',
-  120496 => 'ι',
-  120497 => 'κ',
-  120498 => 'λ',
-  120499 => 'μ',
-  120500 => 'ν',
-  120501 => 'ξ',
-  120502 => 'ο',
-  120503 => 'Ï€',
-  120504 => 'ρ',
-  120505 => 'θ',
-  120506 => 'σ',
-  120507 => 'Ï„',
-  120508 => 'Ï…',
-  120509 => 'φ',
-  120510 => 'χ',
-  120511 => 'ψ',
-  120512 => 'ω',
-  120513 => '∇',
-  120514 => 'α',
-  120515 => 'β',
-  120516 => 'γ',
-  120517 => 'δ',
-  120518 => 'ε',
-  120519 => 'ζ',
-  120520 => 'η',
-  120521 => 'θ',
-  120522 => 'ι',
-  120523 => 'κ',
-  120524 => 'λ',
-  120525 => 'μ',
-  120526 => 'ν',
-  120527 => 'ξ',
-  120528 => 'ο',
-  120529 => 'Ï€',
-  120530 => 'ρ',
-  120531 => 'σ',
-  120532 => 'σ',
-  120533 => 'Ï„',
-  120534 => 'Ï…',
-  120535 => 'φ',
-  120536 => 'χ',
-  120537 => 'ψ',
-  120538 => 'ω',
-  120539 => '∂',
-  120540 => 'ε',
-  120541 => 'θ',
-  120542 => 'κ',
-  120543 => 'φ',
-  120544 => 'ρ',
-  120545 => 'Ï€',
-  120546 => 'α',
-  120547 => 'β',
-  120548 => 'γ',
-  120549 => 'δ',
-  120550 => 'ε',
-  120551 => 'ζ',
-  120552 => 'η',
-  120553 => 'θ',
-  120554 => 'ι',
-  120555 => 'κ',
-  120556 => 'λ',
-  120557 => 'μ',
-  120558 => 'ν',
-  120559 => 'ξ',
-  120560 => 'ο',
-  120561 => 'Ï€',
-  120562 => 'ρ',
-  120563 => 'θ',
-  120564 => 'σ',
-  120565 => 'Ï„',
-  120566 => 'Ï…',
-  120567 => 'φ',
-  120568 => 'χ',
-  120569 => 'ψ',
-  120570 => 'ω',
-  120571 => '∇',
-  120572 => 'α',
-  120573 => 'β',
-  120574 => 'γ',
-  120575 => 'δ',
-  120576 => 'ε',
-  120577 => 'ζ',
-  120578 => 'η',
-  120579 => 'θ',
-  120580 => 'ι',
-  120581 => 'κ',
-  120582 => 'λ',
-  120583 => 'μ',
-  120584 => 'ν',
-  120585 => 'ξ',
-  120586 => 'ο',
-  120587 => 'Ï€',
-  120588 => 'ρ',
-  120589 => 'σ',
-  120590 => 'σ',
-  120591 => 'Ï„',
-  120592 => 'Ï…',
-  120593 => 'φ',
-  120594 => 'χ',
-  120595 => 'ψ',
-  120596 => 'ω',
-  120597 => '∂',
-  120598 => 'ε',
-  120599 => 'θ',
-  120600 => 'κ',
-  120601 => 'φ',
-  120602 => 'ρ',
-  120603 => 'Ï€',
-  120604 => 'α',
-  120605 => 'β',
-  120606 => 'γ',
-  120607 => 'δ',
-  120608 => 'ε',
-  120609 => 'ζ',
-  120610 => 'η',
-  120611 => 'θ',
-  120612 => 'ι',
-  120613 => 'κ',
-  120614 => 'λ',
-  120615 => 'μ',
-  120616 => 'ν',
-  120617 => 'ξ',
-  120618 => 'ο',
-  120619 => 'Ï€',
-  120620 => 'ρ',
-  120621 => 'θ',
-  120622 => 'σ',
-  120623 => 'Ï„',
-  120624 => 'Ï…',
-  120625 => 'φ',
-  120626 => 'χ',
-  120627 => 'ψ',
-  120628 => 'ω',
-  120629 => '∇',
-  120630 => 'α',
-  120631 => 'β',
-  120632 => 'γ',
-  120633 => 'δ',
-  120634 => 'ε',
-  120635 => 'ζ',
-  120636 => 'η',
-  120637 => 'θ',
-  120638 => 'ι',
-  120639 => 'κ',
-  120640 => 'λ',
-  120641 => 'μ',
-  120642 => 'ν',
-  120643 => 'ξ',
-  120644 => 'ο',
-  120645 => 'Ï€',
-  120646 => 'ρ',
-  120647 => 'σ',
-  120648 => 'σ',
-  120649 => 'Ï„',
-  120650 => 'Ï…',
-  120651 => 'φ',
-  120652 => 'χ',
-  120653 => 'ψ',
-  120654 => 'ω',
-  120655 => '∂',
-  120656 => 'ε',
-  120657 => 'θ',
-  120658 => 'κ',
-  120659 => 'φ',
-  120660 => 'ρ',
-  120661 => 'Ï€',
-  120662 => 'α',
-  120663 => 'β',
-  120664 => 'γ',
-  120665 => 'δ',
-  120666 => 'ε',
-  120667 => 'ζ',
-  120668 => 'η',
-  120669 => 'θ',
-  120670 => 'ι',
-  120671 => 'κ',
-  120672 => 'λ',
-  120673 => 'μ',
-  120674 => 'ν',
-  120675 => 'ξ',
-  120676 => 'ο',
-  120677 => 'Ï€',
-  120678 => 'ρ',
-  120679 => 'θ',
-  120680 => 'σ',
-  120681 => 'Ï„',
-  120682 => 'Ï…',
-  120683 => 'φ',
-  120684 => 'χ',
-  120685 => 'ψ',
-  120686 => 'ω',
-  120687 => '∇',
-  120688 => 'α',
-  120689 => 'β',
-  120690 => 'γ',
-  120691 => 'δ',
-  120692 => 'ε',
-  120693 => 'ζ',
-  120694 => 'η',
-  120695 => 'θ',
-  120696 => 'ι',
-  120697 => 'κ',
-  120698 => 'λ',
-  120699 => 'μ',
-  120700 => 'ν',
-  120701 => 'ξ',
-  120702 => 'ο',
-  120703 => 'Ï€',
-  120704 => 'ρ',
-  120705 => 'σ',
-  120706 => 'σ',
-  120707 => 'Ï„',
-  120708 => 'Ï…',
-  120709 => 'φ',
-  120710 => 'χ',
-  120711 => 'ψ',
-  120712 => 'ω',
-  120713 => '∂',
-  120714 => 'ε',
-  120715 => 'θ',
-  120716 => 'κ',
-  120717 => 'φ',
-  120718 => 'ρ',
-  120719 => 'Ï€',
-  120720 => 'α',
-  120721 => 'β',
-  120722 => 'γ',
-  120723 => 'δ',
-  120724 => 'ε',
-  120725 => 'ζ',
-  120726 => 'η',
-  120727 => 'θ',
-  120728 => 'ι',
-  120729 => 'κ',
-  120730 => 'λ',
-  120731 => 'μ',
-  120732 => 'ν',
-  120733 => 'ξ',
-  120734 => 'ο',
-  120735 => 'Ï€',
-  120736 => 'ρ',
-  120737 => 'θ',
-  120738 => 'σ',
-  120739 => 'Ï„',
-  120740 => 'Ï…',
-  120741 => 'φ',
-  120742 => 'χ',
-  120743 => 'ψ',
-  120744 => 'ω',
-  120745 => '∇',
-  120746 => 'α',
-  120747 => 'β',
-  120748 => 'γ',
-  120749 => 'δ',
-  120750 => 'ε',
-  120751 => 'ζ',
-  120752 => 'η',
-  120753 => 'θ',
-  120754 => 'ι',
-  120755 => 'κ',
-  120756 => 'λ',
-  120757 => 'μ',
-  120758 => 'ν',
-  120759 => 'ξ',
-  120760 => 'ο',
-  120761 => 'Ï€',
-  120762 => 'ρ',
-  120763 => 'σ',
-  120764 => 'σ',
-  120765 => 'Ï„',
-  120766 => 'Ï…',
-  120767 => 'φ',
-  120768 => 'χ',
-  120769 => 'ψ',
-  120770 => 'ω',
-  120771 => '∂',
-  120772 => 'ε',
-  120773 => 'θ',
-  120774 => 'κ',
-  120775 => 'φ',
-  120776 => 'ρ',
-  120777 => 'Ï€',
-  120778 => 'ϝ',
-  120779 => 'ϝ',
-  120782 => '0',
-  120783 => '1',
-  120784 => '2',
-  120785 => '3',
-  120786 => '4',
-  120787 => '5',
-  120788 => '6',
-  120789 => '7',
-  120790 => '8',
-  120791 => '9',
-  120792 => '0',
-  120793 => '1',
-  120794 => '2',
-  120795 => '3',
-  120796 => '4',
-  120797 => '5',
-  120798 => '6',
-  120799 => '7',
-  120800 => '8',
-  120801 => '9',
-  120802 => '0',
-  120803 => '1',
-  120804 => '2',
-  120805 => '3',
-  120806 => '4',
-  120807 => '5',
-  120808 => '6',
-  120809 => '7',
-  120810 => '8',
-  120811 => '9',
-  120812 => '0',
-  120813 => '1',
-  120814 => '2',
-  120815 => '3',
-  120816 => '4',
-  120817 => '5',
-  120818 => '6',
-  120819 => '7',
-  120820 => '8',
-  120821 => '9',
-  120822 => '0',
-  120823 => '1',
-  120824 => '2',
-  120825 => '3',
-  120826 => '4',
-  120827 => '5',
-  120828 => '6',
-  120829 => '7',
-  120830 => '8',
-  120831 => '9',
-  125184 => '𞤢',
-  125185 => '𞤣',
-  125186 => '𞤤',
-  125187 => '𞤥',
-  125188 => '𞤦',
-  125189 => '𞤧',
-  125190 => '𞤨',
-  125191 => '𞤩',
-  125192 => '𞤪',
-  125193 => '𞤫',
-  125194 => '𞤬',
-  125195 => '𞤭',
-  125196 => '𞤮',
-  125197 => '𞤯',
-  125198 => '𞤰',
-  125199 => '𞤱',
-  125200 => '𞤲',
-  125201 => '𞤳',
-  125202 => '𞤴',
-  125203 => '𞤵',
-  125204 => '𞤶',
-  125205 => '𞤷',
-  125206 => '𞤸',
-  125207 => '𞤹',
-  125208 => '𞤺',
-  125209 => '𞤻',
-  125210 => '𞤼',
-  125211 => '𞤽',
-  125212 => '𞤾',
-  125213 => '𞤿',
-  125214 => '𞥀',
-  125215 => '𞥁',
-  125216 => '𞥂',
-  125217 => '𞥃',
-  126464 => 'ا',
-  126465 => 'ب',
-  126466 => 'ج',
-  126467 => 'د',
-  126469 => 'Ùˆ',
-  126470 => 'ز',
-  126471 => 'Ø­',
-  126472 => 'Ø·',
-  126473 => 'ÙŠ',
-  126474 => 'Ùƒ',
-  126475 => 'Ù„',
-  126476 => 'Ù…',
-  126477 => 'Ù†',
-  126478 => 'س',
-  126479 => 'ع',
-  126480 => 'ف',
-  126481 => 'ص',
-  126482 => 'Ù‚',
-  126483 => 'ر',
-  126484 => 'Ø´',
-  126485 => 'ت',
-  126486 => 'Ø«',
-  126487 => 'Ø®',
-  126488 => 'Ø°',
-  126489 => 'ض',
-  126490 => 'ظ',
-  126491 => 'غ',
-  126492 => 'Ù®',
-  126493 => 'Úº',
-  126494 => 'Ú¡',
-  126495 => 'Ù¯',
-  126497 => 'ب',
-  126498 => 'ج',
-  126500 => 'Ù‡',
-  126503 => 'Ø­',
-  126505 => 'ÙŠ',
-  126506 => 'Ùƒ',
-  126507 => 'Ù„',
-  126508 => 'Ù…',
-  126509 => 'Ù†',
-  126510 => 'س',
-  126511 => 'ع',
-  126512 => 'ف',
-  126513 => 'ص',
-  126514 => 'Ù‚',
-  126516 => 'Ø´',
-  126517 => 'ت',
-  126518 => 'Ø«',
-  126519 => 'Ø®',
-  126521 => 'ض',
-  126523 => 'غ',
-  126530 => 'ج',
-  126535 => 'Ø­',
-  126537 => 'ÙŠ',
-  126539 => 'Ù„',
-  126541 => 'Ù†',
-  126542 => 'س',
-  126543 => 'ع',
-  126545 => 'ص',
-  126546 => 'Ù‚',
-  126548 => 'Ø´',
-  126551 => 'Ø®',
-  126553 => 'ض',
-  126555 => 'غ',
-  126557 => 'Úº',
-  126559 => 'Ù¯',
-  126561 => 'ب',
-  126562 => 'ج',
-  126564 => 'Ù‡',
-  126567 => 'Ø­',
-  126568 => 'Ø·',
-  126569 => 'ÙŠ',
-  126570 => 'Ùƒ',
-  126572 => 'Ù…',
-  126573 => 'Ù†',
-  126574 => 'س',
-  126575 => 'ع',
-  126576 => 'ف',
-  126577 => 'ص',
-  126578 => 'Ù‚',
-  126580 => 'Ø´',
-  126581 => 'ت',
-  126582 => 'Ø«',
-  126583 => 'Ø®',
-  126585 => 'ض',
-  126586 => 'ظ',
-  126587 => 'غ',
-  126588 => 'Ù®',
-  126590 => 'Ú¡',
-  126592 => 'ا',
-  126593 => 'ب',
-  126594 => 'ج',
-  126595 => 'د',
-  126596 => 'Ù‡',
-  126597 => 'Ùˆ',
-  126598 => 'ز',
-  126599 => 'Ø­',
-  126600 => 'Ø·',
-  126601 => 'ÙŠ',
-  126603 => 'Ù„',
-  126604 => 'Ù…',
-  126605 => 'Ù†',
-  126606 => 'س',
-  126607 => 'ع',
-  126608 => 'ف',
-  126609 => 'ص',
-  126610 => 'Ù‚',
-  126611 => 'ر',
-  126612 => 'Ø´',
-  126613 => 'ت',
-  126614 => 'Ø«',
-  126615 => 'Ø®',
-  126616 => 'Ø°',
-  126617 => 'ض',
-  126618 => 'ظ',
-  126619 => 'غ',
-  126625 => 'ب',
-  126626 => 'ج',
-  126627 => 'د',
-  126629 => 'Ùˆ',
-  126630 => 'ز',
-  126631 => 'Ø­',
-  126632 => 'Ø·',
-  126633 => 'ÙŠ',
-  126635 => 'Ù„',
-  126636 => 'Ù…',
-  126637 => 'Ù†',
-  126638 => 'س',
-  126639 => 'ع',
-  126640 => 'ف',
-  126641 => 'ص',
-  126642 => 'Ù‚',
-  126643 => 'ر',
-  126644 => 'Ø´',
-  126645 => 'ت',
-  126646 => 'Ø«',
-  126647 => 'Ø®',
-  126648 => 'Ø°',
-  126649 => 'ض',
-  126650 => 'ظ',
-  126651 => 'غ',
-  127274 => '〔s〕',
-  127275 => 'c',
-  127276 => 'r',
-  127277 => 'cd',
-  127278 => 'wz',
-  127280 => 'a',
-  127281 => 'b',
-  127282 => 'c',
-  127283 => 'd',
-  127284 => 'e',
-  127285 => 'f',
-  127286 => 'g',
-  127287 => 'h',
-  127288 => 'i',
-  127289 => 'j',
-  127290 => 'k',
-  127291 => 'l',
-  127292 => 'm',
-  127293 => 'n',
-  127294 => 'o',
-  127295 => 'p',
-  127296 => 'q',
-  127297 => 'r',
-  127298 => 's',
-  127299 => 't',
-  127300 => 'u',
-  127301 => 'v',
-  127302 => 'w',
-  127303 => 'x',
-  127304 => 'y',
-  127305 => 'z',
-  127306 => 'hv',
-  127307 => 'mv',
-  127308 => 'sd',
-  127309 => 'ss',
-  127310 => 'ppv',
-  127311 => 'wc',
-  127338 => 'mc',
-  127339 => 'md',
-  127340 => 'mr',
-  127376 => 'dj',
-  127488 => 'ほか',
-  127489 => 'ココ',
-  127490 => 'サ',
-  127504 => '手',
-  127505 => 'å­—',
-  127506 => '双',
-  127507 => 'デ',
-  127508 => '二',
-  127509 => '多',
-  127510 => '解',
-  127511 => '天',
-  127512 => '交',
-  127513 => '映',
-  127514 => 'ç„¡',
-  127515 => 'æ–™',
-  127516 => '前',
-  127517 => '後',
-  127518 => '再',
-  127519 => 'æ–°',
-  127520 => '初',
-  127521 => '終',
-  127522 => '生',
-  127523 => '販',
-  127524 => '声',
-  127525 => '吹',
-  127526 => 'æ¼”',
-  127527 => '投',
-  127528 => '捕',
-  127529 => '一',
-  127530 => '三',
-  127531 => '遊',
-  127532 => 'å·¦',
-  127533 => '中',
-  127534 => '右',
-  127535 => '指',
-  127536 => 'èµ°',
-  127537 => '打',
-  127538 => '禁',
-  127539 => '空',
-  127540 => '合',
-  127541 => '満',
-  127542 => '有',
-  127543 => '月',
-  127544 => '申',
-  127545 => '割',
-  127546 => 'å–¶',
-  127547 => '配',
-  127552 => '〔本〕',
-  127553 => '〔三〕',
-  127554 => '〔二〕',
-  127555 => '〔安〕',
-  127556 => '〔点〕',
-  127557 => '〔打〕',
-  127558 => '〔盗〕',
-  127559 => '〔勝〕',
-  127560 => '〔敗〕',
-  127568 => 'å¾—',
-  127569 => '可',
-  130032 => '0',
-  130033 => '1',
-  130034 => '2',
-  130035 => '3',
-  130036 => '4',
-  130037 => '5',
-  130038 => '6',
-  130039 => '7',
-  130040 => '8',
-  130041 => '9',
-  194560 => '丽',
-  194561 => '丸',
-  194562 => '乁',
-  194563 => 'ð „¢',
-  194564 => 'ä½ ',
-  194565 => 'ä¾®',
-  194566 => 'ä¾»',
-  194567 => '倂',
-  194568 => '偺',
-  194569 => 'å‚™',
-  194570 => '僧',
-  194571 => '像',
-  194572 => 'ã’ž',
-  194573 => '𠘺',
-  194574 => '免',
-  194575 => 'å…”',
-  194576 => 'å…¤',
-  194577 => 'å…·',
-  194578 => '𠔜',
-  194579 => 'ã’¹',
-  194580 => 'å…§',
-  194581 => '再',
-  194582 => 'ð •‹',
-  194583 => '冗',
-  194584 => '冤',
-  194585 => '仌',
-  194586 => '冬',
-  194587 => '况',
-  194588 => '𩇟',
-  194589 => '凵',
-  194590 => '刃',
-  194591 => 'ã“Ÿ',
-  194592 => '刻',
-  194593 => '剆',
-  194594 => '割',
-  194595 => '剷',
-  194596 => '㔕',
-  194597 => '勇',
-  194598 => '勉',
-  194599 => '勤',
-  194600 => '勺',
-  194601 => '包',
-  194602 => '匆',
-  194603 => '北',
-  194604 => '卉',
-  194605 => '卑',
-  194606 => '博',
-  194607 => '即',
-  194608 => '卽',
-  194609 => '卿',
-  194610 => '卿',
-  194611 => '卿',
-  194612 => '𠨬',
-  194613 => '灰',
-  194614 => '及',
-  194615 => '叟',
-  194616 => 'ð ­£',
-  194617 => '叫',
-  194618 => '叱',
-  194619 => '吆',
-  194620 => 'å’ž',
-  194621 => '吸',
-  194622 => '呈',
-  194623 => '周',
-  194624 => 'å’¢',
-  194625 => '哶',
-  194626 => '唐',
-  194627 => 'å•“',
-  194628 => 'å•£',
-  194629 => 'å–„',
-  194630 => 'å–„',
-  194631 => 'å–™',
-  194632 => 'å–«',
-  194633 => 'å–³',
-  194634 => 'å—‚',
-  194635 => '圖',
-  194636 => '嘆',
-  194637 => '圗',
-  194638 => '噑',
-  194639 => 'å™´',
-  194640 => '切',
-  194641 => '壮',
-  194642 => '城',
-  194643 => '埴',
-  194644 => '堍',
-  194645 => 'åž‹',
-  194646 => 'å ²',
-  194647 => 'å ±',
-  194648 => '墬',
-  194649 => '𡓤',
-  194650 => '売',
-  194651 => '壷',
-  194652 => '夆',
-  194653 => '多',
-  194654 => '夢',
-  194655 => '奢',
-  194656 => '𡚨',
-  194657 => '𡛪',
-  194658 => '姬',
-  194659 => '娛',
-  194660 => '娧',
-  194661 => '姘',
-  194662 => '婦',
-  194663 => 'ã›®',
-  194665 => '嬈',
-  194666 => '嬾',
-  194667 => '嬾',
-  194668 => '𡧈',
-  194669 => '寃',
-  194670 => '寘',
-  194671 => '寧',
-  194672 => '寳',
-  194673 => '𡬘',
-  194674 => '寿',
-  194675 => 'å°†',
-  194677 => 'å°¢',
-  194678 => '㞁',
-  194679 => 'å± ',
-  194680 => 'å±®',
-  194681 => 'å³€',
-  194682 => '岍',
-  194683 => 'ð¡·¤',
-  194684 => '嵃',
-  194685 => 'ð¡·¦',
-  194686 => 'åµ®',
-  194687 => '嵫',
-  194688 => 'åµ¼',
-  194689 => 'å·¡',
-  194690 => 'å·¢',
-  194691 => 'ã ¯',
-  194692 => 'å·½',
-  194693 => '帨',
-  194694 => '帽',
-  194695 => '幩',
-  194696 => 'ã¡¢',
-  194697 => '𢆃',
-  194698 => '㡼',
-  194699 => '庰',
-  194700 => '庳',
-  194701 => '庶',
-  194702 => '廊',
-  194703 => '𪎒',
-  194704 => '廾',
-  194705 => '𢌱',
-  194706 => '𢌱',
-  194707 => '舁',
-  194708 => 'å¼¢',
-  194709 => 'å¼¢',
-  194710 => '㣇',
-  194711 => '𣊸',
-  194712 => '𦇚',
-  194713 => 'å½¢',
-  194714 => '彫',
-  194715 => '㣣',
-  194716 => '徚',
-  194717 => '忍',
-  194718 => 'å¿—',
-  194719 => '忹',
-  194720 => '悁',
-  194721 => '㤺',
-  194722 => '㤜',
-  194723 => 'æ‚”',
-  194724 => '𢛔',
-  194725 => '惇',
-  194726 => 'æ…ˆ',
-  194727 => '慌',
-  194728 => 'æ…Ž',
-  194729 => '慌',
-  194730 => 'æ…º',
-  194731 => '憎',
-  194732 => '憲',
-  194733 => '憤',
-  194734 => '憯',
-  194735 => '懞',
-  194736 => '懲',
-  194737 => '懶',
-  194738 => '成',
-  194739 => '戛',
-  194740 => '扝',
-  194741 => '抱',
-  194742 => 'æ‹”',
-  194743 => '捐',
-  194744 => '𢬌',
-  194745 => '挽',
-  194746 => '拼',
-  194747 => '捨',
-  194748 => '掃',
-  194749 => '揤',
-  194750 => '𢯱',
-  194751 => '搢',
-  194752 => '揅',
-  194753 => '掩',
-  194754 => '㨮',
-  194755 => 'æ‘©',
-  194756 => '摾',
-  194757 => '撝',
-  194758 => 'æ‘·',
-  194759 => '㩬',
-  194760 => '敏',
-  194761 => '敬',
-  194762 => '𣀊',
-  194763 => 'æ—£',
-  194764 => '書',
-  194765 => '晉',
-  194766 => '㬙',
-  194767 => 'æš‘',
-  194768 => '㬈',
-  194769 => '㫤',
-  194770 => '冒',
-  194771 => '冕',
-  194772 => '最',
-  194773 => '暜',
-  194774 => 'è‚­',
-  194775 => '䏙',
-  194776 => '朗',
-  194777 => '望',
-  194778 => '朡',
-  194779 => '杞',
-  194780 => '杓',
-  194781 => '𣏃',
-  194782 => 'ã­‰',
-  194783 => '柺',
-  194784 => 'æž…',
-  194785 => 'æ¡’',
-  194786 => '梅',
-  194787 => '𣑭',
-  194788 => '梎',
-  194789 => 'æ Ÿ',
-  194790 => '椔',
-  194791 => '㮝',
-  194792 => '楂',
-  194793 => '榣',
-  194794 => '槪',
-  194795 => '檨',
-  194796 => '𣚣',
-  194797 => 'æ«›',
-  194798 => 'ã°˜',
-  194799 => '次',
-  194800 => '𣢧',
-  194801 => 'æ­”',
-  194802 => '㱎',
-  194803 => 'æ­²',
-  194804 => '殟',
-  194805 => '殺',
-  194806 => 'æ®»',
-  194807 => '𣪍',
-  194808 => 'ð¡´‹',
-  194809 => '𣫺',
-  194810 => '汎',
-  194811 => '𣲼',
-  194812 => '沿',
-  194813 => '泍',
-  194814 => '汧',
-  194815 => 'æ´–',
-  194816 => 'æ´¾',
-  194817 => 'æµ·',
-  194818 => '流',
-  194819 => '浩',
-  194820 => '浸',
-  194821 => '涅',
-  194822 => '𣴞',
-  194823 => 'æ´´',
-  194824 => '港',
-  194825 => 'æ¹®',
-  194826 => 'ã´³',
-  194827 => '滋',
-  194828 => '滇',
-  194829 => '𣻑',
-  194830 => 'æ·¹',
-  194831 => 'æ½®',
-  194832 => '𣽞',
-  194833 => '𣾎',
-  194834 => '濆',
-  194835 => '瀹',
-  194836 => '瀞',
-  194837 => '瀛',
-  194838 => '㶖',
-  194839 => '灊',
-  194840 => '災',
-  194841 => '灷',
-  194842 => 'ç‚­',
-  194843 => '𠔥',
-  194844 => 'ç……',
-  194845 => '𤉣',
-  194846 => '熜',
-  194848 => '爨',
-  194849 => '爵',
-  194850 => '牐',
-  194851 => '𤘈',
-  194852 => '犀',
-  194853 => '犕',
-  194854 => '𤜵',
-  194855 => '𤠔',
-  194856 => '獺',
-  194857 => '王',
-  194858 => '㺬',
-  194859 => '玥',
-  194860 => '㺸',
-  194861 => '㺸',
-  194862 => '瑇',
-  194863 => '瑜',
-  194864 => '瑱',
-  194865 => 'ç’…',
-  194866 => 'ç“Š',
-  194867 => 'ã¼›',
-  194868 => '甤',
-  194869 => '𤰶',
-  194870 => '甾',
-  194871 => '𤲒',
-  194872 => 'ç•°',
-  194873 => '𢆟',
-  194874 => '瘐',
-  194875 => '𤾡',
-  194876 => '𤾸',
-  194877 => '𥁄',
-  194878 => '㿼',
-  194879 => '䀈',
-  194880 => 'ç›´',
-  194881 => '𥃳',
-  194882 => '𥃲',
-  194883 => '𥄙',
-  194884 => '𥄳',
-  194885 => '眞',
-  194886 => '真',
-  194887 => '真',
-  194888 => '睊',
-  194889 => '䀹',
-  194890 => 'çž‹',
-  194891 => '䁆',
-  194892 => 'ä‚–',
-  194893 => '𥐝',
-  194894 => 'ç¡Ž',
-  194895 => '碌',
-  194896 => '磌',
-  194897 => '䃣',
-  194898 => '𥘦',
-  194899 => '祖',
-  194900 => '𥚚',
-  194901 => '𥛅',
-  194902 => '福',
-  194903 => '秫',
-  194904 => '䄯',
-  194905 => 'ç©€',
-  194906 => 'ç©Š',
-  194907 => '穏',
-  194908 => '𥥼',
-  194909 => '𥪧',
-  194910 => '𥪧',
-  194912 => '䈂',
-  194913 => '𥮫',
-  194914 => '篆',
-  194915 => '築',
-  194916 => '䈧',
-  194917 => '𥲀',
-  194918 => 'ç³’',
-  194919 => '䊠',
-  194920 => '糨',
-  194921 => 'ç³£',
-  194922 => 'ç´€',
-  194923 => '𥾆',
-  194924 => 'çµ£',
-  194925 => '䌁',
-  194926 => 'ç·‡',
-  194927 => '縂',
-  194928 => 'ç¹…',
-  194929 => '䌴',
-  194930 => '𦈨',
-  194931 => '𦉇',
-  194932 => '䍙',
-  194933 => '𦋙',
-  194934 => '罺',
-  194935 => '𦌾',
-  194936 => '羕',
-  194937 => '翺',
-  194938 => '者',
-  194939 => '𦓚',
-  194940 => '𦔣',
-  194941 => '聠',
-  194942 => '𦖨',
-  194943 => '聰',
-  194944 => '𣍟',
-  194945 => '䏕',
-  194946 => '育',
-  194947 => '脃',
-  194948 => '䐋',
-  194949 => '脾',
-  194950 => '媵',
-  194951 => '𦞧',
-  194952 => '𦞵',
-  194953 => '𣎓',
-  194954 => '𣎜',
-  194955 => '舁',
-  194956 => '舄',
-  194957 => '辞',
-  194958 => 'ä‘«',
-  194959 => '芑',
-  194960 => '芋',
-  194961 => '芝',
-  194962 => '劳',
-  194963 => '花',
-  194964 => '芳',
-  194965 => '芽',
-  194966 => '苦',
-  194967 => '𦬼',
-  194968 => 'è‹¥',
-  194969 => '茝',
-  194970 => '荣',
-  194971 => '莭',
-  194972 => '茣',
-  194973 => '莽',
-  194974 => '菧',
-  194975 => 'è‘—',
-  194976 => '荓',
-  194977 => '菊',
-  194978 => '菌',
-  194979 => '菜',
-  194980 => '𦰶',
-  194981 => '𦵫',
-  194982 => '𦳕',
-  194983 => '䔫',
-  194984 => '蓱',
-  194985 => '蓳',
-  194986 => 'è”–',
-  194987 => '𧏊',
-  194988 => '蕤',
-  194989 => '𦼬',
-  194990 => '䕝',
-  194991 => 'ä•¡',
-  194992 => '𦾱',
-  194993 => '𧃒',
-  194994 => 'ä•«',
-  194995 => '虐',
-  194996 => '虜',
-  194997 => '虧',
-  194998 => '虩',
-  194999 => 'èš©',
-  195000 => '蚈',
-  195001 => '蜎',
-  195002 => '蛢',
-  195003 => '蝹',
-  195004 => '蜨',
-  195005 => '蝫',
-  195006 => '螆',
-  195008 => '蟡',
-  195009 => '蠁',
-  195010 => 'ä—¹',
-  195011 => 'è¡ ',
-  195012 => 'è¡£',
-  195013 => '𧙧',
-  195014 => '裗',
-  195015 => '裞',
-  195016 => '䘵',
-  195017 => '裺',
-  195018 => 'ã’»',
-  195019 => '𧢮',
-  195020 => '𧥦',
-  195021 => 'äš¾',
-  195022 => '䛇',
-  195023 => '誠',
-  195024 => 'è«­',
-  195025 => '變',
-  195026 => '豕',
-  195027 => '𧲨',
-  195028 => '貫',
-  195029 => '賁',
-  195030 => 'è´›',
-  195031 => 'èµ·',
-  195032 => '𧼯',
-  195033 => 'ð  „',
-  195034 => 'è·‹',
-  195035 => '趼',
-  195036 => 'è·°',
-  195037 => '𠣞',
-  195038 => 'è»”',
-  195039 => '輸',
-  195040 => '𨗒',
-  195041 => '𨗭',
-  195042 => 'é‚”',
-  195043 => '郱',
-  195044 => 'é„‘',
-  195045 => '𨜮',
-  195046 => 'é„›',
-  195047 => '鈸',
-  195048 => 'é‹—',
-  195049 => '鋘',
-  195050 => '鉼',
-  195051 => '鏹',
-  195052 => '鐕',
-  195053 => '𨯺',
-  195054 => 'é–‹',
-  195055 => '䦕',
-  195056 => 'é–·',
-  195057 => '𨵷',
-  195058 => '䧦',
-  195059 => '雃',
-  195060 => '嶲',
-  195061 => '霣',
-  195062 => 'ð©……',
-  195063 => '𩈚',
-  195064 => 'ä©®',
-  195065 => '䩶',
-  195066 => '韠',
-  195067 => '𩐊',
-  195068 => '䪲',
-  195069 => 'ð©’–',
-  195070 => 'é ‹',
-  195071 => 'é ‹',
-  195072 => 'é ©',
-  195073 => 'ð©–¶',
-  195074 => '飢',
-  195075 => '䬳',
-  195076 => '餩',
-  195077 => '馧',
-  195078 => '駂',
-  195079 => '駾',
-  195080 => '䯎',
-  195081 => '𩬰',
-  195082 => '鬒',
-  195083 => 'é±€',
-  195084 => 'é³½',
-  195085 => '䳎',
-  195086 => 'ä³­',
-  195087 => '鵧',
-  195088 => '𪃎',
-  195089 => '䳸',
-  195090 => '𪄅',
-  195091 => '𪈎',
-  195092 => '𪊑',
-  195093 => '麻',
-  195094 => 'äµ–',
-  195095 => '黹',
-  195096 => '黾',
-  195097 => 'é¼…',
-  195098 => '鼏',
-  195099 => 'é¼–',
-  195100 => 'é¼»',
-  195101 => '𪘀',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
deleted file mode 100644
index 1958e37ed2..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-return array (
-  2381 => 9,
-  2509 => 9,
-  2637 => 9,
-  2765 => 9,
-  2893 => 9,
-  3021 => 9,
-  3149 => 9,
-  3277 => 9,
-  3387 => 9,
-  3388 => 9,
-  3405 => 9,
-  3530 => 9,
-  3642 => 9,
-  3770 => 9,
-  3972 => 9,
-  4153 => 9,
-  4154 => 9,
-  5908 => 9,
-  5940 => 9,
-  6098 => 9,
-  6752 => 9,
-  6980 => 9,
-  7082 => 9,
-  7083 => 9,
-  7154 => 9,
-  7155 => 9,
-  11647 => 9,
-  43014 => 9,
-  43052 => 9,
-  43204 => 9,
-  43347 => 9,
-  43456 => 9,
-  43766 => 9,
-  44013 => 9,
-  68159 => 9,
-  69702 => 9,
-  69759 => 9,
-  69817 => 9,
-  69939 => 9,
-  69940 => 9,
-  70080 => 9,
-  70197 => 9,
-  70378 => 9,
-  70477 => 9,
-  70722 => 9,
-  70850 => 9,
-  71103 => 9,
-  71231 => 9,
-  71350 => 9,
-  71467 => 9,
-  71737 => 9,
-  71997 => 9,
-  71998 => 9,
-  72160 => 9,
-  72244 => 9,
-  72263 => 9,
-  72345 => 9,
-  72767 => 9,
-  73028 => 9,
-  73029 => 9,
-  73111 => 9,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php b/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php
deleted file mode 100644
index 57c78356c9..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (extension_loaded('intl')) {
-    return;
-}
-
-if (\PHP_VERSION_ID >= 80000) {
-    return require __DIR__.'/bootstrap80.php';
-}
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
-    define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
-    define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
-    define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
-    define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
-    define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
-    define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
-    define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
-    define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
-    define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
-    define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
-    define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
-    define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
-    define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
-    define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
-    define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
-    define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
-    define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
-    define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
-    define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
-    define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
-    define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_2003')) {
-    define('INTL_IDNA_VARIANT_2003', 0);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
-    define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
-    define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
-    define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
-    define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
-    define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
-    define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
-    define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
-    define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
-    define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
-    define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
-    define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
-    define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
-    define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
-    define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (\PHP_VERSION_ID < 70400) {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
-    }
-} else {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php b/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php
deleted file mode 100644
index a62c2d69bf..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
-    define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
-    define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
-    define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
-    define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
-    define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
-    define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
-    define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
-    define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
-    define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
-    define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
-    define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
-    define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
-    define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
-    define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
-    define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
-    define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
-    define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
-    define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
-    define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
-    define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
-    define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
-    define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
-    define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
-    define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
-    define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
-    define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
-    define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
-    define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
-    define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
-    define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
-    define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
-    define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
-    define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
-    define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
-    define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (!function_exists('idn_to_ascii')) {
-    function idn_to_ascii(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_ascii((string) $domain, (int) $flags, (int) $variant, $idna_info); }
-}
-if (!function_exists('idn_to_utf8')) {
-    function idn_to_utf8(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_utf8((string) $domain, (int) $flags, (int) $variant, $idna_info); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/composer.json b/civicrm/vendor/symfony/polyfill-intl-idn/composer.json
deleted file mode 100644
index 105e3d06cc..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-idn",
-    "type": "library",
-    "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Laurent Bassin",
-            "email": "laurent@bassin.info"
-        },
-        {
-            "name": "Trevor Rowbotham",
-            "email": "trevor.rowbotham@pm.me"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1",
-        "symfony/polyfill-intl-normalizer": "^1.10",
-        "symfony/polyfill-php72": "^1.10"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.27-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
deleted file mode 100644
index 81704ab376..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Normalizer;
-
-/**
- * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
- *
- * It has been validated with Unicode 6.3 Normalization Conformance Test.
- * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class Normalizer
-{
-    public const FORM_D = \Normalizer::FORM_D;
-    public const FORM_KD = \Normalizer::FORM_KD;
-    public const FORM_C = \Normalizer::FORM_C;
-    public const FORM_KC = \Normalizer::FORM_KC;
-    public const NFD = \Normalizer::NFD;
-    public const NFKD = \Normalizer::NFKD;
-    public const NFC = \Normalizer::NFC;
-    public const NFKC = \Normalizer::NFKC;
-
-    private static $C;
-    private static $D;
-    private static $KD;
-    private static $cC;
-    private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
-    private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
-
-    public static function isNormalized(string $s, int $form = self::FORM_C)
-    {
-        if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) {
-            return false;
-        }
-        if (!isset($s[strspn($s, self::$ASCII)])) {
-            return true;
-        }
-        if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
-            return true;
-        }
-
-        return self::normalize($s, $form) === $s;
-    }
-
-    public static function normalize(string $s, int $form = self::FORM_C)
-    {
-        if (!preg_match('//u', $s)) {
-            return false;
-        }
-
-        switch ($form) {
-            case self::NFC: $C = true; $K = false; break;
-            case self::NFD: $C = false; $K = false; break;
-            case self::NFKC: $C = true; $K = true; break;
-            case self::NFKD: $C = false; $K = true; break;
-            default:
-                if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
-                    return $s;
-                }
-
-                if (80000 > \PHP_VERSION_ID) {
-                    return false;
-                }
-
-                throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form');
-        }
-
-        if ('' === $s) {
-            return '';
-        }
-
-        if ($K && null === self::$KD) {
-            self::$KD = self::getData('compatibilityDecomposition');
-        }
-
-        if (null === self::$D) {
-            self::$D = self::getData('canonicalDecomposition');
-            self::$cC = self::getData('combiningClass');
-        }
-
-        if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) \ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
-            mb_internal_encoding('8bit');
-        }
-
-        $r = self::decompose($s, $K);
-
-        if ($C) {
-            if (null === self::$C) {
-                self::$C = self::getData('canonicalComposition');
-            }
-
-            $r = self::recompose($r);
-        }
-        if (null !== $mbEncoding) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return $r;
-    }
-
-    private static function recompose($s)
-    {
-        $ASCII = self::$ASCII;
-        $compMap = self::$C;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-
-        $result = $tail = '';
-
-        $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
-        $len = \strlen($s);
-
-        $lastUchr = substr($s, 0, $i);
-        $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($tail) {
-                    $lastUchr .= $tail;
-                    $tail = '';
-                }
-
-                if ($j = strspn($s, $ASCII, $i + 1)) {
-                    $lastUchr .= substr($s, $i, $j);
-                    $i += $j;
-                }
-
-                $result .= $lastUchr;
-                $lastUchr = $s[$i];
-                $lastUcls = 0;
-                ++$i;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-
-            if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
-                || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
-                || $lastUcls) {
-                // Table lookup and combining chars composition
-
-                $ucls = $combClass[$uchr] ?? 0;
-
-                if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
-                    $lastUchr = $compMap[$lastUchr.$uchr];
-                } elseif ($lastUcls = $ucls) {
-                    $tail .= $uchr;
-                } else {
-                    if ($tail) {
-                        $lastUchr .= $tail;
-                        $tail = '';
-                    }
-
-                    $result .= $lastUchr;
-                    $lastUchr = $uchr;
-                }
-            } else {
-                // Hangul chars
-
-                $L = \ord($lastUchr[2]) - 0x80;
-                $V = \ord($uchr[2]) - 0xA1;
-                $T = 0;
-
-                $uchr = substr($s, $i + $ulen, 3);
-
-                if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
-                    $T = \ord($uchr[2]) - 0xA7;
-                    0 > $T && $T += 0x40;
-                    $ulen += 3;
-                }
-
-                $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
-                $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
-            }
-
-            $i += $ulen;
-        }
-
-        return $result.$lastUchr.$tail;
-    }
-
-    private static function decompose($s, $c)
-    {
-        $result = '';
-
-        $ASCII = self::$ASCII;
-        $decompMap = self::$D;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-        if ($c) {
-            $compatMap = self::$KD;
-        }
-
-        $c = [];
-        $i = 0;
-        $len = \strlen($s);
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($c) {
-                    ksort($c);
-                    $result .= implode('', $c);
-                    $c = [];
-                }
-
-                $j = 1 + strspn($s, $ASCII, $i + 1);
-                $result .= substr($s, $i, $j);
-                $i += $j;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-            $i += $ulen;
-
-            if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
-                // Table lookup
-
-                if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) {
-                    $uchr = $j;
-
-                    $j = \strlen($uchr);
-                    $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
-
-                    if ($ulen != $j) {
-                        // Put trailing chars in $s
-
-                        $j -= $ulen;
-                        $i -= $j;
-
-                        if (0 > $i) {
-                            $s = str_repeat(' ', -$i).$s;
-                            $len -= $i;
-                            $i = 0;
-                        }
-
-                        while ($j--) {
-                            $s[$i + $j] = $uchr[$ulen + $j];
-                        }
-
-                        $uchr = substr($uchr, 0, $ulen);
-                    }
-                }
-                if (isset($combClass[$uchr])) {
-                    // Combining chars, for sorting
-
-                    if (!isset($c[$combClass[$uchr]])) {
-                        $c[$combClass[$uchr]] = '';
-                    }
-                    $c[$combClass[$uchr]] .= $uchr;
-                    continue;
-                }
-            } else {
-                // Hangul chars
-
-                $uchr = unpack('C*', $uchr);
-                $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
-
-                $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
-                       ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
-
-                if ($j %= 28) {
-                    $uchr .= $j < 25
-                        ? ("\xE1\x86".\chr(0xA7 + $j))
-                        : ("\xE1\x87".\chr(0x67 + $j));
-                }
-            }
-            if ($c) {
-                ksort($c);
-                $result .= implode('', $c);
-                $c = [];
-            }
-
-            $result .= $uchr;
-        }
-
-        if ($c) {
-            ksort($c);
-            $result .= implode('', $c);
-        }
-
-        return $result;
-    }
-
-    private static function getData($file)
-    {
-        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
-            return require $file;
-        }
-
-        return false;
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md b/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md
deleted file mode 100644
index b9b762e850..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Symfony Polyfill / Intl: Normalizer
-===================================
-
-This component provides a fallback implementation for the
-[`Normalizer`](https://php.net/Normalizer) class provided
-by the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
deleted file mode 100644
index 0fdfc890a2..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class Normalizer extends Symfony\Polyfill\Intl\Normalizer\Normalizer
-{
-    /**
-     * @deprecated since ICU 56 and removed in PHP 8
-     */
-    public const NONE = 2;
-    public const FORM_D = 4;
-    public const FORM_KD = 8;
-    public const FORM_C = 16;
-    public const FORM_KC = 32;
-    public const NFD = 4;
-    public const NFKD = 8;
-    public const NFC = 16;
-    public const NFKC = 32;
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
deleted file mode 100644
index db4764419e..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
+++ /dev/null
@@ -1,945 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'AÌŠ' => 'Ã…',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'IÌ‚' => 'ÃŽ',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'OÌ€' => 'Ã’',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'aÌŠ' => 'Ã¥',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'AÌ„' => 'Ä€',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'EÌ„' => 'Ä’',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'JÌ‚' => 'Ä´',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'UÌŠ' => 'Å®',
-  'ů' => 'ů',
-  'UÌ‹' => 'Å°',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'WÌ‚' => 'Å´',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'OÌ›' => 'Æ ',
-  'oÌ›' => 'Æ¡',
-  'Ư' => 'Ư',
-  'uÌ›' => 'Æ°',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'Ç«Ì„' => 'Ç­',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'AÌ‘' => 'È‚',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'IÌ‘' => 'ÈŠ',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'OÌ‘' => 'ÈŽ',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'RÌ‘' => 'È’',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'UÌ‘' => 'È–',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û•Ù”' => 'Û€',
-  'ۂ' => 'ۂ',
-  'Û’Ù”' => 'Û“',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'SÌ£' => 'á¹¢',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'TÌ­' => 'á¹°',
-  'tÌ­' => 'á¹±',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'UÌ°' => 'á¹´',
-  'uÌ°' => 'á¹µ',
-  'Ṷ' => 'Ṷ',
-  'uÌ­' => 'á¹·',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'VÌ£' => 'á¹¾',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'Ồ' => 'Ồ',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'Æ°Ì£' => 'á»±',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'YÌ£' => 'á»´',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'á¼°Ì€' => 'á¼²',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'ἶ' => 'ἶ',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'ὒ' => 'ὒ',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'ὖ' => 'ὖ',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ὲ' => 'ὲ',
-  'ὴ' => 'ὴ',
-  'ὶ' => 'ὶ',
-  'ὸ' => 'ὸ',
-  'ὺ' => 'ὺ',
-  'ὼ' => 'ὼ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'á¼…Í…' => 'á¾…',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'ᾗ' => 'ᾗ',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'á½ Í…' => 'á¾ ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'ᾧ' => 'ᾧ',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'á½­Í…' => 'á¾­',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'á½°Í…' => 'á¾²',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'ᾷ' => 'ᾷ',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'ᾼ' => 'ᾼ',
-  '῁' => '῁',
-  'á½´Í…' => 'á¿‚',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Ὴ' => 'Ὴ',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ÏŠÌ€' => 'á¿’',
-  'ῖ' => 'ῖ',
-  'ÏŠÍ‚' => 'á¿—',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'Ï…Ì„' => 'á¿¡',
-  'Ï‹Ì€' => 'á¿¢',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ÏŽÍ…' => 'á¿´',
-  'ῶ' => 'ῶ',
-  'ῷ' => 'ῷ',
-  'Ὸ' => 'Ὸ',
-  'Ὼ' => 'Ὼ',
-  'ῼ' => 'ῼ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚­ã‚™' => 'ã‚®',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
deleted file mode 100644
index 5a3e8e0969..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
+++ /dev/null
@@ -1,2065 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'Ã…' => 'AÌŠ',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'ÃŽ' => 'IÌ‚',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'Ã’' => 'OÌ€',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'Ã¥' => 'aÌŠ',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'Ä€' => 'AÌ„',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'Ä’' => 'EÌ„',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'Ä´' => 'JÌ‚',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'Å®' => 'UÌŠ',
-  'ů' => 'ů',
-  'Å°' => 'UÌ‹',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'Å´' => 'WÌ‚',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'Æ ' => 'OÌ›',
-  'Æ¡' => 'oÌ›',
-  'Ư' => 'Ư',
-  'Æ°' => 'uÌ›',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'ǭ' => 'ǭ',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'È‚' => 'AÌ‘',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'ÈŠ' => 'IÌ‘',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'ÈŽ' => 'OÌ‘',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'È’' => 'RÌ‘',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'È–' => 'UÌ‘',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  'Í€' => 'Ì€',
-  '́' => '́',
-  '̓' => '̓',
-  '̈́' => '̈́',
-  'ʹ' => 'ʹ',
-  ';' => ';',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  '·' => '·',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û€' => 'Û•Ù”',
-  'ۂ' => 'ۂ',
-  'Û“' => 'Û’Ù”',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'क़' => 'क़',
-  'ख़' => 'ख़',
-  'ग़' => 'ग़',
-  'ज़' => 'ज़',
-  'ड़' => 'ड़',
-  'ढ़' => 'ढ़',
-  'फ़' => 'फ़',
-  'य़' => 'य़',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ড়' => 'ড়',
-  'ঢ়' => 'ঢ়',
-  'য়' => 'য়',
-  'ਲ਼' => 'ਲ਼',
-  'ਸ਼' => 'ਸ਼',
-  'ਖ਼' => 'ਖ਼',
-  'ਗ਼' => 'ਗ਼',
-  'ਜ਼' => 'ਜ਼',
-  'ਫ਼' => 'ਫ਼',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ଡ଼' => 'ଡ଼',
-  'ଢ଼' => 'ଢ଼',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'གྷ' => 'གྷ',
-  'ཌྷ' => 'ཌྷ',
-  'དྷ' => 'དྷ',
-  'བྷ' => 'བྷ',
-  'ཛྷ' => 'ཛྷ',
-  'ཀྵ' => 'ཀྵ',
-  'ཱི' => 'ཱི',
-  'ཱུ' => 'ཱུ',
-  'ྲྀ' => 'ྲྀ',
-  'ླྀ' => 'ླྀ',
-  'ཱྀ' => 'ཱྀ',
-  'ྒྷ' => 'ྒྷ',
-  'ྜྷ' => 'ྜྷ',
-  'ྡྷ' => 'ྡྷ',
-  'ྦྷ' => 'ྦྷ',
-  'ྫྷ' => 'ྫྷ',
-  'ྐྵ' => 'ྐྵ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'á¹¢' => 'SÌ£',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'á¹°' => 'TÌ­',
-  'á¹±' => 'tÌ­',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'á¹´' => 'UÌ°',
-  'á¹µ' => 'uÌ°',
-  'Ṷ' => 'Ṷ',
-  'á¹·' => 'uÌ­',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'á¹¾' => 'VÌ£',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'á»’' => 'OÌ‚Ì€',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'ự' => 'ự',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'á»´' => 'YÌ£',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'ἲ' => 'ἲ',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'ἶ' => 'ἶ',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'á½’' => 'Ï…Ì“Ì€',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'á½–' => 'Ï…Ì“Í‚',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ά' => 'ά',
-  'ὲ' => 'ὲ',
-  'έ' => 'έ',
-  'ὴ' => 'ὴ',
-  'ή' => 'ή',
-  'ὶ' => 'ὶ',
-  'ί' => 'ί',
-  'ὸ' => 'ὸ',
-  'ό' => 'ό',
-  'ὺ' => 'ὺ',
-  'ύ' => 'ύ',
-  'ὼ' => 'ὼ',
-  'ώ' => 'ώ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'ᾅ' => 'ᾅ',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'ᾗ' => 'ᾗ',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'ᾠ' => 'ᾠ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'ᾧ' => 'ᾧ',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'ᾭ' => 'ᾭ',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'ᾲ' => 'ᾲ',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'ᾷ' => 'ᾷ',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'Ά' => 'Ά',
-  'ᾼ' => 'ᾼ',
-  'ι' => 'ι',
-  '῁' => '῁',
-  'ῂ' => 'ῂ',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Έ' => 'Έ',
-  'Ὴ' => 'Ὴ',
-  'Ή' => 'Ή',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ῒ' => 'ῒ',
-  'ΐ' => 'ΐ',
-  'ῖ' => 'ῖ',
-  'ῗ' => 'ῗ',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  'Ί' => 'Ί',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'á¿¡' => 'Ï…Ì„',
-  'ῢ' => 'ῢ',
-  'ΰ' => 'ΰ',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ύ' => 'Ύ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  '΅' => '΅',
-  '`' => '`',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ῴ' => 'ῴ',
-  'ῶ' => 'ῶ',
-  'ῷ' => 'ῷ',
-  'Ὸ' => 'Ὸ',
-  'Ό' => 'Ό',
-  'Ὼ' => 'Ὼ',
-  'Ώ' => 'Ώ',
-  'ῼ' => 'ῼ',
-  '´' => '´',
-  ' ' => ' ',
-  ' ' => ' ',
-  'Ω' => 'Ω',
-  'K' => 'K',
-  'â„«' => 'AÌŠ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  '〈' => '〈',
-  '〉' => '〉',
-  '⫝̸' => '⫝̸',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚®' => 'ã‚­ã‚™',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '豈' => '豈',
-  '更' => '更',
-  '車' => '車',
-  '賈' => '賈',
-  '滑' => '滑',
-  '串' => '串',
-  '句' => '句',
-  '龜' => '龜',
-  '龜' => '龜',
-  '契' => '契',
-  '金' => '金',
-  '喇' => '喇',
-  '奈' => '奈',
-  '懶' => '懶',
-  '癩' => '癩',
-  '羅' => '羅',
-  '蘿' => '蘿',
-  '螺' => '螺',
-  '裸' => '裸',
-  '邏' => '邏',
-  '樂' => '樂',
-  '洛' => '洛',
-  '烙' => '烙',
-  '珞' => '珞',
-  '落' => '落',
-  '酪' => '酪',
-  '駱' => '駱',
-  '亂' => '亂',
-  '卵' => '卵',
-  '欄' => '欄',
-  '爛' => '爛',
-  '蘭' => '蘭',
-  '鸞' => '鸞',
-  '嵐' => '嵐',
-  '濫' => '濫',
-  '藍' => '藍',
-  '襤' => '襤',
-  '拉' => '拉',
-  '臘' => '臘',
-  '蠟' => '蠟',
-  '廊' => '廊',
-  '朗' => '朗',
-  '浪' => '浪',
-  '狼' => '狼',
-  '郎' => '郎',
-  '來' => '來',
-  '冷' => '冷',
-  '勞' => '勞',
-  '擄' => '擄',
-  '櫓' => '櫓',
-  '爐' => '爐',
-  '盧' => '盧',
-  '老' => '老',
-  '蘆' => '蘆',
-  '虜' => '虜',
-  '路' => '路',
-  '露' => '露',
-  '魯' => '魯',
-  '鷺' => '鷺',
-  '碌' => '碌',
-  '祿' => '祿',
-  '綠' => '綠',
-  '菉' => '菉',
-  '錄' => '錄',
-  '鹿' => '鹿',
-  '論' => '論',
-  '壟' => '壟',
-  '弄' => '弄',
-  '籠' => '籠',
-  '聾' => '聾',
-  '牢' => '牢',
-  '磊' => '磊',
-  '賂' => '賂',
-  '雷' => '雷',
-  '壘' => '壘',
-  '屢' => '屢',
-  '樓' => '樓',
-  '淚' => '淚',
-  '漏' => '漏',
-  '累' => '累',
-  '縷' => '縷',
-  '陋' => '陋',
-  '勒' => '勒',
-  '肋' => '肋',
-  '凜' => '凜',
-  '凌' => '凌',
-  '稜' => '稜',
-  '綾' => '綾',
-  '菱' => '菱',
-  '陵' => '陵',
-  '讀' => '讀',
-  '拏' => '拏',
-  '樂' => '樂',
-  '諾' => '諾',
-  '丹' => '丹',
-  '寧' => '寧',
-  '怒' => '怒',
-  '率' => '率',
-  '異' => '異',
-  '北' => '北',
-  '磻' => '磻',
-  '便' => '便',
-  '復' => '復',
-  '不' => '不',
-  '泌' => '泌',
-  '數' => '數',
-  '索' => '索',
-  '參' => '參',
-  '塞' => '塞',
-  '省' => '省',
-  '葉' => '葉',
-  '說' => '說',
-  '殺' => '殺',
-  '辰' => '辰',
-  '沈' => '沈',
-  '拾' => '拾',
-  '若' => '若',
-  '掠' => '掠',
-  '略' => '略',
-  '亮' => '亮',
-  '兩' => '兩',
-  '凉' => '凉',
-  '梁' => '梁',
-  '糧' => '糧',
-  '良' => '良',
-  '諒' => '諒',
-  '量' => '量',
-  '勵' => '勵',
-  '呂' => '呂',
-  '女' => '女',
-  '廬' => '廬',
-  '旅' => '旅',
-  '濾' => '濾',
-  '礪' => '礪',
-  '閭' => '閭',
-  '驪' => '驪',
-  '麗' => '麗',
-  '黎' => '黎',
-  '力' => '力',
-  '曆' => '曆',
-  '歷' => '歷',
-  '轢' => '轢',
-  '年' => '年',
-  '憐' => '憐',
-  '戀' => '戀',
-  '撚' => '撚',
-  '漣' => '漣',
-  '煉' => '煉',
-  '璉' => '璉',
-  '秊' => '秊',
-  '練' => '練',
-  '聯' => '聯',
-  '輦' => '輦',
-  '蓮' => '蓮',
-  '連' => '連',
-  '鍊' => '鍊',
-  '列' => '列',
-  '劣' => '劣',
-  '咽' => '咽',
-  '烈' => '烈',
-  '裂' => '裂',
-  '說' => '說',
-  '廉' => '廉',
-  '念' => '念',
-  '捻' => '捻',
-  '殮' => '殮',
-  '簾' => '簾',
-  '獵' => '獵',
-  '令' => '令',
-  '囹' => '囹',
-  '寧' => '寧',
-  '嶺' => '嶺',
-  '怜' => '怜',
-  '玲' => '玲',
-  '瑩' => '瑩',
-  '羚' => '羚',
-  '聆' => '聆',
-  '鈴' => '鈴',
-  '零' => '零',
-  '靈' => '靈',
-  '領' => '領',
-  '例' => '例',
-  '禮' => '禮',
-  '醴' => '醴',
-  '隸' => '隸',
-  '惡' => '惡',
-  '了' => '了',
-  '僚' => '僚',
-  '寮' => '寮',
-  '尿' => '尿',
-  '料' => '料',
-  '樂' => '樂',
-  '燎' => '燎',
-  '療' => '療',
-  '蓼' => '蓼',
-  '遼' => '遼',
-  '龍' => '龍',
-  '暈' => '暈',
-  '阮' => '阮',
-  '劉' => '劉',
-  '杻' => '杻',
-  '柳' => '柳',
-  '流' => '流',
-  '溜' => '溜',
-  '琉' => '琉',
-  '留' => '留',
-  '硫' => '硫',
-  '紐' => '紐',
-  '類' => '類',
-  '六' => '六',
-  '戮' => '戮',
-  '陸' => '陸',
-  '倫' => '倫',
-  '崙' => '崙',
-  '淪' => '淪',
-  '輪' => '輪',
-  '律' => '律',
-  '慄' => '慄',
-  '栗' => '栗',
-  '率' => '率',
-  '隆' => '隆',
-  '利' => '利',
-  '吏' => '吏',
-  '履' => '履',
-  '易' => '易',
-  '李' => '李',
-  '梨' => '梨',
-  '泥' => '泥',
-  '理' => '理',
-  '痢' => '痢',
-  '罹' => '罹',
-  '裏' => '裏',
-  '裡' => '裡',
-  '里' => '里',
-  '離' => '離',
-  '匿' => '匿',
-  '溺' => '溺',
-  '吝' => '吝',
-  '燐' => '燐',
-  '璘' => '璘',
-  '藺' => '藺',
-  '隣' => '隣',
-  '鱗' => '鱗',
-  '麟' => '麟',
-  '林' => '林',
-  '淋' => '淋',
-  '臨' => '臨',
-  '立' => '立',
-  '笠' => '笠',
-  '粒' => '粒',
-  '狀' => '狀',
-  '炙' => '炙',
-  '識' => '識',
-  '什' => '什',
-  '茶' => '茶',
-  '刺' => '刺',
-  '切' => '切',
-  '度' => '度',
-  '拓' => '拓',
-  '糖' => '糖',
-  '宅' => '宅',
-  '洞' => '洞',
-  '暴' => '暴',
-  '輻' => '輻',
-  '行' => '行',
-  '降' => '降',
-  '見' => '見',
-  '廓' => '廓',
-  '兀' => '兀',
-  '嗀' => '嗀',
-  '塚' => '塚',
-  '晴' => '晴',
-  '凞' => '凞',
-  '猪' => '猪',
-  '益' => '益',
-  '礼' => '礼',
-  '神' => '神',
-  '祥' => '祥',
-  '福' => '福',
-  '靖' => '靖',
-  '精' => '精',
-  '羽' => '羽',
-  '蘒' => '蘒',
-  '諸' => '諸',
-  '逸' => '逸',
-  '都' => '都',
-  '飯' => '飯',
-  '飼' => '飼',
-  '館' => '館',
-  '鶴' => '鶴',
-  '郞' => '郞',
-  '隷' => '隷',
-  '侮' => '侮',
-  '僧' => '僧',
-  '免' => '免',
-  '勉' => '勉',
-  '勤' => '勤',
-  '卑' => '卑',
-  '喝' => '喝',
-  '嘆' => '嘆',
-  '器' => '器',
-  '塀' => '塀',
-  '墨' => '墨',
-  '層' => '層',
-  '屮' => '屮',
-  '悔' => '悔',
-  '慨' => '慨',
-  '憎' => '憎',
-  '懲' => '懲',
-  '敏' => '敏',
-  'ï©‚' => 'æ—¢',
-  '暑' => '暑',
-  '梅' => '梅',
-  'ï©…' => 'æµ·',
-  '渚' => '渚',
-  '漢' => '漢',
-  '煮' => '煮',
-  '爫' => '爫',
-  '琢' => '琢',
-  '碑' => '碑',
-  '社' => '社',
-  '祉' => '祉',
-  '祈' => '祈',
-  '祐' => '祐',
-  '祖' => '祖',
-  '祝' => '祝',
-  '禍' => '禍',
-  '禎' => '禎',
-  'ï©”' => 'ç©€',
-  '突' => '突',
-  '節' => '節',
-  'ï©—' => 'ç·´',
-  '縉' => '縉',
-  '繁' => '繁',
-  'ï©š' => 'ç½²',
-  '者' => '者',
-  '臭' => '臭',
-  '艹' => '艹',
-  '艹' => '艹',
-  'ï©Ÿ' => 'è‘—',
-  '褐' => '褐',
-  '視' => '視',
-  '謁' => '謁',
-  '謹' => '謹',
-  '賓' => '賓',
-  'ï©¥' => 'è´ˆ',
-  '辶' => '辶',
-  '逸' => '逸',
-  '難' => '難',
-  '響' => '響',
-  '頻' => '頻',
-  '恵' => '恵',
-  '𤋮' => '𤋮',
-  '舘' => '舘',
-  '並' => '並',
-  '况' => '况',
-  '全' => '全',
-  '侀' => '侀',
-  'ï©´' => 'å……',
-  '冀' => '冀',
-  '勇' => '勇',
-  '勺' => '勺',
-  '喝' => '喝',
-  '啕' => '啕',
-  '喙' => '喙',
-  'ï©»' => 'å—¢',
-  '塚' => '塚',
-  '墳' => '墳',
-  '奄' => '奄',
-  '奔' => '奔',
-  '婢' => '婢',
-  '嬨' => '嬨',
-  '廒' => '廒',
-  '廙' => '廙',
-  '彩' => '彩',
-  '徭' => '徭',
-  '惘' => '惘',
-  '慎' => '慎',
-  '愈' => '愈',
-  '憎' => '憎',
-  '慠' => '慠',
-  '懲' => '懲',
-  '戴' => '戴',
-  '揄' => '揄',
-  '搜' => '搜',
-  '摒' => '摒',
-  '敖' => '敖',
-  '晴' => '晴',
-  '朗' => '朗',
-  '望' => '望',
-  '杖' => '杖',
-  '歹' => '歹',
-  '殺' => '殺',
-  '流' => '流',
-  '滛' => '滛',
-  '滋' => '滋',
-  '漢' => '漢',
-  '瀞' => '瀞',
-  '煮' => '煮',
-  '瞧' => '瞧',
-  '爵' => '爵',
-  '犯' => '犯',
-  '猪' => '猪',
-  '瑱' => '瑱',
-  '甆' => '甆',
-  '画' => '画',
-  '瘝' => '瘝',
-  '瘟' => '瘟',
-  '益' => '益',
-  '盛' => '盛',
-  '直' => '直',
-  '睊' => '睊',
-  '着' => '着',
-  '磌' => '磌',
-  '窱' => '窱',
-  '節' => '節',
-  '类' => '类',
-  '絛' => '絛',
-  '練' => '練',
-  '缾' => '缾',
-  '者' => '者',
-  '荒' => '荒',
-  '華' => '華',
-  '蝹' => '蝹',
-  '襁' => '襁',
-  '覆' => '覆',
-  '視' => '視',
-  '調' => '調',
-  '諸' => '諸',
-  '請' => '請',
-  '謁' => '謁',
-  '諾' => '諾',
-  '諭' => '諭',
-  '謹' => '謹',
-  '變' => '變',
-  '贈' => '贈',
-  '輸' => '輸',
-  '遲' => '遲',
-  '醙' => '醙',
-  '鉶' => '鉶',
-  '陼' => '陼',
-  '難' => '難',
-  '靖' => '靖',
-  '韛' => '韛',
-  '響' => '響',
-  'ï«‹' => 'é ‹',
-  '頻' => '頻',
-  '鬒' => '鬒',
-  '龜' => '龜',
-  '𢡊' => '𢡊',
-  '𢡄' => '𢡄',
-  '𣏕' => '𣏕',
-  '㮝' => '㮝',
-  '䀘' => '䀘',
-  '䀹' => '䀹',
-  '𥉉' => '𥉉',
-  '𥳐' => '𥳐',
-  '𧻓' => '𧻓',
-  '齃' => '齃',
-  '龎' => '龎',
-  'יִ' => 'יִ',
-  'ײַ' => 'ײַ',
-  'שׁ' => 'שׁ',
-  'שׂ' => 'שׂ',
-  'שּׁ' => 'שּׁ',
-  'שּׂ' => 'שּׂ',
-  'אַ' => 'אַ',
-  'אָ' => 'אָ',
-  'אּ' => 'אּ',
-  'בּ' => 'בּ',
-  'גּ' => 'גּ',
-  'דּ' => 'דּ',
-  'הּ' => 'הּ',
-  'וּ' => 'וּ',
-  'זּ' => 'זּ',
-  'טּ' => 'טּ',
-  'יּ' => 'יּ',
-  'ךּ' => 'ךּ',
-  'כּ' => 'כּ',
-  'לּ' => 'לּ',
-  'מּ' => 'מּ',
-  'ï­€' => '× Ö¼',
-  'סּ' => 'סּ',
-  'ï­ƒ' => '×£Ö¼',
-  'פּ' => 'פּ',
-  'צּ' => 'צּ',
-  'קּ' => 'קּ',
-  'רּ' => 'רּ',
-  'שּ' => 'שּ',
-  'תּ' => 'תּ',
-  'וֹ' => 'וֹ',
-  'בֿ' => 'בֿ',
-  'כֿ' => 'כֿ',
-  'פֿ' => 'פֿ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-  '𝅗𝅥' => '𝅗𝅥',
-  '𝅘𝅥' => '𝅘𝅥',
-  '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
-  '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
-  '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
-  '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
-  '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
-  '𝆹𝅥' => '𝆹𝅥',
-  '𝆺𝅥' => '𝆺𝅥',
-  '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
-  '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
-  '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
-  '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
-  '丽' => '丽',
-  '丸' => '丸',
-  '乁' => '乁',
-  '𠄢' => '𠄢',
-  '你' => '你',
-  '侮' => '侮',
-  '侻' => '侻',
-  '倂' => '倂',
-  '偺' => '偺',
-  '備' => '備',
-  '僧' => '僧',
-  '像' => '像',
-  '㒞' => '㒞',
-  '𠘺' => '𠘺',
-  '免' => '免',
-  '兔' => '兔',
-  '兤' => '兤',
-  '具' => '具',
-  '𠔜' => '𠔜',
-  '㒹' => '㒹',
-  '內' => '內',
-  '再' => '再',
-  '𠕋' => '𠕋',
-  '冗' => '冗',
-  '冤' => '冤',
-  '仌' => '仌',
-  '冬' => '冬',
-  '况' => '况',
-  '𩇟' => '𩇟',
-  '凵' => '凵',
-  '刃' => '刃',
-  '㓟' => '㓟',
-  '刻' => '刻',
-  '剆' => '剆',
-  '割' => '割',
-  '剷' => '剷',
-  '㔕' => '㔕',
-  '勇' => '勇',
-  '勉' => '勉',
-  '勤' => '勤',
-  '勺' => '勺',
-  '包' => '包',
-  '匆' => '匆',
-  '北' => '北',
-  '卉' => '卉',
-  '卑' => '卑',
-  '博' => '博',
-  '即' => '即',
-  '卽' => '卽',
-  '卿' => '卿',
-  '卿' => '卿',
-  '卿' => '卿',
-  '𠨬' => '𠨬',
-  '灰' => '灰',
-  '及' => '及',
-  '叟' => '叟',
-  '𠭣' => '𠭣',
-  '叫' => '叫',
-  '叱' => '叱',
-  '吆' => '吆',
-  '咞' => '咞',
-  '吸' => '吸',
-  '呈' => '呈',
-  '周' => '周',
-  '咢' => '咢',
-  '哶' => '哶',
-  '唐' => '唐',
-  '啓' => '啓',
-  '啣' => '啣',
-  '善' => '善',
-  '善' => '善',
-  '喙' => '喙',
-  '喫' => '喫',
-  '喳' => '喳',
-  '嗂' => '嗂',
-  '圖' => '圖',
-  '嘆' => '嘆',
-  '圗' => '圗',
-  '噑' => '噑',
-  '噴' => '噴',
-  '切' => '切',
-  '壮' => '壮',
-  '城' => '城',
-  '埴' => '埴',
-  '堍' => '堍',
-  '型' => '型',
-  '堲' => '堲',
-  '報' => '報',
-  '墬' => '墬',
-  '𡓤' => '𡓤',
-  '売' => '売',
-  '壷' => '壷',
-  '夆' => '夆',
-  '多' => '多',
-  '夢' => '夢',
-  '奢' => '奢',
-  '𡚨' => '𡚨',
-  '𡛪' => '𡛪',
-  '姬' => '姬',
-  '娛' => '娛',
-  '娧' => '娧',
-  '姘' => '姘',
-  '婦' => '婦',
-  '㛮' => '㛮',
-  '㛼' => '㛼',
-  '嬈' => '嬈',
-  '嬾' => '嬾',
-  '嬾' => '嬾',
-  '𡧈' => '𡧈',
-  '寃' => '寃',
-  '寘' => '寘',
-  '寧' => '寧',
-  '寳' => '寳',
-  '𡬘' => '𡬘',
-  '寿' => '寿',
-  '将' => '将',
-  '当' => '当',
-  '尢' => '尢',
-  '㞁' => '㞁',
-  '屠' => '屠',
-  '屮' => '屮',
-  '峀' => '峀',
-  '岍' => '岍',
-  '𡷤' => '𡷤',
-  '嵃' => '嵃',
-  '𡷦' => '𡷦',
-  '嵮' => '嵮',
-  '嵫' => '嵫',
-  '嵼' => '嵼',
-  '巡' => '巡',
-  '巢' => '巢',
-  '㠯' => '㠯',
-  '巽' => '巽',
-  '帨' => '帨',
-  '帽' => '帽',
-  '幩' => '幩',
-  '㡢' => '㡢',
-  '𢆃' => '𢆃',
-  '㡼' => '㡼',
-  '庰' => '庰',
-  '庳' => '庳',
-  '庶' => '庶',
-  '廊' => '廊',
-  '𪎒' => '𪎒',
-  '廾' => '廾',
-  '𢌱' => '𢌱',
-  '𢌱' => '𢌱',
-  '舁' => '舁',
-  '弢' => '弢',
-  '弢' => '弢',
-  '㣇' => '㣇',
-  '𣊸' => '𣊸',
-  '𦇚' => '𦇚',
-  '形' => '形',
-  '彫' => '彫',
-  '㣣' => '㣣',
-  '徚' => '徚',
-  '忍' => '忍',
-  '志' => '志',
-  '忹' => '忹',
-  '悁' => '悁',
-  '㤺' => '㤺',
-  '㤜' => '㤜',
-  '悔' => '悔',
-  '𢛔' => '𢛔',
-  '惇' => '惇',
-  '慈' => '慈',
-  '慌' => '慌',
-  '慎' => '慎',
-  '慌' => '慌',
-  '慺' => '慺',
-  '憎' => '憎',
-  '憲' => '憲',
-  '憤' => '憤',
-  '憯' => '憯',
-  '懞' => '懞',
-  '懲' => '懲',
-  '懶' => '懶',
-  '成' => '成',
-  '戛' => '戛',
-  '扝' => '扝',
-  '抱' => '抱',
-  '拔' => '拔',
-  '捐' => '捐',
-  '𢬌' => '𢬌',
-  '挽' => '挽',
-  '拼' => '拼',
-  '捨' => '捨',
-  '掃' => '掃',
-  '揤' => '揤',
-  '𢯱' => '𢯱',
-  '搢' => '搢',
-  '揅' => '揅',
-  '掩' => '掩',
-  '㨮' => '㨮',
-  '摩' => '摩',
-  '摾' => '摾',
-  '撝' => '撝',
-  '摷' => '摷',
-  '㩬' => '㩬',
-  '敏' => '敏',
-  '敬' => '敬',
-  '𣀊' => '𣀊',
-  '旣' => '旣',
-  '書' => '書',
-  '晉' => '晉',
-  '㬙' => '㬙',
-  '暑' => '暑',
-  '㬈' => '㬈',
-  '㫤' => '㫤',
-  '冒' => '冒',
-  '冕' => '冕',
-  '最' => '最',
-  '暜' => '暜',
-  '肭' => '肭',
-  '䏙' => '䏙',
-  '朗' => '朗',
-  '望' => '望',
-  '朡' => '朡',
-  '杞' => '杞',
-  '杓' => '杓',
-  '𣏃' => '𣏃',
-  '㭉' => '㭉',
-  '柺' => '柺',
-  '枅' => '枅',
-  '桒' => '桒',
-  '梅' => '梅',
-  '𣑭' => '𣑭',
-  '梎' => '梎',
-  '栟' => '栟',
-  '椔' => '椔',
-  '㮝' => '㮝',
-  '楂' => '楂',
-  '榣' => '榣',
-  '槪' => '槪',
-  '檨' => '檨',
-  '𣚣' => '𣚣',
-  '櫛' => '櫛',
-  '㰘' => '㰘',
-  '次' => '次',
-  '𣢧' => '𣢧',
-  '歔' => '歔',
-  '㱎' => '㱎',
-  '歲' => '歲',
-  '殟' => '殟',
-  '殺' => '殺',
-  '殻' => '殻',
-  '𣪍' => '𣪍',
-  '𡴋' => '𡴋',
-  '𣫺' => '𣫺',
-  '汎' => '汎',
-  '𣲼' => '𣲼',
-  '沿' => '沿',
-  '泍' => '泍',
-  '汧' => '汧',
-  '洖' => '洖',
-  '派' => '派',
-  '海' => '海',
-  '流' => '流',
-  '浩' => '浩',
-  '浸' => '浸',
-  '涅' => '涅',
-  '𣴞' => '𣴞',
-  '洴' => '洴',
-  '港' => '港',
-  '湮' => '湮',
-  '㴳' => '㴳',
-  '滋' => '滋',
-  '滇' => '滇',
-  '𣻑' => '𣻑',
-  '淹' => '淹',
-  '潮' => '潮',
-  '𣽞' => '𣽞',
-  '𣾎' => '𣾎',
-  '濆' => '濆',
-  '瀹' => '瀹',
-  '瀞' => '瀞',
-  '瀛' => '瀛',
-  '㶖' => '㶖',
-  '灊' => '灊',
-  '災' => '災',
-  '灷' => '灷',
-  '炭' => '炭',
-  '𠔥' => '𠔥',
-  '煅' => '煅',
-  '𤉣' => '𤉣',
-  '熜' => '熜',
-  '𤎫' => '𤎫',
-  '爨' => '爨',
-  '爵' => '爵',
-  '牐' => '牐',
-  '𤘈' => '𤘈',
-  '犀' => '犀',
-  '犕' => '犕',
-  '𤜵' => '𤜵',
-  '𤠔' => '𤠔',
-  '獺' => '獺',
-  '王' => '王',
-  '㺬' => '㺬',
-  '玥' => '玥',
-  '㺸' => '㺸',
-  '㺸' => '㺸',
-  '瑇' => '瑇',
-  '瑜' => '瑜',
-  '瑱' => '瑱',
-  '璅' => '璅',
-  '瓊' => '瓊',
-  '㼛' => '㼛',
-  '甤' => '甤',
-  '𤰶' => '𤰶',
-  '甾' => '甾',
-  '𤲒' => '𤲒',
-  '異' => '異',
-  '𢆟' => '𢆟',
-  '瘐' => '瘐',
-  '𤾡' => '𤾡',
-  '𤾸' => '𤾸',
-  '𥁄' => '𥁄',
-  '㿼' => '㿼',
-  '䀈' => '䀈',
-  '直' => '直',
-  '𥃳' => '𥃳',
-  '𥃲' => '𥃲',
-  '𥄙' => '𥄙',
-  '𥄳' => '𥄳',
-  '眞' => '眞',
-  '真' => '真',
-  '真' => '真',
-  '睊' => '睊',
-  '䀹' => '䀹',
-  '瞋' => '瞋',
-  '䁆' => '䁆',
-  '䂖' => '䂖',
-  '𥐝' => '𥐝',
-  '硎' => '硎',
-  '碌' => '碌',
-  '磌' => '磌',
-  '䃣' => '䃣',
-  '𥘦' => '𥘦',
-  '祖' => '祖',
-  '𥚚' => '𥚚',
-  '𥛅' => '𥛅',
-  '福' => '福',
-  '秫' => '秫',
-  '䄯' => '䄯',
-  '穀' => '穀',
-  '穊' => '穊',
-  '穏' => '穏',
-  '𥥼' => '𥥼',
-  '𥪧' => '𥪧',
-  '𥪧' => '𥪧',
-  '竮' => '竮',
-  '䈂' => '䈂',
-  '𥮫' => '𥮫',
-  '篆' => '篆',
-  '築' => '築',
-  '䈧' => '䈧',
-  '𥲀' => '𥲀',
-  '糒' => '糒',
-  '䊠' => '䊠',
-  '糨' => '糨',
-  '糣' => '糣',
-  '紀' => '紀',
-  '𥾆' => '𥾆',
-  '絣' => '絣',
-  '䌁' => '䌁',
-  '緇' => '緇',
-  '縂' => '縂',
-  '繅' => '繅',
-  '䌴' => '䌴',
-  '𦈨' => '𦈨',
-  '𦉇' => '𦉇',
-  '䍙' => '䍙',
-  '𦋙' => '𦋙',
-  '罺' => '罺',
-  '𦌾' => '𦌾',
-  '羕' => '羕',
-  '翺' => '翺',
-  '者' => '者',
-  '𦓚' => '𦓚',
-  '𦔣' => '𦔣',
-  '聠' => '聠',
-  '𦖨' => '𦖨',
-  '聰' => '聰',
-  '𣍟' => '𣍟',
-  '䏕' => '䏕',
-  '育' => '育',
-  '脃' => '脃',
-  '䐋' => '䐋',
-  '脾' => '脾',
-  '媵' => '媵',
-  '𦞧' => '𦞧',
-  '𦞵' => '𦞵',
-  '𣎓' => '𣎓',
-  '𣎜' => '𣎜',
-  '舁' => '舁',
-  '舄' => '舄',
-  '辞' => '辞',
-  '䑫' => '䑫',
-  '芑' => '芑',
-  '芋' => '芋',
-  '芝' => '芝',
-  '劳' => '劳',
-  '花' => '花',
-  '芳' => '芳',
-  '芽' => '芽',
-  '苦' => '苦',
-  '𦬼' => '𦬼',
-  '若' => '若',
-  '茝' => '茝',
-  '荣' => '荣',
-  '莭' => '莭',
-  '茣' => '茣',
-  '莽' => '莽',
-  '菧' => '菧',
-  '著' => '著',
-  '荓' => '荓',
-  '菊' => '菊',
-  '菌' => '菌',
-  '菜' => '菜',
-  '𦰶' => '𦰶',
-  '𦵫' => '𦵫',
-  '𦳕' => '𦳕',
-  '䔫' => '䔫',
-  '蓱' => '蓱',
-  '蓳' => '蓳',
-  '蔖' => '蔖',
-  '𧏊' => '𧏊',
-  '蕤' => '蕤',
-  '𦼬' => '𦼬',
-  '䕝' => '䕝',
-  '䕡' => '䕡',
-  '𦾱' => '𦾱',
-  '𧃒' => '𧃒',
-  '䕫' => '䕫',
-  '虐' => '虐',
-  '虜' => '虜',
-  '虧' => '虧',
-  '虩' => '虩',
-  '蚩' => '蚩',
-  '蚈' => '蚈',
-  '蜎' => '蜎',
-  '蛢' => '蛢',
-  '蝹' => '蝹',
-  '蜨' => '蜨',
-  '蝫' => '蝫',
-  '螆' => '螆',
-  '䗗' => '䗗',
-  '蟡' => '蟡',
-  '蠁' => '蠁',
-  '䗹' => '䗹',
-  '衠' => '衠',
-  '衣' => '衣',
-  '𧙧' => '𧙧',
-  '裗' => '裗',
-  '裞' => '裞',
-  '䘵' => '䘵',
-  '裺' => '裺',
-  '㒻' => '㒻',
-  '𧢮' => '𧢮',
-  '𧥦' => '𧥦',
-  '䚾' => '䚾',
-  '䛇' => '䛇',
-  '誠' => '誠',
-  '諭' => '諭',
-  '變' => '變',
-  '豕' => '豕',
-  '𧲨' => '𧲨',
-  '貫' => '貫',
-  '賁' => '賁',
-  '贛' => '贛',
-  '起' => '起',
-  '𧼯' => '𧼯',
-  '𠠄' => '𠠄',
-  '跋' => '跋',
-  '趼' => '趼',
-  '跰' => '跰',
-  '𠣞' => '𠣞',
-  '軔' => '軔',
-  '輸' => '輸',
-  '𨗒' => '𨗒',
-  '𨗭' => '𨗭',
-  '邔' => '邔',
-  '郱' => '郱',
-  '鄑' => '鄑',
-  '𨜮' => '𨜮',
-  '鄛' => '鄛',
-  '鈸' => '鈸',
-  '鋗' => '鋗',
-  '鋘' => '鋘',
-  '鉼' => '鉼',
-  '鏹' => '鏹',
-  '鐕' => '鐕',
-  '𨯺' => '𨯺',
-  '開' => '開',
-  '䦕' => '䦕',
-  '閷' => '閷',
-  '𨵷' => '𨵷',
-  '䧦' => '䧦',
-  '雃' => '雃',
-  '嶲' => '嶲',
-  '霣' => '霣',
-  '𩅅' => '𩅅',
-  '𩈚' => '𩈚',
-  '䩮' => '䩮',
-  '䩶' => '䩶',
-  '韠' => '韠',
-  '𩐊' => '𩐊',
-  '䪲' => '䪲',
-  '𩒖' => '𩒖',
-  '頋' => '頋',
-  '頋' => '頋',
-  '頩' => '頩',
-  '𩖶' => '𩖶',
-  '飢' => '飢',
-  '䬳' => '䬳',
-  '餩' => '餩',
-  '馧' => '馧',
-  '駂' => '駂',
-  '駾' => '駾',
-  '䯎' => '䯎',
-  '𩬰' => '𩬰',
-  '鬒' => '鬒',
-  '鱀' => '鱀',
-  '鳽' => '鳽',
-  '䳎' => '䳎',
-  '䳭' => '䳭',
-  '鵧' => '鵧',
-  '𪃎' => '𪃎',
-  '䳸' => '䳸',
-  '𪄅' => '𪄅',
-  '𪈎' => '𪈎',
-  '𪊑' => '𪊑',
-  '麻' => '麻',
-  '䵖' => '䵖',
-  '黹' => '黹',
-  '黾' => '黾',
-  '鼅' => '鼅',
-  '鼏' => '鼏',
-  '鼖' => '鼖',
-  '鼻' => '鼻',
-  '𪘀' => '𪘀',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
deleted file mode 100644
index ec90f36eb6..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
+++ /dev/null
@@ -1,876 +0,0 @@
-<?php
-
-return array (
-  'Ì€' => 230,
-  '́' => 230,
-  'Ì‚' => 230,
-  '̃' => 230,
-  'Ì„' => 230,
-  'Ì…' => 230,
-  '̆' => 230,
-  '̇' => 230,
-  '̈' => 230,
-  '̉' => 230,
-  'ÌŠ' => 230,
-  'Ì‹' => 230,
-  '̌' => 230,
-  '̍' => 230,
-  'ÌŽ' => 230,
-  '̏' => 230,
-  '̐' => 230,
-  'Ì‘' => 230,
-  'Ì’' => 230,
-  'Ì“' => 230,
-  'Ì”' => 230,
-  'Ì•' => 232,
-  'Ì–' => 220,
-  'Ì—' => 220,
-  '̘' => 220,
-  'Ì™' => 220,
-  'Ìš' => 232,
-  'Ì›' => 216,
-  '̜' => 220,
-  '̝' => 220,
-  'Ìž' => 220,
-  'ÌŸ' => 220,
-  'Ì ' => 220,
-  'Ì¡' => 202,
-  'Ì¢' => 202,
-  'Ì£' => 220,
-  '̤' => 220,
-  'Ì¥' => 220,
-  '̦' => 220,
-  '̧' => 202,
-  '̨' => 202,
-  'Ì©' => 220,
-  '̪' => 220,
-  'Ì«' => 220,
-  '̬' => 220,
-  'Ì­' => 220,
-  'Ì®' => 220,
-  '̯' => 220,
-  'Ì°' => 220,
-  '̱' => 220,
-  '̲' => 220,
-  '̳' => 220,
-  'Ì´' => 1,
-  '̵' => 1,
-  '̶' => 1,
-  'Ì·' => 1,
-  '̸' => 1,
-  '̹' => 220,
-  '̺' => 220,
-  'Ì»' => 220,
-  '̼' => 220,
-  '̽' => 230,
-  '̾' => 230,
-  'Ì¿' => 230,
-  'Í€' => 230,
-  '́' => 230,
-  'Í‚' => 230,
-  '̓' => 230,
-  'Í„' => 230,
-  'Í…' => 240,
-  '͆' => 230,
-  '͇' => 220,
-  '͈' => 220,
-  '͉' => 220,
-  'ÍŠ' => 230,
-  'Í‹' => 230,
-  '͌' => 230,
-  '͍' => 220,
-  'ÍŽ' => 220,
-  '͐' => 230,
-  'Í‘' => 230,
-  'Í’' => 230,
-  'Í“' => 220,
-  'Í”' => 220,
-  'Í•' => 220,
-  'Í–' => 220,
-  'Í—' => 230,
-  '͘' => 232,
-  'Í™' => 220,
-  'Íš' => 220,
-  'Í›' => 230,
-  '͜' => 233,
-  '͝' => 234,
-  'Íž' => 234,
-  'ÍŸ' => 233,
-  'Í ' => 234,
-  'Í¡' => 234,
-  'Í¢' => 233,
-  'Í£' => 230,
-  'ͤ' => 230,
-  'Í¥' => 230,
-  'ͦ' => 230,
-  'ͧ' => 230,
-  'ͨ' => 230,
-  'Í©' => 230,
-  'ͪ' => 230,
-  'Í«' => 230,
-  'ͬ' => 230,
-  'Í­' => 230,
-  'Í®' => 230,
-  'ͯ' => 230,
-  'Òƒ' => 230,
-  'Ò„' => 230,
-  'Ò…' => 230,
-  'Ò†' => 230,
-  'Ò‡' => 230,
-  'Ö‘' => 220,
-  'Ö’' => 230,
-  'Ö“' => 230,
-  'Ö”' => 230,
-  'Ö•' => 230,
-  'Ö–' => 220,
-  'Ö—' => 230,
-  'Ö˜' => 230,
-  'Ö™' => 230,
-  'Öš' => 222,
-  'Ö›' => 220,
-  '֜' => 230,
-  '֝' => 230,
-  'Öž' => 230,
-  'ÖŸ' => 230,
-  'Ö ' => 230,
-  'Ö¡' => 230,
-  'Ö¢' => 220,
-  'Ö£' => 220,
-  'Ö¤' => 220,
-  'Ö¥' => 220,
-  'Ö¦' => 220,
-  'Ö§' => 220,
-  'Ö¨' => 230,
-  'Ö©' => 230,
-  'Öª' => 220,
-  'Ö«' => 230,
-  'Ö¬' => 230,
-  'Ö­' => 222,
-  'Ö®' => 228,
-  'Ö¯' => 230,
-  'Ö°' => 10,
-  'Ö±' => 11,
-  'Ö²' => 12,
-  'Ö³' => 13,
-  'Ö´' => 14,
-  'Öµ' => 15,
-  'Ö¶' => 16,
-  'Ö·' => 17,
-  'Ö¸' => 18,
-  'Ö¹' => 19,
-  'Öº' => 19,
-  'Ö»' => 20,
-  'Ö¼' => 21,
-  'Ö½' => 22,
-  'Ö¿' => 23,
-  'ׁ' => 24,
-  'ׂ' => 25,
-  'ׄ' => 230,
-  '×…' => 220,
-  'ׇ' => 18,
-  'ؐ' => 230,
-  'Ø‘' => 230,
-  'Ø’' => 230,
-  'Ø“' => 230,
-  'Ø”' => 230,
-  'Ø•' => 230,
-  'Ø–' => 230,
-  'Ø—' => 230,
-  'ؘ' => 30,
-  'Ø™' => 31,
-  'Øš' => 32,
-  'Ù‹' => 27,
-  'ٌ' => 28,
-  'ٍ' => 29,
-  'ÙŽ' => 30,
-  'ُ' => 31,
-  'ِ' => 32,
-  'Ù‘' => 33,
-  'Ù’' => 34,
-  'Ù“' => 230,
-  'Ù”' => 230,
-  'Ù•' => 220,
-  'Ù–' => 220,
-  'Ù—' => 230,
-  'Ù˜' => 230,
-  'Ù™' => 230,
-  'Ùš' => 230,
-  'Ù›' => 230,
-  'ٜ' => 220,
-  'ٝ' => 230,
-  'Ùž' => 230,
-  'ÙŸ' => 220,
-  'Ù°' => 35,
-  'Û–' => 230,
-  'Û—' => 230,
-  'Û˜' => 230,
-  'Û™' => 230,
-  'Ûš' => 230,
-  'Û›' => 230,
-  'ۜ' => 230,
-  'ÛŸ' => 230,
-  'Û ' => 230,
-  'Û¡' => 230,
-  'Û¢' => 230,
-  'Û£' => 220,
-  'Û¤' => 230,
-  'Û§' => 230,
-  'Û¨' => 230,
-  'Ûª' => 220,
-  'Û«' => 230,
-  'Û¬' => 230,
-  'Û­' => 220,
-  'Ü‘' => 36,
-  'Ü°' => 230,
-  'ܱ' => 220,
-  'ܲ' => 230,
-  'ܳ' => 230,
-  'Ü´' => 220,
-  'ܵ' => 230,
-  'ܶ' => 230,
-  'Ü·' => 220,
-  'ܸ' => 220,
-  'ܹ' => 220,
-  'ܺ' => 230,
-  'Ü»' => 220,
-  'ܼ' => 220,
-  'ܽ' => 230,
-  'ܾ' => 220,
-  'Ü¿' => 230,
-  'Ý€' => 230,
-  '݁' => 230,
-  'Ý‚' => 220,
-  '݃' => 230,
-  'Ý„' => 220,
-  'Ý…' => 230,
-  '݆' => 220,
-  '݇' => 230,
-  '݈' => 220,
-  '݉' => 230,
-  'ÝŠ' => 230,
-  'ß«' => 230,
-  '߬' => 230,
-  'ß­' => 230,
-  'ß®' => 230,
-  '߯' => 230,
-  'ß°' => 230,
-  'ß±' => 230,
-  'ß²' => 220,
-  'ß³' => 230,
-  'ß½' => 220,
-  'à –' => 230,
-  'à —' => 230,
-  'à ˜' => 230,
-  'à ™' => 230,
-  'à ›' => 230,
-  'ࠜ' => 230,
-  'ࠝ' => 230,
-  'à ž' => 230,
-  'à Ÿ' => 230,
-  'à  ' => 230,
-  'à ¡' => 230,
-  'à ¢' => 230,
-  'à £' => 230,
-  'à ¥' => 230,
-  'à ¦' => 230,
-  'à §' => 230,
-  'à ©' => 230,
-  'à ª' => 230,
-  'à «' => 230,
-  'à ¬' => 230,
-  'à ­' => 230,
-  'à¡™' => 220,
-  'à¡š' => 220,
-  'à¡›' => 220,
-  '࣓' => 220,
-  'ࣔ' => 230,
-  'ࣕ' => 230,
-  'ࣖ' => 230,
-  'ࣗ' => 230,
-  'ࣘ' => 230,
-  'ࣙ' => 230,
-  'ࣚ' => 230,
-  'ࣛ' => 230,
-  'ࣜ' => 230,
-  'ࣝ' => 230,
-  'ࣞ' => 230,
-  'ࣟ' => 230,
-  '࣠' => 230,
-  '࣡' => 230,
-  'ࣣ' => 220,
-  'ࣤ' => 230,
-  'ࣥ' => 230,
-  'ࣦ' => 220,
-  'ࣧ' => 230,
-  'ࣨ' => 230,
-  'ࣩ' => 220,
-  '࣪' => 230,
-  '࣫' => 230,
-  '࣬' => 230,
-  '࣭' => 220,
-  '࣮' => 220,
-  '࣯' => 220,
-  'ࣰ' => 27,
-  'ࣱ' => 28,
-  'ࣲ' => 29,
-  'ࣳ' => 230,
-  'ࣴ' => 230,
-  'ࣵ' => 230,
-  'ࣶ' => 220,
-  'ࣷ' => 230,
-  'ࣸ' => 230,
-  'ࣹ' => 220,
-  'ࣺ' => 220,
-  'ࣻ' => 230,
-  'ࣼ' => 230,
-  'ࣽ' => 230,
-  'ࣾ' => 230,
-  'ࣿ' => 230,
-  '़' => 7,
-  '्' => 9,
-  '॑' => 230,
-  '॒' => 220,
-  '॓' => 230,
-  '॔' => 230,
-  '়' => 7,
-  '্' => 9,
-  '৾' => 230,
-  '਼' => 7,
-  '੍' => 9,
-  '઼' => 7,
-  '્' => 9,
-  '଼' => 7,
-  '୍' => 9,
-  '்' => 9,
-  '్' => 9,
-  'ౕ' => 84,
-  'à±–' => 91,
-  '಼' => 7,
-  '್' => 9,
-  'à´»' => 9,
-  'à´¼' => 9,
-  '്' => 9,
-  'à·Š' => 9,
-  'ุ' => 103,
-  'ู' => 103,
-  'ฺ' => 9,
-  '่' => 107,
-  '้' => 107,
-  '๊' => 107,
-  '๋' => 107,
-  'ຸ' => 118,
-  'ູ' => 118,
-  '຺' => 9,
-  '່' => 122,
-  '້' => 122,
-  '໊' => 122,
-  '໋' => 122,
-  '༘' => 220,
-  '༙' => 220,
-  '༵' => 220,
-  '༷' => 220,
-  '༹' => 216,
-  'ཱ' => 129,
-  'ི' => 130,
-  'ུ' => 132,
-  'ེ' => 130,
-  'ཻ' => 130,
-  'ོ' => 130,
-  'ཽ' => 130,
-  'ྀ' => 130,
-  'ྂ' => 230,
-  'ྃ' => 230,
-  '྄' => 9,
-  '྆' => 230,
-  '྇' => 230,
-  '࿆' => 220,
-  '့' => 7,
-  '္' => 9,
-  '်' => 9,
-  'ႍ' => 220,
-  '፝' => 230,
-  '፞' => 230,
-  '፟' => 230,
-  '᜔' => 9,
-  '᜴' => 9,
-  '្' => 9,
-  '៝' => 230,
-  'ᢩ' => 228,
-  '᤹' => 222,
-  '᤺' => 230,
-  '᤻' => 220,
-  'ᨗ' => 230,
-  'ᨘ' => 220,
-  'á© ' => 9,
-  '᩵' => 230,
-  '᩶' => 230,
-  'á©·' => 230,
-  '᩸' => 230,
-  '᩹' => 230,
-  '᩺' => 230,
-  'á©»' => 230,
-  '᩼' => 230,
-  'á©¿' => 220,
-  '᪰' => 230,
-  '᪱' => 230,
-  '᪲' => 230,
-  '᪳' => 230,
-  '᪴' => 230,
-  '᪵' => 220,
-  '᪶' => 220,
-  '᪷' => 220,
-  '᪸' => 220,
-  '᪹' => 220,
-  '᪺' => 220,
-  '᪻' => 230,
-  '᪼' => 230,
-  '᪽' => 220,
-  'ᪿ' => 220,
-  'á«€' => 220,
-  '᬴' => 7,
-  'á­„' => 9,
-  'á­«' => 230,
-  'á­¬' => 220,
-  'á­­' => 230,
-  'á­®' => 230,
-  'á­¯' => 230,
-  'á­°' => 230,
-  'á­±' => 230,
-  'á­²' => 230,
-  'á­³' => 230,
-  '᮪' => 9,
-  '᮫' => 9,
-  '᯦' => 7,
-  '᯲' => 9,
-  '᯳' => 9,
-  'á°·' => 7,
-  '᳐' => 230,
-  '᳑' => 230,
-  'á³’' => 230,
-  'á³”' => 1,
-  '᳕' => 220,
-  'á³–' => 220,
-  'á³—' => 220,
-  '᳘' => 220,
-  'á³™' => 220,
-  '᳚' => 230,
-  'á³›' => 230,
-  '᳜' => 220,
-  '᳝' => 220,
-  '᳞' => 220,
-  '᳟' => 220,
-  'á³ ' => 230,
-  'á³¢' => 1,
-  'á³£' => 1,
-  '᳤' => 1,
-  'á³¥' => 1,
-  '᳦' => 1,
-  '᳧' => 1,
-  '᳨' => 1,
-  'á³­' => 220,
-  'á³´' => 230,
-  '᳸' => 230,
-  'á³¹' => 230,
-  'á·€' => 230,
-  '᷁' => 230,
-  'á·‚' => 220,
-  'á·ƒ' => 230,
-  'á·„' => 230,
-  'á·…' => 230,
-  'á·†' => 230,
-  'á·‡' => 230,
-  'á·ˆ' => 230,
-  'á·‰' => 230,
-  'á·Š' => 220,
-  'á·‹' => 230,
-  '᷌' => 230,
-  '᷍' => 234,
-  'á·Ž' => 214,
-  '᷏' => 220,
-  '᷐' => 202,
-  'á·‘' => 230,
-  'á·’' => 230,
-  'á·“' => 230,
-  'á·”' => 230,
-  'á·•' => 230,
-  'á·–' => 230,
-  'á·—' => 230,
-  'á·˜' => 230,
-  'á·™' => 230,
-  'á·š' => 230,
-  'á·›' => 230,
-  'ᷜ' => 230,
-  'ᷝ' => 230,
-  'á·ž' => 230,
-  'á·Ÿ' => 230,
-  'á· ' => 230,
-  'á·¡' => 230,
-  'á·¢' => 230,
-  'á·£' => 230,
-  'á·¤' => 230,
-  'á·¥' => 230,
-  'á·¦' => 230,
-  'á·§' => 230,
-  'á·¨' => 230,
-  'á·©' => 230,
-  'á·ª' => 230,
-  'á·«' => 230,
-  'á·¬' => 230,
-  'á·­' => 230,
-  'á·®' => 230,
-  'á·¯' => 230,
-  'á·°' => 230,
-  'á·±' => 230,
-  'á·²' => 230,
-  'á·³' => 230,
-  'á·´' => 230,
-  'á·µ' => 230,
-  'á·¶' => 232,
-  'á··' => 228,
-  'á·¸' => 228,
-  'á·¹' => 220,
-  'á·»' => 230,
-  'á·¼' => 233,
-  'á·½' => 220,
-  'á·¾' => 230,
-  'á·¿' => 220,
-  '⃐' => 230,
-  '⃑' => 230,
-  '⃒' => 1,
-  '⃓' => 1,
-  '⃔' => 230,
-  '⃕' => 230,
-  '⃖' => 230,
-  '⃗' => 230,
-  '⃘' => 1,
-  '⃙' => 1,
-  '⃚' => 1,
-  '⃛' => 230,
-  '⃜' => 230,
-  '⃡' => 230,
-  '⃥' => 1,
-  '⃦' => 1,
-  '⃧' => 230,
-  '⃨' => 220,
-  '⃩' => 230,
-  '⃪' => 1,
-  '⃫' => 1,
-  '⃬' => 220,
-  '⃭' => 220,
-  '⃮' => 220,
-  '⃯' => 220,
-  '⃰' => 230,
-  '⳯' => 230,
-  'â³°' => 230,
-  'â³±' => 230,
-  '⵿' => 9,
-  'â· ' => 230,
-  'â·¡' => 230,
-  'â·¢' => 230,
-  'â·£' => 230,
-  'â·¤' => 230,
-  'â·¥' => 230,
-  'â·¦' => 230,
-  'â·§' => 230,
-  'â·¨' => 230,
-  'â·©' => 230,
-  'â·ª' => 230,
-  'â·«' => 230,
-  'â·¬' => 230,
-  'â·­' => 230,
-  'â·®' => 230,
-  'â·¯' => 230,
-  'â·°' => 230,
-  'â·±' => 230,
-  'â·²' => 230,
-  'â·³' => 230,
-  'â·´' => 230,
-  'â·µ' => 230,
-  'â·¶' => 230,
-  'â··' => 230,
-  'â·¸' => 230,
-  'â·¹' => 230,
-  'â·º' => 230,
-  'â·»' => 230,
-  'â·¼' => 230,
-  'â·½' => 230,
-  'â·¾' => 230,
-  'â·¿' => 230,
-  '〪' => 218,
-  '〫' => 228,
-  '〬' => 232,
-  '〭' => 222,
-  '〮' => 224,
-  '〯' => 224,
-  'ã‚™' => 8,
-  'ã‚š' => 8,
-  '꙯' => 230,
-  'ê™´' => 230,
-  'ꙵ' => 230,
-  'ꙶ' => 230,
-  'ê™·' => 230,
-  'ꙸ' => 230,
-  'ꙹ' => 230,
-  'ꙺ' => 230,
-  'ê™»' => 230,
-  '꙼' => 230,
-  '꙽' => 230,
-  'êšž' => 230,
-  'ꚟ' => 230,
-  'ê›°' => 230,
-  'ê›±' => 230,
-  'ê †' => 9,
-  'ê ¬' => 9,
-  '꣄' => 9,
-  '꣠' => 230,
-  '꣡' => 230,
-  '꣢' => 230,
-  '꣣' => 230,
-  '꣤' => 230,
-  '꣥' => 230,
-  '꣦' => 230,
-  '꣧' => 230,
-  '꣨' => 230,
-  '꣩' => 230,
-  '꣪' => 230,
-  '꣫' => 230,
-  '꣬' => 230,
-  '꣭' => 230,
-  '꣮' => 230,
-  '꣯' => 230,
-  '꣰' => 230,
-  '꣱' => 230,
-  '꤫' => 220,
-  '꤬' => 220,
-  '꤭' => 220,
-  '꥓' => 9,
-  '꦳' => 7,
-  '꧀' => 9,
-  'ꪰ' => 230,
-  'ꪲ' => 230,
-  'ꪳ' => 230,
-  'ꪴ' => 220,
-  'ꪷ' => 230,
-  'ꪸ' => 230,
-  'ꪾ' => 230,
-  '꪿' => 230,
-  '꫁' => 230,
-  '꫶' => 9,
-  '꯭' => 9,
-  'ﬞ' => 26,
-  '︠' => 230,
-  '︡' => 230,
-  '︢' => 230,
-  '︣' => 230,
-  '︤' => 230,
-  '︥' => 230,
-  '︦' => 230,
-  '︧' => 220,
-  '︨' => 220,
-  '︩' => 220,
-  '︪' => 220,
-  '︫' => 220,
-  '︬' => 220,
-  '︭' => 220,
-  '︮' => 230,
-  '︯' => 230,
-  '𐇽' => 220,
-  '𐋠' => 220,
-  '𐍶' => 230,
-  '𐍷' => 230,
-  '𐍸' => 230,
-  '𐍹' => 230,
-  '𐍺' => 230,
-  '𐨍' => 220,
-  '𐨏' => 230,
-  '𐨸' => 230,
-  '𐨹' => 1,
-  '𐨺' => 220,
-  '𐨿' => 9,
-  '𐫥' => 230,
-  '𐫦' => 220,
-  '𐴤' => 230,
-  '𐴥' => 230,
-  '𐴦' => 230,
-  '𐴧' => 230,
-  '𐺫' => 230,
-  '𐺬' => 230,
-  '𐽆' => 220,
-  '𐽇' => 220,
-  '𐽈' => 230,
-  '𐽉' => 230,
-  '𐽊' => 230,
-  '𐽋' => 220,
-  '𐽌' => 230,
-  '𐽍' => 220,
-  '𐽎' => 220,
-  '𐽏' => 220,
-  '𐽐' => 220,
-  '𑁆' => 9,
-  '𑁿' => 9,
-  'ð‘‚¹' => 9,
-  '𑂺' => 7,
-  'ð‘„€' => 230,
-  '𑄁' => 230,
-  'ð‘„‚' => 230,
-  'ð‘„³' => 9,
-  'ð‘„´' => 9,
-  'ð‘…³' => 7,
-  '𑇀' => 9,
-  '𑇊' => 7,
-  '𑈵' => 9,
-  '𑈶' => 7,
-  'ð‘‹©' => 7,
-  '𑋪' => 9,
-  '𑌻' => 7,
-  '𑌼' => 7,
-  '𑍍' => 9,
-  '𑍦' => 230,
-  '𑍧' => 230,
-  '𑍨' => 230,
-  '𑍩' => 230,
-  '𑍪' => 230,
-  '𑍫' => 230,
-  '𑍬' => 230,
-  '𑍰' => 230,
-  '𑍱' => 230,
-  '𑍲' => 230,
-  '𑍳' => 230,
-  '𑍴' => 230,
-  'ð‘‘‚' => 9,
-  '𑑆' => 7,
-  'ð‘‘ž' => 230,
-  'ð‘“‚' => 9,
-  '𑓃' => 7,
-  'ð‘–¿' => 9,
-  'ð‘—€' => 7,
-  '𑘿' => 9,
-  '𑚶' => 9,
-  'ð‘š·' => 7,
-  '𑜫' => 9,
-  'ð‘ ¹' => 9,
-  'ð‘ º' => 7,
-  '𑤽' => 9,
-  '𑤾' => 9,
-  '𑥃' => 7,
-  '𑧠' => 9,
-  '𑨴' => 9,
-  '𑩇' => 9,
-  '𑪙' => 9,
-  'ð‘°¿' => 9,
-  '𑵂' => 7,
-  '𑵄' => 9,
-  '𑵅' => 9,
-  '𑶗' => 9,
-  'ð–«°' => 1,
-  'ð–«±' => 1,
-  'ð–«²' => 1,
-  'ð–«³' => 1,
-  'ð–«´' => 1,
-  'ð–¬°' => 230,
-  '𖬱' => 230,
-  '𖬲' => 230,
-  '𖬳' => 230,
-  'ð–¬´' => 230,
-  '𖬵' => 230,
-  '𖬶' => 230,
-  'ð–¿°' => 6,
-  'ð–¿±' => 6,
-  '𛲞' => 1,
-  '𝅥' => 216,
-  '𝅦' => 216,
-  '𝅧' => 1,
-  '𝅨' => 1,
-  '𝅩' => 1,
-  '𝅭' => 226,
-  '𝅮' => 216,
-  '𝅯' => 216,
-  '𝅰' => 216,
-  '𝅱' => 216,
-  '𝅲' => 216,
-  '𝅻' => 220,
-  '𝅼' => 220,
-  '𝅽' => 220,
-  '𝅾' => 220,
-  '𝅿' => 220,
-  '𝆀' => 220,
-  '𝆁' => 220,
-  '𝆂' => 220,
-  '𝆅' => 230,
-  '𝆆' => 230,
-  '𝆇' => 230,
-  '𝆈' => 230,
-  '𝆉' => 230,
-  '𝆊' => 220,
-  '𝆋' => 220,
-  '𝆪' => 230,
-  '𝆫' => 230,
-  '𝆬' => 230,
-  '𝆭' => 230,
-  '𝉂' => 230,
-  '𝉃' => 230,
-  '𝉄' => 230,
-  '𞀀' => 230,
-  '𞀁' => 230,
-  '𞀂' => 230,
-  '𞀃' => 230,
-  '𞀄' => 230,
-  '𞀅' => 230,
-  '𞀆' => 230,
-  '𞀈' => 230,
-  '𞀉' => 230,
-  '𞀊' => 230,
-  '𞀋' => 230,
-  '𞀌' => 230,
-  '𞀍' => 230,
-  '𞀎' => 230,
-  '𞀏' => 230,
-  '𞀐' => 230,
-  '𞀑' => 230,
-  '𞀒' => 230,
-  '𞀓' => 230,
-  '𞀔' => 230,
-  '𞀕' => 230,
-  '𞀖' => 230,
-  '𞀗' => 230,
-  '𞀘' => 230,
-  '𞀛' => 230,
-  '𞀜' => 230,
-  '𞀝' => 230,
-  '𞀞' => 230,
-  '𞀟' => 230,
-  '𞀠' => 230,
-  '𞀡' => 230,
-  '𞀣' => 230,
-  '𞀤' => 230,
-  '𞀦' => 230,
-  '𞀧' => 230,
-  '𞀨' => 230,
-  '𞀩' => 230,
-  '𞀪' => 230,
-  'ðž„°' => 230,
-  '𞄱' => 230,
-  '𞄲' => 230,
-  '𞄳' => 230,
-  'ðž„´' => 230,
-  '𞄵' => 230,
-  '𞄶' => 230,
-  '𞋬' => 230,
-  'ðž‹­' => 230,
-  'ðž‹®' => 230,
-  '𞋯' => 230,
-  '𞣐' => 220,
-  '𞣑' => 220,
-  '𞣒' => 220,
-  '𞣓' => 220,
-  '𞣔' => 220,
-  '𞣕' => 220,
-  '𞣖' => 220,
-  '𞥄' => 230,
-  '𞥅' => 230,
-  '𞥆' => 230,
-  '𞥇' => 230,
-  '𞥈' => 230,
-  '𞥉' => 230,
-  '𞥊' => 7,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
deleted file mode 100644
index 1574902893..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
+++ /dev/null
@@ -1,3695 +0,0 @@
-<?php
-
-return array (
-  ' ' => ' ',
-  '¨' => ' ̈',
-  'ª' => 'a',
-  '¯' => ' ̄',
-  '²' => '2',
-  '³' => '3',
-  '´' => ' ́',
-  'µ' => 'μ',
-  '¸' => ' ̧',
-  '¹' => '1',
-  'º' => 'o',
-  '¼' => '1⁄4',
-  '½' => '1⁄2',
-  '¾' => '3⁄4',
-  'IJ' => 'IJ',
-  'ij' => 'ij',
-  'Ŀ' => 'L·',
-  'ŀ' => 'l·',
-  'ʼn' => 'ʼn',
-  'Å¿' => 's',
-  'DŽ' => 'DŽ',
-  'Dž' => 'Dž',
-  'dž' => 'dž',
-  'LJ' => 'LJ',
-  'Lj' => 'Lj',
-  'lj' => 'lj',
-  'ÇŠ' => 'NJ',
-  'Ç‹' => 'Nj',
-  'nj' => 'nj',
-  'DZ' => 'DZ',
-  'Dz' => 'Dz',
-  'dz' => 'dz',
-  'Ê°' => 'h',
-  'ʱ' => 'ɦ',
-  'ʲ' => 'j',
-  'ʳ' => 'r',
-  'ʴ' => 'ɹ',
-  'ʵ' => 'ɻ',
-  'ʶ' => 'ʁ',
-  'Ê·' => 'w',
-  'ʸ' => 'y',
-  '˘' => ' ̆',
-  '˙' => ' ̇',
-  'Ëš' => ' ÌŠ',
-  '˛' => ' ̨',
-  '˜' => ' ̃',
-  '˝' => ' ̋',
-  'Ë ' => 'É£',
-  'Ë¡' => 'l',
-  'Ë¢' => 's',
-  'Ë£' => 'x',
-  'ˤ' => 'ʕ',
-  'ͺ' => ' ͅ',
-  '΄' => ' ́',
-  '΅' => ' ̈́',
-  'ϐ' => 'β',
-  'ϑ' => 'θ',
-  'Ï’' => 'Î¥',
-  'ϓ' => 'Ύ',
-  'ϔ' => 'Ϋ',
-  'ϕ' => 'φ',
-  'Ï–' => 'Ï€',
-  'ϰ' => 'κ',
-  'ϱ' => 'ρ',
-  'ϲ' => 'ς',
-  'ϴ' => 'Θ',
-  'ϵ' => 'ε',
-  'Ϲ' => 'Σ',
-  'Ö‡' => 'Õ¥Ö‚',
-  'ٵ' => 'اٴ',
-  'ٶ' => 'وٴ',
-  'Ù·' => 'Û‡Ù´',
-  'ٸ' => 'يٴ',
-  'ำ' => 'ํา',
-  'ຳ' => 'ໍາ',
-  'ໜ' => 'ຫນ',
-  'ໝ' => 'ຫມ',
-  '༌' => '་',
-  'ཷ' => 'ྲཱྀ',
-  'ཹ' => 'ླཱྀ',
-  'ჼ' => 'ნ',
-  'á´¬' => 'A',
-  'ᴭ' => 'Æ',
-  'á´®' => 'B',
-  'á´°' => 'D',
-  'á´±' => 'E',
-  'á´²' => 'ÆŽ',
-  'á´³' => 'G',
-  'á´´' => 'H',
-  'á´µ' => 'I',
-  'á´¶' => 'J',
-  'á´·' => 'K',
-  'á´¸' => 'L',
-  'á´¹' => 'M',
-  'á´º' => 'N',
-  'á´¼' => 'O',
-  'á´½' => 'È¢',
-  'á´¾' => 'P',
-  'á´¿' => 'R',
-  'áµ€' => 'T',
-  'ᵁ' => 'U',
-  'ᵂ' => 'W',
-  'ᵃ' => 'a',
-  'ᵄ' => 'ɐ',
-  'áµ…' => 'É‘',
-  'ᵆ' => 'ᴂ',
-  'ᵇ' => 'b',
-  'ᵈ' => 'd',
-  'ᵉ' => 'e',
-  'ᵊ' => 'ə',
-  'ᵋ' => 'ɛ',
-  'ᵌ' => 'ɜ',
-  'ᵍ' => 'g',
-  'ᵏ' => 'k',
-  'ᵐ' => 'm',
-  'ᵑ' => 'ŋ',
-  'áµ’' => 'o',
-  'ᵓ' => 'ɔ',
-  'áµ”' => 'á´–',
-  'ᵕ' => 'ᴗ',
-  'áµ–' => 'p',
-  'áµ—' => 't',
-  'ᵘ' => 'u',
-  'ᵙ' => 'ᴝ',
-  'ᵚ' => 'ɯ',
-  'áµ›' => 'v',
-  'ᵜ' => 'ᴥ',
-  'ᵝ' => 'β',
-  'ᵞ' => 'γ',
-  'ᵟ' => 'δ',
-  'ᵠ' => 'φ',
-  'ᵡ' => 'χ',
-  'áµ¢' => 'i',
-  'áµ£' => 'r',
-  'ᵤ' => 'u',
-  'áµ¥' => 'v',
-  'ᵦ' => 'β',
-  'ᵧ' => 'γ',
-  'ᵨ' => 'ρ',
-  'ᵩ' => 'φ',
-  'ᵪ' => 'χ',
-  'ᵸ' => 'н',
-  'ᶛ' => 'ɒ',
-  'ᶜ' => 'c',
-  'ᶝ' => 'ɕ',
-  'ᶞ' => 'ð',
-  'ᶟ' => 'ɜ',
-  'ᶠ' => 'f',
-  'ᶡ' => 'ɟ',
-  'ᶢ' => 'ɡ',
-  'ᶣ' => 'ɥ',
-  'ᶤ' => 'ɨ',
-  'ᶥ' => 'ɩ',
-  'ᶦ' => 'ɪ',
-  'ᶧ' => 'ᵻ',
-  'ᶨ' => 'ʝ',
-  'ᶩ' => 'ɭ',
-  'ᶪ' => 'ᶅ',
-  'ᶫ' => 'ʟ',
-  'ᶬ' => 'ɱ',
-  'ᶭ' => 'ɰ',
-  'ᶮ' => 'ɲ',
-  'ᶯ' => 'ɳ',
-  'ᶰ' => 'ɴ',
-  'ᶱ' => 'ɵ',
-  'ᶲ' => 'ɸ',
-  'ᶳ' => 'ʂ',
-  'ᶴ' => 'ʃ',
-  'ᶵ' => 'ƫ',
-  'ᶶ' => 'ʉ',
-  'ᶷ' => 'ʊ',
-  'ᶸ' => 'ᴜ',
-  'ᶹ' => 'ʋ',
-  'ᶺ' => 'ʌ',
-  'ᶻ' => 'z',
-  'ᶼ' => 'ʐ',
-  'ᶽ' => 'ʑ',
-  'ᶾ' => 'ʒ',
-  'ᶿ' => 'θ',
-  'ẚ' => 'aʾ',
-  'ẛ' => 'ṡ',
-  'á¾½' => ' Ì“',
-  '᾿' => ' ̓',
-  'á¿€' => ' Í‚',
-  '῁' => ' ̈͂',
-  '῍' => ' ̓̀',
-  '῎' => ' ̓́',
-  '῏' => ' ̓͂',
-  '῝' => ' ̔̀',
-  '῞' => ' ̔́',
-  '῟' => ' ̔͂',
-  '῭' => ' ̈̀',
-  '΅' => ' ̈́',
-  '´' => ' ́',
-  '῾' => ' ̔',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  '‑' => '‐',
-  '‗' => ' ̳',
-  '․' => '.',
-  '‥' => '..',
-  '…' => '...',
-  ' ' => ' ',
-  '″' => '′′',
-  '‴' => '′′′',
-  '‶' => '‵‵',
-  '‷' => '‵‵‵',
-  '‼' => '!!',
-  '‾' => ' ̅',
-  '⁇' => '??',
-  '⁈' => '?!',
-  '⁉' => '!?',
-  '⁗' => '′′′′',
-  ' ' => ' ',
-  '⁰' => '0',
-  'ⁱ' => 'i',
-  '⁴' => '4',
-  '⁵' => '5',
-  '⁶' => '6',
-  '⁷' => '7',
-  '⁸' => '8',
-  '⁹' => '9',
-  '⁺' => '+',
-  '⁻' => '−',
-  '⁼' => '=',
-  '⁽' => '(',
-  '⁾' => ')',
-  'ⁿ' => 'n',
-  'â‚€' => '0',
-  '₁' => '1',
-  'â‚‚' => '2',
-  '₃' => '3',
-  'â‚„' => '4',
-  'â‚…' => '5',
-  '₆' => '6',
-  '₇' => '7',
-  '₈' => '8',
-  '₉' => '9',
-  'â‚Š' => '+',
-  '₋' => '−',
-  '₌' => '=',
-  '₍' => '(',
-  'â‚Ž' => ')',
-  'ₐ' => 'a',
-  'â‚‘' => 'e',
-  'â‚’' => 'o',
-  'â‚“' => 'x',
-  'â‚”' => 'É™',
-  'â‚•' => 'h',
-  'â‚–' => 'k',
-  'â‚—' => 'l',
-  'ₘ' => 'm',
-  'â‚™' => 'n',
-  'â‚š' => 'p',
-  'â‚›' => 's',
-  'ₜ' => 't',
-  '₨' => 'Rs',
-  'â„€' => 'a/c',
-  '℁' => 'a/s',
-  'â„‚' => 'C',
-  '℃' => '°C',
-  'â„…' => 'c/o',
-  '℆' => 'c/u',
-  'ℇ' => 'Ɛ',
-  '℉' => '°F',
-  'â„Š' => 'g',
-  'â„‹' => 'H',
-  'ℌ' => 'H',
-  'ℍ' => 'H',
-  'â„Ž' => 'h',
-  'ℏ' => 'ħ',
-  'ℐ' => 'I',
-  'â„‘' => 'I',
-  'â„’' => 'L',
-  'â„“' => 'l',
-  'â„•' => 'N',
-  'â„–' => 'No',
-  'â„™' => 'P',
-  'â„š' => 'Q',
-  'â„›' => 'R',
-  'ℜ' => 'R',
-  'ℝ' => 'R',
-  'â„ ' => 'SM',
-  'â„¡' => 'TEL',
-  'â„¢' => 'TM',
-  'ℤ' => 'Z',
-  'ℨ' => 'Z',
-  'ℬ' => 'B',
-  'â„­' => 'C',
-  'ℯ' => 'e',
-  'â„°' => 'E',
-  'ℱ' => 'F',
-  'ℳ' => 'M',
-  'â„´' => 'o',
-  'ℵ' => 'א',
-  'ℶ' => 'ב',
-  'â„·' => '×’',
-  'ℸ' => 'ד',
-  'ℹ' => 'i',
-  'â„»' => 'FAX',
-  'ℼ' => 'π',
-  'ℽ' => 'γ',
-  'ℾ' => 'Γ',
-  'ℿ' => 'Π',
-  '⅀' => '∑',
-  'â……' => 'D',
-  'â…†' => 'd',
-  'â…‡' => 'e',
-  'â…ˆ' => 'i',
-  'â…‰' => 'j',
-  '⅐' => '1⁄7',
-  '⅑' => '1⁄9',
-  '⅒' => '1⁄10',
-  '⅓' => '1⁄3',
-  '⅔' => '2⁄3',
-  '⅕' => '1⁄5',
-  '⅖' => '2⁄5',
-  '⅗' => '3⁄5',
-  '⅘' => '4⁄5',
-  '⅙' => '1⁄6',
-  '⅚' => '5⁄6',
-  '⅛' => '1⁄8',
-  '⅜' => '3⁄8',
-  '⅝' => '5⁄8',
-  '⅞' => '7⁄8',
-  '⅟' => '1⁄',
-  'â… ' => 'I',
-  'â…¡' => 'II',
-  'â…¢' => 'III',
-  'â…£' => 'IV',
-  'â…¤' => 'V',
-  'â…¥' => 'VI',
-  'â…¦' => 'VII',
-  'â…§' => 'VIII',
-  'â…¨' => 'IX',
-  'â…©' => 'X',
-  'â…ª' => 'XI',
-  'â…«' => 'XII',
-  'â…¬' => 'L',
-  'â…­' => 'C',
-  'â…®' => 'D',
-  'â…¯' => 'M',
-  'â…°' => 'i',
-  'â…±' => 'ii',
-  'â…²' => 'iii',
-  'â…³' => 'iv',
-  'â…´' => 'v',
-  'â…µ' => 'vi',
-  'â…¶' => 'vii',
-  'â…·' => 'viii',
-  'â…¸' => 'ix',
-  'â…¹' => 'x',
-  'â…º' => 'xi',
-  'â…»' => 'xii',
-  'â…¼' => 'l',
-  'â…½' => 'c',
-  'â…¾' => 'd',
-  'â…¿' => 'm',
-  '↉' => '0⁄3',
-  '∬' => '∫∫',
-  '∭' => '∫∫∫',
-  '∯' => '∮∮',
-  '∰' => '∮∮∮',
-  'â‘ ' => '1',
-  'â‘¡' => '2',
-  'â‘¢' => '3',
-  'â‘£' => '4',
-  '⑤' => '5',
-  'â‘¥' => '6',
-  '⑦' => '7',
-  '⑧' => '8',
-  '⑨' => '9',
-  'â‘©' => '10',
-  '⑪' => '11',
-  'â‘«' => '12',
-  '⑬' => '13',
-  'â‘­' => '14',
-  'â‘®' => '15',
-  '⑯' => '16',
-  'â‘°' => '17',
-  '⑱' => '18',
-  '⑲' => '19',
-  '⑳' => '20',
-  'â‘´' => '(1)',
-  '⑵' => '(2)',
-  '⑶' => '(3)',
-  'â‘·' => '(4)',
-  '⑸' => '(5)',
-  '⑹' => '(6)',
-  '⑺' => '(7)',
-  'â‘»' => '(8)',
-  '⑼' => '(9)',
-  '⑽' => '(10)',
-  '⑾' => '(11)',
-  'â‘¿' => '(12)',
-  'â’€' => '(13)',
-  '⒁' => '(14)',
-  'â’‚' => '(15)',
-  'â’ƒ' => '(16)',
-  'â’„' => '(17)',
-  'â’…' => '(18)',
-  'â’†' => '(19)',
-  'â’‡' => '(20)',
-  'â’ˆ' => '1.',
-  'â’‰' => '2.',
-  'â’Š' => '3.',
-  'â’‹' => '4.',
-  '⒌' => '5.',
-  '⒍' => '6.',
-  'â’Ž' => '7.',
-  '⒏' => '8.',
-  '⒐' => '9.',
-  'â’‘' => '10.',
-  'â’’' => '11.',
-  'â’“' => '12.',
-  'â’”' => '13.',
-  'â’•' => '14.',
-  'â’–' => '15.',
-  'â’—' => '16.',
-  'â’˜' => '17.',
-  'â’™' => '18.',
-  'â’š' => '19.',
-  'â’›' => '20.',
-  '⒜' => '(a)',
-  '⒝' => '(b)',
-  'â’ž' => '(c)',
-  'â’Ÿ' => '(d)',
-  'â’ ' => '(e)',
-  'â’¡' => '(f)',
-  'â’¢' => '(g)',
-  'â’£' => '(h)',
-  'â’¤' => '(i)',
-  'â’¥' => '(j)',
-  'â’¦' => '(k)',
-  'â’§' => '(l)',
-  'â’¨' => '(m)',
-  'â’©' => '(n)',
-  'â’ª' => '(o)',
-  'â’«' => '(p)',
-  'â’¬' => '(q)',
-  'â’­' => '(r)',
-  'â’®' => '(s)',
-  'â’¯' => '(t)',
-  'â’°' => '(u)',
-  'â’±' => '(v)',
-  'â’²' => '(w)',
-  'â’³' => '(x)',
-  'â’´' => '(y)',
-  'â’µ' => '(z)',
-  'â’¶' => 'A',
-  'â’·' => 'B',
-  'â’¸' => 'C',
-  'â’¹' => 'D',
-  'â’º' => 'E',
-  'â’»' => 'F',
-  'â’¼' => 'G',
-  'â’½' => 'H',
-  'â’¾' => 'I',
-  'â’¿' => 'J',
-  'â“€' => 'K',
-  'Ⓛ' => 'L',
-  'â“‚' => 'M',
-  'Ⓝ' => 'N',
-  'â“„' => 'O',
-  'â“…' => 'P',
-  'Ⓠ' => 'Q',
-  'Ⓡ' => 'R',
-  'Ⓢ' => 'S',
-  'Ⓣ' => 'T',
-  'â“Š' => 'U',
-  'â“‹' => 'V',
-  'Ⓦ' => 'W',
-  'Ⓧ' => 'X',
-  'â“Ž' => 'Y',
-  'Ⓩ' => 'Z',
-  'ⓐ' => 'a',
-  'â“‘' => 'b',
-  'â“’' => 'c',
-  'â““' => 'd',
-  'â“”' => 'e',
-  'â“•' => 'f',
-  'â“–' => 'g',
-  'â“—' => 'h',
-  'ⓘ' => 'i',
-  'â“™' => 'j',
-  'â“š' => 'k',
-  'â“›' => 'l',
-  'ⓜ' => 'm',
-  'ⓝ' => 'n',
-  'â“ž' => 'o',
-  'â“Ÿ' => 'p',
-  'â“ ' => 'q',
-  'â“¡' => 'r',
-  'â“¢' => 's',
-  'â“£' => 't',
-  'ⓤ' => 'u',
-  'â“¥' => 'v',
-  'ⓦ' => 'w',
-  'ⓧ' => 'x',
-  'ⓨ' => 'y',
-  'â“©' => 'z',
-  '⓪' => '0',
-  '⨌' => '∫∫∫∫',
-  'â©´' => '::=',
-  '⩵' => '==',
-  '⩶' => '===',
-  'â±¼' => 'j',
-  'â±½' => 'V',
-  'ⵯ' => 'ⵡ',
-  '⺟' => '母',
-  '⻳' => '龟',
-  '⼀' => '一',
-  '⼁' => '丨',
-  '⼂' => '丶',
-  '⼃' => '丿',
-  '⼄' => '乙',
-  '⼅' => '亅',
-  '⼆' => '二',
-  '⼇' => '亠',
-  '⼈' => '人',
-  '⼉' => '儿',
-  '⼊' => '入',
-  '⼋' => '八',
-  '⼌' => '冂',
-  '⼍' => '冖',
-  '⼎' => '冫',
-  '⼏' => '几',
-  '⼐' => '凵',
-  '⼑' => '刀',
-  '⼒' => '力',
-  '⼓' => '勹',
-  '⼔' => '匕',
-  '⼕' => '匚',
-  '⼖' => '匸',
-  '⼗' => '十',
-  '⼘' => '卜',
-  '⼙' => '卩',
-  '⼚' => '厂',
-  '⼛' => '厶',
-  '⼜' => '又',
-  '⼝' => '口',
-  '⼞' => '囗',
-  '⼟' => '土',
-  '⼠' => '士',
-  '⼡' => '夂',
-  '⼢' => '夊',
-  '⼣' => '夕',
-  '⼤' => '大',
-  '⼥' => '女',
-  '⼦' => '子',
-  '⼧' => '宀',
-  '⼨' => '寸',
-  '⼩' => '小',
-  '⼪' => '尢',
-  '⼫' => '尸',
-  '⼬' => '屮',
-  'â¼­' => 'å±±',
-  'â¼®' => 'å·›',
-  '⼯' => '工',
-  'â¼°' => 'å·±',
-  'â¼±' => 'å·¾',
-  'â¼²' => 'å¹²',
-  '⼳' => '幺',
-  '⼴' => '广',
-  'â¼µ' => 'å»´',
-  '⼶' => '廾',
-  '⼷' => '弋',
-  '⼸' => '弓',
-  '⼹' => '彐',
-  '⼺' => '彡',
-  'â¼»' => 'å½³',
-  '⼼' => '心',
-  '⼽' => '戈',
-  '⼾' => '戶',
-  '⼿' => '手',
-  '⽀' => '支',
-  '⽁' => '攴',
-  '⽂' => '文',
-  '⽃' => '斗',
-  '⽄' => '斤',
-  'â½…' => 'æ–¹',
-  '⽆' => '无',
-  '⽇' => '日',
-  '⽈' => '曰',
-  '⽉' => '月',
-  '⽊' => '木',
-  '⽋' => '欠',
-  '⽌' => '止',
-  '⽍' => '歹',
-  '⽎' => '殳',
-  '⽏' => '毋',
-  '⽐' => '比',
-  '⽑' => '毛',
-  '⽒' => '氏',
-  '⽓' => '气',
-  'â½”' => 'æ°´',
-  '⽕' => '火',
-  '⽖' => '爪',
-  '⽗' => '父',
-  '⽘' => '爻',
-  '⽙' => '爿',
-  '⽚' => '片',
-  '⽛' => '牙',
-  '⽜' => '牛',
-  '⽝' => '犬',
-  '⽞' => '玄',
-  '⽟' => '玉',
-  '⽠' => '瓜',
-  '⽡' => '瓦',
-  '⽢' => '甘',
-  '⽣' => '生',
-  '⽤' => '用',
-  'â½¥' => 'ç”°',
-  '⽦' => '疋',
-  '⽧' => '疒',
-  '⽨' => '癶',
-  '⽩' => '白',
-  '⽪' => '皮',
-  '⽫' => '皿',
-  '⽬' => '目',
-  '⽭' => '矛',
-  '⽮' => '矢',
-  '⽯' => '石',
-  '⽰' => '示',
-  '⽱' => '禸',
-  '⽲' => '禾',
-  'â½³' => 'ç©´',
-  'â½´' => 'ç«‹',
-  '⽵' => '竹',
-  '⽶' => '米',
-  '⽷' => '糸',
-  '⽸' => '缶',
-  '⽹' => '网',
-  '⽺' => '羊',
-  'â½»' => 'ç¾½',
-  '⽼' => '老',
-  '⽽' => '而',
-  '⽾' => '耒',
-  '⽿' => '耳',
-  '⾀' => '聿',
-  '⾁' => '肉',
-  '⾂' => '臣',
-  '⾃' => '自',
-  '⾄' => '至',
-  '⾅' => '臼',
-  '⾆' => '舌',
-  '⾇' => '舛',
-  '⾈' => '舟',
-  '⾉' => '艮',
-  '⾊' => '色',
-  '⾋' => '艸',
-  '⾌' => '虍',
-  '⾍' => '虫',
-  '⾎' => '血',
-  '⾏' => '行',
-  '⾐' => '衣',
-  '⾑' => '襾',
-  '⾒' => '見',
-  '⾓' => '角',
-  '⾔' => '言',
-  '⾕' => '谷',
-  '⾖' => '豆',
-  '⾗' => '豕',
-  '⾘' => '豸',
-  '⾙' => '貝',
-  '⾚' => '赤',
-  'â¾›' => 'èµ°',
-  '⾜' => '足',
-  '⾝' => '身',
-  '⾞' => '車',
-  '⾟' => '辛',
-  'â¾ ' => 'è¾°',
-  '⾡' => '辵',
-  'â¾¢' => 'é‚‘',
-  'â¾£' => 'é…‰',
-  '⾤' => '釆',
-  '⾥' => '里',
-  '⾦' => '金',
-  '⾧' => '長',
-  '⾨' => '門',
-  '⾩' => '阜',
-  '⾪' => '隶',
-  '⾫' => '隹',
-  '⾬' => '雨',
-  '⾭' => '靑',
-  '⾮' => '非',
-  '⾯' => '面',
-  '⾰' => '革',
-  '⾱' => '韋',
-  '⾲' => '韭',
-  '⾳' => '音',
-  '⾴' => '頁',
-  '⾵' => '風',
-  '⾶' => '飛',
-  '⾷' => '食',
-  '⾸' => '首',
-  '⾹' => '香',
-  '⾺' => '馬',
-  '⾻' => '骨',
-  '⾼' => '高',
-  'â¾½' => 'é«Ÿ',
-  '⾾' => '鬥',
-  '⾿' => '鬯',
-  '⿀' => '鬲',
-  '⿁' => '鬼',
-  'â¿‚' => 'é­š',
-  '⿃' => '鳥',
-  'â¿„' => 'é¹µ',
-  '⿅' => '鹿',
-  '⿆' => '麥',
-  '⿇' => '麻',
-  '⿈' => '黃',
-  '⿉' => '黍',
-  '⿊' => '黑',
-  '⿋' => '黹',
-  '⿌' => '黽',
-  '⿍' => '鼎',
-  '⿎' => '鼓',
-  '⿏' => '鼠',
-  '⿐' => '鼻',
-  '⿑' => '齊',
-  'â¿’' => 'é½’',
-  '⿓' => '龍',
-  '⿔' => '龜',
-  'â¿•' => 'é¾ ',
-  ' ' => ' ',
-  '〶' => '〒',
-  '〸' => '十',
-  '〹' => '卄',
-  '〺' => '卅',
-  'ã‚›' => ' ã‚™',
-  '゜' => ' ゚',
-  'ゟ' => 'より',
-  'ヿ' => 'コト',
-  'ㄱ' => 'ᄀ',
-  'ㄲ' => 'ᄁ',
-  'ㄳ' => 'ᆪ',
-  'ã„´' => 'á„‚',
-  'ㄵ' => 'ᆬ',
-  'ㄶ' => 'ᆭ',
-  'ㄷ' => 'ᄃ',
-  'ㄸ' => 'ᄄ',
-  'ㄹ' => 'ᄅ',
-  'ㄺ' => 'ᆰ',
-  'ㄻ' => 'ᆱ',
-  'ㄼ' => 'ᆲ',
-  'ㄽ' => 'ᆳ',
-  'ㄾ' => 'ᆴ',
-  'ㄿ' => 'ᆵ',
-  'ã…€' => 'á„š',
-  'ㅁ' => 'ᄆ',
-  'ㅂ' => 'ᄇ',
-  'ㅃ' => 'ᄈ',
-  'ã…„' => 'á„¡',
-  'ㅅ' => 'ᄉ',
-  'ã…†' => 'á„Š',
-  'ã…‡' => 'á„‹',
-  'ㅈ' => 'ᄌ',
-  'ㅉ' => 'ᄍ',
-  'ã…Š' => 'á„Ž',
-  'ㅋ' => 'ᄏ',
-  'ㅌ' => 'ᄐ',
-  'ㅍ' => 'ᄑ',
-  'ã…Ž' => 'á„’',
-  'ㅏ' => 'ᅡ',
-  'ㅐ' => 'ᅢ',
-  'ã…‘' => 'á…£',
-  'ã…’' => 'á…¤',
-  'ã…“' => 'á…¥',
-  'ã…”' => 'á…¦',
-  'ã…•' => 'á…§',
-  'ã…–' => 'á…¨',
-  'ã…—' => 'á…©',
-  'ã…˜' => 'á…ª',
-  'ã…™' => 'á…«',
-  'ã…š' => 'á…¬',
-  'ã…›' => 'á…­',
-  'ㅜ' => 'ᅮ',
-  'ㅝ' => 'ᅯ',
-  'ã…ž' => 'á…°',
-  'ã…Ÿ' => 'á…±',
-  'ã… ' => 'á…²',
-  'ã…¡' => 'á…³',
-  'ã…¢' => 'á…´',
-  'ã…£' => 'á…µ',
-  'ã…¤' => 'á… ',
-  'ã…¥' => 'á„”',
-  'ã…¦' => 'á„•',
-  'ㅧ' => 'ᇇ',
-  'ㅨ' => 'ᇈ',
-  'ㅩ' => 'ᇌ',
-  'ㅪ' => 'ᇎ',
-  'ㅫ' => 'ᇓ',
-  'ㅬ' => 'ᇗ',
-  'ㅭ' => 'ᇙ',
-  'ㅮ' => 'ᄜ',
-  'ㅯ' => 'ᇝ',
-  'ㅰ' => 'ᇟ',
-  'ㅱ' => 'ᄝ',
-  'ã…²' => 'á„ž',
-  'ã…³' => 'á„ ',
-  'ã…´' => 'á„¢',
-  'ã…µ' => 'á„£',
-  'ㅶ' => 'ᄧ',
-  'ã…·' => 'á„©',
-  'ã…¸' => 'á„«',
-  'ㅹ' => 'ᄬ',
-  'ã…º' => 'á„­',
-  'ã…»' => 'á„®',
-  'ㅼ' => 'ᄯ',
-  'ㅽ' => 'ᄲ',
-  'ㅾ' => 'ᄶ',
-  'ã…¿' => 'á…€',
-  'ㆀ' => 'ᅇ',
-  'ㆁ' => 'ᅌ',
-  'ㆂ' => 'ᇱ',
-  'ㆃ' => 'ᇲ',
-  'ㆄ' => 'ᅗ',
-  'ㆅ' => 'ᅘ',
-  'ㆆ' => 'ᅙ',
-  'ㆇ' => 'ᆄ',
-  'ㆈ' => 'ᆅ',
-  'ㆉ' => 'ᆈ',
-  'ㆊ' => 'ᆑ',
-  'ㆋ' => 'ᆒ',
-  'ㆌ' => 'ᆔ',
-  'ㆍ' => 'ᆞ',
-  'ㆎ' => 'ᆡ',
-  '㆒' => '一',
-  '㆓' => '二',
-  '㆔' => '三',
-  '㆕' => '四',
-  '㆖' => '上',
-  '㆗' => '中',
-  '㆘' => '下',
-  '㆙' => '甲',
-  '㆚' => '乙',
-  '㆛' => '丙',
-  '㆜' => '丁',
-  '㆝' => '天',
-  '㆞' => '地',
-  '㆟' => '人',
-  '㈀' => '(ᄀ)',
-  '㈁' => '(ᄂ)',
-  '㈂' => '(ᄃ)',
-  '㈃' => '(ᄅ)',
-  '㈄' => '(ᄆ)',
-  '㈅' => '(ᄇ)',
-  '㈆' => '(ᄉ)',
-  '㈇' => '(ᄋ)',
-  '㈈' => '(ᄌ)',
-  '㈉' => '(ᄎ)',
-  '㈊' => '(ᄏ)',
-  '㈋' => '(ᄐ)',
-  '㈌' => '(ᄑ)',
-  '㈍' => '(ᄒ)',
-  '㈎' => '(가)',
-  '㈏' => '(나)',
-  '㈐' => '(다)',
-  '㈑' => '(라)',
-  '㈒' => '(마)',
-  '㈓' => '(바)',
-  '㈔' => '(사)',
-  '㈕' => '(아)',
-  '㈖' => '(자)',
-  '㈗' => '(차)',
-  '㈘' => '(카)',
-  '㈙' => '(타)',
-  '㈚' => '(파)',
-  '㈛' => '(하)',
-  '㈜' => '(주)',
-  '㈝' => '(오전)',
-  '㈞' => '(오후)',
-  '㈠' => '(一)',
-  '㈡' => '(二)',
-  '㈢' => '(三)',
-  '㈣' => '(四)',
-  '㈤' => '(五)',
-  '㈥' => '(六)',
-  '㈦' => '(七)',
-  '㈧' => '(八)',
-  '㈨' => '(九)',
-  '㈩' => '(十)',
-  '㈪' => '(月)',
-  '㈫' => '(火)',
-  '㈬' => '(水)',
-  '㈭' => '(木)',
-  '㈮' => '(金)',
-  '㈯' => '(土)',
-  '㈰' => '(日)',
-  '㈱' => '(株)',
-  '㈲' => '(有)',
-  '㈳' => '(社)',
-  '㈴' => '(名)',
-  '㈵' => '(特)',
-  '㈶' => '(財)',
-  '㈷' => '(祝)',
-  '㈸' => '(労)',
-  '㈹' => '(代)',
-  '㈺' => '(呼)',
-  '㈻' => '(学)',
-  '㈼' => '(監)',
-  '㈽' => '(企)',
-  '㈾' => '(資)',
-  '㈿' => '(協)',
-  '㉀' => '(祭)',
-  '㉁' => '(休)',
-  '㉂' => '(自)',
-  '㉃' => '(至)',
-  '㉄' => '問',
-  '㉅' => '幼',
-  '㉆' => '文',
-  '㉇' => '箏',
-  '㉐' => 'PTE',
-  '㉑' => '21',
-  '㉒' => '22',
-  '㉓' => '23',
-  '㉔' => '24',
-  '㉕' => '25',
-  '㉖' => '26',
-  '㉗' => '27',
-  '㉘' => '28',
-  '㉙' => '29',
-  '㉚' => '30',
-  '㉛' => '31',
-  '㉜' => '32',
-  '㉝' => '33',
-  '㉞' => '34',
-  '㉟' => '35',
-  '㉠' => 'ᄀ',
-  '㉡' => 'ᄂ',
-  '㉢' => 'ᄃ',
-  '㉣' => 'ᄅ',
-  '㉤' => 'ᄆ',
-  '㉥' => 'ᄇ',
-  '㉦' => 'ᄉ',
-  '㉧' => 'ᄋ',
-  '㉨' => 'ᄌ',
-  '㉩' => 'ᄎ',
-  '㉪' => 'ᄏ',
-  '㉫' => 'ᄐ',
-  '㉬' => 'ᄑ',
-  '㉭' => 'ᄒ',
-  '㉮' => '가',
-  '㉯' => '나',
-  '㉰' => '다',
-  '㉱' => '라',
-  '㉲' => '마',
-  '㉳' => '바',
-  '㉴' => '사',
-  '㉵' => '아',
-  '㉶' => '자',
-  '㉷' => '차',
-  '㉸' => '카',
-  '㉹' => '타',
-  '㉺' => '파',
-  '㉻' => '하',
-  '㉼' => '참고',
-  '㉽' => '주의',
-  '㉾' => '우',
-  '㊀' => '一',
-  '㊁' => '二',
-  '㊂' => '三',
-  '㊃' => '四',
-  '㊄' => '五',
-  '㊅' => '六',
-  '㊆' => '七',
-  '㊇' => '八',
-  '㊈' => '九',
-  '㊉' => '十',
-  '㊊' => '月',
-  '㊋' => '火',
-  '㊌' => '水',
-  '㊍' => '木',
-  '㊎' => '金',
-  '㊏' => '土',
-  '㊐' => '日',
-  '㊑' => '株',
-  '㊒' => '有',
-  '㊓' => '社',
-  '㊔' => '名',
-  '㊕' => '特',
-  '㊖' => '財',
-  '㊗' => '祝',
-  '㊘' => '労',
-  '㊙' => '秘',
-  '㊚' => '男',
-  '㊛' => '女',
-  '㊜' => '適',
-  '㊝' => '優',
-  '㊞' => '印',
-  '㊟' => '注',
-  '㊠' => '項',
-  '㊡' => '休',
-  '㊢' => '写',
-  '㊣' => '正',
-  '㊤' => '上',
-  '㊥' => '中',
-  '㊦' => '下',
-  '㊧' => '左',
-  '㊨' => '右',
-  '㊩' => '医',
-  '㊪' => '宗',
-  '㊫' => '学',
-  '㊬' => '監',
-  '㊭' => '企',
-  '㊮' => '資',
-  '㊯' => '協',
-  '㊰' => '夜',
-  '㊱' => '36',
-  '㊲' => '37',
-  '㊳' => '38',
-  '㊴' => '39',
-  '㊵' => '40',
-  '㊶' => '41',
-  '㊷' => '42',
-  '㊸' => '43',
-  '㊹' => '44',
-  '㊺' => '45',
-  '㊻' => '46',
-  '㊼' => '47',
-  '㊽' => '48',
-  '㊾' => '49',
-  '㊿' => '50',
-  '㋀' => '1月',
-  '㋁' => '2月',
-  '㋂' => '3月',
-  '㋃' => '4月',
-  '㋄' => '5月',
-  '㋅' => '6月',
-  '㋆' => '7月',
-  '㋇' => '8月',
-  '㋈' => '9月',
-  '㋉' => '10月',
-  '㋊' => '11月',
-  '㋋' => '12月',
-  '㋌' => 'Hg',
-  '㋍' => 'erg',
-  'ã‹Ž' => 'eV',
-  '㋏' => 'LTD',
-  '㋐' => 'ア',
-  '㋑' => 'イ',
-  '㋒' => 'ウ',
-  '㋓' => 'エ',
-  '㋔' => 'オ',
-  'ã‹•' => 'ã‚«',
-  'ã‹–' => 'ã‚­',
-  '㋗' => 'ク',
-  '㋘' => 'ケ',
-  '㋙' => 'コ',
-  '㋚' => 'サ',
-  'ã‹›' => 'ã‚·',
-  '㋜' => 'ス',
-  '㋝' => 'セ',
-  '㋞' => 'ソ',
-  'ã‹Ÿ' => 'ã‚¿',
-  '㋠' => 'チ',
-  '㋡' => 'ツ',
-  '㋢' => 'テ',
-  '㋣' => 'ト',
-  '㋤' => 'ナ',
-  '㋥' => 'ニ',
-  '㋦' => 'ヌ',
-  '㋧' => 'ネ',
-  '㋨' => 'ノ',
-  '㋩' => 'ハ',
-  '㋪' => 'ヒ',
-  '㋫' => 'フ',
-  '㋬' => 'ヘ',
-  '㋭' => 'ホ',
-  '㋮' => 'マ',
-  '㋯' => 'ミ',
-  '㋰' => 'ム',
-  '㋱' => 'メ',
-  '㋲' => 'モ',
-  '㋳' => 'ヤ',
-  '㋴' => 'ユ',
-  '㋵' => 'ヨ',
-  '㋶' => 'ラ',
-  '㋷' => 'リ',
-  '㋸' => 'ル',
-  '㋹' => 'レ',
-  '㋺' => 'ロ',
-  '㋻' => 'ワ',
-  '㋼' => 'ヰ',
-  '㋽' => 'ヱ',
-  '㋾' => 'ヲ',
-  '㋿' => '令和',
-  '㌀' => 'アパート',
-  '㌁' => 'アルファ',
-  '㌂' => 'アンペア',
-  '㌃' => 'アール',
-  '㌄' => 'イニング',
-  '㌅' => 'インチ',
-  '㌆' => 'ウォン',
-  '㌇' => 'エスクード',
-  '㌈' => 'エーカー',
-  '㌉' => 'オンス',
-  '㌊' => 'オーム',
-  '㌋' => 'カイリ',
-  '㌌' => 'カラット',
-  '㌍' => 'カロリー',
-  '㌎' => 'ガロン',
-  '㌏' => 'ガンマ',
-  '㌐' => 'ギガ',
-  '㌑' => 'ギニー',
-  '㌒' => 'キュリー',
-  '㌓' => 'ギルダー',
-  '㌔' => 'キロ',
-  '㌕' => 'キログラム',
-  '㌖' => 'キロメートル',
-  '㌗' => 'キロワット',
-  '㌘' => 'グラム',
-  '㌙' => 'グラムトン',
-  '㌚' => 'クルゼイロ',
-  '㌛' => 'クローネ',
-  '㌜' => 'ケース',
-  '㌝' => 'コルナ',
-  '㌞' => 'コーポ',
-  '㌟' => 'サイクル',
-  '㌠' => 'サンチーム',
-  '㌡' => 'シリング',
-  '㌢' => 'センチ',
-  '㌣' => 'セント',
-  '㌤' => 'ダース',
-  '㌥' => 'デシ',
-  '㌦' => 'ドル',
-  '㌧' => 'トン',
-  '㌨' => 'ナノ',
-  '㌩' => 'ノット',
-  '㌪' => 'ハイツ',
-  '㌫' => 'パーセント',
-  '㌬' => 'パーツ',
-  '㌭' => 'バーレル',
-  '㌮' => 'ピアストル',
-  '㌯' => 'ピクル',
-  '㌰' => 'ピコ',
-  '㌱' => 'ビル',
-  '㌲' => 'ファラッド',
-  '㌳' => 'フィート',
-  '㌴' => 'ブッシェル',
-  '㌵' => 'フラン',
-  '㌶' => 'ヘクタール',
-  '㌷' => 'ペソ',
-  '㌸' => 'ペニヒ',
-  '㌹' => 'ヘルツ',
-  '㌺' => 'ペンス',
-  '㌻' => 'ページ',
-  '㌼' => 'ベータ',
-  '㌽' => 'ポイント',
-  '㌾' => 'ボルト',
-  '㌿' => 'ホン',
-  '㍀' => 'ポンド',
-  '㍁' => 'ホール',
-  '㍂' => 'ホーン',
-  '㍃' => 'マイクロ',
-  '㍄' => 'マイル',
-  '㍅' => 'マッハ',
-  '㍆' => 'マルク',
-  '㍇' => 'マンション',
-  '㍈' => 'ミクロン',
-  '㍉' => 'ミリ',
-  '㍊' => 'ミリバール',
-  '㍋' => 'メガ',
-  '㍌' => 'メガトン',
-  '㍍' => 'メートル',
-  '㍎' => 'ヤード',
-  '㍏' => 'ヤール',
-  '㍐' => 'ユアン',
-  '㍑' => 'リットル',
-  '㍒' => 'リラ',
-  '㍓' => 'ルピー',
-  '㍔' => 'ルーブル',
-  '㍕' => 'レム',
-  '㍖' => 'レントゲン',
-  '㍗' => 'ワット',
-  '㍘' => '0点',
-  '㍙' => '1点',
-  '㍚' => '2点',
-  '㍛' => '3点',
-  '㍜' => '4点',
-  '㍝' => '5点',
-  '㍞' => '6点',
-  '㍟' => '7点',
-  '㍠' => '8点',
-  '㍡' => '9点',
-  '㍢' => '10点',
-  '㍣' => '11点',
-  '㍤' => '12点',
-  '㍥' => '13点',
-  '㍦' => '14点',
-  '㍧' => '15点',
-  '㍨' => '16点',
-  '㍩' => '17点',
-  '㍪' => '18点',
-  '㍫' => '19点',
-  '㍬' => '20点',
-  '㍭' => '21点',
-  '㍮' => '22点',
-  '㍯' => '23点',
-  '㍰' => '24点',
-  '㍱' => 'hPa',
-  '㍲' => 'da',
-  '㍳' => 'AU',
-  '㍴' => 'bar',
-  '㍵' => 'oV',
-  '㍶' => 'pc',
-  '㍷' => 'dm',
-  '㍸' => 'dm2',
-  '㍹' => 'dm3',
-  '㍺' => 'IU',
-  '㍻' => '平成',
-  '㍼' => '昭和',
-  '㍽' => '大正',
-  '㍾' => '明治',
-  '㍿' => '株式会社',
-  '㎀' => 'pA',
-  '㎁' => 'nA',
-  '㎂' => 'μA',
-  '㎃' => 'mA',
-  '㎄' => 'kA',
-  '㎅' => 'KB',
-  '㎆' => 'MB',
-  '㎇' => 'GB',
-  '㎈' => 'cal',
-  '㎉' => 'kcal',
-  '㎊' => 'pF',
-  '㎋' => 'nF',
-  '㎌' => 'μF',
-  '㎍' => 'μg',
-  '㎎' => 'mg',
-  '㎏' => 'kg',
-  '㎐' => 'Hz',
-  '㎑' => 'kHz',
-  '㎒' => 'MHz',
-  '㎓' => 'GHz',
-  '㎔' => 'THz',
-  '㎕' => 'μl',
-  '㎖' => 'ml',
-  '㎗' => 'dl',
-  '㎘' => 'kl',
-  '㎙' => 'fm',
-  '㎚' => 'nm',
-  '㎛' => 'μm',
-  '㎜' => 'mm',
-  '㎝' => 'cm',
-  '㎞' => 'km',
-  '㎟' => 'mm2',
-  '㎠' => 'cm2',
-  '㎡' => 'm2',
-  '㎢' => 'km2',
-  '㎣' => 'mm3',
-  '㎤' => 'cm3',
-  '㎥' => 'm3',
-  '㎦' => 'km3',
-  '㎧' => 'm∕s',
-  '㎨' => 'm∕s2',
-  '㎩' => 'Pa',
-  '㎪' => 'kPa',
-  '㎫' => 'MPa',
-  '㎬' => 'GPa',
-  '㎭' => 'rad',
-  '㎮' => 'rad∕s',
-  '㎯' => 'rad∕s2',
-  '㎰' => 'ps',
-  '㎱' => 'ns',
-  '㎲' => 'μs',
-  '㎳' => 'ms',
-  '㎴' => 'pV',
-  '㎵' => 'nV',
-  '㎶' => 'μV',
-  '㎷' => 'mV',
-  '㎸' => 'kV',
-  '㎹' => 'MV',
-  '㎺' => 'pW',
-  '㎻' => 'nW',
-  '㎼' => 'μW',
-  '㎽' => 'mW',
-  '㎾' => 'kW',
-  '㎿' => 'MW',
-  '㏀' => 'kΩ',
-  '㏁' => 'MΩ',
-  '㏂' => 'a.m.',
-  '㏃' => 'Bq',
-  '㏄' => 'cc',
-  '㏅' => 'cd',
-  '㏆' => 'C∕kg',
-  '㏇' => 'Co.',
-  '㏈' => 'dB',
-  '㏉' => 'Gy',
-  '㏊' => 'ha',
-  '㏋' => 'HP',
-  '㏌' => 'in',
-  '㏍' => 'KK',
-  '㏎' => 'KM',
-  '㏏' => 'kt',
-  '㏐' => 'lm',
-  '㏑' => 'ln',
-  '㏒' => 'log',
-  '㏓' => 'lx',
-  '㏔' => 'mb',
-  '㏕' => 'mil',
-  '㏖' => 'mol',
-  '㏗' => 'PH',
-  '㏘' => 'p.m.',
-  '㏙' => 'PPM',
-  '㏚' => 'PR',
-  '㏛' => 'sr',
-  '㏜' => 'Sv',
-  '㏝' => 'Wb',
-  '㏞' => 'V∕m',
-  '㏟' => 'A∕m',
-  '㏠' => '1日',
-  '㏡' => '2日',
-  '㏢' => '3日',
-  '㏣' => '4日',
-  '㏤' => '5日',
-  '㏥' => '6日',
-  '㏦' => '7日',
-  '㏧' => '8日',
-  '㏨' => '9日',
-  '㏩' => '10日',
-  '㏪' => '11日',
-  '㏫' => '12日',
-  '㏬' => '13日',
-  '㏭' => '14日',
-  '㏮' => '15日',
-  '㏯' => '16日',
-  '㏰' => '17日',
-  '㏱' => '18日',
-  '㏲' => '19日',
-  '㏳' => '20日',
-  '㏴' => '21日',
-  '㏵' => '22日',
-  '㏶' => '23日',
-  '㏷' => '24日',
-  '㏸' => '25日',
-  '㏹' => '26日',
-  '㏺' => '27日',
-  '㏻' => '28日',
-  '㏼' => '29日',
-  '㏽' => '30日',
-  '㏾' => '31日',
-  '㏿' => 'gal',
-  'ꚜ' => 'ъ',
-  'ꚝ' => 'ь',
-  'ꝰ' => 'ꝯ',
-  'ꟸ' => 'Ħ',
-  'ꟹ' => 'œ',
-  'ꭜ' => 'ꜧ',
-  'ꭝ' => 'ꬷ',
-  'ê­ž' => 'É«',
-  'ê­Ÿ' => 'ê­’',
-  'ꭩ' => 'ʍ',
-  'ff' => 'ff',
-  'fi' => 'fi',
-  'fl' => 'fl',
-  'ffi' => 'ffi',
-  'ffl' => 'ffl',
-  'ſt' => 'st',
-  'st' => 'st',
-  'ﬓ' => 'մն',
-  'ﬔ' => 'մե',
-  'ﬕ' => 'մի',
-  'ﬖ' => 'վն',
-  'ﬗ' => 'մխ',
-  'ﬠ' => 'ע',
-  'ﬡ' => 'א',
-  'ﬢ' => 'ד',
-  'ﬣ' => 'ה',
-  'ﬤ' => 'כ',
-  'ﬥ' => 'ל',
-  'ﬦ' => 'ם',
-  'ﬧ' => 'ר',
-  'ﬨ' => 'ת',
-  '﬩' => '+',
-  'ﭏ' => 'אל',
-  'ﭐ' => 'ٱ',
-  'ï­‘' => 'Ù±',
-  'ï­’' => 'Ù»',
-  'ï­“' => 'Ù»',
-  'ï­”' => 'Ù»',
-  'ï­•' => 'Ù»',
-  'ï­–' => 'Ù¾',
-  'ï­—' => 'Ù¾',
-  'ï­˜' => 'Ù¾',
-  'ï­™' => 'Ù¾',
-  'ï­š' => 'Ú€',
-  'ï­›' => 'Ú€',
-  'ﭜ' => 'ڀ',
-  'ﭝ' => 'ڀ',
-  'ï­ž' => 'Ùº',
-  'ï­Ÿ' => 'Ùº',
-  'ï­ ' => 'Ùº',
-  'ï­¡' => 'Ùº',
-  'ï­¢' => 'Ù¿',
-  'ï­£' => 'Ù¿',
-  'ï­¤' => 'Ù¿',
-  'ï­¥' => 'Ù¿',
-  'ï­¦' => 'Ù¹',
-  'ï­§' => 'Ù¹',
-  'ï­¨' => 'Ù¹',
-  'ï­©' => 'Ù¹',
-  'ï­ª' => 'Ú¤',
-  'ï­«' => 'Ú¤',
-  'ï­¬' => 'Ú¤',
-  'ï­­' => 'Ú¤',
-  'ï­®' => 'Ú¦',
-  'ï­¯' => 'Ú¦',
-  'ï­°' => 'Ú¦',
-  'ï­±' => 'Ú¦',
-  'ï­²' => 'Ú„',
-  'ï­³' => 'Ú„',
-  'ï­´' => 'Ú„',
-  'ï­µ' => 'Ú„',
-  'ï­¶' => 'Úƒ',
-  'ï­·' => 'Úƒ',
-  'ï­¸' => 'Úƒ',
-  'ï­¹' => 'Úƒ',
-  'ï­º' => 'Ú†',
-  'ï­»' => 'Ú†',
-  'ï­¼' => 'Ú†',
-  'ï­½' => 'Ú†',
-  'ï­¾' => 'Ú‡',
-  'ï­¿' => 'Ú‡',
-  'ﮀ' => 'ڇ',
-  'ﮁ' => 'ڇ',
-  'ﮂ' => 'ڍ',
-  'ﮃ' => 'ڍ',
-  'ﮄ' => 'ڌ',
-  'ﮅ' => 'ڌ',
-  'ﮆ' => 'ڎ',
-  'ﮇ' => 'ڎ',
-  'ﮈ' => 'ڈ',
-  'ﮉ' => 'ڈ',
-  'ﮊ' => 'ژ',
-  'ﮋ' => 'ژ',
-  'ﮌ' => 'ڑ',
-  'ﮍ' => 'ڑ',
-  'ﮎ' => 'ک',
-  'ﮏ' => 'ک',
-  'ﮐ' => 'ک',
-  'ﮑ' => 'ک',
-  'ï®’' => 'Ú¯',
-  'ﮓ' => 'گ',
-  'ï®”' => 'Ú¯',
-  'ﮕ' => 'گ',
-  'ï®–' => 'Ú³',
-  'ï®—' => 'Ú³',
-  'ﮘ' => 'ڳ',
-  'ï®™' => 'Ú³',
-  'ﮚ' => 'ڱ',
-  'ï®›' => 'Ú±',
-  'ﮜ' => 'ڱ',
-  'ﮝ' => 'ڱ',
-  'ﮞ' => 'ں',
-  'ﮟ' => 'ں',
-  'ï® ' => 'Ú»',
-  'ﮡ' => 'ڻ',
-  'ﮢ' => 'ڻ',
-  'ﮣ' => 'ڻ',
-  'ﮤ' => 'ۀ',
-  'ﮥ' => 'ۀ',
-  'ﮦ' => 'ہ',
-  'ﮧ' => 'ہ',
-  'ﮨ' => 'ہ',
-  'ﮩ' => 'ہ',
-  'ﮪ' => 'ھ',
-  'ﮫ' => 'ھ',
-  'ﮬ' => 'ھ',
-  'ï®­' => 'Ú¾',
-  'ï®®' => 'Û’',
-  'ﮯ' => 'ے',
-  'ï®°' => 'Û’Ù”',
-  'ï®±' => 'Û’Ù”',
-  'ﯓ' => 'ڭ',
-  'ﯔ' => 'ڭ',
-  'ﯕ' => 'ڭ',
-  'ﯖ' => 'ڭ',
-  'ﯗ' => 'ۇ',
-  'ﯘ' => 'ۇ',
-  'ﯙ' => 'ۆ',
-  'ﯚ' => 'ۆ',
-  'ﯛ' => 'ۈ',
-  'ﯜ' => 'ۈ',
-  'ﯝ' => 'ۇٴ',
-  'ﯞ' => 'ۋ',
-  'ﯟ' => 'ۋ',
-  'ﯠ' => 'ۅ',
-  'ﯡ' => 'ۅ',
-  'ﯢ' => 'ۉ',
-  'ﯣ' => 'ۉ',
-  'ﯤ' => 'ې',
-  'ﯥ' => 'ې',
-  'ﯦ' => 'ې',
-  'ﯧ' => 'ې',
-  'ﯨ' => 'ى',
-  'ﯩ' => 'ى',
-  'ﯪ' => 'ئا',
-  'ﯫ' => 'ئا',
-  'ﯬ' => 'ئە',
-  'ﯭ' => 'ئە',
-  'ﯮ' => 'ئو',
-  'ﯯ' => 'ئو',
-  'ﯰ' => 'ئۇ',
-  'ﯱ' => 'ئۇ',
-  'ﯲ' => 'ئۆ',
-  'ﯳ' => 'ئۆ',
-  'ﯴ' => 'ئۈ',
-  'ﯵ' => 'ئۈ',
-  'ﯶ' => 'ئې',
-  'ﯷ' => 'ئې',
-  'ﯸ' => 'ئې',
-  'ﯹ' => 'ئى',
-  'ﯺ' => 'ئى',
-  'ﯻ' => 'ئى',
-  'ﯼ' => 'ی',
-  'ﯽ' => 'ی',
-  'ﯾ' => 'ی',
-  'ﯿ' => 'ی',
-  'ﰀ' => 'ئج',
-  'ﰁ' => 'ئح',
-  'ï°‚' => 'ÙŠÙ”Ù…',
-  'ï°ƒ' => 'ÙŠÙ”Ù‰',
-  'ï°„' => 'ÙŠÙ”ÙŠ',
-  'ﰅ' => 'بج',
-  'ﰆ' => 'بح',
-  'ﰇ' => 'بخ',
-  'ﰈ' => 'بم',
-  'ﰉ' => 'بى',
-  'ﰊ' => 'بي',
-  'ﰋ' => 'تج',
-  'ﰌ' => 'تح',
-  'ﰍ' => 'تخ',
-  'ﰎ' => 'تم',
-  'ﰏ' => 'تى',
-  'ﰐ' => 'تي',
-  'ﰑ' => 'ثج',
-  'ﰒ' => 'ثم',
-  'ﰓ' => 'ثى',
-  'ﰔ' => 'ثي',
-  'ﰕ' => 'جح',
-  'ﰖ' => 'جم',
-  'ﰗ' => 'حج',
-  'ﰘ' => 'حم',
-  'ﰙ' => 'خج',
-  'ﰚ' => 'خح',
-  'ﰛ' => 'خم',
-  'ﰜ' => 'سج',
-  'ﰝ' => 'سح',
-  'ﰞ' => 'سخ',
-  'ﰟ' => 'سم',
-  'ﰠ' => 'صح',
-  'ﰡ' => 'صم',
-  'ﰢ' => 'ضج',
-  'ﰣ' => 'ضح',
-  'ﰤ' => 'ضخ',
-  'ﰥ' => 'ضم',
-  'ﰦ' => 'طح',
-  'ﰧ' => 'طم',
-  'ﰨ' => 'ظم',
-  'ﰩ' => 'عج',
-  'ﰪ' => 'عم',
-  'ﰫ' => 'غج',
-  'ﰬ' => 'غم',
-  'ﰭ' => 'فج',
-  'ﰮ' => 'فح',
-  'ﰯ' => 'فخ',
-  'ﰰ' => 'فم',
-  'ﰱ' => 'فى',
-  'ﰲ' => 'في',
-  'ﰳ' => 'قح',
-  'ﰴ' => 'قم',
-  'ﰵ' => 'قى',
-  'ﰶ' => 'قي',
-  'ﰷ' => 'كا',
-  'ﰸ' => 'كج',
-  'ﰹ' => 'كح',
-  'ﰺ' => 'كخ',
-  'ﰻ' => 'كل',
-  'ﰼ' => 'كم',
-  'ﰽ' => 'كى',
-  'ﰾ' => 'كي',
-  'ﰿ' => 'لج',
-  'ﱀ' => 'لح',
-  'ﱁ' => 'لخ',
-  'ﱂ' => 'لم',
-  'ﱃ' => 'لى',
-  'ﱄ' => 'لي',
-  'ﱅ' => 'مج',
-  'ﱆ' => 'مح',
-  'ﱇ' => 'مخ',
-  'ﱈ' => 'مم',
-  'ﱉ' => 'مى',
-  'ﱊ' => 'مي',
-  'ﱋ' => 'نج',
-  'ﱌ' => 'نح',
-  'ﱍ' => 'نخ',
-  'ﱎ' => 'نم',
-  'ﱏ' => 'نى',
-  'ﱐ' => 'ني',
-  'ﱑ' => 'هج',
-  'ﱒ' => 'هم',
-  'ﱓ' => 'هى',
-  'ﱔ' => 'هي',
-  'ﱕ' => 'يج',
-  'ﱖ' => 'يح',
-  'ﱗ' => 'يخ',
-  'ﱘ' => 'يم',
-  'ﱙ' => 'يى',
-  'ﱚ' => 'يي',
-  'ﱛ' => 'ذٰ',
-  'ﱜ' => 'رٰ',
-  'ﱝ' => 'ىٰ',
-  'ﱞ' => ' ٌّ',
-  'ﱟ' => ' ٍّ',
-  'ï± ' => ' ÙŽÙ‘',
-  'ﱡ' => ' ُّ',
-  'ﱢ' => ' ِّ',
-  'ﱣ' => ' ّٰ',
-  'ﱤ' => 'ئر',
-  'ﱥ' => 'ئز',
-  'ﱦ' => 'ئم',
-  'ﱧ' => 'ئن',
-  'ﱨ' => 'ئى',
-  'ﱩ' => 'ئي',
-  'ﱪ' => 'بر',
-  'ﱫ' => 'بز',
-  'ﱬ' => 'بم',
-  'ﱭ' => 'بن',
-  'ﱮ' => 'بى',
-  'ﱯ' => 'بي',
-  'ﱰ' => 'تر',
-  'ﱱ' => 'تز',
-  'ﱲ' => 'تم',
-  'ﱳ' => 'تن',
-  'ﱴ' => 'تى',
-  'ﱵ' => 'تي',
-  'ﱶ' => 'ثر',
-  'ﱷ' => 'ثز',
-  'ﱸ' => 'ثم',
-  'ﱹ' => 'ثن',
-  'ﱺ' => 'ثى',
-  'ﱻ' => 'ثي',
-  'ﱼ' => 'فى',
-  'ﱽ' => 'في',
-  'ﱾ' => 'قى',
-  'ﱿ' => 'قي',
-  'ﲀ' => 'كا',
-  'ﲁ' => 'كل',
-  'ﲂ' => 'كم',
-  'ﲃ' => 'كى',
-  'ﲄ' => 'كي',
-  'ﲅ' => 'لم',
-  'ﲆ' => 'لى',
-  'ﲇ' => 'لي',
-  'ﲈ' => 'ما',
-  'ﲉ' => 'مم',
-  'ﲊ' => 'نر',
-  'ﲋ' => 'نز',
-  'ﲌ' => 'نم',
-  'ﲍ' => 'نن',
-  'ﲎ' => 'نى',
-  'ﲏ' => 'ني',
-  'ﲐ' => 'ىٰ',
-  'ﲑ' => 'ير',
-  'ﲒ' => 'يز',
-  'ﲓ' => 'يم',
-  'ﲔ' => 'ين',
-  'ﲕ' => 'يى',
-  'ﲖ' => 'يي',
-  'ﲗ' => 'ئج',
-  'ﲘ' => 'ئح',
-  'ﲙ' => 'ئخ',
-  'ﲚ' => 'ئم',
-  'ï²›' => 'ÙŠÙ”Ù‡',
-  'ﲜ' => 'بج',
-  'ﲝ' => 'بح',
-  'ﲞ' => 'بخ',
-  'ﲟ' => 'بم',
-  'ﲠ' => 'به',
-  'ﲡ' => 'تج',
-  'ﲢ' => 'تح',
-  'ﲣ' => 'تخ',
-  'ﲤ' => 'تم',
-  'ﲥ' => 'ته',
-  'ﲦ' => 'ثم',
-  'ﲧ' => 'جح',
-  'ﲨ' => 'جم',
-  'ﲩ' => 'حج',
-  'ﲪ' => 'حم',
-  'ﲫ' => 'خج',
-  'ﲬ' => 'خم',
-  'ﲭ' => 'سج',
-  'ﲮ' => 'سح',
-  'ﲯ' => 'سخ',
-  'ﲰ' => 'سم',
-  'ﲱ' => 'صح',
-  'ﲲ' => 'صخ',
-  'ﲳ' => 'صم',
-  'ﲴ' => 'ضج',
-  'ﲵ' => 'ضح',
-  'ﲶ' => 'ضخ',
-  'ﲷ' => 'ضم',
-  'ﲸ' => 'طح',
-  'ﲹ' => 'ظم',
-  'ﲺ' => 'عج',
-  'ﲻ' => 'عم',
-  'ﲼ' => 'غج',
-  'ﲽ' => 'غم',
-  'ﲾ' => 'فج',
-  'ﲿ' => 'فح',
-  'ﳀ' => 'فخ',
-  'ﳁ' => 'فم',
-  'ﳂ' => 'قح',
-  'ﳃ' => 'قم',
-  'ﳄ' => 'كج',
-  'ﳅ' => 'كح',
-  'ﳆ' => 'كخ',
-  'ﳇ' => 'كل',
-  'ﳈ' => 'كم',
-  'ﳉ' => 'لج',
-  'ﳊ' => 'لح',
-  'ﳋ' => 'لخ',
-  'ﳌ' => 'لم',
-  'ﳍ' => 'له',
-  'ﳎ' => 'مج',
-  'ﳏ' => 'مح',
-  'ﳐ' => 'مخ',
-  'ﳑ' => 'مم',
-  'ﳒ' => 'نج',
-  'ﳓ' => 'نح',
-  'ﳔ' => 'نخ',
-  'ﳕ' => 'نم',
-  'ﳖ' => 'نه',
-  'ﳗ' => 'هج',
-  'ﳘ' => 'هم',
-  'ﳙ' => 'هٰ',
-  'ﳚ' => 'يج',
-  'ﳛ' => 'يح',
-  'ﳜ' => 'يخ',
-  'ﳝ' => 'يم',
-  'ﳞ' => 'يه',
-  'ﳟ' => 'ئم',
-  'ï³ ' => 'ÙŠÙ”Ù‡',
-  'ﳡ' => 'بم',
-  'ﳢ' => 'به',
-  'ﳣ' => 'تم',
-  'ﳤ' => 'ته',
-  'ﳥ' => 'ثم',
-  'ﳦ' => 'ثه',
-  'ﳧ' => 'سم',
-  'ﳨ' => 'سه',
-  'ﳩ' => 'شم',
-  'ﳪ' => 'شه',
-  'ﳫ' => 'كل',
-  'ﳬ' => 'كم',
-  'ﳭ' => 'لم',
-  'ﳮ' => 'نم',
-  'ﳯ' => 'نه',
-  'ﳰ' => 'يم',
-  'ﳱ' => 'يه',
-  'ï³²' => 'Ù€ÙŽÙ‘',
-  'ﳳ' => 'ـُّ',
-  'ﳴ' => 'ـِّ',
-  'ﳵ' => 'طى',
-  'ﳶ' => 'طي',
-  'ﳷ' => 'عى',
-  'ﳸ' => 'عي',
-  'ﳹ' => 'غى',
-  'ﳺ' => 'غي',
-  'ﳻ' => 'سى',
-  'ﳼ' => 'سي',
-  'ﳽ' => 'شى',
-  'ﳾ' => 'شي',
-  'ﳿ' => 'حى',
-  'ﴀ' => 'حي',
-  'ﴁ' => 'جى',
-  'ﴂ' => 'جي',
-  'ﴃ' => 'خى',
-  'ﴄ' => 'خي',
-  'ﴅ' => 'صى',
-  'ﴆ' => 'صي',
-  'ﴇ' => 'ضى',
-  'ﴈ' => 'ضي',
-  'ﴉ' => 'شج',
-  'ﴊ' => 'شح',
-  'ﴋ' => 'شخ',
-  'ﴌ' => 'شم',
-  'ﴍ' => 'شر',
-  'ﴎ' => 'سر',
-  'ﴏ' => 'صر',
-  'ﴐ' => 'ضر',
-  'ﴑ' => 'طى',
-  'ﴒ' => 'طي',
-  'ﴓ' => 'عى',
-  'ﴔ' => 'عي',
-  'ﴕ' => 'غى',
-  'ﴖ' => 'غي',
-  'ﴗ' => 'سى',
-  'ﴘ' => 'سي',
-  'ﴙ' => 'شى',
-  'ﴚ' => 'شي',
-  'ﴛ' => 'حى',
-  'ﴜ' => 'حي',
-  'ﴝ' => 'جى',
-  'ﴞ' => 'جي',
-  'ﴟ' => 'خى',
-  'ﴠ' => 'خي',
-  'ﴡ' => 'صى',
-  'ﴢ' => 'صي',
-  'ﴣ' => 'ضى',
-  'ﴤ' => 'ضي',
-  'ﴥ' => 'شج',
-  'ﴦ' => 'شح',
-  'ﴧ' => 'شخ',
-  'ﴨ' => 'شم',
-  'ﴩ' => 'شر',
-  'ﴪ' => 'سر',
-  'ﴫ' => 'صر',
-  'ﴬ' => 'ضر',
-  'ﴭ' => 'شج',
-  'ﴮ' => 'شح',
-  'ﴯ' => 'شخ',
-  'ﴰ' => 'شم',
-  'ﴱ' => 'سه',
-  'ﴲ' => 'شه',
-  'ﴳ' => 'طم',
-  'ﴴ' => 'سج',
-  'ﴵ' => 'سح',
-  'ﴶ' => 'سخ',
-  'ﴷ' => 'شج',
-  'ﴸ' => 'شح',
-  'ﴹ' => 'شخ',
-  'ﴺ' => 'طم',
-  'ﴻ' => 'ظم',
-  'ﴼ' => 'اً',
-  'ﴽ' => 'اً',
-  'ﵐ' => 'تجم',
-  'ﵑ' => 'تحج',
-  'ﵒ' => 'تحج',
-  'ﵓ' => 'تحم',
-  'ﵔ' => 'تخم',
-  'ﵕ' => 'تمج',
-  'ﵖ' => 'تمح',
-  'ﵗ' => 'تمخ',
-  'ﵘ' => 'جمح',
-  'ﵙ' => 'جمح',
-  'ﵚ' => 'حمي',
-  'ﵛ' => 'حمى',
-  'ﵜ' => 'سحج',
-  'ﵝ' => 'سجح',
-  'ﵞ' => 'سجى',
-  'ﵟ' => 'سمح',
-  'ﵠ' => 'سمح',
-  'ﵡ' => 'سمج',
-  'ﵢ' => 'سمم',
-  'ﵣ' => 'سمم',
-  'ﵤ' => 'صحح',
-  'ﵥ' => 'صحح',
-  'ﵦ' => 'صمم',
-  'ﵧ' => 'شحم',
-  'ﵨ' => 'شحم',
-  'ﵩ' => 'شجي',
-  'ﵪ' => 'شمخ',
-  'ﵫ' => 'شمخ',
-  'ﵬ' => 'شمم',
-  'ﵭ' => 'شمم',
-  'ﵮ' => 'ضحى',
-  'ﵯ' => 'ضخم',
-  'ﵰ' => 'ضخم',
-  'ﵱ' => 'طمح',
-  'ﵲ' => 'طمح',
-  'ﵳ' => 'طمم',
-  'ﵴ' => 'طمي',
-  'ﵵ' => 'عجم',
-  'ﵶ' => 'عمم',
-  'ﵷ' => 'عمم',
-  'ﵸ' => 'عمى',
-  'ﵹ' => 'غمم',
-  'ﵺ' => 'غمي',
-  'ﵻ' => 'غمى',
-  'ﵼ' => 'فخم',
-  'ﵽ' => 'فخم',
-  'ﵾ' => 'قمح',
-  'ﵿ' => 'قمم',
-  'ﶀ' => 'لحم',
-  'ﶁ' => 'لحي',
-  'ﶂ' => 'لحى',
-  'ﶃ' => 'لجج',
-  'ﶄ' => 'لجج',
-  'ﶅ' => 'لخم',
-  'ﶆ' => 'لخم',
-  'ﶇ' => 'لمح',
-  'ﶈ' => 'لمح',
-  'ﶉ' => 'محج',
-  'ﶊ' => 'محم',
-  'ﶋ' => 'محي',
-  'ﶌ' => 'مجح',
-  'ﶍ' => 'مجم',
-  'ﶎ' => 'مخج',
-  'ﶏ' => 'مخم',
-  'ﶒ' => 'مجخ',
-  'ﶓ' => 'همج',
-  'ﶔ' => 'همم',
-  'ﶕ' => 'نحم',
-  'ﶖ' => 'نحى',
-  'ﶗ' => 'نجم',
-  'ﶘ' => 'نجم',
-  'ﶙ' => 'نجى',
-  'ﶚ' => 'نمي',
-  'ﶛ' => 'نمى',
-  'ﶜ' => 'يمم',
-  'ﶝ' => 'يمم',
-  'ﶞ' => 'بخي',
-  'ﶟ' => 'تجي',
-  'ﶠ' => 'تجى',
-  'ﶡ' => 'تخي',
-  'ﶢ' => 'تخى',
-  'ﶣ' => 'تمي',
-  'ﶤ' => 'تمى',
-  'ﶥ' => 'جمي',
-  'ﶦ' => 'جحى',
-  'ﶧ' => 'جمى',
-  'ﶨ' => 'سخى',
-  'ﶩ' => 'صحي',
-  'ﶪ' => 'شحي',
-  'ﶫ' => 'ضحي',
-  'ﶬ' => 'لجي',
-  'ﶭ' => 'لمي',
-  'ﶮ' => 'يحي',
-  'ﶯ' => 'يجي',
-  'ﶰ' => 'يمي',
-  'ﶱ' => 'ممي',
-  'ﶲ' => 'قمي',
-  'ﶳ' => 'نحي',
-  'ﶴ' => 'قمح',
-  'ﶵ' => 'لحم',
-  'ﶶ' => 'عمي',
-  'ﶷ' => 'كمي',
-  'ﶸ' => 'نجح',
-  'ﶹ' => 'مخي',
-  'ﶺ' => 'لجم',
-  'ﶻ' => 'كمم',
-  'ﶼ' => 'لجم',
-  'ﶽ' => 'نجح',
-  'ﶾ' => 'جحي',
-  'ﶿ' => 'حجي',
-  'ﷀ' => 'مجي',
-  'ﷁ' => 'فمي',
-  'ﷂ' => 'بحي',
-  'ﷃ' => 'كمم',
-  'ﷄ' => 'عجم',
-  'ﷅ' => 'صمم',
-  'ﷆ' => 'سخي',
-  'ﷇ' => 'نجي',
-  'ﷰ' => 'صلے',
-  'ﷱ' => 'قلے',
-  'ﷲ' => 'الله',
-  'ﷳ' => 'اكبر',
-  'ﷴ' => 'محمد',
-  'ﷵ' => 'صلعم',
-  'ﷶ' => 'رسول',
-  'ﷷ' => 'عليه',
-  'ﷸ' => 'وسلم',
-  'ﷹ' => 'صلى',
-  'ﷺ' => 'صلى الله عليه وسلم',
-  'ﷻ' => 'جل جلاله',
-  '﷼' => 'ریال',
-  '︐' => ',',
-  '︑' => '、',
-  '︒' => '。',
-  '︓' => ':',
-  '︔' => ';',
-  '︕' => '!',
-  '︖' => '?',
-  '︗' => '〖',
-  '︘' => '〗',
-  '︙' => '...',
-  '︰' => '..',
-  '︱' => '—',
-  '︲' => '–',
-  '︳' => '_',
-  '︴' => '_',
-  '︵' => '(',
-  '︶' => ')',
-  '︷' => '{',
-  '︸' => '}',
-  '︹' => '〔',
-  '︺' => '〕',
-  '︻' => '【',
-  '︼' => '】',
-  '︽' => '《',
-  '︾' => '》',
-  '︿' => '〈',
-  '﹀' => '〉',
-  '﹁' => '「',
-  '﹂' => '」',
-  '﹃' => '『',
-  '﹄' => '』',
-  '﹇' => '[',
-  '﹈' => ']',
-  '﹉' => ' ̅',
-  '﹊' => ' ̅',
-  '﹋' => ' ̅',
-  '﹌' => ' ̅',
-  '﹍' => '_',
-  '﹎' => '_',
-  '﹏' => '_',
-  '﹐' => ',',
-  '﹑' => '、',
-  'ï¹’' => '.',
-  'ï¹”' => ';',
-  '﹕' => ':',
-  'ï¹–' => '?',
-  'ï¹—' => '!',
-  '﹘' => '—',
-  'ï¹™' => '(',
-  '﹚' => ')',
-  'ï¹›' => '{',
-  '﹜' => '}',
-  '﹝' => '〔',
-  '﹞' => '〕',
-  '﹟' => '#',
-  'ï¹ ' => '&',
-  '﹡' => '*',
-  'ï¹¢' => '+',
-  'ï¹£' => '-',
-  '﹤' => '<',
-  'ï¹¥' => '>',
-  '﹦' => '=',
-  '﹨' => '\\',
-  '﹩' => '$',
-  '﹪' => '%',
-  '﹫' => '@',
-  'ï¹°' => ' Ù‹',
-  'ﹱ' => 'ـً',
-  'ﹲ' => ' ٌ',
-  'ﹴ' => ' ٍ',
-  'ﹶ' => ' َ',
-  'ï¹·' => 'Ù€ÙŽ',
-  'ﹸ' => ' ُ',
-  'ﹹ' => 'ـُ',
-  'ﹺ' => ' ِ',
-  'ﹻ' => 'ـِ',
-  'ï¹¼' => ' Ù‘',
-  'ﹽ' => 'ـّ',
-  'ï¹¾' => ' Ù’',
-  'ﹿ' => 'ـْ',
-  'ﺀ' => 'ء',
-  'ﺁ' => 'آ',
-  'ﺂ' => 'آ',
-  'ﺃ' => 'أ',
-  'ﺄ' => 'أ',
-  'ﺅ' => 'ؤ',
-  'ﺆ' => 'ؤ',
-  'ﺇ' => 'إ',
-  'ﺈ' => 'إ',
-  'ﺉ' => 'ئ',
-  'ﺊ' => 'ئ',
-  'ﺋ' => 'ئ',
-  'ﺌ' => 'ئ',
-  'ﺍ' => 'ا',
-  'ﺎ' => 'ا',
-  'ﺏ' => 'ب',
-  'ﺐ' => 'ب',
-  'ﺑ' => 'ب',
-  'ﺒ' => 'ب',
-  'ﺓ' => 'ة',
-  'ﺔ' => 'ة',
-  'ﺕ' => 'ت',
-  'ﺖ' => 'ت',
-  'ﺗ' => 'ت',
-  'ﺘ' => 'ت',
-  'ﺙ' => 'ث',
-  'ﺚ' => 'ث',
-  'ﺛ' => 'ث',
-  'ﺜ' => 'ث',
-  'ﺝ' => 'ج',
-  'ﺞ' => 'ج',
-  'ﺟ' => 'ج',
-  'ﺠ' => 'ج',
-  'ﺡ' => 'ح',
-  'ﺢ' => 'ح',
-  'ﺣ' => 'ح',
-  'ﺤ' => 'ح',
-  'ﺥ' => 'خ',
-  'ﺦ' => 'خ',
-  'ﺧ' => 'خ',
-  'ﺨ' => 'خ',
-  'ﺩ' => 'د',
-  'ﺪ' => 'د',
-  'ﺫ' => 'ذ',
-  'ﺬ' => 'ذ',
-  'ﺭ' => 'ر',
-  'ﺮ' => 'ر',
-  'ﺯ' => 'ز',
-  'ﺰ' => 'ز',
-  'ﺱ' => 'س',
-  'ﺲ' => 'س',
-  'ﺳ' => 'س',
-  'ﺴ' => 'س',
-  'ﺵ' => 'ش',
-  'ﺶ' => 'ش',
-  'ﺷ' => 'ش',
-  'ﺸ' => 'ش',
-  'ﺹ' => 'ص',
-  'ﺺ' => 'ص',
-  'ﺻ' => 'ص',
-  'ﺼ' => 'ص',
-  'ﺽ' => 'ض',
-  'ﺾ' => 'ض',
-  'ﺿ' => 'ض',
-  'ﻀ' => 'ض',
-  'ﻁ' => 'ط',
-  'ﻂ' => 'ط',
-  'ﻃ' => 'ط',
-  'ﻄ' => 'ط',
-  'ﻅ' => 'ظ',
-  'ﻆ' => 'ظ',
-  'ﻇ' => 'ظ',
-  'ﻈ' => 'ظ',
-  'ﻉ' => 'ع',
-  'ﻊ' => 'ع',
-  'ﻋ' => 'ع',
-  'ﻌ' => 'ع',
-  'ﻍ' => 'غ',
-  'ﻎ' => 'غ',
-  'ﻏ' => 'غ',
-  'ﻐ' => 'غ',
-  'ﻑ' => 'ف',
-  'ﻒ' => 'ف',
-  'ﻓ' => 'ف',
-  'ﻔ' => 'ف',
-  'ﻕ' => 'ق',
-  'ï»–' => 'Ù‚',
-  'ï»—' => 'Ù‚',
-  'ﻘ' => 'ق',
-  'ï»™' => 'Ùƒ',
-  'ﻚ' => 'ك',
-  'ï»›' => 'Ùƒ',
-  'ﻜ' => 'ك',
-  'ﻝ' => 'ل',
-  'ﻞ' => 'ل',
-  'ﻟ' => 'ل',
-  'ï» ' => 'Ù„',
-  'ﻡ' => 'م',
-  'ﻢ' => 'م',
-  'ﻣ' => 'م',
-  'ﻤ' => 'م',
-  'ﻥ' => 'ن',
-  'ﻦ' => 'ن',
-  'ﻧ' => 'ن',
-  'ﻨ' => 'ن',
-  'ﻩ' => 'ه',
-  'ﻪ' => 'ه',
-  'ﻫ' => 'ه',
-  'ﻬ' => 'ه',
-  'ï»­' => 'Ùˆ',
-  'ï»®' => 'Ùˆ',
-  'ﻯ' => 'ى',
-  'ï»°' => 'Ù‰',
-  'ï»±' => 'ÙŠ',
-  'ﻲ' => 'ي',
-  'ﻳ' => 'ي',
-  'ï»´' => 'ÙŠ',
-  'ﻵ' => 'لآ',
-  'ﻶ' => 'لآ',
-  'ﻷ' => 'لأ',
-  'ﻸ' => 'لأ',
-  'ﻹ' => 'لإ',
-  'ﻺ' => 'لإ',
-  'ﻻ' => 'لا',
-  'ﻼ' => 'لا',
-  '!' => '!',
-  '"' => '"',
-  '#' => '#',
-  '$' => '$',
-  'ï¼…' => '%',
-  '&' => '&',
-  ''' => '\'',
-  '(' => '(',
-  ')' => ')',
-  '*' => '*',
-  '+' => '+',
-  ',' => ',',
-  '-' => '-',
-  '.' => '.',
-  '/' => '/',
-  '0' => '0',
-  '1' => '1',
-  'ï¼’' => '2',
-  '3' => '3',
-  'ï¼”' => '4',
-  '5' => '5',
-  'ï¼–' => '6',
-  'ï¼—' => '7',
-  '8' => '8',
-  'ï¼™' => '9',
-  ':' => ':',
-  'ï¼›' => ';',
-  '<' => '<',
-  '=' => '=',
-  '>' => '>',
-  '?' => '?',
-  'ï¼ ' => '@',
-  'A' => 'A',
-  'ï¼¢' => 'B',
-  'ï¼£' => 'C',
-  'D' => 'D',
-  'ï¼¥' => 'E',
-  'F' => 'F',
-  'G' => 'G',
-  'H' => 'H',
-  'I' => 'I',
-  'J' => 'J',
-  'K' => 'K',
-  'L' => 'L',
-  'ï¼­' => 'M',
-  'ï¼®' => 'N',
-  'O' => 'O',
-  'ï¼°' => 'P',
-  'ï¼±' => 'Q',
-  'ï¼²' => 'R',
-  'ï¼³' => 'S',
-  'ï¼´' => 'T',
-  'ï¼µ' => 'U',
-  'V' => 'V',
-  'ï¼·' => 'W',
-  'X' => 'X',
-  'ï¼¹' => 'Y',
-  'Z' => 'Z',
-  'ï¼»' => '[',
-  'ï¼¼' => '\\',
-  'ï¼½' => ']',
-  'ï¼¾' => '^',
-  '_' => '_',
-  'ï½€' => '`',
-  'a' => 'a',
-  'b' => 'b',
-  'c' => 'c',
-  'd' => 'd',
-  'ï½…' => 'e',
-  'f' => 'f',
-  'g' => 'g',
-  'h' => 'h',
-  'i' => 'i',
-  'j' => 'j',
-  'k' => 'k',
-  'l' => 'l',
-  'm' => 'm',
-  'n' => 'n',
-  'o' => 'o',
-  'p' => 'p',
-  'q' => 'q',
-  'ï½’' => 'r',
-  's' => 's',
-  'ï½”' => 't',
-  'u' => 'u',
-  'ï½–' => 'v',
-  'ï½—' => 'w',
-  'x' => 'x',
-  'ï½™' => 'y',
-  'z' => 'z',
-  'ï½›' => '{',
-  '|' => '|',
-  '}' => '}',
-  '~' => '~',
-  '⦅' => '⦅',
-  '⦆' => '⦆',
-  '。' => '。',
-  '「' => '「',
-  '」' => '」',
-  '、' => '、',
-  '・' => '・',
-  'ヲ' => 'ヲ',
-  'ァ' => 'ァ',
-  'ィ' => 'ィ',
-  'ゥ' => 'ゥ',
-  'ェ' => 'ェ',
-  'ォ' => 'ォ',
-  'ャ' => 'ャ',
-  'ュ' => 'ュ',
-  'ョ' => 'ョ',
-  'ッ' => 'ッ',
-  'ー' => 'ー',
-  'ï½±' => 'ã‚¢',
-  'イ' => 'イ',
-  'ウ' => 'ウ',
-  'エ' => 'エ',
-  'オ' => 'オ',
-  'カ' => 'カ',
-  'ï½·' => 'ã‚­',
-  'ク' => 'ク',
-  'ケ' => 'ケ',
-  'コ' => 'コ',
-  'サ' => 'サ',
-  'ï½¼' => 'ã‚·',
-  'ス' => 'ス',
-  'ï½¾' => 'ã‚»',
-  'ソ' => 'ソ',
-  'ï¾€' => 'ã‚¿',
-  'チ' => 'チ',
-  'ツ' => 'ツ',
-  'テ' => 'テ',
-  'ト' => 'ト',
-  'ナ' => 'ナ',
-  'ニ' => 'ニ',
-  'ヌ' => 'ヌ',
-  'ネ' => 'ネ',
-  'ノ' => 'ノ',
-  'ハ' => 'ハ',
-  'ヒ' => 'ヒ',
-  'フ' => 'フ',
-  'ヘ' => 'ヘ',
-  'ホ' => 'ホ',
-  'マ' => 'マ',
-  'ミ' => 'ミ',
-  'ム' => 'ム',
-  'メ' => 'メ',
-  'モ' => 'モ',
-  'ヤ' => 'ヤ',
-  'ユ' => 'ユ',
-  'ヨ' => 'ヨ',
-  'ラ' => 'ラ',
-  'リ' => 'リ',
-  'ル' => 'ル',
-  'レ' => 'レ',
-  'ロ' => 'ロ',
-  'ワ' => 'ワ',
-  'ン' => 'ン',
-  '゙' => '゙',
-  '゚' => '゚',
-  'ï¾ ' => 'á… ',
-  'ᄀ' => 'ᄀ',
-  'ᄁ' => 'ᄁ',
-  'ᆪ' => 'ᆪ',
-  'ᄂ' => 'ᄂ',
-  'ᆬ' => 'ᆬ',
-  'ᆭ' => 'ᆭ',
-  'ᄃ' => 'ᄃ',
-  'ᄄ' => 'ᄄ',
-  'ᄅ' => 'ᄅ',
-  'ᆰ' => 'ᆰ',
-  'ᆱ' => 'ᆱ',
-  'ᆲ' => 'ᆲ',
-  'ᆳ' => 'ᆳ',
-  'ᆴ' => 'ᆴ',
-  'ᆵ' => 'ᆵ',
-  'ï¾°' => 'á„š',
-  'ᄆ' => 'ᄆ',
-  'ᄇ' => 'ᄇ',
-  'ᄈ' => 'ᄈ',
-  'ï¾´' => 'á„¡',
-  'ᄉ' => 'ᄉ',
-  'ᄊ' => 'ᄊ',
-  'ï¾·' => 'á„‹',
-  'ᄌ' => 'ᄌ',
-  'ᄍ' => 'ᄍ',
-  'ᄎ' => 'ᄎ',
-  'ᄏ' => 'ᄏ',
-  'ᄐ' => 'ᄐ',
-  'ï¾½' => 'á„‘',
-  'ï¾¾' => 'á„’',
-  'ï¿‚' => 'á…¡',
-  'ᅢ' => 'ᅢ',
-  'ï¿„' => 'á…£',
-  'ï¿…' => 'á…¤',
-  'ᅥ' => 'ᅥ',
-  'ᅦ' => 'ᅦ',
-  'ï¿Š' => 'á…§',
-  'ï¿‹' => 'á…¨',
-  'ᅩ' => 'ᅩ',
-  'ᅪ' => 'ᅪ',
-  'ï¿Ž' => 'á…«',
-  'ᅬ' => 'ᅬ',
-  'ï¿’' => 'á…­',
-  'ï¿“' => 'á…®',
-  'ï¿”' => 'á…¯',
-  'ï¿•' => 'á…°',
-  'ï¿–' => 'á…±',
-  'ï¿—' => 'á…²',
-  'ï¿š' => 'á…³',
-  'ï¿›' => 'á…´',
-  'ᅵ' => 'ᅵ',
-  '¢' => '¢',
-  '£' => '£',
-  '¬' => '¬',
-  'ï¿£' => ' Ì„',
-  '¦' => '¦',
-  'ï¿¥' => 'Â¥',
-  '₩' => '₩',
-  '│' => '│',
-  '←' => '←',
-  '↑' => '↑',
-  '→' => '→',
-  '↓' => '↓',
-  'ï¿­' => 'â– ',
-  'ï¿®' => 'â—‹',
-  '𝐀' => 'A',
-  '𝐁' => 'B',
-  '𝐂' => 'C',
-  '𝐃' => 'D',
-  '𝐄' => 'E',
-  '𝐅' => 'F',
-  '𝐆' => 'G',
-  '𝐇' => 'H',
-  '𝐈' => 'I',
-  '𝐉' => 'J',
-  '𝐊' => 'K',
-  '𝐋' => 'L',
-  '𝐌' => 'M',
-  '𝐍' => 'N',
-  '𝐎' => 'O',
-  '𝐏' => 'P',
-  '𝐐' => 'Q',
-  '𝐑' => 'R',
-  '𝐒' => 'S',
-  '𝐓' => 'T',
-  '𝐔' => 'U',
-  '𝐕' => 'V',
-  '𝐖' => 'W',
-  '𝐗' => 'X',
-  '𝐘' => 'Y',
-  '𝐙' => 'Z',
-  '𝐚' => 'a',
-  '𝐛' => 'b',
-  '𝐜' => 'c',
-  '𝐝' => 'd',
-  '𝐞' => 'e',
-  '𝐟' => 'f',
-  '𝐠' => 'g',
-  '𝐡' => 'h',
-  '𝐢' => 'i',
-  '𝐣' => 'j',
-  '𝐤' => 'k',
-  '𝐥' => 'l',
-  '𝐦' => 'm',
-  '𝐧' => 'n',
-  '𝐨' => 'o',
-  '𝐩' => 'p',
-  '𝐪' => 'q',
-  '𝐫' => 'r',
-  '𝐬' => 's',
-  '𝐭' => 't',
-  '𝐮' => 'u',
-  '𝐯' => 'v',
-  '𝐰' => 'w',
-  '𝐱' => 'x',
-  '𝐲' => 'y',
-  '𝐳' => 'z',
-  '𝐴' => 'A',
-  '𝐵' => 'B',
-  '𝐶' => 'C',
-  '𝐷' => 'D',
-  '𝐸' => 'E',
-  '𝐹' => 'F',
-  '𝐺' => 'G',
-  '𝐻' => 'H',
-  '𝐼' => 'I',
-  '𝐽' => 'J',
-  '𝐾' => 'K',
-  '𝐿' => 'L',
-  '𝑀' => 'M',
-  '𝑁' => 'N',
-  '𝑂' => 'O',
-  '𝑃' => 'P',
-  '𝑄' => 'Q',
-  '𝑅' => 'R',
-  '𝑆' => 'S',
-  '𝑇' => 'T',
-  '𝑈' => 'U',
-  '𝑉' => 'V',
-  '𝑊' => 'W',
-  '𝑋' => 'X',
-  '𝑌' => 'Y',
-  '𝑍' => 'Z',
-  '𝑎' => 'a',
-  '𝑏' => 'b',
-  '𝑐' => 'c',
-  '𝑑' => 'd',
-  '𝑒' => 'e',
-  '𝑓' => 'f',
-  '𝑔' => 'g',
-  '𝑖' => 'i',
-  '𝑗' => 'j',
-  '𝑘' => 'k',
-  '𝑙' => 'l',
-  '𝑚' => 'm',
-  '𝑛' => 'n',
-  '𝑜' => 'o',
-  '𝑝' => 'p',
-  '𝑞' => 'q',
-  '𝑟' => 'r',
-  '𝑠' => 's',
-  '𝑡' => 't',
-  '𝑢' => 'u',
-  '𝑣' => 'v',
-  '𝑤' => 'w',
-  '𝑥' => 'x',
-  '𝑦' => 'y',
-  '𝑧' => 'z',
-  '𝑨' => 'A',
-  '𝑩' => 'B',
-  '𝑪' => 'C',
-  '𝑫' => 'D',
-  '𝑬' => 'E',
-  '𝑭' => 'F',
-  '𝑮' => 'G',
-  '𝑯' => 'H',
-  '𝑰' => 'I',
-  '𝑱' => 'J',
-  '𝑲' => 'K',
-  '𝑳' => 'L',
-  '𝑴' => 'M',
-  '𝑵' => 'N',
-  '𝑶' => 'O',
-  '𝑷' => 'P',
-  '𝑸' => 'Q',
-  '𝑹' => 'R',
-  '𝑺' => 'S',
-  '𝑻' => 'T',
-  '𝑼' => 'U',
-  '𝑽' => 'V',
-  '𝑾' => 'W',
-  '𝑿' => 'X',
-  '𝒀' => 'Y',
-  '𝒁' => 'Z',
-  '𝒂' => 'a',
-  '𝒃' => 'b',
-  '𝒄' => 'c',
-  '𝒅' => 'd',
-  '𝒆' => 'e',
-  '𝒇' => 'f',
-  '𝒈' => 'g',
-  '𝒉' => 'h',
-  '𝒊' => 'i',
-  '𝒋' => 'j',
-  '𝒌' => 'k',
-  '𝒍' => 'l',
-  '𝒎' => 'm',
-  '𝒏' => 'n',
-  '𝒐' => 'o',
-  '𝒑' => 'p',
-  '𝒒' => 'q',
-  '𝒓' => 'r',
-  '𝒔' => 's',
-  '𝒕' => 't',
-  '𝒖' => 'u',
-  '𝒗' => 'v',
-  '𝒘' => 'w',
-  '𝒙' => 'x',
-  '𝒚' => 'y',
-  '𝒛' => 'z',
-  '𝒜' => 'A',
-  '𝒞' => 'C',
-  '𝒟' => 'D',
-  '𝒢' => 'G',
-  '𝒥' => 'J',
-  '𝒦' => 'K',
-  '𝒩' => 'N',
-  '𝒪' => 'O',
-  '𝒫' => 'P',
-  '𝒬' => 'Q',
-  '𝒮' => 'S',
-  '𝒯' => 'T',
-  '𝒰' => 'U',
-  '𝒱' => 'V',
-  '𝒲' => 'W',
-  '𝒳' => 'X',
-  '𝒴' => 'Y',
-  '𝒵' => 'Z',
-  '𝒶' => 'a',
-  '𝒷' => 'b',
-  '𝒸' => 'c',
-  '𝒹' => 'd',
-  '𝒻' => 'f',
-  '𝒽' => 'h',
-  '𝒾' => 'i',
-  '𝒿' => 'j',
-  '𝓀' => 'k',
-  '𝓁' => 'l',
-  '𝓂' => 'm',
-  '𝓃' => 'n',
-  '𝓅' => 'p',
-  '𝓆' => 'q',
-  '𝓇' => 'r',
-  '𝓈' => 's',
-  '𝓉' => 't',
-  '𝓊' => 'u',
-  '𝓋' => 'v',
-  '𝓌' => 'w',
-  '𝓍' => 'x',
-  '𝓎' => 'y',
-  '𝓏' => 'z',
-  '𝓐' => 'A',
-  '𝓑' => 'B',
-  '𝓒' => 'C',
-  '𝓓' => 'D',
-  '𝓔' => 'E',
-  '𝓕' => 'F',
-  '𝓖' => 'G',
-  '𝓗' => 'H',
-  '𝓘' => 'I',
-  '𝓙' => 'J',
-  '𝓚' => 'K',
-  '𝓛' => 'L',
-  '𝓜' => 'M',
-  '𝓝' => 'N',
-  '𝓞' => 'O',
-  '𝓟' => 'P',
-  '𝓠' => 'Q',
-  '𝓡' => 'R',
-  '𝓢' => 'S',
-  '𝓣' => 'T',
-  '𝓤' => 'U',
-  '𝓥' => 'V',
-  '𝓦' => 'W',
-  '𝓧' => 'X',
-  '𝓨' => 'Y',
-  '𝓩' => 'Z',
-  '𝓪' => 'a',
-  '𝓫' => 'b',
-  '𝓬' => 'c',
-  '𝓭' => 'd',
-  '𝓮' => 'e',
-  '𝓯' => 'f',
-  '𝓰' => 'g',
-  '𝓱' => 'h',
-  '𝓲' => 'i',
-  '𝓳' => 'j',
-  '𝓴' => 'k',
-  '𝓵' => 'l',
-  '𝓶' => 'm',
-  '𝓷' => 'n',
-  '𝓸' => 'o',
-  '𝓹' => 'p',
-  '𝓺' => 'q',
-  '𝓻' => 'r',
-  '𝓼' => 's',
-  '𝓽' => 't',
-  '𝓾' => 'u',
-  '𝓿' => 'v',
-  '𝔀' => 'w',
-  '𝔁' => 'x',
-  '𝔂' => 'y',
-  '𝔃' => 'z',
-  '𝔄' => 'A',
-  '𝔅' => 'B',
-  '𝔇' => 'D',
-  '𝔈' => 'E',
-  '𝔉' => 'F',
-  '𝔊' => 'G',
-  '𝔍' => 'J',
-  '𝔎' => 'K',
-  '𝔏' => 'L',
-  '𝔐' => 'M',
-  '𝔑' => 'N',
-  '𝔒' => 'O',
-  '𝔓' => 'P',
-  '𝔔' => 'Q',
-  '𝔖' => 'S',
-  '𝔗' => 'T',
-  '𝔘' => 'U',
-  '𝔙' => 'V',
-  '𝔚' => 'W',
-  '𝔛' => 'X',
-  '𝔜' => 'Y',
-  '𝔞' => 'a',
-  '𝔟' => 'b',
-  '𝔠' => 'c',
-  '𝔡' => 'd',
-  '𝔢' => 'e',
-  '𝔣' => 'f',
-  '𝔤' => 'g',
-  '𝔥' => 'h',
-  '𝔦' => 'i',
-  '𝔧' => 'j',
-  '𝔨' => 'k',
-  '𝔩' => 'l',
-  '𝔪' => 'm',
-  '𝔫' => 'n',
-  '𝔬' => 'o',
-  '𝔭' => 'p',
-  '𝔮' => 'q',
-  '𝔯' => 'r',
-  '𝔰' => 's',
-  '𝔱' => 't',
-  '𝔲' => 'u',
-  '𝔳' => 'v',
-  '𝔴' => 'w',
-  '𝔵' => 'x',
-  '𝔶' => 'y',
-  '𝔷' => 'z',
-  '𝔸' => 'A',
-  '𝔹' => 'B',
-  '𝔻' => 'D',
-  '𝔼' => 'E',
-  '𝔽' => 'F',
-  '𝔾' => 'G',
-  '𝕀' => 'I',
-  '𝕁' => 'J',
-  '𝕂' => 'K',
-  '𝕃' => 'L',
-  '𝕄' => 'M',
-  '𝕆' => 'O',
-  '𝕊' => 'S',
-  '𝕋' => 'T',
-  '𝕌' => 'U',
-  '𝕍' => 'V',
-  '𝕎' => 'W',
-  '𝕏' => 'X',
-  '𝕐' => 'Y',
-  '𝕒' => 'a',
-  '𝕓' => 'b',
-  '𝕔' => 'c',
-  '𝕕' => 'd',
-  '𝕖' => 'e',
-  '𝕗' => 'f',
-  '𝕘' => 'g',
-  '𝕙' => 'h',
-  '𝕚' => 'i',
-  '𝕛' => 'j',
-  '𝕜' => 'k',
-  '𝕝' => 'l',
-  '𝕞' => 'm',
-  '𝕟' => 'n',
-  '𝕠' => 'o',
-  '𝕡' => 'p',
-  '𝕢' => 'q',
-  '𝕣' => 'r',
-  '𝕤' => 's',
-  '𝕥' => 't',
-  '𝕦' => 'u',
-  '𝕧' => 'v',
-  '𝕨' => 'w',
-  '𝕩' => 'x',
-  '𝕪' => 'y',
-  '𝕫' => 'z',
-  '𝕬' => 'A',
-  '𝕭' => 'B',
-  '𝕮' => 'C',
-  '𝕯' => 'D',
-  '𝕰' => 'E',
-  '𝕱' => 'F',
-  '𝕲' => 'G',
-  '𝕳' => 'H',
-  '𝕴' => 'I',
-  '𝕵' => 'J',
-  '𝕶' => 'K',
-  '𝕷' => 'L',
-  '𝕸' => 'M',
-  '𝕹' => 'N',
-  '𝕺' => 'O',
-  '𝕻' => 'P',
-  '𝕼' => 'Q',
-  '𝕽' => 'R',
-  '𝕾' => 'S',
-  '𝕿' => 'T',
-  '𝖀' => 'U',
-  '𝖁' => 'V',
-  '𝖂' => 'W',
-  '𝖃' => 'X',
-  '𝖄' => 'Y',
-  '𝖅' => 'Z',
-  '𝖆' => 'a',
-  '𝖇' => 'b',
-  '𝖈' => 'c',
-  '𝖉' => 'd',
-  '𝖊' => 'e',
-  '𝖋' => 'f',
-  '𝖌' => 'g',
-  '𝖍' => 'h',
-  '𝖎' => 'i',
-  '𝖏' => 'j',
-  '𝖐' => 'k',
-  '𝖑' => 'l',
-  '𝖒' => 'm',
-  '𝖓' => 'n',
-  '𝖔' => 'o',
-  '𝖕' => 'p',
-  '𝖖' => 'q',
-  '𝖗' => 'r',
-  '𝖘' => 's',
-  '𝖙' => 't',
-  '𝖚' => 'u',
-  '𝖛' => 'v',
-  '𝖜' => 'w',
-  '𝖝' => 'x',
-  '𝖞' => 'y',
-  '𝖟' => 'z',
-  '𝖠' => 'A',
-  '𝖡' => 'B',
-  '𝖢' => 'C',
-  '𝖣' => 'D',
-  '𝖤' => 'E',
-  '𝖥' => 'F',
-  '𝖦' => 'G',
-  '𝖧' => 'H',
-  '𝖨' => 'I',
-  '𝖩' => 'J',
-  '𝖪' => 'K',
-  '𝖫' => 'L',
-  '𝖬' => 'M',
-  '𝖭' => 'N',
-  '𝖮' => 'O',
-  '𝖯' => 'P',
-  '𝖰' => 'Q',
-  '𝖱' => 'R',
-  '𝖲' => 'S',
-  '𝖳' => 'T',
-  '𝖴' => 'U',
-  '𝖵' => 'V',
-  '𝖶' => 'W',
-  '𝖷' => 'X',
-  '𝖸' => 'Y',
-  '𝖹' => 'Z',
-  '𝖺' => 'a',
-  '𝖻' => 'b',
-  '𝖼' => 'c',
-  '𝖽' => 'd',
-  '𝖾' => 'e',
-  '𝖿' => 'f',
-  '𝗀' => 'g',
-  '𝗁' => 'h',
-  '𝗂' => 'i',
-  '𝗃' => 'j',
-  '𝗄' => 'k',
-  '𝗅' => 'l',
-  '𝗆' => 'm',
-  '𝗇' => 'n',
-  '𝗈' => 'o',
-  '𝗉' => 'p',
-  '𝗊' => 'q',
-  '𝗋' => 'r',
-  '𝗌' => 's',
-  '𝗍' => 't',
-  '𝗎' => 'u',
-  '𝗏' => 'v',
-  '𝗐' => 'w',
-  '𝗑' => 'x',
-  '𝗒' => 'y',
-  '𝗓' => 'z',
-  '𝗔' => 'A',
-  '𝗕' => 'B',
-  '𝗖' => 'C',
-  '𝗗' => 'D',
-  '𝗘' => 'E',
-  '𝗙' => 'F',
-  '𝗚' => 'G',
-  '𝗛' => 'H',
-  '𝗜' => 'I',
-  '𝗝' => 'J',
-  '𝗞' => 'K',
-  '𝗟' => 'L',
-  '𝗠' => 'M',
-  '𝗡' => 'N',
-  '𝗢' => 'O',
-  '𝗣' => 'P',
-  '𝗤' => 'Q',
-  '𝗥' => 'R',
-  '𝗦' => 'S',
-  '𝗧' => 'T',
-  '𝗨' => 'U',
-  '𝗩' => 'V',
-  '𝗪' => 'W',
-  '𝗫' => 'X',
-  '𝗬' => 'Y',
-  '𝗭' => 'Z',
-  '𝗮' => 'a',
-  '𝗯' => 'b',
-  '𝗰' => 'c',
-  '𝗱' => 'd',
-  '𝗲' => 'e',
-  '𝗳' => 'f',
-  '𝗴' => 'g',
-  '𝗵' => 'h',
-  '𝗶' => 'i',
-  '𝗷' => 'j',
-  '𝗸' => 'k',
-  '𝗹' => 'l',
-  '𝗺' => 'm',
-  '𝗻' => 'n',
-  '𝗼' => 'o',
-  '𝗽' => 'p',
-  '𝗾' => 'q',
-  '𝗿' => 'r',
-  '𝘀' => 's',
-  '𝘁' => 't',
-  '𝘂' => 'u',
-  '𝘃' => 'v',
-  '𝘄' => 'w',
-  '𝘅' => 'x',
-  '𝘆' => 'y',
-  '𝘇' => 'z',
-  '𝘈' => 'A',
-  '𝘉' => 'B',
-  '𝘊' => 'C',
-  '𝘋' => 'D',
-  '𝘌' => 'E',
-  '𝘍' => 'F',
-  '𝘎' => 'G',
-  '𝘏' => 'H',
-  '𝘐' => 'I',
-  '𝘑' => 'J',
-  '𝘒' => 'K',
-  '𝘓' => 'L',
-  '𝘔' => 'M',
-  '𝘕' => 'N',
-  '𝘖' => 'O',
-  '𝘗' => 'P',
-  '𝘘' => 'Q',
-  '𝘙' => 'R',
-  '𝘚' => 'S',
-  '𝘛' => 'T',
-  '𝘜' => 'U',
-  '𝘝' => 'V',
-  '𝘞' => 'W',
-  '𝘟' => 'X',
-  '𝘠' => 'Y',
-  '𝘡' => 'Z',
-  '𝘢' => 'a',
-  '𝘣' => 'b',
-  '𝘤' => 'c',
-  '𝘥' => 'd',
-  '𝘦' => 'e',
-  '𝘧' => 'f',
-  '𝘨' => 'g',
-  '𝘩' => 'h',
-  '𝘪' => 'i',
-  '𝘫' => 'j',
-  '𝘬' => 'k',
-  '𝘭' => 'l',
-  '𝘮' => 'm',
-  '𝘯' => 'n',
-  '𝘰' => 'o',
-  '𝘱' => 'p',
-  '𝘲' => 'q',
-  '𝘳' => 'r',
-  '𝘴' => 's',
-  '𝘵' => 't',
-  '𝘶' => 'u',
-  '𝘷' => 'v',
-  '𝘸' => 'w',
-  '𝘹' => 'x',
-  '𝘺' => 'y',
-  '𝘻' => 'z',
-  '𝘼' => 'A',
-  '𝘽' => 'B',
-  '𝘾' => 'C',
-  '𝘿' => 'D',
-  '𝙀' => 'E',
-  '𝙁' => 'F',
-  '𝙂' => 'G',
-  '𝙃' => 'H',
-  '𝙄' => 'I',
-  '𝙅' => 'J',
-  '𝙆' => 'K',
-  '𝙇' => 'L',
-  '𝙈' => 'M',
-  '𝙉' => 'N',
-  '𝙊' => 'O',
-  '𝙋' => 'P',
-  '𝙌' => 'Q',
-  '𝙍' => 'R',
-  '𝙎' => 'S',
-  '𝙏' => 'T',
-  '𝙐' => 'U',
-  '𝙑' => 'V',
-  '𝙒' => 'W',
-  '𝙓' => 'X',
-  '𝙔' => 'Y',
-  '𝙕' => 'Z',
-  '𝙖' => 'a',
-  '𝙗' => 'b',
-  '𝙘' => 'c',
-  '𝙙' => 'd',
-  '𝙚' => 'e',
-  '𝙛' => 'f',
-  '𝙜' => 'g',
-  '𝙝' => 'h',
-  '𝙞' => 'i',
-  '𝙟' => 'j',
-  '𝙠' => 'k',
-  '𝙡' => 'l',
-  '𝙢' => 'm',
-  '𝙣' => 'n',
-  '𝙤' => 'o',
-  '𝙥' => 'p',
-  '𝙦' => 'q',
-  '𝙧' => 'r',
-  '𝙨' => 's',
-  '𝙩' => 't',
-  '𝙪' => 'u',
-  '𝙫' => 'v',
-  '𝙬' => 'w',
-  '𝙭' => 'x',
-  '𝙮' => 'y',
-  '𝙯' => 'z',
-  '𝙰' => 'A',
-  '𝙱' => 'B',
-  '𝙲' => 'C',
-  '𝙳' => 'D',
-  '𝙴' => 'E',
-  '𝙵' => 'F',
-  '𝙶' => 'G',
-  '𝙷' => 'H',
-  '𝙸' => 'I',
-  '𝙹' => 'J',
-  '𝙺' => 'K',
-  '𝙻' => 'L',
-  '𝙼' => 'M',
-  '𝙽' => 'N',
-  '𝙾' => 'O',
-  '𝙿' => 'P',
-  '𝚀' => 'Q',
-  '𝚁' => 'R',
-  '𝚂' => 'S',
-  '𝚃' => 'T',
-  '𝚄' => 'U',
-  '𝚅' => 'V',
-  '𝚆' => 'W',
-  '𝚇' => 'X',
-  '𝚈' => 'Y',
-  '𝚉' => 'Z',
-  '𝚊' => 'a',
-  '𝚋' => 'b',
-  '𝚌' => 'c',
-  '𝚍' => 'd',
-  '𝚎' => 'e',
-  '𝚏' => 'f',
-  '𝚐' => 'g',
-  '𝚑' => 'h',
-  '𝚒' => 'i',
-  '𝚓' => 'j',
-  '𝚔' => 'k',
-  '𝚕' => 'l',
-  '𝚖' => 'm',
-  '𝚗' => 'n',
-  '𝚘' => 'o',
-  '𝚙' => 'p',
-  '𝚚' => 'q',
-  '𝚛' => 'r',
-  '𝚜' => 's',
-  '𝚝' => 't',
-  '𝚞' => 'u',
-  '𝚟' => 'v',
-  '𝚠' => 'w',
-  '𝚡' => 'x',
-  '𝚢' => 'y',
-  '𝚣' => 'z',
-  '𝚤' => 'ı',
-  '𝚥' => 'ȷ',
-  '𝚨' => 'Α',
-  '𝚩' => 'Β',
-  '𝚪' => 'Γ',
-  '𝚫' => 'Δ',
-  '𝚬' => 'Ε',
-  '𝚭' => 'Ζ',
-  '𝚮' => 'Η',
-  '𝚯' => 'Θ',
-  '𝚰' => 'Ι',
-  '𝚱' => 'Κ',
-  '𝚲' => 'Λ',
-  '𝚳' => 'Μ',
-  '𝚴' => 'Ν',
-  '𝚵' => 'Ξ',
-  '𝚶' => 'Ο',
-  '𝚷' => 'Π',
-  '𝚸' => 'Ρ',
-  '𝚹' => 'Θ',
-  '𝚺' => 'Σ',
-  '𝚻' => 'Τ',
-  '𝚼' => 'Υ',
-  '𝚽' => 'Φ',
-  '𝚾' => 'Χ',
-  '𝚿' => 'Ψ',
-  '𝛀' => 'Ω',
-  '𝛁' => '∇',
-  '𝛂' => 'α',
-  '𝛃' => 'β',
-  '𝛄' => 'γ',
-  '𝛅' => 'δ',
-  '𝛆' => 'ε',
-  '𝛇' => 'ζ',
-  '𝛈' => 'η',
-  '𝛉' => 'θ',
-  '𝛊' => 'ι',
-  '𝛋' => 'κ',
-  '𝛌' => 'λ',
-  '𝛍' => 'μ',
-  '𝛎' => 'ν',
-  '𝛏' => 'ξ',
-  '𝛐' => 'ο',
-  '𝛑' => 'π',
-  '𝛒' => 'ρ',
-  '𝛓' => 'ς',
-  '𝛔' => 'σ',
-  '𝛕' => 'τ',
-  '𝛖' => 'υ',
-  '𝛗' => 'φ',
-  '𝛘' => 'χ',
-  '𝛙' => 'ψ',
-  '𝛚' => 'ω',
-  '𝛛' => '∂',
-  '𝛜' => 'ε',
-  '𝛝' => 'θ',
-  '𝛞' => 'κ',
-  '𝛟' => 'φ',
-  '𝛠' => 'ρ',
-  '𝛡' => 'π',
-  '𝛢' => 'Α',
-  '𝛣' => 'Β',
-  '𝛤' => 'Γ',
-  '𝛥' => 'Δ',
-  '𝛦' => 'Ε',
-  '𝛧' => 'Ζ',
-  '𝛨' => 'Η',
-  '𝛩' => 'Θ',
-  '𝛪' => 'Ι',
-  '𝛫' => 'Κ',
-  '𝛬' => 'Λ',
-  '𝛭' => 'Μ',
-  '𝛮' => 'Ν',
-  '𝛯' => 'Ξ',
-  '𝛰' => 'Ο',
-  '𝛱' => 'Π',
-  '𝛲' => 'Ρ',
-  '𝛳' => 'Θ',
-  '𝛴' => 'Σ',
-  '𝛵' => 'Τ',
-  '𝛶' => 'Υ',
-  '𝛷' => 'Φ',
-  '𝛸' => 'Χ',
-  '𝛹' => 'Ψ',
-  '𝛺' => 'Ω',
-  '𝛻' => '∇',
-  '𝛼' => 'α',
-  '𝛽' => 'β',
-  '𝛾' => 'γ',
-  '𝛿' => 'δ',
-  '𝜀' => 'ε',
-  '𝜁' => 'ζ',
-  '𝜂' => 'η',
-  '𝜃' => 'θ',
-  '𝜄' => 'ι',
-  '𝜅' => 'κ',
-  '𝜆' => 'λ',
-  '𝜇' => 'μ',
-  '𝜈' => 'ν',
-  '𝜉' => 'ξ',
-  '𝜊' => 'ο',
-  '𝜋' => 'π',
-  '𝜌' => 'ρ',
-  '𝜍' => 'ς',
-  '𝜎' => 'σ',
-  '𝜏' => 'τ',
-  '𝜐' => 'υ',
-  '𝜑' => 'φ',
-  '𝜒' => 'χ',
-  '𝜓' => 'ψ',
-  '𝜔' => 'ω',
-  '𝜕' => '∂',
-  '𝜖' => 'ε',
-  '𝜗' => 'θ',
-  '𝜘' => 'κ',
-  '𝜙' => 'φ',
-  '𝜚' => 'ρ',
-  '𝜛' => 'π',
-  '𝜜' => 'Α',
-  '𝜝' => 'Β',
-  '𝜞' => 'Γ',
-  '𝜟' => 'Δ',
-  '𝜠' => 'Ε',
-  '𝜡' => 'Ζ',
-  '𝜢' => 'Η',
-  '𝜣' => 'Θ',
-  '𝜤' => 'Ι',
-  '𝜥' => 'Κ',
-  '𝜦' => 'Λ',
-  '𝜧' => 'Μ',
-  '𝜨' => 'Ν',
-  '𝜩' => 'Ξ',
-  '𝜪' => 'Ο',
-  '𝜫' => 'Π',
-  '𝜬' => 'Ρ',
-  '𝜭' => 'Θ',
-  '𝜮' => 'Σ',
-  '𝜯' => 'Τ',
-  '𝜰' => 'Υ',
-  '𝜱' => 'Φ',
-  '𝜲' => 'Χ',
-  '𝜳' => 'Ψ',
-  '𝜴' => 'Ω',
-  '𝜵' => '∇',
-  '𝜶' => 'α',
-  '𝜷' => 'β',
-  '𝜸' => 'γ',
-  '𝜹' => 'δ',
-  '𝜺' => 'ε',
-  '𝜻' => 'ζ',
-  '𝜼' => 'η',
-  '𝜽' => 'θ',
-  '𝜾' => 'ι',
-  '𝜿' => 'κ',
-  '𝝀' => 'λ',
-  '𝝁' => 'μ',
-  '𝝂' => 'ν',
-  '𝝃' => 'ξ',
-  '𝝄' => 'ο',
-  '𝝅' => 'π',
-  '𝝆' => 'ρ',
-  '𝝇' => 'ς',
-  '𝝈' => 'σ',
-  '𝝉' => 'τ',
-  '𝝊' => 'υ',
-  '𝝋' => 'φ',
-  '𝝌' => 'χ',
-  '𝝍' => 'ψ',
-  '𝝎' => 'ω',
-  '𝝏' => '∂',
-  '𝝐' => 'ε',
-  '𝝑' => 'θ',
-  '𝝒' => 'κ',
-  '𝝓' => 'φ',
-  '𝝔' => 'ρ',
-  '𝝕' => 'π',
-  '𝝖' => 'Α',
-  '𝝗' => 'Β',
-  '𝝘' => 'Γ',
-  '𝝙' => 'Δ',
-  '𝝚' => 'Ε',
-  '𝝛' => 'Ζ',
-  '𝝜' => 'Η',
-  '𝝝' => 'Θ',
-  '𝝞' => 'Ι',
-  '𝝟' => 'Κ',
-  '𝝠' => 'Λ',
-  '𝝡' => 'Μ',
-  '𝝢' => 'Ν',
-  '𝝣' => 'Ξ',
-  '𝝤' => 'Ο',
-  '𝝥' => 'Π',
-  '𝝦' => 'Ρ',
-  '𝝧' => 'Θ',
-  '𝝨' => 'Σ',
-  '𝝩' => 'Τ',
-  '𝝪' => 'Υ',
-  '𝝫' => 'Φ',
-  '𝝬' => 'Χ',
-  '𝝭' => 'Ψ',
-  '𝝮' => 'Ω',
-  '𝝯' => '∇',
-  '𝝰' => 'α',
-  '𝝱' => 'β',
-  '𝝲' => 'γ',
-  '𝝳' => 'δ',
-  '𝝴' => 'ε',
-  '𝝵' => 'ζ',
-  '𝝶' => 'η',
-  '𝝷' => 'θ',
-  '𝝸' => 'ι',
-  '𝝹' => 'κ',
-  '𝝺' => 'λ',
-  '𝝻' => 'μ',
-  '𝝼' => 'ν',
-  '𝝽' => 'ξ',
-  '𝝾' => 'ο',
-  '𝝿' => 'π',
-  '𝞀' => 'ρ',
-  '𝞁' => 'ς',
-  '𝞂' => 'σ',
-  '𝞃' => 'τ',
-  '𝞄' => 'υ',
-  '𝞅' => 'φ',
-  '𝞆' => 'χ',
-  '𝞇' => 'ψ',
-  '𝞈' => 'ω',
-  '𝞉' => '∂',
-  '𝞊' => 'ε',
-  '𝞋' => 'θ',
-  '𝞌' => 'κ',
-  '𝞍' => 'φ',
-  '𝞎' => 'ρ',
-  '𝞏' => 'π',
-  '𝞐' => 'Α',
-  '𝞑' => 'Β',
-  '𝞒' => 'Γ',
-  '𝞓' => 'Δ',
-  '𝞔' => 'Ε',
-  '𝞕' => 'Ζ',
-  '𝞖' => 'Η',
-  '𝞗' => 'Θ',
-  '𝞘' => 'Ι',
-  '𝞙' => 'Κ',
-  '𝞚' => 'Λ',
-  '𝞛' => 'Μ',
-  '𝞜' => 'Ν',
-  '𝞝' => 'Ξ',
-  '𝞞' => 'Ο',
-  '𝞟' => 'Π',
-  '𝞠' => 'Ρ',
-  '𝞡' => 'Θ',
-  '𝞢' => 'Σ',
-  '𝞣' => 'Τ',
-  '𝞤' => 'Υ',
-  '𝞥' => 'Φ',
-  '𝞦' => 'Χ',
-  '𝞧' => 'Ψ',
-  '𝞨' => 'Ω',
-  '𝞩' => '∇',
-  '𝞪' => 'α',
-  '𝞫' => 'β',
-  '𝞬' => 'γ',
-  '𝞭' => 'δ',
-  '𝞮' => 'ε',
-  '𝞯' => 'ζ',
-  '𝞰' => 'η',
-  '𝞱' => 'θ',
-  '𝞲' => 'ι',
-  '𝞳' => 'κ',
-  '𝞴' => 'λ',
-  '𝞵' => 'μ',
-  '𝞶' => 'ν',
-  '𝞷' => 'ξ',
-  '𝞸' => 'ο',
-  '𝞹' => 'π',
-  '𝞺' => 'ρ',
-  '𝞻' => 'ς',
-  '𝞼' => 'σ',
-  '𝞽' => 'τ',
-  '𝞾' => 'υ',
-  '𝞿' => 'φ',
-  '𝟀' => 'χ',
-  '𝟁' => 'ψ',
-  '𝟂' => 'ω',
-  '𝟃' => '∂',
-  '𝟄' => 'ε',
-  '𝟅' => 'θ',
-  '𝟆' => 'κ',
-  '𝟇' => 'φ',
-  '𝟈' => 'ρ',
-  '𝟉' => 'π',
-  '𝟊' => 'Ϝ',
-  '𝟋' => 'ϝ',
-  '𝟎' => '0',
-  '𝟏' => '1',
-  '𝟐' => '2',
-  '𝟑' => '3',
-  '𝟒' => '4',
-  '𝟓' => '5',
-  '𝟔' => '6',
-  '𝟕' => '7',
-  '𝟖' => '8',
-  '𝟗' => '9',
-  '𝟘' => '0',
-  '𝟙' => '1',
-  '𝟚' => '2',
-  '𝟛' => '3',
-  '𝟜' => '4',
-  '𝟝' => '5',
-  '𝟞' => '6',
-  '𝟟' => '7',
-  '𝟠' => '8',
-  '𝟡' => '9',
-  '𝟢' => '0',
-  '𝟣' => '1',
-  '𝟤' => '2',
-  '𝟥' => '3',
-  '𝟦' => '4',
-  '𝟧' => '5',
-  '𝟨' => '6',
-  '𝟩' => '7',
-  '𝟪' => '8',
-  '𝟫' => '9',
-  '𝟬' => '0',
-  '𝟭' => '1',
-  '𝟮' => '2',
-  '𝟯' => '3',
-  '𝟰' => '4',
-  '𝟱' => '5',
-  '𝟲' => '6',
-  '𝟳' => '7',
-  '𝟴' => '8',
-  '𝟵' => '9',
-  '𝟶' => '0',
-  '𝟷' => '1',
-  '𝟸' => '2',
-  '𝟹' => '3',
-  '𝟺' => '4',
-  '𝟻' => '5',
-  '𝟼' => '6',
-  '𝟽' => '7',
-  '𝟾' => '8',
-  '𝟿' => '9',
-  '𞸀' => 'ا',
-  '𞸁' => 'ب',
-  '𞸂' => 'ج',
-  '𞸃' => 'د',
-  '𞸅' => 'و',
-  '𞸆' => 'ز',
-  '𞸇' => 'ح',
-  '𞸈' => 'ط',
-  '𞸉' => 'ي',
-  '𞸊' => 'ك',
-  '𞸋' => 'ل',
-  '𞸌' => 'م',
-  '𞸍' => 'ن',
-  '𞸎' => 'س',
-  '𞸏' => 'ع',
-  '𞸐' => 'ف',
-  '𞸑' => 'ص',
-  '𞸒' => 'ق',
-  '𞸓' => 'ر',
-  '𞸔' => 'ش',
-  '𞸕' => 'ت',
-  '𞸖' => 'ث',
-  '𞸗' => 'خ',
-  '𞸘' => 'ذ',
-  '𞸙' => 'ض',
-  '𞸚' => 'ظ',
-  '𞸛' => 'غ',
-  '𞸜' => 'ٮ',
-  '𞸝' => 'ں',
-  '𞸞' => 'ڡ',
-  '𞸟' => 'ٯ',
-  '𞸡' => 'ب',
-  '𞸢' => 'ج',
-  '𞸤' => 'ه',
-  '𞸧' => 'ح',
-  '𞸩' => 'ي',
-  '𞸪' => 'ك',
-  '𞸫' => 'ل',
-  '𞸬' => 'م',
-  '𞸭' => 'ن',
-  '𞸮' => 'س',
-  '𞸯' => 'ع',
-  '𞸰' => 'ف',
-  '𞸱' => 'ص',
-  '𞸲' => 'ق',
-  '𞸴' => 'ش',
-  '𞸵' => 'ت',
-  '𞸶' => 'ث',
-  '𞸷' => 'خ',
-  '𞸹' => 'ض',
-  '𞸻' => 'غ',
-  '𞹂' => 'ج',
-  '𞹇' => 'ح',
-  '𞹉' => 'ي',
-  '𞹋' => 'ل',
-  '𞹍' => 'ن',
-  '𞹎' => 'س',
-  '𞹏' => 'ع',
-  '𞹑' => 'ص',
-  'ðž¹’' => 'Ù‚',
-  'ðž¹”' => 'Ø´',
-  'ðž¹—' => 'Ø®',
-  '𞹙' => 'ض',
-  '𞹛' => 'غ',
-  '𞹝' => 'ں',
-  '𞹟' => 'ٯ',
-  '𞹡' => 'ب',
-  '𞹢' => 'ج',
-  '𞹤' => 'ه',
-  '𞹧' => 'ح',
-  '𞹨' => 'ط',
-  '𞹩' => 'ي',
-  '𞹪' => 'ك',
-  '𞹬' => 'م',
-  'ðž¹­' => 'Ù†',
-  '𞹮' => 'س',
-  '𞹯' => 'ع',
-  '𞹰' => 'ف',
-  '𞹱' => 'ص',
-  'ðž¹²' => 'Ù‚',
-  'ðž¹´' => 'Ø´',
-  '𞹵' => 'ت',
-  '𞹶' => 'ث',
-  'ðž¹·' => 'Ø®',
-  '𞹹' => 'ض',
-  '𞹺' => 'ظ',
-  '𞹻' => 'غ',
-  'ðž¹¼' => 'Ù®',
-  'ðž¹¾' => 'Ú¡',
-  '𞺀' => 'ا',
-  '𞺁' => 'ب',
-  '𞺂' => 'ج',
-  '𞺃' => 'د',
-  '𞺄' => 'ه',
-  '𞺅' => 'و',
-  '𞺆' => 'ز',
-  '𞺇' => 'ح',
-  '𞺈' => 'ط',
-  '𞺉' => 'ي',
-  '𞺋' => 'ل',
-  '𞺌' => 'م',
-  '𞺍' => 'ن',
-  '𞺎' => 'س',
-  '𞺏' => 'ع',
-  '𞺐' => 'ف',
-  '𞺑' => 'ص',
-  '𞺒' => 'ق',
-  '𞺓' => 'ر',
-  '𞺔' => 'ش',
-  '𞺕' => 'ت',
-  '𞺖' => 'ث',
-  '𞺗' => 'خ',
-  '𞺘' => 'ذ',
-  '𞺙' => 'ض',
-  '𞺚' => 'ظ',
-  '𞺛' => 'غ',
-  '𞺡' => 'ب',
-  '𞺢' => 'ج',
-  '𞺣' => 'د',
-  '𞺥' => 'و',
-  '𞺦' => 'ز',
-  '𞺧' => 'ح',
-  '𞺨' => 'ط',
-  '𞺩' => 'ي',
-  '𞺫' => 'ل',
-  '𞺬' => 'م',
-  '𞺭' => 'ن',
-  '𞺮' => 'س',
-  '𞺯' => 'ع',
-  '𞺰' => 'ف',
-  '𞺱' => 'ص',
-  '𞺲' => 'ق',
-  '𞺳' => 'ر',
-  '𞺴' => 'ش',
-  '𞺵' => 'ت',
-  '𞺶' => 'ث',
-  '𞺷' => 'خ',
-  '𞺸' => 'ذ',
-  '𞺹' => 'ض',
-  '𞺺' => 'ظ',
-  '𞺻' => 'غ',
-  '🄀' => '0.',
-  '🄁' => '0,',
-  '🄂' => '1,',
-  '🄃' => '2,',
-  '🄄' => '3,',
-  '🄅' => '4,',
-  '🄆' => '5,',
-  '🄇' => '6,',
-  '🄈' => '7,',
-  '🄉' => '8,',
-  '🄊' => '9,',
-  '🄐' => '(A)',
-  '🄑' => '(B)',
-  '🄒' => '(C)',
-  '🄓' => '(D)',
-  '🄔' => '(E)',
-  '🄕' => '(F)',
-  '🄖' => '(G)',
-  '🄗' => '(H)',
-  '🄘' => '(I)',
-  '🄙' => '(J)',
-  '🄚' => '(K)',
-  '🄛' => '(L)',
-  '🄜' => '(M)',
-  '🄝' => '(N)',
-  '🄞' => '(O)',
-  '🄟' => '(P)',
-  '🄠' => '(Q)',
-  '🄡' => '(R)',
-  '🄢' => '(S)',
-  '🄣' => '(T)',
-  '🄤' => '(U)',
-  '🄥' => '(V)',
-  '🄦' => '(W)',
-  '🄧' => '(X)',
-  '🄨' => '(Y)',
-  '🄩' => '(Z)',
-  '🄪' => '〔S〕',
-  '🄫' => 'C',
-  '🄬' => 'R',
-  '🄭' => 'CD',
-  '🄮' => 'WZ',
-  '🄰' => 'A',
-  '🄱' => 'B',
-  '🄲' => 'C',
-  '🄳' => 'D',
-  '🄴' => 'E',
-  '🄵' => 'F',
-  '🄶' => 'G',
-  '🄷' => 'H',
-  '🄸' => 'I',
-  '🄹' => 'J',
-  '🄺' => 'K',
-  '🄻' => 'L',
-  '🄼' => 'M',
-  '🄽' => 'N',
-  '🄾' => 'O',
-  '🄿' => 'P',
-  '🅀' => 'Q',
-  '🅁' => 'R',
-  '🅂' => 'S',
-  '🅃' => 'T',
-  '🅄' => 'U',
-  '🅅' => 'V',
-  '🅆' => 'W',
-  '🅇' => 'X',
-  '🅈' => 'Y',
-  '🅉' => 'Z',
-  '🅊' => 'HV',
-  '🅋' => 'MV',
-  '🅌' => 'SD',
-  '🅍' => 'SS',
-  '🅎' => 'PPV',
-  '🅏' => 'WC',
-  '🅪' => 'MC',
-  '🅫' => 'MD',
-  '🅬' => 'MR',
-  '🆐' => 'DJ',
-  '🈀' => 'ほか',
-  '🈁' => 'ココ',
-  '🈂' => 'サ',
-  '🈐' => '手',
-  '🈑' => '字',
-  '🈒' => '双',
-  '🈓' => 'デ',
-  '🈔' => '二',
-  '🈕' => '多',
-  '🈖' => '解',
-  '🈗' => '天',
-  '🈘' => '交',
-  '🈙' => '映',
-  '🈚' => '無',
-  '🈛' => '料',
-  '🈜' => '前',
-  '🈝' => '後',
-  '🈞' => '再',
-  '🈟' => '新',
-  '🈠' => '初',
-  '🈡' => '終',
-  '🈢' => '生',
-  '🈣' => '販',
-  '🈤' => '声',
-  '🈥' => '吹',
-  '🈦' => '演',
-  '🈧' => '投',
-  '🈨' => '捕',
-  '🈩' => '一',
-  '🈪' => '三',
-  '🈫' => '遊',
-  '🈬' => '左',
-  '🈭' => '中',
-  '🈮' => '右',
-  '🈯' => '指',
-  '🈰' => '走',
-  '🈱' => '打',
-  '🈲' => '禁',
-  '🈳' => '空',
-  '🈴' => '合',
-  '🈵' => '満',
-  '🈶' => '有',
-  '🈷' => '月',
-  '🈸' => '申',
-  '🈹' => '割',
-  '🈺' => '営',
-  '🈻' => '配',
-  '🉀' => '〔本〕',
-  '🉁' => '〔三〕',
-  '🉂' => '〔二〕',
-  '🉃' => '〔安〕',
-  '🉄' => '〔点〕',
-  '🉅' => '〔打〕',
-  '🉆' => '〔盗〕',
-  '🉇' => '〔勝〕',
-  '🉈' => '〔敗〕',
-  '🉐' => '得',
-  '🉑' => '可',
-  '🯰' => '0',
-  '🯱' => '1',
-  '🯲' => '2',
-  '🯳' => '3',
-  '🯴' => '4',
-  '🯵' => '5',
-  '🯶' => '6',
-  '🯷' => '7',
-  '🯸' => '8',
-  '🯹' => '9',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
deleted file mode 100644
index 3608e5c05d..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (\PHP_VERSION_ID >= 80000) {
-    return require __DIR__.'/bootstrap80.php';
-}
-
-if (!function_exists('normalizer_is_normalized')) {
-    function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); }
-}
-if (!function_exists('normalizer_normalize')) {
-    function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
deleted file mode 100644
index e36d1a9477..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (!function_exists('normalizer_is_normalized')) {
-    function normalizer_is_normalized(?string $string, ?int $form = p\Normalizer::FORM_C): bool { return p\Normalizer::isNormalized((string) $string, (int) $form); }
-}
-if (!function_exists('normalizer_normalize')) {
-    function normalizer_normalize(?string $string, ?int $form = p\Normalizer::FORM_C): string|false { return p\Normalizer::normalize((string) $string, (int) $form); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json b/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json
deleted file mode 100644
index 65f72d645d..0000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-normalizer",
-    "type": "library",
-    "description": "Symfony polyfill for intl's Normalizer class and related functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" },
-        "files": [ "bootstrap.php" ],
-        "classmap": [ "Resources/stubs" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.27-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/civicrm/xml/schema/Contribute/Premium.xml b/civicrm/xml/schema/Contribute/Premium.xml
index 9a783c324e..c9f4dc0837 100644
--- a/civicrm/xml/schema/Contribute/Premium.xml
+++ b/civicrm/xml/schema/Contribute/Premium.xml
@@ -29,6 +29,9 @@
     <length>64</length>
     <required>true</required>
     <comment>Joins these premium settings to another object. Always civicrm_contribution_page for now.</comment>
+    <pseudoconstant>
+      <callback>CRM_Contribute_BAO_Premium::entityTables</callback>
+    </pseudoconstant>
     <add>1.4</add>
   </field>
   <field>
diff --git a/civicrm/xml/schema/Contribute/Product.xml b/civicrm/xml/schema/Contribute/Product.xml
index 16ff28127d..237453035b 100644
--- a/civicrm/xml/schema/Contribute/Product.xml
+++ b/civicrm/xml/schema/Contribute/Product.xml
@@ -9,6 +9,12 @@
   <log>true</log>
   <component>CiviContribute</component>
   <labelField>name</labelField>
+  <paths>
+    <add>civicrm/admin/contribute/managePremiums/edit?action=add&amp;reset=1</add>
+    <update>civicrm/admin/contribute/managePremiums/edit?action=update&amp;id=[id]&amp;reset=1</update>
+    <delete>civicrm/admin/contribute/managePremiums/edit?action=delete&amp;id=[id]&amp;reset=1</delete>
+    <browse>civicrm/admin/contribute/managePremiums/</browse>
+  </paths>
   <field>
     <name>id</name>
     <title>Product ID</title>
diff --git a/civicrm/xml/schema/Core/MessageTemplate.xml b/civicrm/xml/schema/Core/MessageTemplate.xml
index ea6a8842ea..384f46a8a9 100644
--- a/civicrm/xml/schema/Core/MessageTemplate.xml
+++ b/civicrm/xml/schema/Core/MessageTemplate.xml
@@ -6,6 +6,9 @@
   <name>civicrm_msg_template</name>
   <comment>Users will need a way to save and retrieve templates with tokens for use in recurring email communication tasks</comment>
   <add>1.6</add>
+  <title>Message Template</title>
+  <titlePlural>Message Templates</titlePlural>
+  <icon>fa-newspaper-o</icon>
   <labelField>msg_title</labelField>
   <paths>
     <add>civicrm/admin/messageTemplates/add?action=add&amp;reset=1</add>
diff --git a/civicrm/xml/schema/Core/PreferencesDate.xml b/civicrm/xml/schema/Core/PreferencesDate.xml
index 6b6439e563..6c1f452098 100644
--- a/civicrm/xml/schema/Core/PreferencesDate.xml
+++ b/civicrm/xml/schema/Core/PreferencesDate.xml
@@ -9,7 +9,9 @@
   <log>true</log>
   <title>Date Preference</title>
   <paths>
-    <update>civicrm/admin/setting/preferences/date?reset=1&amp;action=update&amp;id=[id]</update>
+    <add>civicrm/admin/setting/preferences/date/edit?reset=1&amp;action=add</add>
+    <browse>civicrm/admin/setting/preferences/date?reset=1</browse>
+    <update>civicrm/admin/setting/preferences/date/edit?reset=1&amp;action=update&amp;id=[id]</update>
   </paths>
   <field>
     <name>id</name>
diff --git a/civicrm/xml/schema/Core/UFMatch.xml b/civicrm/xml/schema/Core/UFMatch.xml
index 6133aab373..ef10a14b75 100644
--- a/civicrm/xml/schema/Core/UFMatch.xml
+++ b/civicrm/xml/schema/Core/UFMatch.xml
@@ -58,6 +58,12 @@
     <fieldName>uf_id</fieldName>
     <add>3.3</add>
   </index>
+  <index>
+    <name>UI_uf_match_uf_id_domain_id</name>
+    <fieldName>uf_id</fieldName>
+    <fieldName>domain_id</fieldName>
+    <add>5.69</add>
+  </index>
   <field>
     <name>uf_name</name>
     <title>CMS Unique Identifier</title>
diff --git a/civicrm/xml/schema/Event/Event.xml b/civicrm/xml/schema/Event/Event.xml
index 194c97ecc8..f2dfe5141c 100644
--- a/civicrm/xml/schema/Event/Event.xml
+++ b/civicrm/xml/schema/Event/Event.xml
@@ -929,4 +929,16 @@
       <type>CheckBox</type>
     </html>
   </field>
+  <field>
+    <name>is_show_calendar_links</name>
+    <title>Are calendar links shown?</title>
+    <type>boolean</type>
+    <required>true</required>
+    <default>1</default>
+    <comment>If true then calendar links are shown for this event.</comment>
+    <add>5.68</add>
+    <html>
+      <type>CheckBox</type>
+    </html>
+  </field>
 </table>
diff --git a/civicrm/xml/schema/Mailing/Mailing.xml b/civicrm/xml/schema/Mailing/Mailing.xml
index 740e64ae15..acd747466a 100644
--- a/civicrm/xml/schema/Mailing/Mailing.xml
+++ b/civicrm/xml/schema/Mailing/Mailing.xml
@@ -16,6 +16,7 @@
     <copy>civicrm/mailing/send?mid=[id]</copy>
     <view>civicrm/mailing/report?mid=[id]&amp;reset=1</view>
     <preview>civicrm/mailing/view?id=[id]&amp;reset=1</preview>
+    <delete>civicrm/mailing/browse?action=delete&amp;mid=[id]&amp;reset=1</delete>
   </paths>
   <field>
     <name>id</name>
@@ -152,6 +153,7 @@
     <length>128</length>
     <comment>Mailing Name.</comment>
     <html>
+      <label>Name</label>
       <type>Text</type>
     </html>
   </field>
@@ -176,6 +178,7 @@
     <length>128</length>
     <comment>From Header of mailing</comment>
     <html>
+      <label>From Name</label>
       <type>Text</type>
     </html>
   </field>
@@ -186,6 +189,7 @@
     <length>128</length>
     <comment>From Email of mailing</comment>
     <html>
+      <label>From Email</label>
       <type>Text</type>
     </html>
   </field>
@@ -349,6 +353,7 @@
     <comment>Date and time this mailing was created.</comment>
     <add>3.0</add>
     <html>
+      <label>Created Date</label>
       <type>Select Date</type>
       <formatType>activityDateTime</formatType>
     </html>
@@ -363,6 +368,7 @@
    <default>CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</default>
     <html>
       <label>Modified Date</label>
+      <type>Select Date</type>
     </html>
     <readonly>true</readonly>
    <add>4.7</add>
@@ -391,6 +397,7 @@
     <comment>Date and time this mailing was scheduled.</comment>
     <add>3.3</add>
     <html>
+      <label>Scheduled Date</label>
       <type>Select Date</type>
       <formatType>activityDateTime</formatType>
     </html>
@@ -470,6 +477,7 @@
     </pseudoconstant>
     <add>3.3</add>
     <html>
+      <label>Visibility</label>
       <type>Select</type>
     </html>
   </field>
diff --git a/civicrm/xml/schema/Mailing/MailingComponent.xml b/civicrm/xml/schema/Mailing/MailingComponent.xml
index 7ef2d0e0c8..a35b61d07c 100644
--- a/civicrm/xml/schema/Mailing/MailingComponent.xml
+++ b/civicrm/xml/schema/Mailing/MailingComponent.xml
@@ -7,8 +7,9 @@
   <comment>Stores information about the mailing components (header/footer).</comment>
   <component>CiviMail</component>
   <paths>
-    <add>civicrm/admin/component?action=add&amp;reset=1</add>
-    <update>civicrm/admin/component?action=update&amp;id=[id]&amp;reset=1</update>
+    <add>civicrm/admin/component/edit?action=add&amp;reset=1</add>
+    <update>civicrm/admin/component/edit?action=update&amp;id=[id]&amp;reset=1</update>
+    <browse>civicrm/admin/component?action=browse&amp;id=[id]&amp;reset=1</browse>
   </paths>
   <field>
     <name>id</name>
diff --git a/civicrm/xml/schema/Mailing/MailingJob.xml b/civicrm/xml/schema/Mailing/MailingJob.xml
index 8579589698..b28ae05cd5 100644
--- a/civicrm/xml/schema/Mailing/MailingJob.xml
+++ b/civicrm/xml/schema/Mailing/MailingJob.xml
@@ -31,6 +31,7 @@
     <comment>The ID of the mailing this Job will send.</comment>
     <html>
       <label>Mailing</label>
+      <type>EntityRef</type>
     </html>
   </field>
   <foreignKey>
@@ -88,6 +89,7 @@
       <callback>CRM_Core_SelectValues::getMailingJobStatus</callback>
     </pseudoconstant>
     <html>
+      <label>Status</label>
       <type>Select</type>
     </html>
   </field>
@@ -98,6 +100,10 @@
     <default>0</default>
     <required>true</required>
     <comment>Is this job for a test mail?</comment>
+    <html>
+      <label>Test Mailing</label>
+      <type>CheckBox</type>
+    </html>
     <add>1.9</add>
   </field>
   <field>
@@ -116,6 +122,7 @@
     <default>NULL</default>
     <html>
       <label>Parent</label>
+      <type>EntityRef</type>
     </html>
     <add>3.3</add>
   </field>
@@ -138,6 +145,10 @@
     <title>Mailing Job Limit</title>
     <type>int</type>
     <comment>Queue size limit for each child job</comment>
+    <html>
+      <label>Batch Limit</label>
+      <type>Number</type>
+    </html>
     <default>0</default>
     <add>3.3</add>
   </field>
diff --git a/civicrm/xml/templates/civicrm_sample.tpl b/civicrm/xml/templates/civicrm_sample.tpl
index 412e770b51..f228abca77 100644
--- a/civicrm/xml/templates/civicrm_sample.tpl
+++ b/civicrm/xml/templates/civicrm_sample.tpl
@@ -21,7 +21,7 @@ SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_suppor
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
-( @priceSetId, 'other_amount', 'Other Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
+( @priceSetId, 'other_amount', 'Additional Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
 
 INSERT INTO `civicrm_price_set_entity` (`entity_table`,`entity_id`,`price_set_id`)
          VALUES ('civicrm_contribution_page', 1, @priceSetId);
@@ -75,8 +75,7 @@ VALUES
 
 INSERT INTO civicrm_pledge_block ( entity_table, entity_id, pledge_frequency_unit, is_pledge_interval, max_reminders, initial_reminder_day, additional_reminder_day)
 VALUES
-    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5),
-    ('civicrm_contribution_page', 1, 'weekmonthyear', 0, 2, 5, 5);
+    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5);
 
 INSERT INTO civicrm_premiums
     VALUES (1, 'civicrm_contribution_page', 1, 1, 'Thank-you Gifts', 'We appreciate your support and invite you to choose from the exciting collection of thank-you gifts below. Minimum contribution amounts for each selection are included in the descriptions. (NOTE: These gifts are shown as examples only. No gifts will be sent to donors.)', 'premiums@example.org', NULL, 1, 'No thank-you', 1);
diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl
index 0246455a8c..dd78965fb3 100644
--- a/civicrm/xml/templates/civicrm_state_province.tpl
+++ b/civicrm/xml/templates/civicrm_state_province.tpl
@@ -11,4171 +11,4082 @@
 --
 /*!40101 SET NAMES utf8mb4 */;
 
-INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
-(1000, 1228, "AL", "Alabama"),
-(1001, 1228, "AK", "Alaska"),
-(1002, 1228, "AZ", "Arizona"),
-(1003, 1228, "AR", "Arkansas"),
-(1004, 1228, "CA", "California"),
-(1005, 1228, "CO", "Colorado"),
-(1006, 1228, "CT", "Connecticut"),
-(1007, 1228, "DE", "Delaware"),
-(1008, 1228, "FL", "Florida"),
-(1009, 1228, "GA", "Georgia"),
-(1010, 1228, "HI", "Hawaii"),
-(1011, 1228, "ID", "Idaho"),
-(1012, 1228, "IL", "Illinois"),
-(1013, 1228, "IN", "Indiana"),
-(1014, 1228, "IA", "Iowa"),
-(1015, 1228, "KS", "Kansas"),
-(1016, 1228, "KY", "Kentucky"),
-(1017, 1228, "LA", "Louisiana"),
-(1018, 1228, "ME", "Maine"),
-(1019, 1228, "MD", "Maryland"),
-(1020, 1228, "MA", "Massachusetts"),
-(1021, 1228, "MI", "Michigan"),
-(1022, 1228, "MN", "Minnesota"),
-(1023, 1228, "MS", "Mississippi"),
-(1024, 1228, "MO", "Missouri"),
-(1025, 1228, "MT", "Montana"),
-(1026, 1228, "NE", "Nebraska"),
-(1027, 1228, "NV", "Nevada"),
-(1028, 1228, "NH", "New Hampshire"),
-(1029, 1228, "NJ", "New Jersey"),
-(1030, 1228, "NM", "New Mexico"),
-(1031, 1228, "NY", "New York"),
-(1032, 1228, "NC", "North Carolina"),
-(1033, 1228, "ND", "North Dakota"),
-(1034, 1228, "OH", "Ohio"),
-(1035, 1228, "OK", "Oklahoma"),
-(1036, 1228, "OR", "Oregon"),
-(1037, 1228, "PA", "Pennsylvania"),
-(1038, 1228, "RI", "Rhode Island"),
-(1039, 1228, "SC", "South Carolina"),
-(1040, 1228, "SD", "South Dakota"),
-(1041, 1228, "TN", "Tennessee"),
-(1042, 1228, "TX", "Texas"),
-(1043, 1228, "UT", "Utah"),
-(1044, 1228, "VT", "Vermont"),
-(1045, 1228, "VA", "Virginia"),
-(1046, 1228, "WA", "Washington"),
-(1047, 1228, "WV", "West Virginia"),
-(1048, 1228, "WI", "Wisconsin"),
-(1049, 1228, "WY", "Wyoming"),
-(1050, 1228, "DC", "District of Columbia"),
-(1052, 1228, "AS", "American Samoa"),
-(1053, 1228, "GU", "Guam"),
-(1055, 1228, "MP", "Northern Mariana Islands"),
-(1056, 1228, "PR", "Puerto Rico"),
-(1057, 1228, "VI", "Virgin Islands"),
-(1058, 1228, "UM", "United States Minor Outlying Islands"),
-(1059, 1228, "AE", "Armed Forces Europe"),
-(1060, 1228, "AA", "Armed Forces Americas"),
-(1061, 1228, "AP", "Armed Forces Pacific"),
-(1100, 1039, "AB", "Alberta"),
-(1101, 1039, "BC", "British Columbia"),
-(1102, 1039, "MB", "Manitoba"),
-(1103, 1039, "NB", "New Brunswick"),
-(1104, 1039, "NL", "Newfoundland and Labrador"),
-(1105, 1039, "NT", "Northwest Territories"),
-(1106, 1039, "NS", "Nova Scotia"),
-(1107, 1039, "NU", "Nunavut"),
-(1108, 1039, "ON", "Ontario"),
-(1109, 1039, "PE", "Prince Edward Island"),
-(1110, 1039, "QC", "Quebec"),
-(1111, 1039, "SK", "Saskatchewan"),
-(1112, 1039, "YT", "Yukon Territory"),
-(1200, 1101, "MH", "Maharashtra"),
-(1201, 1101, "KA", "Karnataka"),
-(1202, 1101, "AP", "Andhra Pradesh"),
-(1203, 1101, "AR", "Arunachal Pradesh"),
-(1204, 1101, "AS", "Assam"),
-(1205, 1101, "BR", "Bihar"),
-(1206, 1101, "CG", "Chhattisgarh"),
-(1207, 1101, "GA", "Goa"),
-(1208, 1101, "GJ", "Gujarat"),
-(1209, 1101, "HR", "Haryana"),
-(1210, 1101, "HP", "Himachal Pradesh"),
-(1211, 1101, "JK", "Jammu and Kashmir"),
-(1212, 1101, "JH", "Jharkhand"),
-(1213, 1101, "KL", "Kerala"),
-(1214, 1101, "MP", "Madhya Pradesh"),
-(1215, 1101, "MN", "Manipur"),
-(1216, 1101, "ML", "Meghalaya"),
-(1217, 1101, "MZ", "Mizoram"),
-(1218, 1101, "NL", "Nagaland"),
-(1219, 1101, "OR", "Orissa"),
-(1220, 1101, "PB", "Punjab"),
-(1221, 1101, "RJ", "Rajasthan"),
-(1222, 1101, "SK", "Sikkim"),
-(1223, 1101, "TN", "Tamil Nadu"),
-(1224, 1101, "TR", "Tripura"),
-(1225, 1101, "UT", "Uttarakhand"),
-(1226, 1101, "UP", "Uttar Pradesh"),
-(1227, 1101, "WB", "West Bengal"),
-(1228, 1101, "AN", "Andaman and Nicobar Islands"),
-(1231, 1101, "DL", "Delhi"),
-(1232, 1101, "LD", "Lakshadweep"),
-(1233, 1101, "PY", "Pondicherry"),
+-- For historical reasons we start the sequence at 1000 as an attempt to help
+-- with tests and with legacy third-party code that may have hardcoded IDs.
+-- This may change in the future.
+ALTER TABLE civicrm_state_province AUTO_INCREMENT=1000;
+
+-- Note to developers: records are somewhat sorted by country ID
+-- Insert changes directly in the list (keeping the sort), not at the end
+-- All changes must also have a corresponding upgrade statement in
+-- CRM/Upgrade/Incremental/sql/5.xx.alpha1.mysql.tpl
+
+INSERT INTO civicrm_state_province (country_id, abbreviation, name) VALUES
+(1228, "AL", "Alabama"),
+(1228, "AK", "Alaska"),
+(1228, "AZ", "Arizona"),
+(1228, "AR", "Arkansas"),
+(1228, "CA", "California"),
+(1228, "CO", "Colorado"),
+(1228, "CT", "Connecticut"),
+(1228, "DE", "Delaware"),
+(1228, "FL", "Florida"),
+(1228, "GA", "Georgia"),
+(1228, "HI", "Hawaii"),
+(1228, "ID", "Idaho"),
+(1228, "IL", "Illinois"),
+(1228, "IN", "Indiana"),
+(1228, "IA", "Iowa"),
+(1228, "KS", "Kansas"),
+(1228, "KY", "Kentucky"),
+(1228, "LA", "Louisiana"),
+(1228, "ME", "Maine"),
+(1228, "MD", "Maryland"),
+(1228, "MA", "Massachusetts"),
+(1228, "MI", "Michigan"),
+(1228, "MN", "Minnesota"),
+(1228, "MS", "Mississippi"),
+(1228, "MO", "Missouri"),
+(1228, "MT", "Montana"),
+(1228, "NE", "Nebraska"),
+(1228, "NV", "Nevada"),
+(1228, "NH", "New Hampshire"),
+(1228, "NJ", "New Jersey"),
+(1228, "NM", "New Mexico"),
+(1228, "NY", "New York"),
+(1228, "NC", "North Carolina"),
+(1228, "ND", "North Dakota"),
+(1228, "OH", "Ohio"),
+(1228, "OK", "Oklahoma"),
+(1228, "OR", "Oregon"),
+(1228, "PA", "Pennsylvania"),
+(1228, "RI", "Rhode Island"),
+(1228, "SC", "South Carolina"),
+(1228, "SD", "South Dakota"),
+(1228, "TN", "Tennessee"),
+(1228, "TX", "Texas"),
+(1228, "UT", "Utah"),
+(1228, "VT", "Vermont"),
+(1228, "VA", "Virginia"),
+(1228, "WA", "Washington"),
+(1228, "WV", "West Virginia"),
+(1228, "WI", "Wisconsin"),
+(1228, "WY", "Wyoming"),
+(1228, "DC", "District of Columbia"),
+(1228, "AS", "American Samoa"),
+(1228, "GU", "Guam"),
+(1228, "MP", "Northern Mariana Islands"),
+(1228, "PR", "Puerto Rico"),
+(1228, "VI", "Virgin Islands"),
+(1228, "UM", "United States Minor Outlying Islands"),
+(1228, "AE", "Armed Forces Europe"),
+(1228, "AA", "Armed Forces Americas"),
+(1228, "AP", "Armed Forces Pacific"),
+(1039, "AB", "Alberta"),
+(1039, "BC", "British Columbia"),
+(1039, "MB", "Manitoba"),
+(1039, "NB", "New Brunswick"),
+(1039, "NL", "Newfoundland and Labrador"),
+(1039, "NT", "Northwest Territories"),
+(1039, "NS", "Nova Scotia"),
+(1039, "NU", "Nunavut"),
+(1039, "ON", "Ontario"),
+(1039, "PE", "Prince Edward Island"),
+(1039, "QC", "Quebec"),
+(1039, "SK", "Saskatchewan"),
+(1039, "YT", "Yukon Territory"),
+(1101, "MH", "Maharashtra"),
+(1101, "KA", "Karnataka"),
+(1101, "AP", "Andhra Pradesh"),
+(1101, "AR", "Arunachal Pradesh"),
+(1101, "AS", "Assam"),
+(1101, "BR", "Bihar"),
+(1101, "CG", "Chhattisgarh"),
+(1101, "GA", "Goa"),
+(1101, "GJ", "Gujarat"),
+(1101, "HR", "Haryana"),
+(1101, "HP", "Himachal Pradesh"),
+(1101, "JK", "Jammu and Kashmir"),
+(1101, "JH", "Jharkhand"),
+(1101, "KL", "Kerala"),
+(1101, "MP", "Madhya Pradesh"),
+(1101, "MN", "Manipur"),
+(1101, "ML", "Meghalaya"),
+(1101, "MZ", "Mizoram"),
+(1101, "NL", "Nagaland"),
+(1101, "OR", "Orissa"),
+(1101, "PB", "Punjab"),
+(1101, "RJ", "Rajasthan"),
+(1101, "SK", "Sikkim"),
+(1101, "TN", "Tamil Nadu"),
+(1101, "TR", "Tripura"),
+(1101, "UT", "Uttarakhand"),
+(1101, "UP", "Uttar Pradesh"),
+(1101, "WB", "West Bengal"),
+(1101, "AN", "Andaman and Nicobar Islands"),
+(1101, "DL", "Delhi"),
+(1101, "LD", "Lakshadweep"),
+(1101, "PY", "Pondicherry"),
+(1101, "TG", "Telangana"),
+(1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
+(1101, "LA", "Ladākh"),
+(1101, "CH", "Chandigarh"),
 -- Note we believe all lower-case is correct for Poland. See https://github.com/civicrm/civicrm-core/pull/17107
-(1300, 1172, "MZ", "mazowieckie"),
-(1301, 1172, "PM", "pomorskie"),
-(1302, 1172, "DS", "dolnośląskie"),
-(1303, 1172, "KP", "kujawsko-pomorskie"),
-(1304, 1172, "LU", "lubelskie"),
-(1305, 1172, "LB", "lubuskie"),
-(1306, 1172, "LD", "łódzkie"),
-(1307, 1172, "MA", "małopolskie"),
-(1308, 1172, "OP", "opolskie"),
-(1309, 1172, "PK", "podkarpackie"),
-(1310, 1172, "PD", "podlaskie"),
-(1311, 1172, "SL", "śląskie"),
-(1312, 1172, "SK", "świętokrzyskie"),
-(1313, 1172, "WN", "warmińsko-mazurskie"),
-(1314, 1172, "WP", "wielkopolskie"),
-(1315, 1172, "ZP", "zachodniopomorskie"),
-(1500, 1225, "AZ", "Abu Zaby"),
-(1501, 1225, "AJ", "\'Ajman"),
-(1502, 1225, "FU", "Al Fujayrah"),
-(1503, 1225, "SH", "Ash Shariqah"),
-(1504, 1225, "DU", "Dubayy"),
-(1505, 1225, "RK", "Ra\'s al Khaymah"),
-(1506, 1233, "33", "Dac Lac"),
-(1507, 1225, "UQ", "Umm al Qaywayn"),
-(1508, 1001, "BDS", "Badakhshan"),
-(1509, 1001, "BDG", "Badghis"),
-(1510, 1001, "BGL", "Baghlan"),
-(1511, 1001, "BAL", "Balkh"),
-(1512, 1001, "BAM", "Bamian"),
-(1513, 1001, "FRA", "Farah"),
-(1514, 1001, "FYB", "Faryab"),
-(1515, 1001, "GHA", "Ghazni"),
-(1516, 1001, "GHO", "Ghowr"),
-(1517, 1001, "HEL", "Helmand"),
-(1518, 1001, "HER", "Herat"),
-(1519, 1001, "JOW", "Jowzjan"),
-(1520, 1001, "KAB", "Kabul"),
-(1521, 1001, "KAN", "Kandahar"),
-(1522, 1001, "KAP", "Kapisa"),
-(1523, 1001, "KHO", "Khowst"),
-(1524, 1001, "KNR", "Konar"),
-(1525, 1001, "KDZ", "Kondoz"),
-(1526, 1001, "LAG", "Laghman"),
-(1527, 1001, "LOW", "Lowgar"),
-(1528, 1001, "NAN", "Nangrahar"),
-(1529, 1001, "NIM", "Nimruz"),
-(1530, 1001, "NUR", "Nurestan"),
-(1531, 1001, "ORU", "Oruzgan"),
-(1532, 1001, "PIA", "Paktia"),
-(1533, 1001, "PKA", "Paktika"),
-(1534, 1001, "PAR", "Parwan"),
-(1535, 1001, "SAM", "Samangan"),
-(1536, 1001, "SAR", "Sar-e Pol"),
-(1537, 1001, "TAK", "Takhar"),
-(1538, 1001, "WAR", "Wardak"),
-(1539, 1001, "ZAB", "Zabol"),
-(1540, 1002, "BR", "Berat"),
-(1541, 1002, "BU", "Bulqizë"),
-(1542, 1002, "DL", "Delvinë"),
-(1543, 1002, "DV", "Devoll"),
-(1544, 1002, "DI", "Dibër"),
-(1545, 1002, "DR", "Durrës"),
-(1546, 1002, "EL", "Elbasan"),
-(1547, 1002, "FR", "Fier"),
-(1548, 1002, "GR", "Gramsh"),
-(1549, 1002, "GJ", "Gjirokastër"),
-(1550, 1002, "HA", "Has"),
-(1551, 1002, "KA", "Kavajë"),
-(1552, 1002, "ER", "Kolonjë"),
-(1553, 1002, "KO", "Korçë"),
-(1554, 1002, "KR", "Krujë"),
-(1555, 1002, "KC", "Kuçovë"),
-(1556, 1002, "KU", "Kukës"),
-(1557, 1002, "KB", "Kurbin"),
-(1558, 1002, "LE", "Lezhë"),
-(1559, 1002, "LB", "Librazhd"),
-(1560, 1002, "LU", "Lushnjë"),
-(1561, 1002, "MM", "Malësi e Madhe"),
-(1562, 1002, "MK", "Mallakastër"),
-(1563, 1002, "MT", "Mat"),
-(1564, 1002, "MR", "Mirditë"),
-(1565, 1002, "PQ", "Peqin"),
-(1566, 1002, "PR", "Përmet"),
-(1567, 1002, "PG", "Pogradec"),
-(1568, 1002, "PU", "Pukë"),
-(1569, 1002, "SR", "Sarandë"),
-(1570, 1002, "SK", "Skrapar"),
-(1571, 1002, "SH", "Shkodër"),
-(1572, 1002, "TE", "Tepelenë"),
-(1573, 1002, "TR", "Tiranë"),
-(1574, 1002, "TP", "Tropojë"),
-(1575, 1002, "VL", "Vlorë"),
-(1576, 1011, "ER", "Erevan"),
-(1577, 1011, "AG", "Aragacotn"),
-(1578, 1011, "AR", "Ararat"),
-(1579, 1011, "AV", "Armavir"),
-(1580, 1011, "GR", "Gegarkunik\'"),
-(1581, 1011, "KT", "Kotayk\'"),
-(1582, 1011, "LO", "Lory"),
-(1583, 1011, "SH", "Sirak"),
-(1584, 1011, "SU", "Syunik\'"),
-(1585, 1011, "TV", "Tavus"),
-(1586, 1011, "VD", "Vayoc Jor"),
-(1587, 1006, "BGO", "Bengo"),
-(1588, 1006, "BGU", "Benguela"),
-(1589, 1006, "BIE", "Bie"),
-(1590, 1006, "CAB", "Cabinda"),
-(1591, 1006, "CCU", "Cuando-Cubango"),
-(1592, 1006, "CNO", "Cuanza Norte"),
-(1593, 1006, "CUS", "Cuanza Sul"),
-(1594, 1006, "CNN", "Cunene"),
-(1595, 1006, "HUA", "Huambo"),
-(1596, 1006, "HUI", "Huila"),
-(1597, 1006, "LUA", "Luanda"),
-(1598, 1006, "LNO", "Lunda Norte"),
-(1599, 1006, "LSU", "Lunda Sul"),
-(1600, 1006, "MAL", "Malange"),
-(1601, 1006, "MOX", "Moxico"),
-(1602, 1006, "NAM", "Namibe"),
-(1603, 1006, "UIG", "Uige"),
-(1604, 1006, "ZAI", "Zaire"),
-(1605, 1010, "C", "Capital federal"),
-(1606, 1010, "B", "Buenos Aires"),
-(1607, 1010, "K", "Catamarca"),
-(1608, 1010, "X", "Cordoba"),
-(1609, 1010, "W", "Corrientes"),
-(1610, 1010, "H", "Chaco"),
-(1611, 1010, "U", "Chubut"),
-(1612, 1010, "E", "Entre Rios"),
-(1613, 1010, "P", "Formosa"),
-(1614, 1010, "Y", "Jujuy"),
-(1615, 1010, "L", "La Pampa"),
-(1616, 1010, "M", "Mendoza"),
-(1617, 1010, "N", "Misiones"),
-(1618, 1010, "Q", "Neuquen"),
-(1619, 1010, "R", "Rio Negro"),
-(1620, 1010, "A", "Salta"),
-(1621, 1010, "J", "San Juan"),
-(1622, 1010, "D", "San Luis"),
-(1623, 1010, "Z", "Santa Cruz"),
-(1624, 1010, "S", "Santa Fe"),
-(1625, 1010, "G", "Santiago del Estero"),
-(1626, 1010, "V", "Tierra del Fuego"),
-(1627, 1010, "T", "Tucuman"),
-(1628, 1014, "1", "Burgenland"),
-(1629, 1014, "2", "Kärnten"),
-(1630, 1014, "3", "Niederösterreich"),
-(1631, 1014, "4", "Oberösterreich"),
-(1632, 1014, "5", "Salzburg"),
-(1633, 1014, "6", "Steiermark"),
-(1634, 1014, "7", "Tirol"),
-(1635, 1014, "8", "Vorarlberg"),
-(1636, 1014, "9", "Wien"),
-(1637, 1008, "AAT", "Australian Antarctic Territory"),
-(1638, 1013, "ACT", "Australian Capital Territory"),
-(1639, 1013, "NT", "Northern Territory"),
-(1640, 1013, "NSW", "New South Wales"),
-(1641, 1013, "QLD", "Queensland"),
-(1642, 1013, "SA", "South Australia"),
-(1643, 1013, "TAS", "Tasmania"),
-(1644, 1013, "VIC", "Victoria"),
-(1645, 1013, "WA", "Western Australia"),
-(1646, 1015, "NX", "Naxcivan"),
-(1647, 1015, "AB", "Ali Bayramli"),
-(1648, 1015, "BA", "Baki"),
-(1649, 1015, "GA", "Ganca"),
-(1650, 1015, "LA", "Lankaran"),
-(1651, 1015, "MI", "Mingacevir"),
-(1652, 1015, "NA", "Naftalan"),
-(1653, 1015, "SA", "Saki"),
-(1654, 1015, "SM", "Sumqayit"),
-(1655, 1015, "SS", "Susa"),
-(1656, 1015, "XA", "Xankandi"),
-(1657, 1015, "YE", "Yevlax"),
-(1658, 1015, "ABS", "Abseron"),
-(1659, 1015, "AGC", "Agcabadi"),
-(1660, 1015, "AGM", "Agdam"),
-(1661, 1015, "AGS", "Agdas"),
-(1662, 1015, "AGA", "Agstafa"),
-(1663, 1015, "AGU", "Agsu"),
-(1664, 1015, "AST", "Astara"),
-(1665, 1015, "BAB", "Babak"),
-(1666, 1015, "BAL", "Balakan"),
-(1667, 1015, "BAR", "Barda"),
-(1668, 1015, "BEY", "Beylagan"),
-(1669, 1015, "BIL", "Bilasuvar"),
-(1670, 1015, "CAB", "Cabrayll"),
-(1671, 1015, "CAL", "Calilabad"),
-(1672, 1015, "CUL", "Culfa"),
-(1673, 1015, "DAS", "Daskasan"),
-(1674, 1015, "DAV", "Davaci"),
-(1675, 1015, "FUZ", "Fuzuli"),
-(1676, 1015, "GAD", "Gadabay"),
-(1677, 1015, "GOR", "Goranboy"),
-(1678, 1015, "GOY", "Goycay"),
-(1679, 1015, "HAC", "Haciqabul"),
-(1680, 1015, "IMI", "Imisli"),
-(1681, 1015, "ISM", "Ismayilli"),
-(1682, 1015, "KAL", "Kalbacar"),
-(1683, 1015, "KUR", "Kurdamir"),
-(1684, 1015, "LAC", "Lacin"),
-(1685, 1015, "LER", "Lerik"),
-(1686, 1015, "MAS", "Masalli"),
-(1687, 1015, "NEF", "Neftcala"),
-(1688, 1015, "OGU", "Oguz"),
-(1689, 1015, "ORD", "Ordubad"),
-(1690, 1015, "QAB", "Qabala"),
-(1691, 1015, "QAX", "Qax"),
-(1692, 1015, "QAZ", "Qazax"),
-(1693, 1015, "QOB", "Qobustan"),
-(1694, 1015, "QBA", "Quba"),
-(1695, 1015, "QBI", "Qubadli"),
-(1696, 1015, "QUS", "Qusar"),
-(1697, 1015, "SAT", "Saatli"),
-(1698, 1015, "SAB", "Sabirabad"),
-(1699, 1015, "SAD", "Sadarak"),
-(1700, 1015, "SAH", "Sahbuz"),
-(1701, 1015, "SAL", "Salyan"),
-(1702, 1015, "SMI", "Samaxi"),
-(1703, 1015, "SKR", "Samkir"),
-(1704, 1015, "SMX", "Samux"),
-(1705, 1015, "SAR", "Sarur"),
-(1706, 1015, "SIY", "Siyazan"),
-(1707, 1015, "TAR", "Tartar"),
-(1708, 1015, "TOV", "Tovuz"),
-(1709, 1015, "UCA", "Ucar"),
-(1710, 1015, "XAC", "Xacmaz"),
-(1711, 1015, "XAN", "Xanlar"),
-(1712, 1015, "XIZ", "Xizi"),
-(1713, 1015, "XCI", "Xocali"),
-(1714, 1015, "XVD", "Xocavand"),
-(1715, 1015, "YAR", "Yardimli"),
-(1716, 1015, "ZAN", "Zangilan"),
-(1717, 1015, "ZAQ", "Zaqatala"),
-(1718, 1015, "ZAR", "Zardab"),
-(1719, 1026, "BIH", "Federacija Bosna i Hercegovina"),
-(1720, 1026, "SRP", "Republika Srpska"),
-(1721, 1017, "05", "Bagerhat zila"),
-(1722, 1017, "01", "Bandarban zila"),
-(1723, 1017, "02", "Barguna zila"),
-(1724, 1017, "06", "Barisal zila"),
-(1725, 1017, "07", "Bhola zila"),
-(1726, 1017, "03", "Bogra zila"),
-(1727, 1017, "04", "Brahmanbaria zila"),
-(1728, 1017, "09", "Chandpur zila"),
-(1729, 1017, "10", "Chittagong zila"),
-(1730, 1017, "12", "Chuadanga zila"),
-(1731, 1017, "08", "Comilla zila"),
-(1732, 1017, "11", "Cox\'s Bazar zila"),
-(1733, 1017, "13", "Dhaka zila"),
-(1734, 1017, "14", "Dinajpur zila"),
-(1735, 1017, "15", "Faridpur zila"),
-(1736, 1017, "16", "Feni zila"),
-(1737, 1017, "19", "Gaibandha zila"),
-(1738, 1017, "18", "Gazipur zila"),
-(1739, 1017, "17", "Gopalganj zila"),
-(1740, 1017, "20", "Habiganj zila"),
-(1741, 1017, "24", "Jaipurhat zila"),
-(1742, 1017, "21", "Jamalpur zila"),
-(1743, 1017, "22", "Jessore zila"),
-(1744, 1017, "25", "Jhalakati zila"),
-(1745, 1017, "23", "Jhenaidah zila"),
-(1746, 1017, "29", "Khagrachari zila"),
-(1747, 1017, "27", "Khulna zila"),
-(1748, 1017, "26", "Kishorganj zila"),
-(1749, 1017, "28", "Kurigram zila"),
-(1750, 1017, "30", "Kushtia zila"),
-(1751, 1017, "31", "Lakshmipur zila"),
-(1752, 1017, "32", "Lalmonirhat zila"),
-(1753, 1017, "36", "Madaripur zila"),
-(1754, 1017, "37", "Magura zila"),
-(1755, 1017, "33", "Manikganj zila"),
-(1756, 1017, "39", "Meherpur zila"),
-(1757, 1017, "38", "Moulvibazar zila"),
-(1758, 1017, "35", "Munshiganj zila"),
-(1759, 1017, "34", "Mymensingh zila"),
-(1760, 1017, "48", "Naogaon zila"),
-(1761, 1017, "43", "Narail zila"),
-(1762, 1017, "40", "Narayanganj zila"),
-(1763, 1017, "42", "Narsingdi zila"),
-(1764, 1017, "44", "Natore zila"),
-(1765, 1017, "45", "Nawabganj zila"),
-(1766, 1017, "41", "Netrakona zila"),
-(1767, 1017, "46", "Nilphamari zila"),
-(1768, 1017, "47", "Noakhali zila"),
-(1769, 1017, "49", "Pabna zila"),
-(1770, 1017, "52", "Panchagarh zila"),
-(1771, 1017, "51", "Patuakhali zila"),
-(1772, 1017, "50", "Pirojpur zila"),
-(1773, 1017, "53", "Rajbari zila"),
-(1774, 1017, "54", "Rajshahi zila"),
-(1775, 1017, "56", "Rangamati zila"),
-(1776, 1017, "55", "Rangpur zila"),
-(1777, 1017, "58", "Satkhira zila"),
-(1778, 1017, "62", "Shariatpur zila"),
-(1779, 1017, "57", "Sherpur zila"),
-(1780, 1017, "59", "Sirajganj zila"),
-(1781, 1017, "61", "Sunamganj zila"),
-(1782, 1017, "60", "Sylhet zila"),
-(1783, 1017, "63", "Tangail zila"),
-(1784, 1017, "64", "Thakurgaon zila"),
-(1785, 1020, "VAN", "Antwerpen"),
-(1786, 1020, "WBR", "Brabant Wallon"),
-(1787, 1020, "WHT", "Hainaut"),
-(1788, 1020, "WLG", "Liege"),
-(1789, 1020, "VLI", "Limburg"),
-(1790, 1020, "WLX", "Luxembourg"),
-(1791, 1020, "WNA", "Namur"),
-(1792, 1020, "VOV", "Oost-Vlaanderen"),
-(1793, 1020, "VBR", "Vlaams-Brabant"),
-(1794, 1020, "VWV", "West-Vlaanderen"),
-(1795, 1034, "BAL", "Bale"),
-(1796, 1034, "BAM", "Bam"),
-(1797, 1034, "BAN", "Banwa"),
-(1798, 1034, "BAZ", "Bazega"),
-(1799, 1034, "BGR", "Bougouriba"),
-(1800, 1034, "BLG", "Boulgou"),
-(1801, 1034, "BLK", "Boulkiemde"),
-(1802, 1034, "COM", "Comoe"),
-(1803, 1034, "GAN", "Ganzourgou"),
-(1804, 1034, "GNA", "Gnagna"),
-(1805, 1034, "GOU", "Gourma"),
-(1806, 1034, "HOU", "Houet"),
-(1807, 1034, "IOB", "Ioba"),
-(1808, 1034, "KAD", "Kadiogo"),
-(1809, 1034, "KEN", "Kenedougou"),
-(1810, 1034, "KMD", "Komondjari"),
-(1811, 1034, "KMP", "Kompienga"),
-(1812, 1034, "KOS", "Kossi"),
-(1813, 1034, "KOP", "Koulpulogo"),
-(1814, 1034, "KOT", "Kouritenga"),
-(1815, 1034, "KOW", "Kourweogo"),
-(1816, 1034, "LER", "Leraba"),
-(1817, 1034, "LOR", "Loroum"),
-(1818, 1034, "MOU", "Mouhoun"),
-(1819, 1034, "NAO", "Nahouri"),
-(1820, 1034, "NAM", "Namentenga"),
-(1821, 1034, "NAY", "Nayala"),
-(1822, 1034, "NOU", "Noumbiel"),
-(1823, 1034, "OUB", "Oubritenga"),
-(1824, 1034, "OUD", "Oudalan"),
-(1825, 1034, "PAS", "Passore"),
-(1826, 1034, "PON", "Poni"),
-(1827, 1034, "SNG", "Sanguie"),
-(1828, 1034, "SMT", "Sanmatenga"),
-(1829, 1034, "SEN", "Seno"),
-(1830, 1034, "SIS", "Siasili"),
-(1831, 1034, "SOM", "Soum"),
-(1832, 1034, "SOR", "Sourou"),
-(1833, 1034, "TAP", "Tapoa"),
-(1834, 1034, "TUI", "Tui"),
-(1835, 1034, "YAG", "Yagha"),
-(1836, 1034, "YAT", "Yatenga"),
-(1837, 1034, "ZIR", "Ziro"),
-(1838, 1034, "ZON", "Zondoma"),
-(1839, 1034, "ZOU", "Zoundweogo"),
-(1840, 1033, "01", "Blagoevgrad"),
-(1841, 1033, "02", "Burgas"),
-(1842, 1033, "08", "Dobrich"),
-(1843, 1033, "07", "Gabrovo"),
-(1844, 1033, "26", "Haskovo"),
-(1845, 1033, "28", "Yambol"),
-(1846, 1033, "09", "Kardzhali"),
-(1847, 1033, "10", "Kyustendil"),
-(1848, 1033, "11", "Lovech"),
-(1849, 1033, "12", "Montana"),
-(1850, 1033, "13", "Pazardzhik"),
-(1851, 1033, "14", "Pernik"),
-(1852, 1033, "15", "Pleven"),
-(1853, 1033, "16", "Plovdiv"),
-(1854, 1033, "17", "Razgrad"),
-(1855, 1033, "18", "Ruse"),
-(1856, 1033, "19", "Silistra"),
-(1857, 1033, "20", "Sliven"),
-(1858, 1033, "21", "Smolyan"),
-(1859, 1033, "23", "Sofia"),
-(1860, 1033, "24", "Stara Zagora"),
-(1861, 1033, "27", "Shumen"),
-(1862, 1033, "25", "Targovishte"),
-(1863, 1033, "03", "Varna"),
-(1864, 1033, "04", "Veliko Tarnovo"),
-(1865, 1033, "05", "Vidin"),
-(1866, 1033, "06", "Vratsa"),
-(1867, 1016, "01", "Al Hadd"),
-(1868, 1016, "03", "Al Manamah"),
-(1869, 1016, "10", "Al Mintaqah al Gharbiyah"),
-(1870, 1016, "07", "Al Mintagah al Wusta"),
-(1871, 1016, "05", "Al Mintaqah ash Shamaliyah"),
-(1872, 1016, "02", "Al Muharraq"),
-(1873, 1016, "09", "Ar Rifa"),
-(1874, 1016, "04", "Jidd Hafs"),
-(1875, 1016, "12", "Madluat Jamad"),
-(1876, 1016, "08", "Madluat Isa"),
-(1877, 1016, "11", "Mintaqat Juzur tawar"),
-(1878, 1016, "06", "Sitrah"),
-(1879, 1036, "BB", "Bubanza"),
-(1880, 1036, "BJ", "Bujumbura"),
-(1881, 1036, "BR", "Bururi"),
-(1882, 1036, "CA", "Cankuzo"),
-(1883, 1036, "CI", "Cibitoke"),
-(1884, 1036, "GI", "Gitega"),
-(1885, 1036, "KR", "Karuzi"),
-(1886, 1036, "KY", "Kayanza"),
-(1887, 1036, "MA", "Makamba"),
-(1888, 1036, "MU", "Muramvya"),
-(1889, 1036, "MW", "Mwaro"),
-(1890, 1036, "NG", "Ngozi"),
-(1891, 1036, "RT", "Rutana"),
-(1892, 1036, "RY", "Ruyigi"),
-(1893, 1022, "AL", "Alibori"),
-(1894, 1022, "AK", "Atakora"),
-(1895, 1022, "AQ", "Atlantique"),
-(1896, 1022, "BO", "Borgou"),
-(1897, 1022, "CO", "Collines"),
-(1898, 1022, "DO", "Donga"),
-(1899, 1022, "KO", "Kouffo"),
-(1900, 1022, "LI", "Littoral"),
-(1901, 1022, "MO", "Mono"),
-(1902, 1022, "OU", "Oueme"),
-(1903, 1022, "PL", "Plateau"),
-(1904, 1022, "ZO", "Zou"),
-(1905, 1032, "BE", "Belait"),
-(1906, 1032, "BM", "Brunei-Muara"),
-(1907, 1032, "TE", "Temburong"),
-(1908, 1032, "TU", "Tutong"),
-(1909, 1025, "C", "Cochabamba"),
-(1910, 1025, "H", "Chuquisaca"),
-(1911, 1025, "B", "El Beni"),
-(1912, 1025, "L", "La Paz"),
-(1913, 1025, "O", "Oruro"),
-(1914, 1025, "N", "Pando"),
-(1915, 1025, "P", "Potosi"),
-(1916, 1025, "T", "Tarija"),
-(1917, 1029, "AC", "Acre"),
-(1918, 1029, "AL", "Alagoas"),
-(1919, 1029, "AM", "Amazonas"),
-(1920, 1029, "AP", "Amapa"),
-(1921, 1029, "BA", "Bahia"),
-(1922, 1029, "CE", "Ceara"),
-(1923, 1029, "DF", "Distrito Federal"),
-(1924, 1029, "ES", "Espirito Santo"),
-(1926, 1029, "GO", "Goias"),
-(1927, 1029, "MA", "Maranhao"),
-(1928, 1029, "MG", "Minas Gerais"),
-(1929, 1029, "MS", "Mato Grosso do Sul"),
-(1930, 1029, "MT", "Mato Grosso"),
-(1931, 1029, "PA", "Para"),
-(1932, 1029, "PB", "Paraiba"),
-(1933, 1029, "PE", "Pernambuco"),
-(1934, 1029, "PI", "Piaui"),
-(1935, 1029, "PR", "Parana"),
-(1936, 1029, "RJ", "Rio de Janeiro"),
-(1937, 1029, "RN", "Rio Grande do Norte"),
-(1938, 1029, "RO", "Rondonia"),
-(1939, 1029, "RR", "Roraima"),
-(1940, 1029, "RS", "Rio Grande do Sul"),
-(1941, 1029, "SC", "Santa Catarina"),
-(1942, 1029, "SE", "Sergipe"),
-(1943, 1029, "SP", "Sao Paulo"),
-(1944, 1029, "TO", "Tocantins"),
-(1945, 1212, "AC", "Acklins and Crooked Islands"),
-(1946, 1212, "BI", "Bimini"),
-(1947, 1212, "CI", "Cat Island"),
-(1948, 1212, "EX", "Exuma"),
-(1955, 1212, "IN", "Inagua"),
-(1957, 1212, "LI", "Long Island"),
-(1959, 1212, "MG", "Mayaguana"),
-(1960, 1212, "NP", "New Providence"),
-(1962, 1212, "RI", "Ragged Island"),
-(1966, 1024, "33", "Bumthang"),
-(1967, 1024, "12", "Chhukha"),
-(1968, 1024, "22", "Dagana"),
-(1969, 1024, "GA", "Gasa"),
-(1970, 1024, "13", "Ha"),
-(1971, 1024, "44", "Lhuentse"),
-(1972, 1024, "42", "Monggar"),
-(1973, 1024, "11", "Paro"),
-(1974, 1024, "43", "Pemagatshel"),
-(1975, 1024, "23", "Punakha"),
-(1976, 1024, "45", "Samdrup Jongkha"),
-(1977, 1024, "14", "Samtee"),
-(1978, 1024, "31", "Sarpang"),
-(1979, 1024, "15", "Thimphu"),
-(1980, 1024, "41", "Trashigang"),
-(1981, 1024, "TY", "Trashi Yangtse"),
-(1982, 1024, "32", "Trongsa"),
-(1983, 1024, "21", "Tsirang"),
-(1984, 1024, "24", "Wangdue Phodrang"),
-(1985, 1024, "34", "Zhemgang"),
-(1986, 1027, "CE", "Central"),
-(1987, 1027, "GH", "Ghanzi"),
-(1988, 1027, "KG", "Kgalagadi"),
-(1989, 1027, "KL", "Kgatleng"),
-(1990, 1027, "KW", "Kweneng"),
-(1991, 1027, "NG", "Ngamiland"),
-(1992, 1027, "NE", "North-East"),
-(1993, 1027, "NW", "North-West"),
-(1994, 1027, "SE", "South-East"),
-(1995, 1027, "SO", "Southern"),
-(1996, 1019, "BR", "Brèsckaja voblasc\'"),
-(1997, 1019, "HO", "Homel\'skaja voblasc\'"),
-(1998, 1019, "HR", "Hrodzenskaja voblasc\'"),
-(1999, 1019, "MA", "Mahilëuskaja voblasc\'"),
-(2000, 1019, "MI", "Minskaja voblasc\'"),
-(2001, 1019, "VI", "Vicebskaja voblasc\'"),
-(2002, 1021, "BZ", "Belize"),
-(2003, 1021, "CY", "Cayo"),
-(2004, 1021, "CZL", "Corozal"),
-(2005, 1021, "OW", "Orange Walk"),
-(2006, 1021, "SC", "Stann Creek"),
-(2007, 1021, "TOL", "Toledo"),
-(2008, 1050, "KN", "Kinshasa"),
-(2011, 1050, "EQ", "Equateur"),
-(2014, 1050, "KE", "Kasai-Oriental"),
-(2016, 1050, "MA", "Maniema"),
-(2017, 1050, "NK", "Nord-Kivu"),
-(2019, 1050, "SK", "Sud-Kivu"),
-(2020, 1042, "BGF", "Bangui"),
-(2021, 1042, "BB", "Bamingui-Bangoran"),
-(2022, 1042, "BK", "Basse-Kotto"),
-(2023, 1042, "HK", "Haute-Kotto"),
-(2024, 1042, "HM", "Haut-Mbomou"),
-(2025, 1042, "KG", "Kemo"),
-(2026, 1042, "LB", "Lobaye"),
-(2027, 1042, "HS", "Mambere-Kadei"),
-(2028, 1042, "MB", "Mbomou"),
-(2029, 1042, "KB", "Nana-Grebizi"),
-(2030, 1042, "NM", "Nana-Mambere"),
-(2031, 1042, "MP", "Ombella-Mpoko"),
-(2032, 1042, "UK", "Ouaka"),
-(2033, 1042, "AC", "Ouham"),
-(2034, 1042, "OP", "Ouham-Pende"),
-(2035, 1042, "SE", "Sangha-Mbaere"),
-(2036, 1042, "VR", "Vakaga"),
-(2037, 1051, "BZV", "Brazzaville"),
-(2038, 1051, "11", "Bouenza"),
-(2039, 1051, "8", "Cuvette"),
-(2040, 1051, "15", "Cuvette-Ouest"),
-(2041, 1051, "5", "Kouilou"),
-(2042, 1051, "2", "Lekoumou"),
-(2043, 1051, "7", "Likouala"),
-(2044, 1051, "9", "Niari"),
-(2045, 1051, "14", "Plateaux"),
-(2046, 1051, "12", "Pool"),
-(2047, 1051, "13", "Sangha"),
-(2048, 1205, "AG", "Aargau"),
-(2049, 1205, "AI", "Appenzell Innerrhoden"),
-(2050, 1205, "AR", "Appenzell Ausserrhoden"),
-(2051, 1205, "BE", "Bern"),
-(2052, 1205, "BL", "Basel-Landschaft"),
-(2053, 1205, "BS", "Basel-Stadt"),
-(2054, 1205, "FR", "Fribourg"),
-(2055, 1205, "GE", "Geneva"),
-(2056, 1205, "GL", "Glarus"),
-(2057, 1205, "GR", "Graubunden"),
-(2058, 1205, "JU", "Jura"),
-(2059, 1205, "LU", "Luzern"),
-(2060, 1205, "NE", "Neuchatel"),
-(2061, 1205, "NW", "Nidwalden"),
-(2062, 1205, "OW", "Obwalden"),
-(2063, 1205, "SG", "Sankt Gallen"),
-(2064, 1205, "SH", "Schaffhausen"),
-(2065, 1205, "SO", "Solothurn"),
-(2066, 1205, "SZ", "Schwyz"),
-(2067, 1205, "TG", "Thurgau"),
-(2068, 1205, "TI", "Ticino"),
-(2069, 1205, "UR", "Uri"),
-(2070, 1205, "VD", "Vaud"),
-(2071, 1205, "VS", "Valais"),
-(2072, 1205, "ZG", "Zug"),
-(2073, 1205, "ZH", "Zurich"),
-(2074, 1054, "06", "18 Montagnes"),
-(2075, 1054, "16", "Agnebi"),
-(2076, 1054, "09", "Bas-Sassandra"),
-(2077, 1054, "10", "Denguele"),
-(2078, 1054, "02", "Haut-Sassandra"),
-(2079, 1054, "07", "Lacs"),
-(2080, 1054, "01", "Lagunes"),
-(2081, 1054, "12", "Marahoue"),
-(2082, 1054, "05", "Moyen-Comoe"),
-(2083, 1054, "11", "Nzi-Comoe"),
-(2084, 1054, "03", "Savanes"),
-(2085, 1054, "15", "Sud-Bandama"),
-(2086, 1054, "13", "Sud-Comoe"),
-(2087, 1054, "04", "Vallee du Bandama"),
-(2088, 1054, "14", "Worodouqou"),
-(2089, 1054, "08", "Zanzan"),
-(2090, 1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
-(2091, 1044, "AN", "Antofagasta"),
-(2092, 1044, "AR", "Araucania"),
-(2093, 1044, "AT", "Atacama"),
-(2094, 1044, "BI", "Bio-Bio"),
-(2095, 1044, "CO", "Coquimbo"),
-(2096, 1044, "LI", "Libertador General Bernardo O\'Higgins"),
-(2097, 1044, "LL", "Los Lagos"),
-(2098, 1044, "MA", "Magallanes"),
-(2099, 1044, "ML", "Maule"),
-(2100, 1044, "SM", "Santiago Metropolitan"),
-(2101, 1044, "TA", "Tarapaca"),
-(2102, 1044, "VS", "Valparaiso"),
-(2103, 1038, "AD", "Adamaoua"),
-(2104, 1038, "CE", "Centre"),
-(2105, 1038, "ES", "East"),
-(2106, 1038, "EN", "Far North"),
-(2107, 1038, "NO", "North"),
-(2108, 1038, "SW", "South"),
-(2109, 1038, "SW", "South-West"),
-(2110, 1038, "OU", "West"),
-(2111, 1045, "11", "Beijing"),
-(2112, 1045, "50", "Chongqing"),
-(2113, 1045, "31", "Shanghai"),
-(2114, 1045, "12", "Tianjin"),
-(2115, 1045, "34", "Anhui"),
-(2116, 1045, "35", "Fujian"),
-(2117, 1045, "62", "Gansu"),
-(2118, 1045, "44", "Guangdong"),
-(2119, 1045, "52", "Guizhou"),
-(2120, 1045, "46", "Hainan"),
-(2121, 1045, "13", "Hebei"),
-(2122, 1045, "23", "Heilongjiang"),
-(2123, 1045, "41", "Henan"),
-(2124, 1045, "42", "Hubei"),
-(2125, 1045, "43", "Hunan"),
-(2126, 1045, "32", "Jiangsu"),
-(2127, 1045, "36", "Jiangxi"),
-(2128, 1045, "22", "Jilin"),
-(2129, 1045, "21", "Liaoning"),
-(2130, 1045, "63", "Qinghai"),
-(2131, 1045, "61", "Shaanxi"),
-(2132, 1045, "37", "Shandong"),
-(2133, 1045, "14", "Shanxi"),
-(2134, 1045, "51", "Sichuan"),
-(2135, 1045, "71", "Taiwan"),
-(2136, 1045, "53", "Yunnan"),
-(2137, 1045, "33", "Zhejiang"),
-(2138, 1045, "45", "Guangxi"),
-(2139, 1045, "15", "Neia Mongol (mn)"),
-(2140, 1045, "65", "Xinjiang"),
-(2141, 1045, "54", "Xizang"),
-(2142, 1045, "91", "Hong Kong"),
-(2143, 1045, "92", "Macau"),
-(2144, 1048, "DC", "Distrito Capital de Bogotá"),
-(2145, 1048, "AMA", "Amazonea"),
-(2146, 1048, "ANT", "Antioquia"),
-(2147, 1048, "ARA", "Arauca"),
-(2148, 1048, "ATL", "Atlántico"),
-(2149, 1048, "BOL", "Bolívar"),
-(2150, 1048, "BOY", "Boyacá"),
-(2151, 1048, "CAL", "Caldea"),
-(2152, 1048, "CAQ", "Caquetá"),
-(2153, 1048, "CAS", "Casanare"),
-(2154, 1048, "CAU", "Cauca"),
-(2155, 1048, "CES", "Cesar"),
-(2156, 1048, "COR", "Córdoba"),
-(2157, 1048, "CUN", "Cundinamarca"),
-(2158, 1048, "CHO", "Chocó"),
-(2159, 1048, "GUA", "Guainía"),
-(2160, 1048, "GUV", "Guaviare"),
-(2161, 1048, "LAG", "La Guajira"),
-(2162, 1048, "MAG", "Magdalena"),
-(2163, 1048, "MET", "Meta"),
-(2164, 1048, "NAR", "Nariño"),
-(2165, 1048, "NSA", "Norte de Santander"),
-(2166, 1048, "PUT", "Putumayo"),
-(2167, 1048, "QUI", "Quindio"),
-(2168, 1048, "RIS", "Risaralda"),
-(2169, 1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
-(2170, 1048, "SAN", "Santander"),
-(2171, 1048, "SUC", "Sucre"),
-(2172, 1048, "TOL", "Tolima"),
-(2173, 1048, "VAC", "Valle del Cauca"),
-(2174, 1048, "VAU", "Vaupés"),
-(2175, 1048, "VID", "Vichada"),
-(2176, 1053, "A", "Alajuela"),
-(2177, 1053, "C", "Cartago"),
-(2178, 1053, "G", "Guanacaste"),
-(2179, 1053, "H", "Heredia"),
-(2180, 1053, "L", "Limon"),
-(2181, 1053, "P", "Puntarenas"),
-(2182, 1053, "SJ", "San Jose"),
-(2183, 1056, "09", "Camagey"),
-(2184, 1056, "08", "Ciego de `vila"),
-(2185, 1056, "06", "Cienfuegos"),
-(2186, 1056, "03", "Ciudad de La Habana"),
-(2187, 1056, "12", "Granma"),
-(2188, 1056, "14", "Guantanamo"),
-(2189, 1056, "11", "Holquin"),
-(2190, 1056, "02", "La Habana"),
-(2191, 1056, "10", "Las Tunas"),
-(2192, 1056, "04", "Matanzas"),
-(2193, 1056, "01", "Pinar del Rio"),
-(2194, 1056, "07", "Sancti Spiritus"),
-(2195, 1056, "13", "Santiago de Cuba"),
-(2196, 1056, "05", "Villa Clara"),
-(2197, 1056, "99", "Isla de la Juventud"),
-(2198, 1056, "PR", "Pinar del Roo"),
-(2199, 1056, "CA", "Ciego de Avila"),
-(2200, 1056, "CG", "Camagoey"),
-(2201, 1056, "HO", "Holgun"),
-(2202, 1056, "SS", "Sancti Spritus"),
-(2203, 1056, "IJ", "Municipio Especial Isla de la Juventud"),
-(2204, 1040, "BV", "Boa Vista"),
-(2205, 1040, "BR", "Brava"),
-(2206, 1040, "CS", "Calheta de Sao Miguel"),
-(2207, 1040, "FO", "Fogo"),
-(2208, 1040, "MA", "Maio"),
-(2209, 1040, "MO", "Mosteiros"),
-(2210, 1040, "PA", "Paul"),
-(2211, 1040, "PN", "Porto Novo"),
-(2212, 1040, "PR", "Praia"),
-(2213, 1040, "RG", "Ribeira Grande"),
-(2214, 1040, "SL", "Sal"),
-(2215, 1040, "SD", "Sao Domingos"),
-(2216, 1040, "SF", "Sao Filipe"),
-(2217, 1040, "SN", "Sao Nicolau"),
-(2218, 1040, "SV", "Sao Vicente"),
-(2219, 1040, "TA", "Tarrafal"),
-(2220, 1057, "04", "Ammochostos Magusa"),
-(2221, 1057, "06", "Keryneia"),
-(2222, 1057, "03", "Larnaka"),
-(2223, 1057, "01", "Lefkosia"),
-(2224, 1057, "02", "Lemesos"),
-(2225, 1057, "05", "Pafos"),
-(2226, 1058, "JC", "Jihočeský kraj"),
-(2227, 1058, "JM", "Jihomoravský kraj"),
-(2228, 1058, "KA", "Karlovarský kraj"),
-(2229, 1058, "KR", "Královéhradecký kraj"),
-(2230, 1058, "LI", "Liberecký kraj"),
-(2231, 1058, "MO", "Moravskoslezský kraj"),
-(2232, 1058, "OL", "Olomoucký kraj"),
-(2233, 1058, "PA", "Pardubický kraj"),
-(2234, 1058, "PL", "Plzeňský kraj"),
-(2235, 1058, "PR", "Praha, hlavní město"),
-(2236, 1058, "ST", "Středočeský kraj"),
-(2237, 1058, "US", "Ústecký kraj"),
-(2238, 1058, "VY", "Vysočina"),
-(2239, 1058, "ZL", "Zlínský kraj"),
-(2240, 1082, "BW", "Baden-Württemberg"),
-(2241, 1082, "BY", "Bayern"),
-(2242, 1082, "HB", "Bremen"),
-(2243, 1082, "HH", "Hamburg"),
-(2244, 1082, "HE", "Hessen"),
-(2245, 1082, "NI", "Niedersachsen"),
-(2246, 1082, "NW", "Nordrhein-Westfalen"),
-(2247, 1082, "RP", "Rheinland-Pfalz"),
-(2248, 1082, "SL", "Saarland"),
-(2249, 1082, "SH", "Schleswig-Holstein"),
-(2250, 1082, "BE", "Berlin"),
-(2251, 1082, "BB", "Brandenburg"),
-(2252, 1082, "MV", "Mecklenburg-Vorpommern"),
-(2253, 1082, "SN", "Sachsen"),
-(2254, 1082, "ST", "Sachsen-Anhalt"),
-(2255, 1082, "TH", "Thüringen"),
-(2256, 1060, "AS", "Ali Sabiah"),
-(2257, 1060, "DI", "Dikhil"),
-(2258, 1060, "DJ", "Djibouti"),
-(2259, 1060, "OB", "Obock"),
-(2260, 1060, "TA", "Tadjoura"),
-(2261, 1059, "147", "Frederiksberg"),
-(2262, 1059, "101", "Copenhagen City"),
-(2263, 1059, "015", "Copenhagen"),
-(2264, 1059, "020", "Frederiksborg"),
-(2265, 1059, "025", "Roskilde"),
-(2266, 1059, "030", "Vestsjælland"),
-(2267, 1059, "035", "Storstrøm"),
-(2268, 1059, "040", "Bornholm"),
-(2269, 1059, "042", "Fyn"),
-(2270, 1059, "050", "South Jutland"),
-(2271, 1059, "055", "Ribe"),
-(2272, 1059, "060", "Vejle"),
-(2273, 1059, "065", "Ringkjøbing"),
-(2274, 1059, "070", "Ã…rhus"),
-(2275, 1059, "076", "Viborg"),
-(2276, 1059, "080", "North Jutland"),
-(2277, 1062, "01", "Distrito Nacional (Santo Domingo)"),
-(2278, 1062, "02", "Azua"),
-(2279, 1062, "03", "Bahoruco"),
-(2280, 1062, "04", "Barahona"),
-(2281, 1062, "05", "Dajabón"),
-(2282, 1062, "06", "Duarte"),
-(2283, 1062, "08", "El Seybo [El Seibo]"),
-(2284, 1062, "09", "Espaillat"),
-(2285, 1062, "30", "Hato Mayor"),
-(2286, 1062, "10", "Independencia"),
-(2287, 1062, "11", "La Altagracia"),
-(2288, 1062, "07", "La Estrelleta [Elias Pina]"),
-(2289, 1062, "12", "La Romana"),
-(2290, 1062, "13", "La Vega"),
-(2291, 1062, "14", "Maroia Trinidad Sánchez"),
-(2292, 1062, "28", "Monseñor Nouel"),
-(2293, 1062, "15", "Monte Cristi"),
-(2294, 1062, "29", "Monte Plata"),
-(2295, 1062, "16", "Pedernales"),
-(2296, 1062, "17", "Peravia"),
-(2297, 1062, "18", "Puerto Plata"),
-(2298, 1062, "19", "Salcedo"),
-(2299, 1062, "20", "Samaná"),
-(2300, 1062, "21", "San Cristóbal"),
-(2301, 1062, "23", "San Pedro de Macorís"),
-(2302, 1062, "24", "Sánchez Ramírez"),
-(2303, 1062, "25", "Santiago"),
-(2304, 1062, "26", "Santiago Rodríguez"),
-(2305, 1062, "27", "Valverde"),
-(2306, 1003, "01", "Adrar"),
-(2307, 1003, "44", "Ain Defla"),
-(2308, 1003, "46", "Ain Tmouchent"),
-(2309, 1003, "16", "Alger"),
-(2310, 1003, "23", "Annaba"),
-(2311, 1003, "05", "Batna"),
-(2312, 1003, "08", "Bechar"),
-(2313, 1003, "06", "Bejaia"),
-(2314, 1003, "07", "Biskra"),
-(2315, 1003, "09", "Blida"),
-(2316, 1003, "34", "Bordj Bou Arreridj"),
-(2317, 1003, "10", "Bouira"),
-(2318, 1003, "35", "Boumerdes"),
-(2319, 1003, "02", "Chlef"),
-(2320, 1003, "25", "Constantine"),
-(2321, 1003, "17", "Djelfa"),
-(2322, 1003, "32", "El Bayadh"),
-(2323, 1003, "39", "El Oued"),
-(2324, 1003, "36", "El Tarf"),
-(2325, 1003, "47", "Ghardaia"),
-(2326, 1003, "24", "Guelma"),
-(2327, 1003, "33", "Illizi"),
-(2328, 1003, "18", "Jijel"),
-(2329, 1003, "40", "Khenchela"),
-(2330, 1003, "03", "Laghouat"),
-(2331, 1003, "29", "Mascara"),
-(2332, 1003, "26", "Medea"),
-(2333, 1003, "43", "Mila"),
-(2334, 1003, "27", "Mostaganem"),
-(2335, 1003, "28", "Msila"),
-(2336, 1003, "45", "Naama"),
-(2337, 1003, "31", "Oran"),
-(2338, 1003, "30", "Ouargla"),
-(2339, 1003, "04", "Oum el Bouaghi"),
-(2340, 1003, "48", "Relizane"),
-(2341, 1003, "20", "Saida"),
-(2342, 1003, "19", "Setif"),
-(2343, 1003, "22", "Sidi Bel Abbes"),
-(2344, 1003, "21", "Skikda"),
-(2345, 1003, "41", "Souk Ahras"),
-(2346, 1003, "11", "Tamanghasset"),
-(2347, 1003, "12", "Tebessa"),
-(2348, 1003, "14", "Tiaret"),
-(2349, 1003, "37", "Tindouf"),
-(2350, 1003, "42", "Tipaza"),
-(2351, 1003, "38", "Tissemsilt"),
-(2352, 1003, "15", "Tizi Ouzou"),
-(2353, 1003, "13", "Tlemcen"),
-(2354, 1064, "A", "Azuay"),
-(2355, 1064, "B", "Bolivar"),
-(2356, 1064, "F", "Canar"),
-(2357, 1064, "C", "Carchi"),
-(2358, 1064, "X", "Cotopaxi"),
-(2359, 1064, "H", "Chimborazo"),
-(2360, 1064, "O", "El Oro"),
-(2361, 1064, "E", "Esmeraldas"),
-(2362, 1064, "W", "Galapagos"),
-(2363, 1064, "G", "Guayas"),
-(2364, 1064, "I", "Imbabura"),
-(2365, 1064, "L", "Loja"),
-(2366, 1064, "R", "Los Rios"),
-(2367, 1064, "M", "Manabi"),
-(2368, 1064, "S", "Morona-Santiago"),
-(2369, 1064, "N", "Napo"),
-(2370, 1064, "D", "Orellana"),
-(2371, 1064, "Y", "Pastaza"),
-(2372, 1064, "P", "Pichincha"),
-(2373, 1064, "U", "Sucumbios"),
-(2374, 1064, "T", "Tungurahua"),
-(2375, 1064, "Z", "Zamora-Chinchipe"),
-(2376, 1069, "37", "Harjumaa"),
-(2377, 1069, "39", "Hiiumaa"),
-(2378, 1069, "44", "Ida-Virumaa"),
-(2379, 1069, "49", "Jõgevamaa"),
-(2380, 1069, "51", "Järvamaa"),
-(2381, 1069, "57", "Läänemaa"),
-(2382, 1069, "59", "Lääne-Virumaa"),
-(2383, 1069, "65", "Põlvamaa"),
-(2384, 1069, "67", "Pärnumaa"),
-(2385, 1069, "70", "Raplamaa"),
-(2386, 1069, "74", "Saaremaa"),
-(2387, 1069, "7B", "Tartumaa"),
-(2388, 1069, "82", "Valgamaa"),
-(2389, 1069, "84", "Viljandimaa"),
-(2390, 1069, "86", "Võrumaa"),
-(2391, 1065, "DK", "Ad Daqahllyah"),
-(2392, 1065, "BA", "Al Bahr al Ahmar"),
-(2393, 1065, "BH", "Al Buhayrah"),
-(2394, 1065, "FYM", "Al Fayym"),
-(2395, 1065, "GH", "Al Gharbiyah"),
-(2396, 1065, "ALX", "Al Iskandarlyah"),
-(2397, 1065, "IS", "Al Isma illyah"),
-(2398, 1065, "GZ", "Al Jizah"),
-(2399, 1065, "MNF", "Al Minuflyah"),
-(2400, 1065, "MN", "Al Minya"),
-(2401, 1065, "C", "Al Qahirah"),
-(2402, 1065, "KB", "Al Qalyublyah"),
-(2403, 1065, "WAD", "Al Wadi al Jadid"),
-(2404, 1065, "SHR", "Ash Sharqiyah"),
-(2405, 1065, "SUZ", "As Suways"),
-(2406, 1065, "ASN", "Aswan"),
-(2407, 1065, "AST", "Asyut"),
-(2408, 1065, "BNS", "Bani Suwayf"),
-(2409, 1065, "PTS", "Bur Sa\'id"),
-(2410, 1065, "DT", "Dumyat"),
-(2411, 1065, "JS", "Janub Sina\'"),
-(2412, 1065, "KFS", "Kafr ash Shaykh"),
-(2413, 1065, "MT", "Matruh"),
-(2414, 1065, "KN", "Qina"),
-(2415, 1065, "SIN", "Shamal Sina\'"),
-(2416, 1065, "SHG", "Suhaj"),
-(2417, 1068, "AN", "Anseba"),
-(2418, 1068, "DU", "Debub"),
-(2419, 1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
-(2420, 1068, "GB", "Gash-Barka"),
-(2421, 1068, "MA", "Maakel [Maekel]"),
-(2422, 1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
-(2423, 1198, "VI", "Álava"),
-(2424, 1198, "AB", "Albacete"),
-(2425, 1198, "A", "Alicante"),
-(2426, 1198, "AL", "Almería"),
-(2427, 1198, "O", "Asturias"),
-(2428, 1198, "AV", "Ávila"),
-(2429, 1198, "BA", "Badajoz"),
-(2430, 1198, "PM", "Baleares"),
-(2431, 1198, "B", "Barcelona"),
-(2432, 1198, "BU", "Burgos"),
-(2433, 1198, "CC", "Cáceres"),
-(2434, 1198, "CA", "Cádiz"),
-(2435, 1198, "S", "Cantabria"),
-(2436, 1198, "CS", "Castellón"),
-(2437, 1198, "CR", "Ciudad Real"),
-(2438, 1198, "CU", "Cuenca"),
-(2439, 1198, "GE", "Girona [Gerona]"),
-(2440, 1198, "GR", "Granada"),
-(2441, 1198, "GU", "Guadalajara"),
-(2442, 1198, "SS", "Guipúzcoa"),
-(2443, 1198, "H", "Huelva"),
-(2444, 1198, "HU", "Huesca"),
-(2445, 1198, "J", "Jaén"),
-(2446, 1198, "C", "La Coruña"),
-(2447, 1198, "LO", "La Rioja"),
-(2448, 1198, "GC", "Las Palmas"),
-(2449, 1198, "LE", "León"),
-(2450, 1198, "L", "Lleida [Lérida]"),
-(2451, 1198, "LU", "Lugo"),
-(2452, 1198, "M", "Madrid"),
-(2453, 1198, "MA", "Málaga"),
-(2454, 1198, "MU", "Murcia"),
-(2455, 1198, "NA", "Navarra"),
-(2456, 1198, "OR", "Ourense"),
-(2457, 1198, "P", "Palencia"),
-(2458, 1198, "PO", "Pontevedra"),
-(2459, 1198, "SA", "Salamanca"),
-(2460, 1198, "TF", "Santa Cruz de Tenerife"),
-(2461, 1198, "SG", "Segovia"),
-(2462, 1198, "SE", "Sevilla"),
-(2463, 1198, "SO", "Soria"),
-(2464, 1198, "T", "Tarragona"),
-(2465, 1198, "TE", "Teruel"),
-(2466, 1198, "V", "Valencia"),
-(2467, 1198, "VA", "Valladolid"),
-(2468, 1198, "BI", "Vizcaya"),
-(2469, 1198, "ZA", "Zamora"),
-(2470, 1198, "Z", "Zaragoza"),
-(2471, 1198, "CE", "Ceuta"),
-(2472, 1198, "ML", "Melilla"),
-(2473, 1070, "AA", "Addis Ababa"),
-(2474, 1070, "DD", "Dire Dawa"),
-(2475, 1070, "AF", "Afar"),
-(2476, 1070, "AM", "Amara"),
-(2477, 1070, "BE", "Benshangul-Gumaz"),
-(2478, 1070, "GA", "Gambela Peoples"),
-(2479, 1070, "HA", "Harari People"),
-(2480, 1070, "OR", "Oromia"),
-(2481, 1070, "SO", "Somali"),
-(2482, 1070, "SN", "Southern Nations, Nationalities and Peoples"),
-(2483, 1070, "TI", "Tigrai"),
+(1172, "MZ", "mazowieckie"),
+(1172, "PM", "pomorskie"),
+(1172, "DS", "dolnośląskie"),
+(1172, "KP", "kujawsko-pomorskie"),
+(1172, "LU", "lubelskie"),
+(1172, "LB", "lubuskie"),
+(1172, "LD", "łódzkie"),
+(1172, "MA", "małopolskie"),
+(1172, "OP", "opolskie"),
+(1172, "PK", "podkarpackie"),
+(1172, "PD", "podlaskie"),
+(1172, "SL", "śląskie"),
+(1172, "SK", "świętokrzyskie"),
+(1172, "WN", "warmińsko-mazurskie"),
+(1172, "WP", "wielkopolskie"),
+(1172, "ZP", "zachodniopomorskie"),
+(1225, "AZ", "Abu Zaby"),
+(1225, "AJ", "\'Ajman"),
+(1225, "FU", "Al Fujayrah"),
+(1225, "SH", "Ash Shariqah"),
+(1225, "DU", "Dubayy"),
+(1225, "RK", "Ra\'s al Khaymah"),
+(1233, "33", "Dac Lac"),
+(1225, "UQ", "Umm al Qaywayn"),
+(1001, "BDS", "Badakhshan"),
+(1001, "BDG", "Badghis"),
+(1001, "BGL", "Baghlan"),
+(1001, "BAL", "Balkh"),
+(1001, "BAM", "Bamian"),
+(1001, "FRA", "Farah"),
+(1001, "FYB", "Faryab"),
+(1001, "GHA", "Ghazni"),
+(1001, "GHO", "Ghowr"),
+(1001, "HEL", "Helmand"),
+(1001, "HER", "Herat"),
+(1001, "JOW", "Jowzjan"),
+(1001, "KAB", "Kabul"),
+(1001, "KAN", "Kandahar"),
+(1001, "KAP", "Kapisa"),
+(1001, "KHO", "Khowst"),
+(1001, "KNR", "Konar"),
+(1001, "KDZ", "Kondoz"),
+(1001, "LAG", "Laghman"),
+(1001, "LOW", "Lowgar"),
+(1001, "NAN", "Nangrahar"),
+(1001, "NIM", "Nimruz"),
+(1001, "NUR", "Nurestan"),
+(1001, "ORU", "Oruzgan"),
+(1001, "PIA", "Paktia"),
+(1001, "PKA", "Paktika"),
+(1001, "PAR", "Parwan"),
+(1001, "SAM", "Samangan"),
+(1001, "SAR", "Sar-e Pol"),
+(1001, "TAK", "Takhar"),
+(1001, "WAR", "Wardak"),
+(1001, "ZAB", "Zabol"),
+(1002, "BR", "Berat"),
+(1002, "BU", "Bulqizë"),
+(1002, "DL", "Delvinë"),
+(1002, "DV", "Devoll"),
+(1002, "DI", "Dibër"),
+(1002, "DR", "Durrës"),
+(1002, "EL", "Elbasan"),
+(1002, "FR", "Fier"),
+(1002, "GR", "Gramsh"),
+(1002, "GJ", "Gjirokastër"),
+(1002, "HA", "Has"),
+(1002, "KA", "Kavajë"),
+(1002, "ER", "Kolonjë"),
+(1002, "KO", "Korçë"),
+(1002, "KR", "Krujë"),
+(1002, "KC", "Kuçovë"),
+(1002, "KU", "Kukës"),
+(1002, "KB", "Kurbin"),
+(1002, "LE", "Lezhë"),
+(1002, "LB", "Librazhd"),
+(1002, "LU", "Lushnjë"),
+(1002, "MM", "Malësi e Madhe"),
+(1002, "MK", "Mallakastër"),
+(1002, "MT", "Mat"),
+(1002, "MR", "Mirditë"),
+(1002, "PQ", "Peqin"),
+(1002, "PR", "Përmet"),
+(1002, "PG", "Pogradec"),
+(1002, "PU", "Pukë"),
+(1002, "SR", "Sarandë"),
+(1002, "SK", "Skrapar"),
+(1002, "SH", "Shkodër"),
+(1002, "TE", "Tepelenë"),
+(1002, "TR", "Tiranë"),
+(1002, "TP", "Tropojë"),
+(1002, "VL", "Vlorë"),
+(1011, "ER", "Erevan"),
+(1011, "AG", "Aragacotn"),
+(1011, "AR", "Ararat"),
+(1011, "AV", "Armavir"),
+(1011, "GR", "Gegarkunik\'"),
+(1011, "KT", "Kotayk\'"),
+(1011, "LO", "Lory"),
+(1011, "SH", "Sirak"),
+(1011, "SU", "Syunik\'"),
+(1011, "TV", "Tavus"),
+(1011, "VD", "Vayoc Jor"),
+(1005, "07", "Andorra la Vella"),
+(1005, "02", "Canillo"),
+(1005, "03", "Encamp"),
+(1005, "08", "Escaldes-Engordany"),
+(1005, "04", "La Massana"),
+(1005, "05", "Ordino"),
+(1005, "06", "Sant Julia de Loria"),
+(1006, "BGO", "Bengo"),
+(1006, "BGU", "Benguela"),
+(1006, "BIE", "Bie"),
+(1006, "CAB", "Cabinda"),
+(1006, "CCU", "Cuando-Cubango"),
+(1006, "CNO", "Cuanza Norte"),
+(1006, "CUS", "Cuanza Sul"),
+(1006, "CNN", "Cunene"),
+(1006, "HUA", "Huambo"),
+(1006, "HUI", "Huila"),
+(1006, "LUA", "Luanda"),
+(1006, "LNO", "Lunda Norte"),
+(1006, "LSU", "Lunda Sul"),
+(1006, "MAL", "Malange"),
+(1006, "MOX", "Moxico"),
+(1006, "NAM", "Namibe"),
+(1006, "UIG", "Uige"),
+(1006, "ZAI", "Zaire"),
+(1009, "03", "Saint George"),
+(1009, "04", "Saint John"),
+(1009, "05", "Saint Mary"),
+(1009, "06", "Saint Paul"),
+(1009, "07", "Saint Peter"),
+(1009, "08", "Saint Philip"),
+(1009, "10", "Barbuda"),
+(1009, "11", "Redonda"),
+(1010, "C", "Capital federal"),
+(1010, "B", "Buenos Aires"),
+(1010, "K", "Catamarca"),
+(1010, "X", "Cordoba"),
+(1010, "W", "Corrientes"),
+(1010, "H", "Chaco"),
+(1010, "U", "Chubut"),
+(1010, "E", "Entre Rios"),
+(1010, "P", "Formosa"),
+(1010, "Y", "Jujuy"),
+(1010, "L", "La Pampa"),
+(1010, "M", "Mendoza"),
+(1010, "N", "Misiones"),
+(1010, "Q", "Neuquen"),
+(1010, "R", "Rio Negro"),
+(1010, "A", "Salta"),
+(1010, "J", "San Juan"),
+(1010, "D", "San Luis"),
+(1010, "Z", "Santa Cruz"),
+(1010, "S", "Santa Fe"),
+(1010, "G", "Santiago del Estero"),
+(1010, "V", "Tierra del Fuego"),
+(1010, "T", "Tucuman"),
+(1010, "F", "La Rioja"),
+(1014, "1", "Burgenland"),
+(1014, "2", "Kärnten"),
+(1014, "3", "Niederösterreich"),
+(1014, "4", "Oberösterreich"),
+(1014, "5", "Salzburg"),
+(1014, "6", "Steiermark"),
+(1014, "7", "Tirol"),
+(1014, "8", "Vorarlberg"),
+(1014, "9", "Wien"),
+(1008, "AAT", "Australian Antarctic Territory"),
+(1013, "ACT", "Australian Capital Territory"),
+(1013, "NT", "Northern Territory"),
+(1013, "NSW", "New South Wales"),
+(1013, "QLD", "Queensland"),
+(1013, "SA", "South Australia"),
+(1013, "TAS", "Tasmania"),
+(1013, "VIC", "Victoria"),
+(1013, "WA", "Western Australia"),
+(1015, "NX", "Naxcivan"),
+(1015, "AB", "Ali Bayramli"),
+(1015, "BA", "Baki"),
+(1015, "GA", "Ganca"),
+(1015, "LA", "Lankaran"),
+(1015, "MI", "Mingacevir"),
+(1015, "NA", "Naftalan"),
+(1015, "SA", "Saki"),
+(1015, "SM", "Sumqayit"),
+(1015, "SS", "Susa"),
+(1015, "XA", "Xankandi"),
+(1015, "YE", "Yevlax"),
+(1015, "ABS", "Abseron"),
+(1015, "AGC", "Agcabadi"),
+(1015, "AGM", "Agdam"),
+(1015, "AGS", "Agdas"),
+(1015, "AGA", "Agstafa"),
+(1015, "AGU", "Agsu"),
+(1015, "AST", "Astara"),
+(1015, "BAB", "Babak"),
+(1015, "BAL", "Balakan"),
+(1015, "BAR", "Barda"),
+(1015, "BEY", "Beylagan"),
+(1015, "BIL", "Bilasuvar"),
+(1015, "CAB", "Cabrayll"),
+(1015, "CAL", "Calilabad"),
+(1015, "CUL", "Culfa"),
+(1015, "DAS", "Daskasan"),
+(1015, "DAV", "Davaci"),
+(1015, "FUZ", "Fuzuli"),
+(1015, "GAD", "Gadabay"),
+(1015, "GOR", "Goranboy"),
+(1015, "GOY", "Goycay"),
+(1015, "HAC", "Haciqabul"),
+(1015, "IMI", "Imisli"),
+(1015, "ISM", "Ismayilli"),
+(1015, "KAL", "Kalbacar"),
+(1015, "KUR", "Kurdamir"),
+(1015, "LAC", "Lacin"),
+(1015, "LER", "Lerik"),
+(1015, "MAS", "Masalli"),
+(1015, "NEF", "Neftcala"),
+(1015, "OGU", "Oguz"),
+(1015, "ORD", "Ordubad"),
+(1015, "QAB", "Qabala"),
+(1015, "QAX", "Qax"),
+(1015, "QAZ", "Qazax"),
+(1015, "QOB", "Qobustan"),
+(1015, "QBA", "Quba"),
+(1015, "QBI", "Qubadli"),
+(1015, "QUS", "Qusar"),
+(1015, "SAT", "Saatli"),
+(1015, "SAB", "Sabirabad"),
+(1015, "SAD", "Sadarak"),
+(1015, "SAH", "Sahbuz"),
+(1015, "SAL", "Salyan"),
+(1015, "SMI", "Samaxi"),
+(1015, "SKR", "Samkir"),
+(1015, "SMX", "Samux"),
+(1015, "SAR", "Sarur"),
+(1015, "SIY", "Siyazan"),
+(1015, "TAR", "Tartar"),
+(1015, "TOV", "Tovuz"),
+(1015, "UCA", "Ucar"),
+(1015, "XAC", "Xacmaz"),
+(1015, "XAN", "Xanlar"),
+(1015, "XIZ", "Xizi"),
+(1015, "XCI", "Xocali"),
+(1015, "XVD", "Xocavand"),
+(1015, "YAR", "Yardimli"),
+(1015, "ZAN", "Zangilan"),
+(1015, "ZAQ", "Zaqatala"),
+(1015, "ZAR", "Zardab"),
+(1026, "BIH", "Federacija Bosna i Hercegovina"),
+(1026, "SRP", "Republika Srpska"),
+(1017, "05", "Bagerhat zila"),
+(1017, "01", "Bandarban zila"),
+(1017, "02", "Barguna zila"),
+(1017, "06", "Barisal zila"),
+(1017, "07", "Bhola zila"),
+(1017, "03", "Bogra zila"),
+(1017, "04", "Brahmanbaria zila"),
+(1017, "09", "Chandpur zila"),
+(1017, "10", "Chittagong zila"),
+(1017, "12", "Chuadanga zila"),
+(1017, "08", "Comilla zila"),
+(1017, "11", "Cox\'s Bazar zila"),
+(1017, "13", "Dhaka zila"),
+(1017, "14", "Dinajpur zila"),
+(1017, "15", "Faridpur zila"),
+(1017, "16", "Feni zila"),
+(1017, "19", "Gaibandha zila"),
+(1017, "18", "Gazipur zila"),
+(1017, "17", "Gopalganj zila"),
+(1017, "20", "Habiganj zila"),
+(1017, "24", "Jaipurhat zila"),
+(1017, "21", "Jamalpur zila"),
+(1017, "22", "Jessore zila"),
+(1017, "25", "Jhalakati zila"),
+(1017, "23", "Jhenaidah zila"),
+(1017, "29", "Khagrachari zila"),
+(1017, "27", "Khulna zila"),
+(1017, "26", "Kishorganj zila"),
+(1017, "28", "Kurigram zila"),
+(1017, "30", "Kushtia zila"),
+(1017, "31", "Lakshmipur zila"),
+(1017, "32", "Lalmonirhat zila"),
+(1017, "36", "Madaripur zila"),
+(1017, "37", "Magura zila"),
+(1017, "33", "Manikganj zila"),
+(1017, "39", "Meherpur zila"),
+(1017, "38", "Moulvibazar zila"),
+(1017, "35", "Munshiganj zila"),
+(1017, "34", "Mymensingh zila"),
+(1017, "48", "Naogaon zila"),
+(1017, "43", "Narail zila"),
+(1017, "40", "Narayanganj zila"),
+(1017, "42", "Narsingdi zila"),
+(1017, "44", "Natore zila"),
+(1017, "45", "Nawabganj zila"),
+(1017, "41", "Netrakona zila"),
+(1017, "46", "Nilphamari zila"),
+(1017, "47", "Noakhali zila"),
+(1017, "49", "Pabna zila"),
+(1017, "52", "Panchagarh zila"),
+(1017, "51", "Patuakhali zila"),
+(1017, "50", "Pirojpur zila"),
+(1017, "53", "Rajbari zila"),
+(1017, "54", "Rajshahi zila"),
+(1017, "56", "Rangamati zila"),
+(1017, "55", "Rangpur zila"),
+(1017, "58", "Satkhira zila"),
+(1017, "62", "Shariatpur zila"),
+(1017, "57", "Sherpur zila"),
+(1017, "59", "Sirajganj zila"),
+(1017, "61", "Sunamganj zila"),
+(1017, "60", "Sylhet zila"),
+(1017, "63", "Tangail zila"),
+(1017, "64", "Thakurgaon zila"),
+(1018, "01", "Christ Church"),
+(1018, "02", "Saint Andrew"),
+(1018, "03", "Saint George"),
+(1018, "04", "Saint James"),
+(1018, "05", "Saint John"),
+(1018, "06", "Saint Joseph"),
+(1018, "07", "Saint Lucy"),
+(1018, "08", "Saint Michael"),
+(1018, "09", "Saint Peter"),
+(1018, "10", "Saint Philip"),
+(1018, "11", "Saint Thomas"),
+(1020, "BRU", "Brussels"),
+(1020, "VAN", "Antwerpen"),
+(1020, "WBR", "Brabant Wallon"),
+(1020, "WHT", "Hainaut"),
+(1020, "WLG", "Liege"),
+(1020, "VLI", "Limburg"),
+(1020, "WLX", "Luxembourg"),
+(1020, "WNA", "Namur"),
+(1020, "VOV", "Oost-Vlaanderen"),
+(1020, "VBR", "Vlaams-Brabant"),
+(1020, "VWV", "West-Vlaanderen"),
+(1023, 'DEV', 'Devonshire'),
+(1023, 'HAM', 'Hamilton Parish'),
+(1023, 'HA', 'City of Hamilton'),
+(1023, 'PAG', 'Paget'),
+(1023, 'PEM', 'Pembroke'),
+(1023, 'SG', 'Town of St. George'),
+(1023, 'SGE', 'Saint George\'s'),
+(1023, 'SAN', 'Sandys'),
+(1023, 'SMI', 'Smiths'),
+(1023, 'SOU', 'Southampton'),
+(1023, 'WAR', 'Warwick'),
+(1034, "BAL", "Bale"),
+(1034, "BAM", "Bam"),
+(1034, "BAN", "Banwa"),
+(1034, "BAZ", "Bazega"),
+(1034, "BGR", "Bougouriba"),
+(1034, "BLG", "Boulgou"),
+(1034, "BLK", "Boulkiemde"),
+(1034, "COM", "Comoe"),
+(1034, "GAN", "Ganzourgou"),
+(1034, "GNA", "Gnagna"),
+(1034, "GOU", "Gourma"),
+(1034, "HOU", "Houet"),
+(1034, "IOB", "Ioba"),
+(1034, "KAD", "Kadiogo"),
+(1034, "KEN", "Kenedougou"),
+(1034, "KMD", "Komondjari"),
+(1034, "KMP", "Kompienga"),
+(1034, "KOS", "Kossi"),
+(1034, "KOP", "Koulpulogo"),
+(1034, "KOT", "Kouritenga"),
+(1034, "KOW", "Kourweogo"),
+(1034, "LER", "Leraba"),
+(1034, "LOR", "Loroum"),
+(1034, "MOU", "Mouhoun"),
+(1034, "NAO", "Nahouri"),
+(1034, "NAM", "Namentenga"),
+(1034, "NAY", "Nayala"),
+(1034, "NOU", "Noumbiel"),
+(1034, "OUB", "Oubritenga"),
+(1034, "OUD", "Oudalan"),
+(1034, "PAS", "Passore"),
+(1034, "PON", "Poni"),
+(1034, "SNG", "Sanguie"),
+(1034, "SMT", "Sanmatenga"),
+(1034, "SEN", "Seno"),
+(1034, "SIS", "Siasili"),
+(1034, "SOM", "Soum"),
+(1034, "SOR", "Sourou"),
+(1034, "TAP", "Tapoa"),
+(1034, "TUI", "Tui"),
+(1034, "YAG", "Yagha"),
+(1034, "YAT", "Yatenga"),
+(1034, "ZIR", "Ziro"),
+(1034, "ZON", "Zondoma"),
+(1034, "ZOU", "Zoundweogo"),
+(1033, "01", "Blagoevgrad"),
+(1033, "02", "Burgas"),
+(1033, "08", "Dobrich"),
+(1033, "07", "Gabrovo"),
+(1033, "26", "Haskovo"),
+(1033, "28", "Yambol"),
+(1033, "09", "Kardzhali"),
+(1033, "10", "Kyustendil"),
+(1033, "11", "Lovech"),
+(1033, "12", "Montana"),
+(1033, "13", "Pazardzhik"),
+(1033, "14", "Pernik"),
+(1033, "15", "Pleven"),
+(1033, "16", "Plovdiv"),
+(1033, "17", "Razgrad"),
+(1033, "18", "Ruse"),
+(1033, "19", "Silistra"),
+(1033, "20", "Sliven"),
+(1033, "21", "Smolyan"),
+(1033, "23", "Sofia"),
+(1033, "24", "Stara Zagora"),
+(1033, "27", "Shumen"),
+(1033, "25", "Targovishte"),
+(1033, "03", "Varna"),
+(1033, "04", "Veliko Tarnovo"),
+(1033, "05", "Vidin"),
+(1033, "06", "Vratsa"),
+(1016, "01", "Al Hadd"),
+(1016, "03", "Al Manamah"),
+(1016, "10", "Al Mintaqah al Gharbiyah"),
+(1016, "07", "Al Mintagah al Wusta"),
+(1016, "05", "Al Mintaqah ash Shamaliyah"),
+(1016, "02", "Al Muharraq"),
+(1016, "09", "Ar Rifa"),
+(1016, "04", "Jidd Hafs"),
+(1016, "12", "Madluat Jamad"),
+(1016, "08", "Madluat Isa"),
+(1016, "11", "Mintaqat Juzur tawar"),
+(1016, "06", "Sitrah"),
+(1036, "BB", "Bubanza"),
+(1036, "BJ", "Bujumbura"),
+(1036, "BR", "Bururi"),
+(1036, "CA", "Cankuzo"),
+(1036, "CI", "Cibitoke"),
+(1036, "GI", "Gitega"),
+(1036, "KR", "Karuzi"),
+(1036, "KY", "Kayanza"),
+(1036, "MA", "Makamba"),
+(1036, "MU", "Muramvya"),
+(1036, "MW", "Mwaro"),
+(1036, "NG", "Ngozi"),
+(1036, "RT", "Rutana"),
+(1036, "RY", "Ruyigi"),
+(1022, "AL", "Alibori"),
+(1022, "AK", "Atakora"),
+(1022, "AQ", "Atlantique"),
+(1022, "BO", "Borgou"),
+(1022, "CO", "Collines"),
+(1022, "DO", "Donga"),
+(1022, "KO", "Kouffo"),
+(1022, "LI", "Littoral"),
+(1022, "MO", "Mono"),
+(1022, "OU", "Oueme"),
+(1022, "PL", "Plateau"),
+(1022, "ZO", "Zou"),
+(1032, "BE", "Belait"),
+(1032, "BM", "Brunei-Muara"),
+(1032, "TE", "Temburong"),
+(1032, "TU", "Tutong"),
+(1025, "C", "Cochabamba"),
+(1025, "H", "Chuquisaca"),
+(1025, "B", "El Beni"),
+(1025, "L", "La Paz"),
+(1025, "O", "Oruro"),
+(1025, "N", "Pando"),
+(1025, "P", "Potosi"),
+(1025, "T", "Tarija"),
+(1029, "AC", "Acre"),
+(1029, "AL", "Alagoas"),
+(1029, "AM", "Amazonas"),
+(1029, "AP", "Amapa"),
+(1029, "BA", "Bahia"),
+(1029, "CE", "Ceara"),
+(1029, "DF", "Distrito Federal"),
+(1029, "ES", "Espirito Santo"),
+(1029, "GO", "Goias"),
+(1029, "MA", "Maranhao"),
+(1029, "MG", "Minas Gerais"),
+(1029, "MS", "Mato Grosso do Sul"),
+(1029, "MT", "Mato Grosso"),
+(1029, "PA", "Para"),
+(1029, "PB", "Paraiba"),
+(1029, "PE", "Pernambuco"),
+(1029, "PI", "Piaui"),
+(1029, "PR", "Parana"),
+(1029, "RJ", "Rio de Janeiro"),
+(1029, "RN", "Rio Grande do Norte"),
+(1029, "RO", "Rondonia"),
+(1029, "RR", "Roraima"),
+(1029, "RS", "Rio Grande do Sul"),
+(1029, "SC", "Santa Catarina"),
+(1029, "SE", "Sergipe"),
+(1029, "SP", "Sao Paulo"),
+(1029, "TO", "Tocantins"),
+(1212, "AC", "Acklins and Crooked Islands"),
+(1212, "BI", "Bimini"),
+(1212, "CI", "Cat Island"),
+(1212, "EX", "Exuma"),
+(1212, "IN", "Inagua"),
+(1212, "LI", "Long Island"),
+(1212, "MG", "Mayaguana"),
+(1212, "NP", "New Providence"),
+(1212, "RI", "Ragged Island"),
+(1212, "AB", "Abaco Islands"),
+(1212, "AN", "Andros Island"),
+(1212, "BR", "Berry Islands"),
+(1212, "EL", "Eleuthera"),
+(1212, "GB", "Grand Bahama"),
+(1212, "RC", "Rum Cay"),
+(1212, "SS", "San Salvador Island"),
+(1024, "33", "Bumthang"),
+(1024, "12", "Chhukha"),
+(1024, "22", "Dagana"),
+(1024, "GA", "Gasa"),
+(1024, "13", "Ha"),
+(1024, "44", "Lhuentse"),
+(1024, "42", "Monggar"),
+(1024, "11", "Paro"),
+(1024, "43", "Pemagatshel"),
+(1024, "23", "Punakha"),
+(1024, "45", "Samdrup Jongkha"),
+(1024, "14", "Samtee"),
+(1024, "31", "Sarpang"),
+(1024, "15", "Thimphu"),
+(1024, "41", "Trashigang"),
+(1024, "TY", "Trashi Yangtse"),
+(1024, "32", "Trongsa"),
+(1024, "21", "Tsirang"),
+(1024, "24", "Wangdue Phodrang"),
+(1024, "34", "Zhemgang"),
+(1027, "CE", "Central"),
+(1027, "GH", "Ghanzi"),
+(1027, "KG", "Kgalagadi"),
+(1027, "KL", "Kgatleng"),
+(1027, "KW", "Kweneng"),
+(1027, "NG", "Ngamiland"),
+(1027, "NE", "North-East"),
+(1027, "NW", "North-West"),
+(1027, "SE", "South-East"),
+(1027, "SO", "Southern"),
+(1019, "BR", "Brèsckaja voblasc\'"),
+(1019, "HO", "Homel\'skaja voblasc\'"),
+(1019, "HR", "Hrodzenskaja voblasc\'"),
+(1019, "MA", "Mahilëuskaja voblasc\'"),
+(1019, "MI", "Minskaja voblasc\'"),
+(1019, "VI", "Vicebskaja voblasc\'"),
+(1021, "BZ", "Belize"),
+(1021, "CY", "Cayo"),
+(1021, "CZL", "Corozal"),
+(1021, "OW", "Orange Walk"),
+(1021, "SC", "Stann Creek"),
+(1021, "TOL", "Toledo"),
+(1050, "KN", "Kinshasa"),
+(1050, "EQ", "Equateur"),
+(1050, "KE", "Kasai-Oriental"),
+(1050, "MA", "Maniema"),
+(1050, "NK", "Nord-Kivu"),
+(1050, "SK", "Sud-Kivu"),
+(1042, "BGF", "Bangui"),
+(1042, "BB", "Bamingui-Bangoran"),
+(1042, "BK", "Basse-Kotto"),
+(1042, "HK", "Haute-Kotto"),
+(1042, "HM", "Haut-Mbomou"),
+(1042, "KG", "Kemo"),
+(1042, "LB", "Lobaye"),
+(1042, "HS", "Mambere-Kadei"),
+(1042, "MB", "Mbomou"),
+(1042, "KB", "Nana-Grebizi"),
+(1042, "NM", "Nana-Mambere"),
+(1042, "MP", "Ombella-Mpoko"),
+(1042, "UK", "Ouaka"),
+(1042, "AC", "Ouham"),
+(1042, "OP", "Ouham-Pende"),
+(1042, "SE", "Sangha-Mbaere"),
+(1042, "VR", "Vakaga"),
+(1050, "01", "Kongo central"),
+(1050, "02", "Kwango"),
+(1050, "03", "Kwilu"),
+(1050, "04", "Mai-Ndombe"),
+(1050, "05", "Kasai"),
+(1050, "06", "Lulua"),
+(1050, "07", "Lomami"),
+(1050, "08", "Sankuru"),
+(1050, "09", "Ituri"),
+(1050, "10", "Haut-Uele"),
+(1050, "11", "Tshopo"),
+(1050, "12", "Bas-Uele"),
+(1050, "13", "Nord-Ubangi"),
+(1050, "14", "Mongala"),
+(1050, "15", "Sud-Ubangi"),
+(1050, "16", "Tshuapa"),
+(1050, "17", "Haut-Lomami"),
+(1050, "18", "Lualaba"),
+(1050, "19", "Haut-Katanga"),
+(1050, "20", "Tanganyika"),
+(1051, "BZV", "Brazzaville"),
+(1051, "11", "Bouenza"),
+(1051, "8", "Cuvette"),
+(1051, "15", "Cuvette-Ouest"),
+(1051, "5", "Kouilou"),
+(1051, "2", "Lekoumou"),
+(1051, "7", "Likouala"),
+(1051, "9", "Niari"),
+(1051, "14", "Plateaux"),
+(1051, "12", "Pool"),
+(1051, "13", "Sangha"),
+(1080, "01", "Estuaire"),
+(1080, "02", "Haut-Ogooué"),
+(1080, "03", "Moyen-Ogooué"),
+(1080, "04", "Ngounié"),
+(1080, "05", "Nyanga"),
+(1080, "06", "Ogooué-Ivindo"),
+(1080, "07", "Ogooué-Lolo"),
+(1080, "08", "Ogooué-Maritime"),
+(1080, "09", "Woleu-Ntem"),
+(1205, "AG", "Aargau"),
+(1205, "AI", "Appenzell Innerrhoden"),
+(1205, "AR", "Appenzell Ausserrhoden"),
+(1205, "BE", "Bern"),
+(1205, "BL", "Basel-Landschaft"),
+(1205, "BS", "Basel-Stadt"),
+(1205, "FR", "Fribourg"),
+(1205, "GE", "Geneva"),
+(1205, "GL", "Glarus"),
+(1205, "GR", "Graubunden"),
+(1205, "JU", "Jura"),
+(1205, "LU", "Luzern"),
+(1205, "NE", "Neuchatel"),
+(1205, "NW", "Nidwalden"),
+(1205, "OW", "Obwalden"),
+(1205, "SG", "Sankt Gallen"),
+(1205, "SH", "Schaffhausen"),
+(1205, "SO", "Solothurn"),
+(1205, "SZ", "Schwyz"),
+(1205, "TG", "Thurgau"),
+(1205, "TI", "Ticino"),
+(1205, "UR", "Uri"),
+(1205, "VD", "Vaud"),
+(1205, "VS", "Valais"),
+(1205, "ZG", "Zug"),
+(1205, "ZH", "Zurich"),
+(1054, "06", "18 Montagnes"),
+(1054, "16", "Agnebi"),
+(1054, "09", "Bas-Sassandra"),
+(1054, "10", "Denguele"),
+(1054, "02", "Haut-Sassandra"),
+(1054, "07", "Lacs"),
+(1054, "01", "Lagunes"),
+(1054, "12", "Marahoue"),
+(1054, "05", "Moyen-Comoe"),
+(1054, "11", "Nzi-Comoe"),
+(1054, "03", "Savanes"),
+(1054, "15", "Sud-Bandama"),
+(1054, "13", "Sud-Comoe"),
+(1054, "04", "Vallee du Bandama"),
+(1054, "14", "Worodouqou"),
+(1054, "08", "Zanzan"),
+(1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
+(1044, "AN", "Antofagasta"),
+(1044, "AR", "Araucania"),
+(1044, "AT", "Atacama"),
+(1044, "BI", "Bio-Bio"),
+(1044, "CO", "Coquimbo"),
+(1044, "LI", "Libertador General Bernardo O\'Higgins"),
+(1044, "LL", "Los Lagos"),
+(1044, "MA", "Magallanes"),
+(1044, "ML", "Maule"),
+(1044, "SM", "Santiago Metropolitan"),
+(1044, "TA", "Tarapaca"),
+(1044, "VS", "Valparaiso"),
+(1044, "LR", "Los Rios"),
+(1044, "AP", "Arica y Parinacota"),
+(1038, "AD", "Adamaoua"),
+(1038, "CE", "Centre"),
+(1038, "ES", "East"),
+(1038, "EN", "Far North"),
+(1038, "NO", "North"),
+(1038, "SW", "South"),
+(1038, "SW", "South-West"),
+(1038, "OU", "West"),
+(1038, "LT", "Littoral"),
+(1038, "NW", "Nord-Ouest"),
+(1045, "11", "Beijing"),
+(1045, "50", "Chongqing"),
+(1045, "31", "Shanghai"),
+(1045, "12", "Tianjin"),
+(1045, "34", "Anhui"),
+(1045, "35", "Fujian"),
+(1045, "62", "Gansu"),
+(1045, "44", "Guangdong"),
+(1045, "52", "Guizhou"),
+(1045, "46", "Hainan"),
+(1045, "13", "Hebei"),
+(1045, "23", "Heilongjiang"),
+(1045, "41", "Henan"),
+(1045, "42", "Hubei"),
+(1045, "43", "Hunan"),
+(1045, "32", "Jiangsu"),
+(1045, "36", "Jiangxi"),
+(1045, "22", "Jilin"),
+(1045, "21", "Liaoning"),
+(1045, "63", "Qinghai"),
+(1045, "61", "Shaanxi"),
+(1045, "37", "Shandong"),
+(1045, "14", "Shanxi"),
+(1045, "51", "Sichuan"),
+(1045, "71", "Taiwan"),
+(1045, "53", "Yunnan"),
+(1045, "33", "Zhejiang"),
+(1045, "45", "Guangxi"),
+(1045, "15", "Neia Mongol (mn)"),
+(1045, "65", "Xinjiang"),
+(1045, "54", "Xizang"),
+(1045, "91", "Hong Kong"),
+(1045, "92", "Macau"),
+(1045, "YN", "Yinchuan"),
+(1045, "SZ", "Shizuishan"),
+(1045, "WZ", "Wuzhong"),
+(1045, "GY", "Guyuan"),
+(1045, "ZW", "Zhongwei"),
+(1048, "DC", "Distrito Capital de Bogotá"),
+(1048, "AMA", "Amazonea"),
+(1048, "ANT", "Antioquia"),
+(1048, "ARA", "Arauca"),
+(1048, "ATL", "Atlántico"),
+(1048, "BOL", "Bolívar"),
+(1048, "BOY", "Boyacá"),
+(1048, "CAL", "Caldea"),
+(1048, "CAQ", "Caquetá"),
+(1048, "CAS", "Casanare"),
+(1048, "CAU", "Cauca"),
+(1048, "CES", "Cesar"),
+(1048, "COR", "Córdoba"),
+(1048, "CUN", "Cundinamarca"),
+(1048, "CHO", "Chocó"),
+(1048, "GUA", "Guainía"),
+(1048, "GUV", "Guaviare"),
+(1048, "LAG", "La Guajira"),
+(1048, "MAG", "Magdalena"),
+(1048, "MET", "Meta"),
+(1048, "NAR", "Nariño"),
+(1048, "NSA", "Norte de Santander"),
+(1048, "PUT", "Putumayo"),
+(1048, "QUI", "Quindio"),
+(1048, "RIS", "Risaralda"),
+(1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
+(1048, "SAN", "Santander"),
+(1048, "SUC", "Sucre"),
+(1048, "TOL", "Tolima"),
+(1048, "VAC", "Valle del Cauca"),
+(1048, "VAU", "Vaupés"),
+(1048, "VID", "Vichada"),
+(1048, "HUI", "Huila"),
+(1053, "A", "Alajuela"),
+(1053, "C", "Cartago"),
+(1053, "G", "Guanacaste"),
+(1053, "H", "Heredia"),
+(1053, "L", "Limon"),
+(1053, "P", "Puntarenas"),
+(1053, "SJ", "San Jose"),
+(1056, "09", "Camagey"),
+(1056, "08", "Ciego de `vila"),
+(1056, "06", "Cienfuegos"),
+(1056, "03", "Ciudad de La Habana"),
+(1056, "12", "Granma"),
+(1056, "14", "Guantanamo"),
+(1056, "11", "Holquin"),
+(1056, "02", "La Habana"),
+(1056, "10", "Las Tunas"),
+(1056, "04", "Matanzas"),
+(1056, "01", "Pinar del Rio"),
+(1056, "07", "Sancti Spiritus"),
+(1056, "13", "Santiago de Cuba"),
+(1056, "05", "Villa Clara"),
+(1056, "99", "Isla de la Juventud"),
+(1056, "PR", "Pinar del Roo"),
+(1056, "CA", "Ciego de Avila"),
+(1056, "CG", "Camagoey"),
+(1056, "HO", "Holgun"),
+(1056, "SS", "Sancti Spritus"),
+(1056, "IJ", "Municipio Especial Isla de la Juventud"),
+(1040, "BV", "Boa Vista"),
+(1040, "BR", "Brava"),
+(1040, "CS", "Calheta de Sao Miguel"),
+(1040, "FO", "Fogo"),
+(1040, "MA", "Maio"),
+(1040, "MO", "Mosteiros"),
+(1040, "PA", "Paul"),
+(1040, "PN", "Porto Novo"),
+(1040, "PR", "Praia"),
+(1040, "RG", "Ribeira Grande"),
+(1040, "SL", "Sal"),
+(1040, "SD", "Sao Domingos"),
+(1040, "SF", "Sao Filipe"),
+(1040, "SN", "Sao Nicolau"),
+(1040, "SV", "Sao Vicente"),
+(1040, "TA", "Tarrafal"),
+(1057, "04", "Ammochostos Magusa"),
+(1057, "06", "Keryneia"),
+(1057, "03", "Larnaka"),
+(1057, "01", "Lefkosia"),
+(1057, "02", "Lemesos"),
+(1057, "05", "Pafos"),
+(1058, "JC", "Jihočeský kraj"),
+(1058, "JM", "Jihomoravský kraj"),
+(1058, "KA", "Karlovarský kraj"),
+(1058, "KR", "Královéhradecký kraj"),
+(1058, "LI", "Liberecký kraj"),
+(1058, "MO", "Moravskoslezský kraj"),
+(1058, "OL", "Olomoucký kraj"),
+(1058, "PA", "Pardubický kraj"),
+(1058, "PL", "Plzeňský kraj"),
+(1058, "PR", "Praha, hlavní město"),
+(1058, "ST", "Středočeský kraj"),
+(1058, "US", "Ústecký kraj"),
+(1058, "VY", "Vysočina"),
+(1058, "ZL", "Zlínský kraj"),
+(1081, "AB", "Abkhazia"),
+(1081, "AJ", "Adjara"),
+(1081, "TB", "Tbilisi"),
+(1081, "GU", "Guria"),
+(1081, "IM", "Imereti"),
+(1081, "KA", "Kakheti"),
+(1081, "KK", "Kvemo Kartli"),
+(1081, "MM", "Mtskheta-Mtianeti"),
+(1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
+(1081, "SZ", "Samegrelo-Zemo Svaneti"),
+(1081, "SJ", "Samtskhe-Javakheti"),
+(1081, "SK", "Shida Kartli"),
+(1082, "BW", "Baden-Württemberg"),
+(1082, "BY", "Bayern"),
+(1082, "HB", "Bremen"),
+(1082, "HH", "Hamburg"),
+(1082, "HE", "Hessen"),
+(1082, "NI", "Niedersachsen"),
+(1082, "NW", "Nordrhein-Westfalen"),
+(1082, "RP", "Rheinland-Pfalz"),
+(1082, "SL", "Saarland"),
+(1082, "SH", "Schleswig-Holstein"),
+(1082, "BE", "Berlin"),
+(1082, "BB", "Brandenburg"),
+(1082, "MV", "Mecklenburg-Vorpommern"),
+(1082, "SN", "Sachsen"),
+(1082, "ST", "Sachsen-Anhalt"),
+(1082, "TH", "Thüringen"),
+(1060, "AS", "Ali Sabiah"),
+(1060, "DI", "Dikhil"),
+(1060, "DJ", "Djibouti"),
+(1060, "OB", "Obock"),
+(1060, "TA", "Tadjoura"),
+(1059, "147", "Frederiksberg"),
+(1059, "101", "Copenhagen City"),
+(1059, "015", "Copenhagen"),
+(1059, "020", "Frederiksborg"),
+(1059, "025", "Roskilde"),
+(1059, "030", "Vestsjælland"),
+(1059, "035", "Storstrøm"),
+(1059, "040", "Bornholm"),
+(1059, "042", "Fyn"),
+(1059, "050", "South Jutland"),
+(1059, "055", "Ribe"),
+(1059, "060", "Vejle"),
+(1059, "065", "Ringkjøbing"),
+(1059, "070", "Ã…rhus"),
+(1059, "076", "Viborg"),
+(1059, "080", "North Jutland"),
+(1062, "01", "Distrito Nacional (Santo Domingo)"),
+(1062, "02", "Azua"),
+(1062, "03", "Bahoruco"),
+(1062, "04", "Barahona"),
+(1062, "05", "Dajabón"),
+(1062, "06", "Duarte"),
+(1062, "08", "El Seybo [El Seibo]"),
+(1062, "09", "Espaillat"),
+(1062, "30", "Hato Mayor"),
+(1062, "10", "Independencia"),
+(1062, "11", "La Altagracia"),
+(1062, "07", "La Estrelleta [Elias Pina]"),
+(1062, "12", "La Romana"),
+(1062, "13", "La Vega"),
+(1062, "14", "Maroia Trinidad Sánchez"),
+(1062, "28", "Monseñor Nouel"),
+(1062, "15", "Monte Cristi"),
+(1062, "29", "Monte Plata"),
+(1062, "16", "Pedernales"),
+(1062, "17", "Peravia"),
+(1062, "18", "Puerto Plata"),
+(1062, "19", "Salcedo"),
+(1062, "20", "Samaná"),
+(1062, "21", "San Cristóbal"),
+(1062, "23", "San Pedro de Macorís"),
+(1062, "24", "Sánchez Ramírez"),
+(1062, "25", "Santiago"),
+(1062, "26", "Santiago Rodríguez"),
+(1062, "27", "Valverde"),
+(1003, "01", "Adrar"),
+(1003, "44", "Ain Defla"),
+(1003, "46", "Ain Tmouchent"),
+(1003, "16", "Alger"),
+(1003, "23", "Annaba"),
+(1003, "05", "Batna"),
+(1003, "08", "Bechar"),
+(1003, "06", "Bejaia"),
+(1003, "07", "Biskra"),
+(1003, "09", "Blida"),
+(1003, "34", "Bordj Bou Arreridj"),
+(1003, "10", "Bouira"),
+(1003, "35", "Boumerdes"),
+(1003, "02", "Chlef"),
+(1003, "25", "Constantine"),
+(1003, "17", "Djelfa"),
+(1003, "32", "El Bayadh"),
+(1003, "39", "El Oued"),
+(1003, "36", "El Tarf"),
+(1003, "47", "Ghardaia"),
+(1003, "24", "Guelma"),
+(1003, "33", "Illizi"),
+(1003, "18", "Jijel"),
+(1003, "40", "Khenchela"),
+(1003, "03", "Laghouat"),
+(1003, "29", "Mascara"),
+(1003, "26", "Medea"),
+(1003, "43", "Mila"),
+(1003, "27", "Mostaganem"),
+(1003, "28", "Msila"),
+(1003, "45", "Naama"),
+(1003, "31", "Oran"),
+(1003, "30", "Ouargla"),
+(1003, "04", "Oum el Bouaghi"),
+(1003, "48", "Relizane"),
+(1003, "20", "Saida"),
+(1003, "19", "Setif"),
+(1003, "22", "Sidi Bel Abbes"),
+(1003, "21", "Skikda"),
+(1003, "41", "Souk Ahras"),
+(1003, "11", "Tamanghasset"),
+(1003, "12", "Tebessa"),
+(1003, "14", "Tiaret"),
+(1003, "37", "Tindouf"),
+(1003, "42", "Tipaza"),
+(1003, "38", "Tissemsilt"),
+(1003, "15", "Tizi Ouzou"),
+(1003, "13", "Tlemcen"),
+(1064, "A", "Azuay"),
+(1064, "B", "Bolivar"),
+(1064, "F", "Canar"),
+(1064, "C", "Carchi"),
+(1064, "X", "Cotopaxi"),
+(1064, "H", "Chimborazo"),
+(1064, "O", "El Oro"),
+(1064, "E", "Esmeraldas"),
+(1064, "W", "Galapagos"),
+(1064, "G", "Guayas"),
+(1064, "I", "Imbabura"),
+(1064, "L", "Loja"),
+(1064, "R", "Los Rios"),
+(1064, "M", "Manabi"),
+(1064, "S", "Morona-Santiago"),
+(1064, "N", "Napo"),
+(1064, "D", "Orellana"),
+(1064, "Y", "Pastaza"),
+(1064, "P", "Pichincha"),
+(1064, "U", "Sucumbios"),
+(1064, "T", "Tungurahua"),
+(1064, "Z", "Zamora-Chinchipe"),
+(1069, "37", "Harjumaa"),
+(1069, "39", "Hiiumaa"),
+(1069, "44", "Ida-Virumaa"),
+(1069, "49", "Jõgevamaa"),
+(1069, "51", "Järvamaa"),
+(1069, "57", "Läänemaa"),
+(1069, "59", "Lääne-Virumaa"),
+(1069, "65", "Põlvamaa"),
+(1069, "67", "Pärnumaa"),
+(1069, "70", "Raplamaa"),
+(1069, "74", "Saaremaa"),
+(1069, "7B", "Tartumaa"),
+(1069, "82", "Valgamaa"),
+(1069, "84", "Viljandimaa"),
+(1069, "86", "Võrumaa"),
+(1065, "DK", "Ad Daqahllyah"),
+(1065, "BA", "Al Bahr al Ahmar"),
+(1065, "BH", "Al Buhayrah"),
+(1065, "FYM", "Al Fayym"),
+(1065, "GH", "Al Gharbiyah"),
+(1065, "ALX", "Al Iskandarlyah"),
+(1065, "IS", "Al Isma illyah"),
+(1065, "GZ", "Al Jizah"),
+(1065, "MNF", "Al Minuflyah"),
+(1065, "MN", "Al Minya"),
+(1065, "C", "Al Qahirah"),
+(1065, "KB", "Al Qalyublyah"),
+(1065, "WAD", "Al Wadi al Jadid"),
+(1065, "SHR", "Ash Sharqiyah"),
+(1065, "SUZ", "As Suways"),
+(1065, "ASN", "Aswan"),
+(1065, "AST", "Asyut"),
+(1065, "BNS", "Bani Suwayf"),
+(1065, "PTS", "Bur Sa\'id"),
+(1065, "DT", "Dumyat"),
+(1065, "JS", "Janub Sina\'"),
+(1065, "KFS", "Kafr ash Shaykh"),
+(1065, "MT", "Matruh"),
+(1065, "KN", "Qina"),
+(1065, "SIN", "Shamal Sina\'"),
+(1065, "SHG", "Suhaj"),
+(1068, "AN", "Anseba"),
+(1068, "DU", "Debub"),
+(1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
+(1068, "GB", "Gash-Barka"),
+(1068, "MA", "Maakel [Maekel]"),
+(1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
+(1198, "VI", "Álava"),
+(1198, "AB", "Albacete"),
+(1198, "A", "Alicante"),
+(1198, "AL", "Almería"),
+(1198, "O", "Asturias"),
+(1198, "AV", "Ávila"),
+(1198, "BA", "Badajoz"),
+(1198, "PM", "Baleares"),
+(1198, "B", "Barcelona"),
+(1198, "BU", "Burgos"),
+(1198, "CC", "Cáceres"),
+(1198, "CA", "Cádiz"),
+(1198, "S", "Cantabria"),
+(1198, "CS", "Castellón"),
+(1198, "CR", "Ciudad Real"),
+(1198, "CU", "Cuenca"),
+(1198, "GE", "Girona [Gerona]"),
+(1198, "GR", "Granada"),
+(1198, "GU", "Guadalajara"),
+(1198, "SS", "Guipúzcoa"),
+(1198, "H", "Huelva"),
+(1198, "HU", "Huesca"),
+(1198, "J", "Jaén"),
+(1198, "C", "La Coruña"),
+(1198, "LO", "La Rioja"),
+(1198, "GC", "Las Palmas"),
+(1198, "LE", "León"),
+(1198, "L", "Lleida [Lérida]"),
+(1198, "LU", "Lugo"),
+(1198, "M", "Madrid"),
+(1198, "MA", "Málaga"),
+(1198, "MU", "Murcia"),
+(1198, "NA", "Navarra"),
+(1198, "OR", "Ourense"),
+(1198, "P", "Palencia"),
+(1198, "PO", "Pontevedra"),
+(1198, "SA", "Salamanca"),
+(1198, "TF", "Santa Cruz de Tenerife"),
+(1198, "SG", "Segovia"),
+(1198, "SE", "Sevilla"),
+(1198, "SO", "Soria"),
+(1198, "T", "Tarragona"),
+(1198, "TE", "Teruel"),
+(1198, "V", "Valencia"),
+(1198, "VA", "Valladolid"),
+(1198, "BI", "Vizcaya"),
+(1198, "ZA", "Zamora"),
+(1198, "Z", "Zaragoza"),
+(1198, "CE", "Ceuta"),
+(1198, "ML", "Melilla"),
+(1198, "TO", "Toledo"),
+(1198, "CO", "Córdoba"),
+(1070, "AA", "Addis Ababa"),
+(1070, "DD", "Dire Dawa"),
+(1070, "AF", "Afar"),
+(1070, "AM", "Amara"),
+(1070, "BE", "Benshangul-Gumaz"),
+(1070, "GA", "Gambela Peoples"),
+(1070, "HA", "Harari People"),
+(1070, "OR", "Oromia"),
+(1070, "SO", "Somali"),
+(1070, "SN", "Southern Nations, Nationalities and Peoples"),
+(1070, "TI", "Tigrai"),
 -- (2484, 1075, "AL", "Ahvenanmasn laani"),
 -- (2485, 1075, "ES", "Etela-Suomen laani"),
 -- (2486, 1075, "IS", "Ita-Suomen lasni"),
 -- (2487, 1075, "LL", "Lapin Laani"),
 -- (2488, 1075, "LS", "Lansi-Suomen Laani"),
 -- (2489, 1075, "OL", "Oulun Lasni"),
-(2490, 1074, "E", "Eastern"),
-(2491, 1074, "N", "Northern"),
-(2492, 1074, "W", "Western"),
-(2493, 1074, "R", "Rotuma"),
-(2494, 1141, "TRK", "Chuuk"),
-(2495, 1141, "KSA", "Kosrae"),
-(2496, 1141, "PNI", "Pohnpei"),
-(2497, 1141, "YAP", "Yap"),
-(2498, 1076, "01", "Ain"),
-(2499, 1076, "02", "Aisne"),
-(2500, 1076, "03", "Allier"),
-(2501, 1076, "04", "Alpes-de-Haute-Provence"),
-(2502, 1076, "06", "Alpes-Maritimes"),
-(2503, 1076, "07", "Ardèche"),
-(2504, 1076, "08", "Ardennes"),
-(2505, 1076, "09", "Ariège"),
-(2506, 1076, "10", "Aube"),
-(2507, 1076, "11", "Aude"),
-(2508, 1076, "12", "Aveyron"),
-(2509, 1076, "67", "Bas-Rhin"),
-(2510, 1076, "13", "Bouches-du-Rhône"),
-(2511, 1076, "14", "Calvados"),
-(2512, 1076, "15", "Cantal"),
-(2513, 1076, "16", "Charente"),
-(2514, 1076, "17", "Charente-Maritime"),
-(2515, 1076, "18", "Cher"),
-(2516, 1076, "19", "Corrèze"),
-(2517, 1076, "20A", "Corse-du-Sud"),
-(2518, 1076, "21", "Côte-d\'Or"),
-(2519, 1076, "22", "Côtes-d\'Armor"),
-(2520, 1076, "23", "Creuse"),
-(2521, 1076, "79", "Deux-Sèvres"),
-(2522, 1076, "24", "Dordogne"),
-(2523, 1076, "25", "Doubs"),
-(2524, 1076, "26", "Drôme"),
-(2525, 1076, "91", "Essonne"),
-(2526, 1076, "27", "Eure"),
-(2527, 1076, "28", "Eure-et-Loir"),
-(2528, 1076, "29", "Finistère"),
-(2529, 1076, "30", "Gard"),
-(2530, 1076, "32", "Gers"),
-(2531, 1076, "33", "Gironde"),
-(2532, 1076, "68", "Haut-Rhin"),
-(2533, 1076, "20B", "Haute-Corse"),
-(2534, 1076, "31", "Haute-Garonne"),
-(2535, 1076, "43", "Haute-Loire"),
-(2536, 1076, "70", "Haute-Saône"),
-(2537, 1076, "74", "Haute-Savoie"),
-(2538, 1076, "87", "Haute-Vienne"),
-(2539, 1076, "05", "Hautes-Alpes"),
-(2540, 1076, "65", "Hautes-Pyrénées"),
-(2541, 1076, "92", "Hauts-de-Seine"),
-(2542, 1076, "34", "Hérault"),
-(2543, 1076, "36", "Indre"),
-(2544, 1076, "35", "Ille-et-Vilaine"),
-(2545, 1076, "37", "Indre-et-Loire"),
-(2546, 1076, "38", "Isère"),
-(2547, 1076, "40", "Landes"),
-(2548, 1076, "41", "Loir-et-Cher"),
-(2549, 1076, "42", "Loire"),
-(2550, 1076, "44", "Loire-Atlantique"),
-(2551, 1076, "45", "Loiret"),
-(2552, 1076, "46", "Lot"),
-(2553, 1076, "47", "Lot-et-Garonne"),
-(2554, 1076, "48", "Lozère"),
-(2555, 1076, "49", "Maine-et-Loire"),
-(2556, 1076, "50", "Manche"),
-(2557, 1076, "51", "Marne"),
-(2558, 1076, "53", "Mayenne"),
-(2559, 1076, "54", "Meurthe-et-Moselle"),
-(2560, 1076, "55", "Meuse"),
-(2561, 1076, "56", "Morbihan"),
-(2562, 1076, "57", "Moselle"),
-(2563, 1076, "58", "Nièvre"),
-(2564, 1076, "59", "Nord"),
-(2565, 1076, "60", "Oise"),
-(2566, 1076, "61", "Orne"),
-(2567, 1076, "75", "Paris"),
-(2568, 1076, "62", "Pas-de-Calais"),
-(2569, 1076, "63", "Puy-de-Dôme"),
-(2570, 1076, "64", "Pyrénées-Atlantiques"),
-(2571, 1076, "66", "Pyrénées-Orientales"),
-(2572, 1076, "69", "Rhône"),
-(2573, 1076, "71", "Saône-et-Loire"),
-(2574, 1076, "72", "Sarthe"),
-(2575, 1076, "73", "Savoie"),
-(2576, 1076, "77", "Seine-et-Marne"),
-(2577, 1076, "76", "Seine-Maritime"),
-(2578, 1076, "93", "Seine-Saint-Denis"),
-(2579, 1076, "80", "Somme"),
-(2580, 1076, "81", "Tarn"),
-(2581, 1076, "82", "Tarn-et-Garonne"),
-(2582, 1076, "95", "Val d\'Oise"),
-(2583, 1076, "90", "Territoire de Belfort"),
-(2584, 1076, "94", "Val-de-Marne"),
-(2585, 1076, "83", "Var"),
-(2586, 1076, "84", "Vaucluse"),
-(2587, 1076, "85", "Vendée"),
-(2588, 1076, "86", "Vienne"),
-(2589, 1076, "88", "Vosges"),
-(2590, 1076, "89", "Yonne"),
-(2591, 1076, "78", "Yvelines"),
-(2592, 1226, "ABE", "Aberdeen City"),
-(2593, 1226, "ABD", "Aberdeenshire"),
-(2594, 1226, "ANS", "Angus"),
-(2595, 1226, "ANT", "Co Antrim"),
-(2597, 1226, "AGB", "Argyll and Bute"),
-(2598, 1226, "ARM", "Co Armagh"),
-(2606, 1226, "BDF", "Bedfordshire"),
-(2612, 1226, "BGW", "Blaenau Gwent"),
-(2620, 1226, "BST", "Bristol, City of"),
-(2622, 1226, "BKM", "Buckinghamshire"),
-(2626, 1226, "CAM", "Cambridgeshire"),
-(2634, 1226, "CHS", "Cheshire"),
-(2635, 1226, "CLK", "Clackmannanshire"),
-(2639, 1226, "CON", "Cornwall"),
-(2643, 1226, "CMA", "Cumbria"),
-(2647, 1226, "DBY", "Derbyshire"),
-(2648, 1226, "DRY", "Co Londonderry"),
-(2649, 1226, "DEV", "Devon"),
-(2651, 1226, "DOR", "Dorset"),
-(2652, 1226, "DOW", "Co Down"),
-(2654, 1226, "DGY", "Dumfries and Galloway"),
-(2655, 1226, "DND", "Dundee City"),
-(2657, 1226, "DUR", "County Durham"),
-(2659, 1226, "EAY", "East Ayrshire"),
-(2660, 1226, "EDU", "East Dunbartonshire"),
-(2661, 1226, "ELN", "East Lothian"),
-(2662, 1226, "ERW", "East Renfrewshire"),
-(2663, 1226, "ERY", "East Riding of Yorkshire"),
-(2664, 1226, "ESX", "East Sussex"),
-(2665, 1226, "EDH", "Edinburgh, City of"),
-(2666, 1226, "ELS", "Na h-Eileanan Siar"),
-(2668, 1226, "ESS", "Essex"),
-(2669, 1226, "FAL", "Falkirk"),
-(2670, 1226, "FER", "Co Fermanagh"),
-(2671, 1226, "FIF", "Fife"),
-(2674, 1226, "GLG", "Glasgow City"),
-(2675, 1226, "GLS", "Gloucestershire"),
-(2678, 1226, "GWN", "Gwynedd"),
-(2682, 1226, "HAM", "Hampshire"),
-(2687, 1226, "HEF", "Herefordshire"),
-(2688, 1226, "HRT", "Hertfordshire"),
-(2689, 1226, "HED", "Highland"),
-(2692, 1226, "IVC", "Inverclyde"),
-(2694, 1226, "IOW", "Isle of Wight"),
-(2699, 1226, "KEN", "Kent"),
-(2705, 1226, "LAN", "Lancashire"),
-(2709, 1226, "LEC", "Leicestershire"),
-(2712, 1226, "LIN", "Lincolnshire"),
-(2723, 1226, "MLN", "Midlothian"),
-(2726, 1226, "MRY", "Moray"),
-(2734, 1226, "NFK", "Norfolk"),
-(2735, 1226, "NAY", "North Ayrshire"),
-(2738, 1226, "NLK", "North Lanarkshire"),
-(2742, 1226, "NYK", "North Yorkshire"),
-(2743, 1226, "NTH", "Northamptonshire"),
-(2744, 1226, "NBL", "Northumberland"),
-(2746, 1226, "NTT", "Nottinghamshire"),
-(2747, 1226, "OLD", "Oldham"),
-(2748, 1226, "OMH", "Omagh"),
-(2749, 1226, "ORR", "Orkney Islands"),
-(2750, 1226, "OXF", "Oxfordshire"),
-(2752, 1226, "PKN", "Perth and Kinross"),
-(2757, 1226, "POW", "Powys"),
-(2761, 1226, "RFW", "Renfrewshire"),
-(2766, 1226, "RUT", "Rutland"),
-(2770, 1226, "SCB", "Scottish Borders"),
-(2773, 1226, "ZET", "Shetland Islands"),
-(2774, 1226, "SHR", "Shropshire"),
-(2777, 1226, "SOM", "Somerset"),
-(2778, 1226, "SAY", "South Ayrshire"),
-(2779, 1226, "SGC", "South Gloucestershire"),
-(2780, 1226, "SLK", "South Lanarkshire"),
-(2785, 1226, "STS", "Staffordshire"),
-(2786, 1226, "STG", "Stirling"),
-(2791, 1226, "SFK", "Suffolk"),
-(2793, 1226, "SRY", "Surrey"),
-(2804, 1226, "VGL", "Vale of Glamorgan, The"),
-(2811, 1226, "WAR", "Warwickshire"),
-(2813, 1226, "WDU", "West Dunbartonshire"),
-(2814, 1226, "WLN", "West Lothian"),
-(2815, 1226, "WSX", "West Sussex"),
-(2818, 1226, "WIL", "Wiltshire"),
-(2823, 1226, "WOR", "Worcestershire"),
-(2826, 1083, "AH", "Ashanti"),
-(2827, 1083, "BA", "Brong-Ahafo"),
-(2828, 1083, "AA", "Greater Accra"),
-(2829, 1083, "UE", "Upper East"),
-(2830, 1083, "UW", "Upper West"),
-(2831, 1083, "TV", "Volta"),
-(2832, 1213, "B", "Banjul"),
-(2833, 1213, "L", "Lower River"),
-(2834, 1213, "M", "MacCarthy Island"),
-(2835, 1213, "N", "North Bank"),
-(2836, 1213, "U", "Upper River"),
-(2837, 1091, "BE", "Beyla"),
-(2838, 1091, "BF", "Boffa"),
-(2839, 1091, "BK", "Boke"),
-(2840, 1091, "CO", "Coyah"),
-(2841, 1091, "DB", "Dabola"),
-(2842, 1091, "DL", "Dalaba"),
-(2843, 1091, "DI", "Dinguiraye"),
-(2844, 1091, "DU", "Dubreka"),
-(2845, 1091, "FA", "Faranah"),
-(2846, 1091, "FO", "Forecariah"),
-(2847, 1091, "FR", "Fria"),
-(2848, 1091, "GA", "Gaoual"),
-(2849, 1091, "GU", "Guekedou"),
-(2850, 1091, "KA", "Kankan"),
-(2851, 1091, "KE", "Kerouane"),
-(2852, 1091, "KD", "Kindia"),
-(2853, 1091, "KS", "Kissidougou"),
-(2854, 1091, "KB", "Koubia"),
-(2855, 1091, "KN", "Koundara"),
-(2856, 1091, "KO", "Kouroussa"),
-(2857, 1091, "LA", "Labe"),
-(2858, 1091, "LE", "Lelouma"),
-(2859, 1091, "LO", "Lola"),
-(2860, 1091, "MC", "Macenta"),
-(2861, 1091, "ML", "Mali"),
-(2862, 1091, "MM", "Mamou"),
-(2863, 1091, "MD", "Mandiana"),
-(2864, 1091, "NZ", "Nzerekore"),
-(2865, 1091, "PI", "Pita"),
-(2866, 1091, "SI", "Siguiri"),
-(2867, 1091, "TE", "Telimele"),
-(2868, 1091, "TO", "Tougue"),
-(2869, 1091, "YO", "Yomou"),
-(2870, 1067, "C", "Region Continental"),
-(2871, 1067, "I", "Region Insular"),
-(2872, 1067, "AN", "Annobon"),
-(2873, 1067, "BN", "Bioko Norte"),
-(2874, 1067, "BS", "Bioko Sur"),
-(2875, 1067, "CS", "Centro Sur"),
-(2876, 1067, "KN", "Kie-Ntem"),
-(2877, 1067, "LI", "Litoral"),
-(2878, 1067, "WN", "Wele-Nzas"),
-(2879, 1085, "13", "Achaïa"),
-(2880, 1085, "01", "Aitolia-Akarnania"),
-(2881, 1085, "11", "Argolis"),
-(2882, 1085, "12", "Arkadia"),
-(2883, 1085, "31", "Arta"),
-(2884, 1085, "A1", "Attiki"),
-(2885, 1085, "64", "Chalkidiki"),
-(2886, 1085, "94", "Chania"),
-(2887, 1085, "85", "Chios"),
-(2888, 1085, "81", "Dodekanisos"),
-(2889, 1085, "52", "Drama"),
-(2890, 1085, "71", "Evros"),
-(2891, 1085, "05", "Evrytania"),
-(2892, 1085, "04", "Evvoia"),
-(2893, 1085, "63", "Florina"),
-(2894, 1085, "07", "Fokis"),
-(2895, 1085, "06", "Fthiotis"),
-(2896, 1085, "51", "Grevena"),
-(2897, 1085, "14", "Ileia"),
-(2898, 1085, "53", "Imathia"),
-(2899, 1085, "33", "Ioannina"),
-(2900, 1085, "91", "Irakleion"),
-(2901, 1085, "41", "Karditsa"),
-(2902, 1085, "56", "Kastoria"),
-(2903, 1085, "55", "Kavalla"),
-(2904, 1085, "23", "Kefallinia"),
-(2905, 1085, "22", "Kerkyra"),
-(2906, 1085, "57", "Kilkis"),
-(2907, 1085, "15", "Korinthia"),
-(2908, 1085, "58", "Kozani"),
-(2909, 1085, "82", "Kyklades"),
-(2910, 1085, "16", "Lakonia"),
-(2911, 1085, "42", "Larisa"),
-(2912, 1085, "92", "Lasithion"),
-(2913, 1085, "24", "Lefkas"),
-(2914, 1085, "83", "Lesvos"),
-(2915, 1085, "43", "Magnisia"),
-(2916, 1085, "17", "Messinia"),
-(2917, 1085, "59", "Pella"),
-(2918, 1085, "34", "Preveza"),
-(2919, 1085, "93", "Rethymnon"),
-(2920, 1085, "73", "Rodopi"),
-(2921, 1085, "84", "Samos"),
-(2922, 1085, "62", "Serrai"),
-(2923, 1085, "32", "Thesprotia"),
-(2924, 1085, "54", "Thessaloniki"),
-(2925, 1085, "44", "Trikala"),
-(2926, 1085, "03", "Voiotia"),
-(2927, 1085, "72", "Xanthi"),
-(2928, 1085, "21", "Zakynthos"),
-(2929, 1085, "69", "Agio Oros"),
-(2930, 1090, "AV", "Alta Verapaz"),
-(2931, 1090, "BV", "Baja Verapaz"),
-(2932, 1090, "CM", "Chimaltenango"),
-(2933, 1090, "CQ", "Chiquimula"),
-(2934, 1090, "PR", "El Progreso"),
-(2935, 1090, "ES", "Escuintla"),
-(2936, 1090, "GU", "Guatemala"),
-(2937, 1090, "HU", "Huehuetenango"),
-(2938, 1090, "IZ", "Izabal"),
-(2939, 1090, "JA", "Jalapa"),
-(2940, 1090, "JU", "Jutiapa"),
-(2941, 1090, "PE", "Peten"),
-(2942, 1090, "QZ", "Quetzaltenango"),
-(2943, 1090, "QC", "Quiche"),
-(2944, 1090, "RE", "Retalhuleu"),
-(2945, 1090, "SA", "Sacatepequez"),
-(2946, 1090, "SM", "San Marcos"),
-(2947, 1090, "SR", "Santa Rosa"),
-(2948, 1090, "SO", "Sololá"),
-(2949, 1090, "SU", "Suchitepequez"),
-(2950, 1090, "TO", "Totonicapan"),
-(2951, 1090, "ZA", "Zacapa"),
-(2952, 1092, "BS", "Bissau"),
-(2953, 1092, "BA", "Bafata"),
-(2954, 1092, "BM", "Biombo"),
-(2955, 1092, "BL", "Bolama"),
-(2956, 1092, "CA", "Cacheu"),
-(2957, 1092, "GA", "Gabu"),
-(2958, 1092, "OI", "Oio"),
-(2959, 1092, "QU", "Quloara"),
-(2960, 1092, "TO", "Tombali S"),
-(2961, 1093, "BA", "Barima-Waini"),
-(2962, 1093, "CU", "Cuyuni-Mazaruni"),
-(2963, 1093, "DE", "Demerara-Mahaica"),
-(2964, 1093, "EB", "East Berbice-Corentyne"),
-(2965, 1093, "ES", "Essequibo Islands-West Demerara"),
-(2966, 1093, "MA", "Mahaica-Berbice"),
-(2967, 1093, "PM", "Pomeroon-Supenaam"),
-(2968, 1093, "PT", "Potaro-Siparuni"),
-(2969, 1093, "UD", "Upper Demerara-Berbice"),
-(2970, 1093, "UT", "Upper Takutu-Upper Essequibo"),
-(2971, 1097, "AT", "Atlantida"),
-(2972, 1097, "CL", "Colon"),
-(2973, 1097, "CM", "Comayagua"),
-(2974, 1097, "CP", "Copan"),
-(2975, 1097, "CR", "Cortes"),
-(2976, 1097, "CH", "Choluteca"),
-(2977, 1097, "EP", "El Paraiso"),
-(2978, 1097, "FM", "Francisco Morazan"),
-(2979, 1097, "GD", "Gracias a Dios"),
-(2980, 1097, "IN", "Intibuca"),
-(2981, 1097, "IB", "Islas de la Bahia"),
-(2982, 1097, "LE", "Lempira"),
-(2983, 1097, "OC", "Ocotepeque"),
-(2984, 1097, "OL", "Olancho"),
-(2985, 1097, "SB", "Santa Barbara"),
-(2986, 1097, "VA", "Valle"),
-(2987, 1097, "YO", "Yoro"),
-(2988, 1055, "07", "Bjelovarsko-bilogorska zupanija"),
-(2989, 1055, "12", "Brodsko-posavska zupanija"),
-(2990, 1055, "19", "Dubrovacko-neretvanska zupanija"),
-(2991, 1055, "18", "Istarska zupanija"),
-(2992, 1055, "04", "Karlovacka zupanija"),
-(2993, 1055, "06", "Koprivnickco-krizevacka zupanija"),
-(2994, 1055, "02", "Krapinako-zagorska zupanija"),
-(2995, 1055, "09", "Licko-senjska zupanija"),
-(2996, 1055, "20", "Medimurska zupanija"),
-(2997, 1055, "14", "Osjecko-baranjska zupanija"),
-(2998, 1055, "11", "Pozesko-slavonska zupanija"),
-(2999, 1055, "08", "Primorsko-goranska zupanija"),
-(3000, 1055, "03", "Sisacko-moelavacka Iupanija"),
-(3001, 1055, "17", "Splitako-dalmatinska zupanija"),
-(3002, 1055, "15", "Sibenako-kninska zupanija"),
-(3003, 1055, "05", "Varaidinska zupanija"),
-(3004, 1055, "10", "VirovitiEko-podravska zupanija"),
-(3005, 1055, "16", "VuRovarako-srijemska zupanija"),
-(3006, 1055, "13", "Zadaraka"),
-(3007, 1055, "01", "Zagrebacka zupanija"),
-(3008, 1094, "GA", "Grande-Anse"),
-(3009, 1094, "NE", "Nord-Est"),
-(3010, 1094, "NO", "Nord-Ouest"),
-(3011, 1094, "OU", "Ouest"),
-(3012, 1094, "SD", "Sud"),
-(3013, 1094, "SE", "Sud-Est"),
-(3014, 1099, "BU", "Budapest"),
-(3015, 1099, "BK", "Bács-Kiskun"),
-(3016, 1099, "BA", "Baranya"),
-(3017, 1099, "BE", "Békés"),
-(3018, 1099, "BZ", "Borsod-Abaúj-Zemplén"),
-(3019, 1099, "CS", "Csongrád"),
-(3020, 1099, "FE", "Fejér"),
-(3021, 1099, "GS", "Győr-Moson-Sopron"),
-(3022, 1099, "HB", "Hajdu-Bihar"),
-(3023, 1099, "HE", "Heves"),
-(3024, 1099, "JN", "Jász-Nagykun-Szolnok"),
-(3025, 1099, "KE", "Komárom-Esztergom"),
-(3026, 1099, "NO", "Nográd"),
-(3027, 1099, "PE", "Pest"),
-(3028, 1099, "SO", "Somogy"),
-(3029, 1099, "SZ", "Szabolcs-Szatmár-Bereg"),
-(3030, 1099, "TO", "Tolna"),
-(3031, 1099, "VA", "Vas"),
-(3032, 1099, "VE", "Veszprém"),
-(3033, 1099, "ZA", "Zala"),
-(3034, 1099, "BC", "Békéscsaba"),
-(3035, 1099, "DE", "Debrecen"),
-(3036, 1099, "DU", "Dunaújváros"),
-(3037, 1099, "EG", "Eger"),
-(3038, 1099, "GY", "Győr"),
-(3039, 1099, "HV", "Hódmezővásárhely"),
-(3040, 1099, "KV", "Kaposvár"),
-(3041, 1099, "KM", "Kecskemét"),
-(3042, 1099, "MI", "Miskolc"),
-(3043, 1099, "NK", "Nagykanizsa"),
-(3044, 1099, "NY", "Nyiregyháza"),
-(3045, 1099, "PS", "Pécs"),
-(3046, 1099, "ST", "Salgótarján"),
-(3047, 1099, "SN", "Sopron"),
-(3048, 1099, "SD", "Szeged"),
-(3049, 1099, "SF", "Székesfehérvár"),
-(3050, 1099, "SS", "Szekszárd"),
-(3051, 1099, "SK", "Szolnok"),
-(3052, 1099, "SH", "Szombathely"),
-(3053, 1099, "TB", "Tatabánya"),
-(3054, 1099, "ZE", "Zalaegerszeg"),
-(3055, 1102, "BA", "Bali"),
-(3056, 1102, "BB", "Kepulauan Bangka Belitung"),
-(3057, 1102, "BT", "Banten"),
-(3058, 1102, "BE", "Bengkulu"),
-(3059, 1102, "GO", "Gorontalo"),
-(3060, 1102, "PB", "Papua Barat"),
-(3061, 1102, "JA", "Jambi"),
-(3062, 1102, "JB", "Jawa Barat"),
-(3063, 1102, "JT", "Jawa Tengah"),
-(3064, 1102, "JI", "Jawa Timur"),
-(3065, 1102, "KB", "Kalimantan Barat"),
-(3066, 1102, "KI", "Kalimantan Timur"),
-(3067, 1102, "KS", "Kalimantan Selatan"),
-(3068, 1102, "KR", "Kepulauan Riau"),
-(3069, 1102, "LA", "Lampung"),
-(3070, 1102, "MA", "Maluku"),
-(3071, 1102, "MU", "Maluku Utara"),
-(3072, 1102, "NB", "Nusa Tenggara Barat"),
-(3073, 1102, "NT", "Nusa Tenggara Timur"),
-(3074, 1102, "PA", "Papua"),
-(3075, 1102, "RI", "Riau"),
-(3076, 1102, "SN", "Sulawesi Selatan"),
-(3077, 1102, "ST", "Sulawesi Tengah"),
-(3078, 1102, "SG", "Sulawesi Tenggara"),
-(3079, 1102, "SA", "Sulawesi Utara"),
-(3080, 1102, "SB", "Sumatra Barat"),
-(3081, 1102, "SS", "Sumatra Selatan"),
-(3082, 1102, "SU", "Sumatera Utara"),
-(3083, 1102, "JK", "DKI Jakarta"),
-(3084, 1102, "AC", "Aceh"),
-(3085, 1102, "YO", "DI Yogyakarta"),
-(3086, 1105, "C", "Cork"),
-(3087, 1105, "CE", "Clare"),
-(3088, 1105, "CN", "Cavan"),
-(3089, 1105, "CW", "Carlow"),
-(3090, 1105, "D", "Dublin"),
-(3091, 1105, "DL", "Donegal"),
-(3092, 1105, "G", "Galway"),
-(3093, 1105, "KE", "Kildare"),
-(3094, 1105, "KK", "Kilkenny"),
-(3095, 1105, "KY", "Kerry"),
-(3096, 1105, "LD", "Longford"),
-(3097, 1105, "LH", "Louth"),
-(3098, 1105, "LK", "Limerick"),
-(3099, 1105, "LM", "Leitrim"),
-(3100, 1105, "LS", "Laois"),
-(3101, 1105, "MH", "Meath"),
-(3102, 1105, "MN", "Monaghan"),
-(3103, 1105, "MO", "Mayo"),
-(3104, 1105, "OY", "Offaly"),
-(3105, 1105, "RN", "Roscommon"),
-(3106, 1105, "SO", "Sligo"),
-(3107, 1105, "TA", "Tipperary"),
-(3108, 1105, "WD", "Waterford"),
-(3109, 1105, "WH", "Westmeath"),
-(3110, 1105, "WW", "Wicklow"),
-(3111, 1105, "WX", "Wexford"),
-(3112, 1106, "D", "HaDarom"),
-(3113, 1106, "M", "HaMerkaz"),
-(3114, 1106, "Z", "HaZafon"),
-(3115, 1106, "HA", "Haifa"),
-(3116, 1106, "TA", "Tel-Aviv"),
-(3117, 1106, "JM", "Jerusalem"),
-(3118, 1104, "AN", "Al Anbar"),
-(3119, 1104, "BA", "Al Ba,rah"),
-(3120, 1104, "MU", "Al Muthanna"),
-(3121, 1104, "QA", "Al Qadisiyah"),
-(3122, 1104, "NA", "An Najef"),
-(3123, 1104, "AR", "Arbil"),
-(3124, 1104, "SW", "As Sulaymaniyah"),
-(3125, 1104, "TS", "At Ta\'mim"),
-(3126, 1104, "BB", "Babil"),
-(3127, 1104, "BG", "Baghdad"),
-(3128, 1104, "DA", "Dahuk"),
-(3129, 1104, "DQ", "Dhi Qar"),
-(3130, 1104, "DI", "Diyala"),
-(3131, 1104, "KA", "Karbala\'"),
-(3132, 1104, "MA", "Maysan"),
-(3133, 1104, "NI", "Ninawa"),
-(3134, 1104, "SD", "Salah ad Din"),
-(3135, 1104, "WA", "Wasit"),
-(3136, 1103, "03", "Ardabil"),
-(3137, 1103, "02", "Azarbayjan-e Gharbi"),
-(3138, 1103, "01", "Azarbayjan-e Sharqi"),
-(3139, 1103, "06", "Bushehr"),
-(3140, 1103, "08", "Chahar Mahall va Bakhtiari"),
-(3141, 1103, "04", "Esfahan"),
-(3142, 1103, "14", "Fars"),
-(3143, 1103, "19", "Gilan"),
-(3144, 1103, "27", "Golestan"),
-(3145, 1103, "24", "Hamadan"),
-(3146, 1103, "23", "Hormozgan"),
-(3147, 1103, "05", "Iiam"),
-(3148, 1103, "15", "Kerman"),
-(3149, 1103, "17", "Kermanshah"),
-(3150, 1103, "09", "Khorasan"),
-(3151, 1103, "10", "Khuzestan"),
-(3152, 1103, "18", "Kohjiluyeh va Buyer Ahmad"),
-(3153, 1103, "16", "Kordestan"),
-(3154, 1103, "20", "Lorestan"),
-(3155, 1103, "22", "Markazi"),
-(3156, 1103, "21", "Mazandaran"),
-(3157, 1103, "28", "Qazvin"),
-(3158, 1103, "26", "Qom"),
-(3159, 1103, "12", "Semnan"),
-(3160, 1103, "13", "Sistan va Baluchestan"),
-(3161, 1103, "07", "Tehran"),
-(3162, 1103, "25", "Yazd"),
-(3163, 1103, "11", "Zanjan"),
-(3164, 1100, "7", "Austurland"),
-(3165, 1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
-(3166, 1100, "6", "Norourland eystra"),
-(3167, 1100, "5", "Norourland vestra"),
-(3168, 1100, "0", "Reykjavik"),
-(3169, 1100, "8", "Suourland"),
-(3170, 1100, "2", "Suournes"),
-(3171, 1100, "4", "Vestfirolr"),
-(3172, 1100, "3", "Vesturland"),
-(3173, 1107, "AG", "Agrigento"),
-(3174, 1107, "AL", "Alessandria"),
-(3175, 1107, "AN", "Ancona"),
-(3176, 1107, "AO", "Aosta"),
-(3177, 1107, "AR", "Arezzo"),
-(3178, 1107, "AP", "Ascoli Piceno"),
-(3179, 1107, "AT", "Asti"),
-(3180, 1107, "AV", "Avellino"),
-(3181, 1107, "BA", "Bari"),
-(3182, 1107, "BL", "Belluno"),
-(3183, 1107, "BN", "Benevento"),
-(3184, 1107, "BG", "Bergamo"),
-(3185, 1107, "BI", "Biella"),
-(3186, 1107, "BO", "Bologna"),
-(3187, 1107, "BZ", "Bolzano"),
-(3188, 1107, "BS", "Brescia"),
-(3189, 1107, "BR", "Brindisi"),
-(3190, 1107, "CA", "Cagliari"),
-(3191, 1107, "CL", "Caltanissetta"),
-(3192, 1107, "CB", "Campobasso"),
-(3193, 1107, "CE", "Caserta"),
-(3194, 1107, "CT", "Catania"),
-(3195, 1107, "CZ", "Catanzaro"),
-(3196, 1107, "CH", "Chieti"),
-(3197, 1107, "CO", "Como"),
-(3198, 1107, "CS", "Cosenza"),
-(3199, 1107, "CR", "Cremona"),
-(3200, 1107, "KR", "Crotone"),
-(3201, 1107, "CN", "Cuneo"),
-(3202, 1107, "EN", "Enna"),
-(3203, 1107, "FE", "Ferrara"),
-(3204, 1107, "FI", "Firenze"),
-(3205, 1107, "FG", "Foggia"),
-(3206, 1107, "FC", "Forlì-Cesena"),
-(3207, 1107, "FR", "Frosinone"),
-(3208, 1107, "GE", "Genova"),
-(3209, 1107, "GO", "Gorizia"),
-(3210, 1107, "GR", "Grosseto"),
-(3211, 1107, "IM", "Imperia"),
-(3212, 1107, "IS", "Isernia"),
-(3213, 1107, "AQ", "L\'Aquila"),
-(3214, 1107, "SP", "La Spezia"),
-(3215, 1107, "LT", "Latina"),
-(3216, 1107, "LE", "Lecce"),
-(3217, 1107, "LC", "Lecco"),
-(3218, 1107, "LI", "Livorno"),
-(3219, 1107, "LO", "Lodi"),
-(3220, 1107, "LU", "Lucca"),
-(3221, 1107, "MC", "Macerata"),
-(3222, 1107, "MN", "Mantova"),
-(3223, 1107, "MS", "Massa-Carrara"),
-(3224, 1107, "MT", "Matera"),
-(3225, 1107, "ME", "Messina"),
-(3226, 1107, "MI", "Milano"),
-(3227, 1107, "MO", "Modena"),
-(3228, 1107, "NA", "Napoli"),
-(3229, 1107, "NO", "Novara"),
-(3230, 1107, "NU", "Nuoro"),
-(3231, 1107, "OR", "Oristano"),
-(3232, 1107, "PD", "Padova"),
-(3233, 1107, "PA", "Palermo"),
-(3234, 1107, "PR", "Parma"),
-(3235, 1107, "PV", "Pavia"),
-(3236, 1107, "PG", "Perugia"),
-(3237, 1107, "PU", "Pesaro e Urbino"),
-(3238, 1107, "PE", "Pescara"),
-(3239, 1107, "PC", "Piacenza"),
-(3240, 1107, "PI", "Pisa"),
-(3241, 1107, "PT", "Pistoia"),
-(3242, 1107, "PN", "Pordenone"),
-(3243, 1107, "PZ", "Potenza"),
-(3244, 1107, "PO", "Prato"),
-(3245, 1107, "RG", "Ragusa"),
-(3246, 1107, "RA", "Ravenna"),
-(3247, 1107, "RC", "Reggio Calabria"),
-(3248, 1107, "RE", "Reggio Emilia"),
-(3249, 1107, "RI", "Rieti"),
-(3250, 1107, "RN", "Rimini"),
-(3251, 1107, "RM", "Roma"),
-(3252, 1107, "RO", "Rovigo"),
-(3253, 1107, "SA", "Salerno"),
-(3254, 1107, "SS", "Sassari"),
-(3255, 1107, "SV", "Savona"),
-(3256, 1107, "SI", "Siena"),
-(3257, 1107, "SR", "Siracusa"),
-(3258, 1107, "SO", "Sondrio"),
-(3259, 1107, "TA", "Taranto"),
-(3260, 1107, "TE", "Teramo"),
-(3261, 1107, "TR", "Terni"),
-(3262, 1107, "TO", "Torino"),
-(3263, 1107, "TP", "Trapani"),
-(3264, 1107, "TN", "Trento"),
-(3265, 1107, "TV", "Treviso"),
-(3266, 1107, "TS", "Trieste"),
-(3267, 1107, "UD", "Udine"),
-(3268, 1107, "VA", "Varese"),
-(3269, 1107, "VE", "Venezia"),
-(3270, 1107, "VB", "Verbano-Cusio-Ossola"),
-(3271, 1107, "VC", "Vercelli"),
-(3272, 1107, "VR", "Verona"),
-(3273, 1107, "VV", "Vibo Valentia"),
-(3274, 1107, "VI", "Vicenza"),
-(3275, 1107, "VT", "Viterbo"),
-(3276, 1109, "23", "Aichi"),
-(3277, 1109, "05", "Akita"),
-(3278, 1109, "02", "Aomori"),
-(3279, 1109, "12", "Chiba"),
-(3280, 1109, "38", "Ehime"),
-(3281, 1109, "18", "Fukui"),
-(3282, 1109, "40", "Fukuoka"),
-(3283, 1109, "07", "Fukusima"),
-(3284, 1109, "21", "Gifu"),
-(3285, 1109, "10", "Gunma"),
-(3286, 1109, "34", "Hiroshima"),
-(3287, 1109, "01", "Hokkaido"),
-(3288, 1109, "28", "Hyogo"),
-(3289, 1109, "08", "Ibaraki"),
-(3290, 1109, "17", "Ishikawa"),
-(3291, 1109, "03", "Iwate"),
-(3292, 1109, "37", "Kagawa"),
-(3293, 1109, "46", "Kagoshima"),
-(3294, 1109, "14", "Kanagawa"),
-(3295, 1109, "39", "Kochi"),
-(3296, 1109, "43", "Kumamoto"),
-(3297, 1109, "26", "Kyoto"),
-(3298, 1109, "24", "Mie"),
-(3299, 1109, "04", "Miyagi"),
-(3300, 1109, "45", "Miyazaki"),
-(3301, 1109, "20", "Nagano"),
-(3302, 1109, "42", "Nagasaki"),
-(3303, 1109, "29", "Nara"),
-(3304, 1109, "15", "Niigata"),
-(3305, 1109, "44", "Oita"),
-(3306, 1109, "33", "Okayama"),
-(3307, 1109, "47", "Okinawa"),
-(3308, 1109, "27", "Osaka"),
-(3309, 1109, "41", "Saga"),
-(3310, 1109, "11", "Saitama"),
-(3311, 1109, "25", "Shiga"),
-(3312, 1109, "32", "Shimane"),
-(3313, 1109, "22", "Shizuoka"),
-(3314, 1109, "09", "Tochigi"),
-(3315, 1109, "36", "Tokushima"),
-(3316, 1109, "13", "Tokyo"),
-(3317, 1109, "31", "Tottori"),
-(3318, 1109, "16", "Toyama"),
-(3319, 1109, "30", "Wakayama"),
-(3320, 1109, "06", "Yamagata"),
-(3321, 1109, "35", "Yamaguchi"),
-(3322, 1109, "19", "Yamanashi"),
-(3323, 1108, "CN", "Clarendon"),
-(3324, 1108, "HR", "Hanover"),
-(3325, 1108, "KN", "Kingston"),
-(3326, 1108, "PD", "Portland"),
-(3327, 1108, "AW", "Saint Andrew"),
-(3328, 1108, "AN", "Saint Ann"),
-(3329, 1108, "CE", "Saint Catherine"),
-(3330, 1108, "EH", "Saint Elizabeth"),
-(3331, 1108, "JS", "Saint James"),
-(3332, 1108, "MY", "Saint Mary"),
-(3333, 1108, "TS", "Saint Thomas"),
-(3334, 1108, "TY", "Trelawny"),
-(3335, 1108, "WD", "Westmoreland"),
-(3336, 1110, "AJ", "Ajln"),
-(3337, 1110, "AQ", "Al \'Aqaba"),
-(3338, 1110, "BA", "Al Balqa\'"),
-(3339, 1110, "KA", "Al Karak"),
-(3340, 1110, "MA", "Al Mafraq"),
-(3341, 1110, "AM", "Amman"),
-(3342, 1110, "AT", "At Tafilah"),
-(3343, 1110, "AZ", "Az Zarga"),
-(3344, 1110, "JR", "Irbid"),
-(3345, 1110, "JA", "Jarash"),
-(3346, 1110, "MN", "Ma\'an"),
-(3347, 1110, "MD", "Madaba"),
-
--- CRM-20062 Outdated provinces for Kenya removed .
-
-(3353, 1117, "GB", "Bishkek"),
-(3354, 1117, "B", "Batken"),
-(3355, 1117, "C", "Chu"),
-(3356, 1117, "J", "Jalal-Abad"),
-(3357, 1117, "N", "Naryn"),
-(3358, 1117, "O", "Osh"),
-(3359, 1117, "T", "Talas"),
-(3360, 1117, "Y", "Ysyk-Kol"),
-(3361, 1037, "23", "Krong Kaeb"),
-(3362, 1037, "24", "Krong Pailin"),
-(3363, 1037, "18", "Xrong Preah Sihanouk"),
-(3364, 1037, "12", "Phnom Penh"),
-(3365, 1037, "2", "Baat Dambang"),
-(3366, 1037, "1", "Banteay Mean Chey"),
-(3367, 1037, "3", "Rampong Chaam"),
-(3368, 1037, "4", "Kampong Chhnang"),
-(3369, 1037, "5", "Kampong Spueu"),
-(3370, 1037, "6", "Kampong Thum"),
-(3371, 1037, "7", "Kampot"),
-(3372, 1037, "8", "Kandaal"),
-(3373, 1037, "9", "Kach Kong"),
-(3374, 1037, "10", "Krachoh"),
-(3375, 1037, "11", "Mondol Kiri"),
-(3376, 1037, "22", "Otdar Mean Chey"),
-(3377, 1037, "15", "Pousaat"),
-(3378, 1037, "13", "Preah Vihear"),
-(3379, 1037, "14", "Prey Veaeng"),
-(3380, 1037, "16", "Rotanak Kiri"),
-(3381, 1037, "17", "Siem Reab"),
-(3382, 1037, "19", "Stueng Traeng"),
-(3383, 1037, "20", "Svaay Rieng"),
-(3384, 1037, "21", "Taakaev"),
-(3385, 1113, "G", "Gilbert Islands"),
-(3386, 1113, "L", "Line Islands"),
-(3387, 1113, "P", "Phoenix Islands"),
-(3388, 1049, "A", "Anjouan Ndzouani"),
-(3389, 1049, "G", "Grande Comore Ngazidja"),
-(3390, 1049, "M", "Moheli Moili"),
-(3391, 1114, "KAE", "Kaesong-si"),
-(3392, 1114, "NAM", "Nampo-si"),
-(3393, 1114, "PYO", "Pyongyang-ai"),
-(3394, 1114, "CHA", "Chagang-do"),
-(3395, 1114, "HAB", "Hamgyongbuk-do"),
-(3396, 1114, "HAN", "Hamgyongnam-do"),
-(3397, 1114, "HWB", "Hwanghaebuk-do"),
-(3398, 1114, "HWN", "Hwanghaenam-do"),
-(3399, 1114, "KAN", "Kangwon-do"),
-(3400, 1114, "PYB", "Pyonganbuk-do"),
-(3401, 1114, "PYN", "Pyongannam-do"),
-(3402, 1114, "YAN", "Yanggang-do"),
-(3403, 1114, "NAJ", "Najin Sonbong-si"),
-(3404, 1115, "11", "Seoul Teugbyeolsi"),
-(3405, 1115, "26", "Busan Gwang\'yeogsi"),
-(3406, 1115, "27", "Daegu Gwang\'yeogsi"),
-(3407, 1115, "30", "Daejeon Gwang\'yeogsi"),
-(3408, 1115, "29", "Gwangju Gwang\'yeogsi"),
-(3409, 1115, "28", "Incheon Gwang\'yeogsi"),
-(3410, 1115, "31", "Ulsan Gwang\'yeogsi"),
-(3411, 1115, "43", "Chungcheongbugdo"),
-(3412, 1115, "44", "Chungcheongnamdo"),
-(3413, 1115, "42", "Gang\'weondo"),
-(3414, 1115, "41", "Gyeonggido"),
-(3415, 1115, "47", "Gyeongsangbugdo"),
-(3416, 1115, "48", "Gyeongsangnamdo"),
-(3417, 1115, "49", "Jejudo"),
-(3418, 1115, "45", "Jeonrabugdo"),
-(3419, 1115, "46", "Jeonranamdo"),
-(3420, 1116, "AH", "Al Ahmadi"),
-(3421, 1116, "FA", "Al Farwanlyah"),
-(3422, 1116, "JA", "Al Jahrah"),
-(3423, 1116, "KU", "Al Kuwayt"),
-(3424, 1116, "HA", "Hawalli"),
-(3425, 1111, "ALA", "Almaty"),
-(3426, 1111, "AST", "Astana"),
-(3427, 1111, "ALM", "Almaty oblysy"),
-(3428, 1111, "AKM", "Aqmola oblysy"),
-(3429, 1111, "AKT", "Aqtobe oblysy"),
-(3430, 1111, "ATY", "Atyrau oblyfiy"),
-(3431, 1111, "ZAP", "Batys Quzaqstan oblysy"),
-(3432, 1111, "MAN", "Mangghystau oblysy"),
-(3433, 1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
-(3434, 1111, "PAV", "Pavlodar oblysy"),
-(3435, 1111, "KAR", "Qaraghandy oblysy"),
-(3436, 1111, "KUS", "Qostanay oblysy"),
-(3437, 1111, "KZY", "Qyzylorda oblysy"),
-(3438, 1111, "VOS", "Shyghys Quzaqstan oblysy"),
-(3439, 1111, "SEV", "Soltustik Quzaqstan oblysy"),
-(3440, 1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
-(3441, 1118, "VT", "Vientiane"),
-(3442, 1118, "AT", "Attapu"),
-(3443, 1118, "BK", "Bokeo"),
-(3444, 1118, "BL", "Bolikhamxai"),
-(3445, 1118, "CH", "Champasak"),
-(3446, 1118, "HO", "Houaphan"),
-(3447, 1118, "KH", "Khammouan"),
-(3448, 1118, "LM", "Louang Namtha"),
-(3449, 1118, "LP", "Louangphabang"),
-(3450, 1118, "OU", "Oudomxai"),
-(3451, 1118, "PH", "Phongsali"),
-(3452, 1118, "SL", "Salavan"),
-(3453, 1118, "SV", "Savannakhet"),
-(3454, 1118, "XA", "Xaignabouli"),
-(3455, 1118, "XN", "Xiasomboun"),
-(3456, 1118, "XE", "Xekong"),
-(3457, 1118, "XI", "Xiangkhoang"),
-(3458, 1120, "BA", "Beirut"),
-(3459, 1120, "BI", "Beqaa"),
-(3460, 1120, "JL", "Mount Lebanon"),
-(3461, 1120, "AS", "North Lebanon"),
-(3462, 1120, "JA", "South Lebanon"),
-(3463, 1120, "NA", "Nabatieh"),
-(3464, 1199, "52", "Ampara"),
-(3465, 1199, "71", "Anuradhapura"),
-(3466, 1199, "81", "Badulla"),
-(3467, 1199, "51", "Batticaloa"),
-(3468, 1199, "11", "Colombo"),
-(3469, 1199, "31", "Galle"),
-(3470, 1199, "12", "Gampaha"),
-(3471, 1199, "33", "Hambantota"),
-(3472, 1199, "41", "Jaffna"),
-(3473, 1199, "13", "Kalutara"),
-(3474, 1199, "21", "Kandy"),
-(3475, 1199, "92", "Kegalla"),
-(3476, 1199, "42", "Kilinochchi"),
-(3477, 1199, "61", "Kurunegala"),
-(3478, 1199, "43", "Mannar"),
-(3479, 1199, "22", "Matale"),
-(3480, 1199, "32", "Matara"),
-(3481, 1199, "82", "Monaragala"),
-(3482, 1199, "45", "Mullaittivu"),
-(3483, 1199, "23", "Nuwara Eliya"),
-(3484, 1199, "72", "Polonnaruwa"),
-(3485, 1199, "62", "Puttalum"),
-(3486, 1199, "91", "Ratnapura"),
-(3487, 1199, "53", "Trincomalee"),
-(3488, 1199, "44", "VavunLya"),
-(3489, 1122, "BM", "Bomi"),
-(3490, 1122, "BG", "Bong"),
-(3491, 1122, "GB", "Grand Basaa"),
-(3492, 1122, "CM", "Grand Cape Mount"),
-(3493, 1122, "GG", "Grand Gedeh"),
-(3494, 1122, "GK", "Grand Kru"),
-(3495, 1122, "LO", "Lofa"),
-(3496, 1122, "MG", "Margibi"),
-(3497, 1122, "MY", "Maryland"),
-(3498, 1122, "MO", "Montserrado"),
-(3499, 1122, "NI", "Nimba"),
-(3500, 1122, "RI", "Rivercess"),
-(3501, 1122, "SI", "Sinoe"),
-(3502, 1121, "D", "Berea"),
-(3503, 1121, "B", "Butha-Buthe"),
-(3504, 1121, "C", "Leribe"),
-(3505, 1121, "E", "Mafeteng"),
-(3506, 1121, "A", "Maseru"),
-(3507, 1121, "F", "Mohale\'s Hoek"),
-(3508, 1121, "J", "Mokhotlong"),
-(3509, 1121, "H", "Qacha\'s Nek"),
-(3510, 1121, "G", "Quthing"),
-(3511, 1121, "K", "Thaba-Tseka"),
-(3512, 1125, "AL", "Alytaus Apskritis"),
-(3513, 1125, "KU", "Kauno Apskritis"),
-(3514, 1125, "KL", "KlaipÄ—dos Apskritis"),
-(3515, 1125, "MR", "MarijampolÄ—s Apskritis"),
-(3516, 1125, "PN", "Panevėžio Apskritis"),
-(3517, 1125, "SA", "Šiaulių Apskritis"),
-(3518, 1125, "TA", "TauragÄ—s Apskritis"),
-(3519, 1125, "TE", "Telšių Apskritis"),
-(3520, 1125, "UT", "Utenos Apskritis"),
-(3521, 1125, "VL", "Vilniaus Apskritis"),
-(3522, 1126, "DI", "Diekirch"),
-(3523, 1126, "GR", "Grevenmacher"),
-(3550, 1119, "DGV", "Daugavpils"),
-(3551, 1119, "JEL", "Jelgava"),
-(3552, 1119, "JUR", "JÅ«rmala"),
-(3553, 1119, "LPX", "Liepāja"),
-(3554, 1119, "REZ", "RÄ“zekne"),
-(3555, 1119, "RIX", "RÄ«ga"),
-(3556, 1119, "VEN", "Ventspils"),
-(3557, 1123, "AJ", "Ajdābiyā"),
-(3558, 1123, "BU", "Al Buţnān"),
-(3559, 1123, "HZ", "Al Hizām al Akhdar"),
-(3560, 1123, "JA", "Al Jabal al Akhdar"),
-(3561, 1123, "JI", "Al Jifārah"),
-(3562, 1123, "JU", "Al Jufrah"),
-(3563, 1123, "KF", "Al Kufrah"),
-(3564, 1123, "MJ", "Al Marj"),
-(3565, 1123, "MB", "Al Marqab"),
-(3566, 1123, "QT", "Al Qaţrūn"),
-(3567, 1123, "QB", "Al Qubbah"),
-(3568, 1123, "WA", "Al Wāhah"),
-(3569, 1123, "NQ", "An Nuqaţ al Khams"),
-(3570, 1123, "SH", "Ash Shāţi\'"),
-(3571, 1123, "ZA", "Az Zāwiyah"),
-(3572, 1123, "BA", "Banghāzī"),
-(3573, 1123, "BW", "Banī Walīd"),
-(3574, 1123, "DR", "Darnah"),
-(3575, 1123, "GD", "Ghadāmis"),
-(3576, 1123, "GR", "Gharyān"),
-(3577, 1123, "GT", "Ghāt"),
-(3578, 1123, "JB", "Jaghbūb"),
-(3579, 1123, "MI", "Mişrātah"),
-(3580, 1123, "MZ", "Mizdah"),
-(3581, 1123, "MQ", "Murzuq"),
-(3582, 1123, "NL", "Nālūt"),
-(3583, 1123, "SB", "Sabhā"),
-(3584, 1123, "SS", "Şabrātah Şurmān"),
-(3585, 1123, "SR", "Surt"),
-(3586, 1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
-(3587, 1123, "TB", "Ţarābulus"),
-(3588, 1123, "TM", "Tarhūnah-Masallātah"),
-(3589, 1123, "WD", "Wādī al hayāt"),
-(3590, 1123, "YJ", "Yafran-Jādū"),
-(3591, 1146, "AGD", "Agadir"),
-(3592, 1146, "BAH", "Aït Baha"),
-(3593, 1146, "MEL", "Aït Melloul"),
-(3594, 1146, "HAO", "Al Haouz"),
-(3595, 1146, "HOC", "Al Hoceïma"),
-(3596, 1146, "ASZ", "Assa-Zag"),
-(3597, 1146, "AZI", "Azilal"),
-(3598, 1146, "BEM", "Beni Mellal"),
-(3599, 1146, "BES", "Ben Sllmane"),
-(3600, 1146, "BER", "Berkane"),
-(3601, 1146, "BOD", "Boujdour"),
-(3602, 1146, "BOM", "Boulemane"),
-(3603, 1146, "CAS", "Casablanca  [Dar el Beïda]"),
-(3604, 1146, "CHE", "Chefchaouene"),
-(3605, 1146, "CHI", "Chichaoua"),
-(3606, 1146, "HAJ", "El Hajeb"),
-(3607, 1146, "JDI", "El Jadida"),
-(3608, 1146, "ERR", "Errachidia"),
-(3609, 1146, "ESI", "Essaouira"),
-(3610, 1146, "ESM", "Es Smara"),
-(3611, 1146, "FES", "Fès"),
-(3612, 1146, "FIG", "Figuig"),
-(3613, 1146, "GUE", "Guelmim"),
-(3614, 1146, "IFR", "Ifrane"),
-(3615, 1146, "JRA", "Jerada"),
-(3616, 1146, "KES", "Kelaat Sraghna"),
-(3617, 1146, "KEN", "Kénitra"),
-(3618, 1146, "KHE", "Khemisaet"),
-(3619, 1146, "KHN", "Khenifra"),
-(3620, 1146, "KHO", "Khouribga"),
-(3621, 1146, "LAA", "Laâyoune (EH)"),
-(3622, 1146, "LAP", "Larache"),
-(3623, 1146, "MAR", "Marrakech"),
-(3624, 1146, "MEK", "Meknsès"),
-(3625, 1146, "NAD", "Nador"),
-(3626, 1146, "OUA", "Ouarzazate"),
-(3627, 1146, "OUD", "Oued ed Dahab (EH)"),
-(3628, 1146, "OUJ", "Oujda"),
-(3629, 1146, "RBA", "Rabat-Salé"),
-(3630, 1146, "SAF", "Safi"),
-(3631, 1146, "SEF", "Sefrou"),
-(3632, 1146, "SET", "Settat"),
-(3633, 1146, "SIK", "Sidl Kacem"),
-(3634, 1146, "TNG", "Tanger"),
-(3635, 1146, "TNT", "Tan-Tan"),
-(3636, 1146, "TAO", "Taounate"),
-(3637, 1146, "TAR", "Taroudannt"),
-(3638, 1146, "TAT", "Tata"),
-(3639, 1146, "TAZ", "Taza"),
-(3640, 1146, "TET", "Tétouan"),
-(3641, 1146, "TIZ", "Tiznit"),
-(3642, 1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
-(3643, 1142, "CU", "Chisinau"),
-(3644, 1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
-(3645, 1142, "BA", "Balti"),
-(3646, 1142, "CA", "Cahul"),
-(3647, 1142, "ED", "Edinet"),
-(3648, 1142, "LA", "Lapusna"),
-(3649, 1142, "OR", "Orhei"),
-(3650, 1142, "SO", "Soroca"),
-(3651, 1142, "TA", "Taraclia"),
-(3652, 1142, "TI", "Tighina [Bender]"),
-(3653, 1142, "UN", "Ungheni"),
-(3654, 1129, "T", "Antananarivo"),
-(3655, 1129, "D", "Antsiranana"),
-(3656, 1129, "F", "Fianarantsoa"),
-(3657, 1129, "M", "Mahajanga"),
-(3658, 1129, "A", "Toamasina"),
-(3659, 1129, "U", "Toliara"),
-(3660, 1135, "ALL", "Ailinglapalap"),
-(3661, 1135, "ALK", "Ailuk"),
-(3662, 1135, "ARN", "Arno"),
-(3663, 1135, "AUR", "Aur"),
-(3664, 1135, "EBO", "Ebon"),
-(3665, 1135, "ENI", "Eniwetok"),
-(3666, 1135, "JAL", "Jaluit"),
-(3667, 1135, "KIL", "Kili"),
-(3668, 1135, "KWA", "Kwajalein"),
-(3669, 1135, "LAE", "Lae"),
-(3670, 1135, "LIB", "Lib"),
-(3671, 1135, "LIK", "Likiep"),
-(3672, 1135, "MAJ", "Majuro"),
-(3673, 1135, "MAL", "Maloelap"),
-(3674, 1135, "MEJ", "Mejit"),
-(3675, 1135, "MIL", "Mili"),
-(3676, 1135, "NMK", "Namorik"),
-(3677, 1135, "NMU", "Namu"),
-(3678, 1135, "RON", "Rongelap"),
-(3679, 1135, "UJA", "Ujae"),
-(3680, 1135, "UJL", "Ujelang"),
-(3681, 1135, "UTI", "Utirik"),
-(3682, 1135, "WTN", "Wotho"),
-(3683, 1135, "WTJ", "Wotje"),
-(3684, 1133, "BK0", "Bamako"),
-(3685, 1133, "7", "Gao"),
-(3686, 1133, "1", "Kayes"),
-(3687, 1133, "8", "Kidal"),
-(3688, 1133, "2", "Xoulikoro"),
-(3689, 1133, "5", "Mopti"),
-(3690, 1133, "4", "S69ou"),
-(3691, 1133, "3", "Sikasso"),
-(3692, 1133, "6", "Tombouctou"),
-(3693, 1035, "07", "Ayeyarwady"),
-(3694, 1035, "02", "Bago"),
-(3695, 1035, "03", "Magway"),
-(3696, 1035, "04", "Mandalay"),
-(3697, 1035, "01", "Sagaing"),
-(3698, 1035, "05", "Tanintharyi"),
-(3699, 1035, "06", "Yangon"),
-(3700, 1035, "14", "Chin"),
-(3701, 1035, "11", "Kachin"),
-(3702, 1035, "12", "Kayah"),
-(3703, 1035, "13", "Kayin"),
-(3704, 1035, "15", "Mon"),
-(3705, 1035, "16", "Rakhine"),
-(3706, 1035, "17", "Shan"),
-(3707, 1144, "1", "Ulaanbaatar"),
-(3708, 1144, "073", "Arhangay"),
-(3709, 1144, "069", "Bayanhongor"),
-(3710, 1144, "071", "Bayan-Olgiy"),
-(3711, 1144, "067", "Bulgan"),
-(3712, 1144, "037", "Darhan uul"),
-(3713, 1144, "061", "Dornod"),
-(3714, 1144, "063", "Dornogov,"),
-(3715, 1144, "059", "DundgovL"),
-(3716, 1144, "057", "Dzavhan"),
-(3717, 1144, "065", "Govi-Altay"),
-(3718, 1144, "064", "Govi-Smber"),
-(3719, 1144, "039", "Hentiy"),
-(3720, 1144, "043", "Hovd"),
-(3721, 1144, "041", "Hovsgol"),
-(3722, 1144, "053", "Omnogovi"),
-(3723, 1144, "035", "Orhon"),
-(3724, 1144, "055", "Ovorhangay"),
-(3725, 1144, "049", "Selenge"),
-(3726, 1144, "051", "Shbaatar"),
-(3727, 1144, "047", "Tov"),
-(3728, 1144, "046", "Uvs"),
-(3729, 1137, "NKC", "Nouakchott"),
-(3730, 1137, "03", "Assaba"),
-(3731, 1137, "05", "Brakna"),
-(3732, 1137, "08", "Dakhlet Nouadhibou"),
-(3733, 1137, "04", "Gorgol"),
-(3734, 1137, "10", "Guidimaka"),
-(3735, 1137, "01", "Hodh ech Chargui"),
-(3736, 1137, "02", "Hodh el Charbi"),
-(3737, 1137, "12", "Inchiri"),
-(3738, 1137, "09", "Tagant"),
-(3739, 1137, "11", "Tiris Zemmour"),
-(3740, 1137, "06", "Trarza"),
-(3741, 1138, "BR", "Beau Bassin-Rose Hill"),
-(3742, 1138, "CU", "Curepipe"),
-(3743, 1138, "PU", "Port Louis"),
-(3744, 1138, "QB", "Quatre Bornes"),
-(3745, 1138, "VP", "Vacosa-Phoenix"),
-(3746, 1138, "BL", "Black River"),
-(3747, 1138, "FL", "Flacq"),
-(3748, 1138, "GP", "Grand Port"),
-(3749, 1138, "MO", "Moka"),
-(3750, 1138, "PA", "Pamplemousses"),
-(3751, 1138, "PW", "Plaines Wilhems"),
-(3752, 1138, "RP", "Riviere du Rempart"),
-(3753, 1138, "SA", "Savanne"),
-(3754, 1138, "AG", "Agalega Islands"),
-(3755, 1138, "CC", "Cargados Carajos Shoals"),
-(3756, 1138, "RO", "Rodrigues Island"),
-(3757, 1132, "MLE", "Male"),
-(3758, 1132, "02", "Alif"),
-(3759, 1132, "20", "Baa"),
-(3760, 1132, "17", "Dhaalu"),
-(3761, 1132, "14", "Faafu"),
-(3762, 1132, "27", "Gaaf Alif"),
-(3763, 1132, "28", "Gaefu Dhaalu"),
-(3764, 1132, "29", "Gnaviyani"),
-(3765, 1132, "07", "Haa Alif"),
-(3766, 1132, "23", "Haa Dhaalu"),
-(3767, 1132, "26", "Kaafu"),
-(3768, 1132, "05", "Laamu"),
-(3769, 1132, "03", "Lhaviyani"),
-(3770, 1132, "12", "Meemu"),
-(3771, 1132, "25", "Noonu"),
-(3772, 1132, "13", "Raa"),
-(3773, 1132, "01", "Seenu"),
-(3774, 1132, "24", "Shaviyani"),
-(3775, 1132, "08", "Thaa"),
-(3776, 1132, "04", "Vaavu"),
-(3777, 1130, "BA", "Balaka"),
-(3778, 1130, "BL", "Blantyre"),
-(3779, 1130, "CK", "Chikwawa"),
-(3780, 1130, "CR", "Chiradzulu"),
-(3781, 1130, "CT", "Chitipa"),
-(3782, 1130, "DE", "Dedza"),
-(3783, 1130, "DO", "Dowa"),
-(3784, 1130, "KR", "Karonga"),
-(3785, 1130, "KS", "Kasungu"),
-(3786, 1130, "LK", "Likoma Island"),
-(3787, 1130, "LI", "Lilongwe"),
-(3788, 1130, "MH", "Machinga"),
-(3789, 1130, "MG", "Mangochi"),
-(3790, 1130, "MC", "Mchinji"),
-(3791, 1130, "MU", "Mulanje"),
-(3792, 1130, "MW", "Mwanza"),
-(3793, 1130, "MZ", "Mzimba"),
-(3794, 1130, "NB", "Nkhata Bay"),
-(3795, 1130, "NK", "Nkhotakota"),
-(3796, 1130, "NS", "Nsanje"),
-(3797, 1130, "NU", "Ntcheu"),
-(3798, 1130, "NI", "Ntchisi"),
-(3799, 1130, "PH", "Phalomba"),
-(3800, 1130, "RU", "Rumphi"),
-(3801, 1130, "SA", "Salima"),
-(3802, 1130, "TH", "Thyolo"),
-(3803, 1130, "ZO", "Zomba"),
-(3804, 1140, "AGU", "Aguascalientes"),
-(3805, 1140, "BCN", "Baja California"),
-(3806, 1140, "BCS", "Baja California Sur"),
-(3807, 1140, "CAM", "Campeche"),
-(3808, 1140, "COA", "Coahuila"),
-(3809, 1140, "COL", "Colima"),
-(3810, 1140, "CHP", "Chiapas"),
-(3811, 1140, "CHH", "Chihuahua"),
-(3812, 1140, "DUR", "Durango"),
-(3813, 1140, "GUA", "Guanajuato"),
-(3814, 1140, "GRO", "Guerrero"),
-(3815, 1140, "HID", "Hidalgo"),
-(3816, 1140, "JAL", "Jalisco"),
-(3817, 1140, "MEX", "Mexico"),
-(3818, 1140, "MIC", "Michoacin"),
-(3819, 1140, "MOR", "Morelos"),
-(3820, 1140, "NAY", "Nayarit"),
-(3821, 1140, "NLE", "Nuevo Leon"),
-(3822, 1140, "OAX", "Oaxaca"),
-(3823, 1140, "PUE", "Puebla"),
-(3824, 1140, "QUE", "Queretaro"),
-(3825, 1140, "ROO", "Quintana Roo"),
-(3826, 1140, "SLP", "San Luis Potosi"),
-(3827, 1140, "SIN", "Sinaloa"),
-(3828, 1140, "SON", "Sonora"),
-(3829, 1140, "TAB", "Tabasco"),
-(3830, 1140, "TAM", "Tamaulipas"),
-(3831, 1140, "TLA", "Tlaxcala"),
-(3832, 1140, "VER", "Veracruz"),
-(3833, 1140, "YUC", "Yucatan"),
-(3834, 1140, "ZAC", "Zacatecas"),
-(3835, 1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
-(3836, 1131, "15", "Wilayah Persekutuan Labuan"),
-(3837, 1131, "16", "Wilayah Persekutuan Putrajaya"),
-(3838, 1131, "01", "Johor"),
-(3839, 1131, "02", "Kedah"),
-(3840, 1131, "03", "Kelantan"),
-(3841, 1131, "04", "Melaka"),
-(3842, 1131, "05", "Negeri Sembilan"),
-(3843, 1131, "06", "Pahang"),
-(3844, 1131, "08", "Perak"),
-(3845, 1131, "09", "Perlis"),
-(3846, 1131, "07", "Pulau Pinang"),
-(3847, 1131, "12", "Sabah"),
-(3848, 1131, "13", "Sarawak"),
-(3849, 1131, "10", "Selangor"),
-(3850, 1131, "11", "Terengganu"),
-(3851, 1147, "MPM", "Maputo"),
-(3852, 1147, "P", "Cabo Delgado"),
-(3853, 1147, "G", "Gaza"),
-(3854, 1147, "I", "Inhambane"),
-(3855, 1147, "B", "Manica"),
-(3856, 1147, "N", "Numpula"),
-(3857, 1147, "A", "Niaaea"),
-(3858, 1147, "S", "Sofala"),
-(3859, 1147, "T", "Tete"),
-(3860, 1147, "Q", "Zambezia"),
-(3861, 1148, "CA", "Caprivi"),
-(3862, 1148, "ER", "Erongo"),
-(3863, 1148, "HA", "Hardap"),
-(3864, 1148, "KA", "Karas"),
-(3865, 1148, "KH", "Khomas"),
-(3866, 1148, "KU", "Kunene"),
-(3867, 1148, "OW", "Ohangwena"),
-(3868, 1148, "OK", "Okavango"),
-(3869, 1148, "OH", "Omaheke"),
-(3870, 1148, "OS", "Omusati"),
-(3871, 1148, "ON", "Oshana"),
-(3872, 1148, "OT", "Oshikoto"),
-(3873, 1148, "OD", "Otjozondjupa"),
-(3874, 1156, "8", "Niamey"),
-(3875, 1156, "1", "Agadez"),
-(3876, 1156, "2", "Diffa"),
-(3877, 1156, "3", "Dosso"),
-(3878, 1156, "4", "Maradi"),
-(3879, 1156, "S", "Tahoua"),
-(3880, 1156, "6", "Tillaberi"),
-(3881, 1156, "7", "Zinder"),
-(3882, 1157, "FC", "Abuja Federal Capital Territory"),
-(3883, 1157, "AB", "Abia"),
-(3884, 1157, "AD", "Adamawa"),
-(3885, 1157, "AK", "Akwa Ibom"),
-(3886, 1157, "AN", "Anambra"),
-(3887, 1157, "BA", "Bauchi"),
-(3888, 1157, "BY", "Bayelsa"),
-(3889, 1157, "BE", "Benue"),
-(3890, 1157, "BO", "Borno"),
-(3891, 1157, "CR", "Cross River"),
-(3892, 1157, "DE", "Delta"),
-(3893, 1157, "EB", "Ebonyi"),
-(3894, 1157, "ED", "Edo"),
-(3895, 1157, "EK", "Ekiti"),
-(3896, 1157, "EN", "Enugu"),
-(3897, 1157, "GO", "Gombe"),
-(3898, 1157, "IM", "Imo"),
-(3899, 1157, "JI", "Jigawa"),
-(3900, 1157, "KD", "Kaduna"),
-(3901, 1157, "KN", "Kano"),
-(3902, 1157, "KT", "Katsina"),
-(3903, 1157, "KE", "Kebbi"),
-(3904, 1157, "KO", "Kogi"),
-(3905, 1157, "KW", "Kwara"),
-(3906, 1157, "LA", "Lagos"),
-(3907, 1157, "NA", "Nassarawa"),
-(3908, 1157, "NI", "Niger"),
-(3909, 1157, "OG", "Ogun"),
-(3910, 1157, "ON", "Ondo"),
-(3911, 1157, "OS", "Osun"),
-(3912, 1157, "OY", "Oyo"),
-(3913, 1157, "RI", "Rivers"),
-(3914, 1157, "SO", "Sokoto"),
-(3915, 1157, "TA", "Taraba"),
-(3916, 1157, "YO", "Yobe"),
-(3917, 1157, "ZA", "Zamfara"),
-(3918, 1155, "BO", "Boaco"),
-(3919, 1155, "CA", "Carazo"),
-(3920, 1155, "CI", "Chinandega"),
-(3921, 1155, "CO", "Chontales"),
-(3922, 1155, "ES", "Esteli"),
-(3923, 1155, "JI", "Jinotega"),
-(3924, 1155, "LE", "Leon"),
-(3925, 1155, "MD", "Madriz"),
-(3926, 1155, "MN", "Managua"),
-(3927, 1155, "MS", "Masaya"),
-(3928, 1155, "MT", "Matagalpa"),
-(3929, 1155, "NS", "Nueva Segovia"),
-(3930, 1155, "SJ", "Rio San Juan"),
-(3931, 1155, "RI", "Rivas"),
-(3932, 1155, "AN", "Atlantico Norte"),
-(3933, 1155, "AS", "Atlantico Sur"),
-(3934, 1152, "DR", "Drente"),
-(3935, 1152, "FL", "Flevoland"),
-(3936, 1152, "FR", "Friesland"),
-(3937, 1152, "GL", "Gelderland"),
-(3938, 1152, "GR", "Groningen"),
-(3939, 1152, "NB", "Noord-Brabant"),
-(3940, 1152, "NH", "Noord-Holland"),
-(3941, 1152, "OV", "Overijssel"),
-(3942, 1152, "UT", "Utrecht"),
-(3943, 1152, "ZH", "Zuid-Holland"),
-(3944, 1152, "ZL", "Zeeland"),
-(3945, 1161, "02", "Akershus"),
-(3946, 1161, "09", "Aust-Agder"),
-(3947, 1161, "06", "Buskerud"),
-(3948, 1161, "20", "Finnmark"),
-(3949, 1161, "04", "Hedmark"),
-(3951, 1161, "15", "Møre og Romsdal"),
-(3952, 1161, "18", "Nordland"),
-(3953, 1161, "17", "Nord-Trøndelag"),
-(3954, 1161, "05", "Oppland"),
-(3955, 1161, "03", "Oslo"),
-(3956, 1161, "11", "Rogaland"),
-(3957, 1161, "16", "Sør-Trøndelag"),
-(3958, 1161, "06", "Telemark"),
-(3959, 1161, "19", "Troms"),
-(3960, 1161, "10", "Vest-Agder"),
-(3961, 1161, "07", "Vestfold"),
-(3962, 1161, "46", "Vestland"),
-(3963, 1161, "01", "Østfold"),
-(3964, 1161, "22", "Jan Mayen"),
-(3965, 1161, "21", "Svalbard"),
-(3966, 1154, "AUK", "Auckland"),
-(3967, 1154, "BOP", "Bay of Plenty"),
-(3968, 1154, "CAN", "Canterbury"),
-(3969, 1154, "GIS", "Gisborne"),
-(3970, 1154, "HKB", "Hawkes Bay"),
-(3971, 1154, "MWT", "Manawatu-Wanganui"),
-(3972, 1154, "MBH", "Marlborough"),
-(3973, 1154, "NSN", "Nelson"),
-(3974, 1154, "NTL", "Northland"),
-(3975, 1154, "OTA", "Otago"),
-(3976, 1154, "STL", "Southland"),
-(3977, 1154, "TKI", "Taranaki"),
-(3978, 1154, "TAS", "Tasman"),
-(3979, 1154, "WKO", "Waikato"),
-(3980, 1154, "WGN", "Wellington"),
-(3981, 1154, "WTC", "West Coast"),
-(3982, 1162, "DA", "Ad Dakhillyah"),
-(3983, 1162, "BA", "Al Batinah"),
-(3984, 1162, "JA", "Al Janblyah"),
-(3985, 1162, "WU", "Al Wusta"),
-(3986, 1162, "SH", "Ash Sharqlyah"),
-(3987, 1162, "ZA", "Az Zahirah"),
-(3988, 1162, "MA", "Masqat"),
-(3989, 1162, "MU", "Musandam"),
-(3990, 1166, "1", "Bocas del Toro"),
-(3991, 1166, "2", "Cocle"),
-(3992, 1166, "4", "Chiriqui"),
-(3993, 1166, "5", "Darien"),
-(3994, 1166, "6", "Herrera"),
-(3995, 1166, "7", "Loa Santoa"),
-(3996, 1166, "8", "Panama"),
-(3997, 1166, "9", "Veraguas"),
-(3998, 1166, "Q", "Comarca de San Blas"),
-(3999, 1169, "CAL", "El Callao"),
-(4000, 1169, "ANC", "Ancash"),
-(4001, 1169, "APU", "Apurimac"),
-(4002, 1169, "ARE", "Arequipa"),
-(4003, 1169, "AYA", "Ayacucho"),
-(4004, 1169, "CAJ", "Cajamarca"),
-(4005, 1169, "CUS", "Cuzco"),
-(4006, 1169, "HUV", "Huancavelica"),
-(4007, 1169, "HUC", "Huanuco"),
-(4008, 1169, "ICA", "Ica"),
-(4009, 1169, "JUN", "Junin"),
-(4010, 1169, "LAL", "La Libertad"),
-(4011, 1169, "LAM", "Lambayeque"),
-(4012, 1169, "LIM", "Lima"),
-(4013, 1169, "LOR", "Loreto"),
-(4014, 1169, "MDD", "Madre de Dios"),
-(4015, 1169, "MOQ", "Moquegua"),
-(4016, 1169, "PAS", "Pasco"),
-(4017, 1169, "PIU", "Piura"),
-(4018, 1169, "PUN", "Puno"),
-(4019, 1169, "SAM", "San Martin"),
-(4020, 1169, "TAC", "Tacna"),
-(4021, 1169, "TUM", "Tumbes"),
-(4022, 1169, "UCA", "Ucayali"),
-(4023, 1167, "NCD", "National Capital District (Port Moresby)"),
-(4024, 1167, "CPK", "Chimbu"),
-(4025, 1167, "EHG", "Eastern Highlands"),
-(4026, 1167, "EBR", "East New Britain"),
-(4027, 1167, "ESW", "East Sepik"),
-(4028, 1167, "EPW", "Enga"),
-(4029, 1167, "GPK", "Gulf"),
-(4030, 1167, "MPM", "Madang"),
-(4031, 1167, "MRL", "Manus"),
-(4032, 1167, "MBA", "Milne Bay"),
-(4033, 1167, "MPL", "Morobe"),
-(4034, 1167, "NIK", "New Ireland"),
-(4035, 1167, "NSA", "North Solomons"),
-(4036, 1167, "SAN", "Santaun"),
-(4037, 1167, "SHM", "Southern Highlands"),
-(4038, 1167, "WHM", "Western Highlands"),
-(4039, 1167, "WBK", "West New Britain"),
-(4040, 1170, "ABR", "Abra"),
-(4041, 1170, "AGN", "Agusan del Norte"),
-(4042, 1170, "AGS", "Agusan del Sur"),
-(4043, 1170, "AKL", "Aklan"),
-(4044, 1170, "ALB", "Albay"),
-(4045, 1170, "ANT", "Antique"),
-(4046, 1170, "APA", "Apayao"),
-(4047, 1170, "AUR", "Aurora"),
-(4048, 1170, "BAS", "Basilan"),
-(4049, 1170, "BAN", "Bataan"),
-(4050, 1170, "BTN", "Batanes"),
-(4051, 1170, "BTG", "Batangas"),
-(4052, 1170, "BEN", "Benguet"),
-(4053, 1170, "BIL", "Biliran"),
-(4054, 1170, "BOH", "Bohol"),
-(4055, 1170, "BUK", "Bukidnon"),
-(4056, 1170, "BUL", "Bulacan"),
-(4057, 1170, "CAG", "Cagayan"),
-(4058, 1170, "CAN", "Camarines Norte"),
-(4059, 1170, "CAS", "Camarines Sur"),
-(4060, 1170, "CAM", "Camiguin"),
-(4061, 1170, "CAP", "Capiz"),
-(4062, 1170, "CAT", "Catanduanes"),
-(4063, 1170, "CAV", "Cavite"),
-(4064, 1170, "CEB", "Cebu"),
-(4065, 1170, "COM", "Davao de Oro"),
-(4066, 1170, "DAV", "Davao del Norte"),
-(4067, 1170, "DAS", "Davao del Sur"),
-(4068, 1170, "DAO", "Davao Oriental"),
-(4069, 1170, "EAS", "Eastern Samar"),
-(4070, 1170, "GUI", "Guimaras"),
-(4071, 1170, "IFU", "Ifugao"),
-(4072, 1170, "ILN", "Ilocos Norte"),
-(4073, 1170, "ILS", "Ilocos Sur"),
-(4074, 1170, "ILI", "Iloilo"),
-(4075, 1170, "ISA", "Isabela"),
-(4076, 1170, "KAL", "Kalinga"),
-(4077, 1170, "LAG", "Laguna"),
-(4078, 1170, "LAN", "Lanao del Norte"),
-(4079, 1170, "LAS", "Lanao del Sur"),
-(4080, 1170, "LUN", "La Union"),
-(4081, 1170, "LEY", "Leyte"),
-(4082, 1170, "MAG", "Maguindanao"),
-(4083, 1170, "MAD", "Marinduque"),
-(4084, 1170, "MAS", "Masbate"),
-(4085, 1170, "MDC", "Mindoro Occidental"),
-(4086, 1170, "MDR", "Mindoro Oriental"),
-(4087, 1170, "MSC", "Misamis Occidental"),
-(4088, 1170, "MSR", "Misamis Oriental"),
-(4089, 1170, "MOU", "Mountain Province"),
-(4090, 1170, "NEC", "Negroe Occidental"),
-(4091, 1170, "NER", "Negros Oriental"),
-(4092, 1170, "NCO", "Cotabato"),
-(4093, 1170, "NSA", "Northern Samar"),
-(4094, 1170, "NUE", "Nueva Ecija"),
-(4095, 1170, "NUV", "Nueva Vizcaya"),
-(4096, 1170, "PLW", "Palawan"),
-(4097, 1170, "PAM", "Pampanga"),
-(4098, 1170, "PAN", "Pangasinan"),
-(4099, 1170, "QUE", "Quezon"),
-(4100, 1170, "QUI", "Quirino"),
-(4101, 1170, "RIZ", "Rizal"),
-(4102, 1170, "ROM", "Romblon"),
-(4103, 1170, "SAR", "Sarangani"),
-(4104, 1170, "SIG", "Siquijor"),
-(4105, 1170, "SOR", "Sorsogon"),
-(4106, 1170, "SCO", "South Cotabato"),
-(4107, 1170, "SLE", "Southern Leyte"),
-(4108, 1170, "SUK", "Sultan Kudarat"),
-(4109, 1170, "SLU", "Sulu"),
-(4110, 1170, "SUN", "Surigao del Norte"),
-(4111, 1170, "SUR", "Surigao del Sur"),
-(4112, 1170, "TAR", "Tarlac"),
-(4113, 1170, "TAW", "Tawi-Tawi"),
-(4114, 1170, "WSA", "Western Samar"),
-(4115, 1170, "ZMB", "Zambales"),
-(4116, 1170, "ZAN", "Zamboanga del Norte"),
-(4117, 1170, "ZAS", "Zamboanga del Sur"),
-(4118, 1170, "ZSI", "Zamboanga Sibiguey"),
-(4119, 1163, "IS", "Islamabad Federal Capital Area"),
-(4120, 1163, "BA", "Baluchistan"),
-(4121, 1163, "NW", "Khyber Pakhtun Khawa"),
-(4122, 1163, "SD", "Sindh"),
-(4123, 1163, "TA", "Federally Administered Tribal Areas"),
-(4124, 1163, "JK", "Azad Kashmir"),
-(4125, 1163, "NA", "Gilgit-Baltistan"),
-(4126, 1173, "01", "Aveiro"),
-(4127, 1173, "02", "Beja"),
-(4128, 1173, "03", "Braga"),
-(4129, 1173, "04", "Bragança"),
-(4130, 1173, "05", "Castelo Branco"),
-(4131, 1173, "06", "Coimbra"),
-(4132, 1173, "07", "Évora"),
-(4133, 1173, "08", "Faro"),
-(4134, 1173, "09", "Guarda"),
-(4135, 1173, "10", "Leiria"),
-(4136, 1173, "11", "Lisboa"),
-(4137, 1173, "12", "Portalegre"),
-(4138, 1173, "13", "Porto"),
-(4139, 1173, "14", "Santarém"),
-(4140, 1173, "15", "Setúbal"),
-(4141, 1173, "16", "Viana do Castelo"),
-(4142, 1173, "17", "Vila Real"),
-(4143, 1173, "18", "Viseu"),
-(4144, 1173, "20", "Região Autónoma dos Açores"),
-(4145, 1173, "30", "Região Autónoma da Madeira"),
-(4146, 1168, "ASU", "Asuncion"),
-(4147, 1168, "16", "Alto Paraguay"),
-(4148, 1168, "10", "Alto Parana"),
-(4149, 1168, "13", "Amambay"),
-(4150, 1168, "19", "Boqueron"),
-(4151, 1168, "5", "Caeguazu"),
-(4152, 1168, "6", "Caazapl"),
-(4153, 1168, "14", "Canindeyu"),
-(4154, 1168, "1", "Concepcion"),
-(4155, 1168, "3", "Cordillera"),
-(4156, 1168, "4", "Guaira"),
-(4157, 1168, "7", "Itapua"),
-(4158, 1168, "8", "Miaiones"),
-(4159, 1168, "12", "Neembucu"),
-(4160, 1168, "9", "Paraguari"),
-(4161, 1168, "15", "Presidente Hayes"),
-(4162, 1168, "2", "San Pedro"),
-(4163, 1175, "DA", "Ad Dawhah"),
-(4164, 1175, "GH", "Al Ghuwayriyah"),
-(4165, 1175, "JU", "Al Jumayliyah"),
-(4166, 1175, "KH", "Al Khawr"),
-(4167, 1175, "WA", "Al Wakrah"),
-(4168, 1175, "RA", "Ar Rayyan"),
-(4169, 1175, "JB", "Jariyan al Batnah"),
-(4170, 1175, "MS", "Madinat ash Shamal"),
-(4171, 1175, "US", "Umm Salal"),
-(4172, 1176, "B", "Bucuresti"),
-(4173, 1176, "AB", "Alba"),
-(4174, 1176, "AR", "Arad"),
-(4175, 1176, "AG", "ArgeÈ™"),
-(4176, 1176, "BC", "Bacău"),
-(4177, 1176, "BH", "Bihor"),
-(4178, 1176, "BN", "Bistrița-Năsăud"),
-(4179, 1176, "BT", "Botoșani"),
-(4180, 1176, "BV", "Brașov"),
-(4181, 1176, "BR", "Brăila"),
-(4182, 1176, "BZ", "Buzău"),
-(4183, 1176, "CS", "CaraÈ™-Severin"),
-(4184, 1176, "CL", "Călărași"),
-(4185, 1176, "CJ", "Cluj"),
-(4186, 1176, "CT", "Constanța"),
-(4187, 1176, "CV", "Covasna"),
-(4188, 1176, "DB", "Dâmbovița"),
-(4189, 1176, "DJ", "Dolj"),
-(4190, 1176, "GL", "Galați"),
-(4191, 1176, "GR", "Giurgiu"),
-(4192, 1176, "GJ", "Gorj"),
-(4193, 1176, "HR", "Harghita"),
-(4194, 1176, "HD", "Hunedoara"),
-(4195, 1176, "IL", "Ialomița"),
-(4196, 1176, "IS", "Iași"),
-(4197, 1176, "IF", "Ilfov"),
-(4198, 1176, "MM", "MaramureÈ™"),
-(4199, 1176, "MH", "Mehedinți"),
-(4200, 1176, "MS", "MureÈ™"),
-(4201, 1176, "NT", "NeamÈ›"),
-(4202, 1176, "OT", "Olt"),
-(4203, 1176, "PH", "Prahova"),
-(4204, 1176, "SM", "Satu Mare"),
-(4205, 1176, "SJ", "Sălaj"),
-(4206, 1176, "SB", "Sibiu"),
-(4207, 1176, "SV", "Suceava"),
-(4208, 1176, "TR", "Teleorman"),
-(4209, 1176, "TM", "TimiÈ™"),
-(4210, 1176, "TL", "Tulcea"),
-(4211, 1176, "VS", "Vaslui"),
-(4212, 1176, "VL", "Vâlcea"),
-(4213, 1176, "VN", "Vrancea"),
-(4214, 1177, "AD", "Adygeya, Respublika"),
-(4215, 1177, "AL", "Altay, Respublika"),
-(4216, 1177, "BA", "Bashkortostan, Respublika"),
-(4217, 1177, "BU", "Buryatiya, Respublika"),
-(4218, 1177, "CE", "Chechenskaya Respublika"),
-(4219, 1177, "CU", "Chuvashskaya Respublika"),
-(4220, 1177, "DA", "Dagestan, Respublika"),
-(4221, 1177, "IN", "Ingushskaya Respublika"),
-(4222, 1177, "KB", "Kabardino-Balkarskaya"),
-(4223, 1177, "KL", "Kalmykiya, Respublika"),
-(4224, 1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
-(4225, 1177, "KR", "Kareliya, Respublika"),
-(4226, 1177, "KK", "Khakasiya, Respublika"),
-(4227, 1177, "KO", "Komi, Respublika"),
-(4228, 1177, "ME", "Mariy El, Respublika"),
-(4229, 1177, "MO", "Mordoviya, Respublika"),
-(4230, 1177, "SA", "Sakha, Respublika [Yakutiya]"),
-(4231, 1177, "SE", "Severnaya Osetiya, Respublika"),
-(4232, 1177, "TA", "Tatarstan, Respublika"),
-(4233, 1177, "TY", "Tyva, Respublika [Tuva]"),
-(4234, 1177, "UD", "Udmurtskaya Respublika"),
-(4235, 1177, "ALT", "Altayskiy kray"),
-(4236, 1177, "KHA", "Khabarovskiy kray"),
-(4237, 1177, "KDA", "Krasnodarskiy kray"),
-(4238, 1177, "KYA", "Krasnoyarskiy kray"),
-(4239, 1177, "PRI", "Primorskiy kray"),
-(4240, 1177, "STA", "Stavropol\'skiy kray"),
-(4241, 1177, "AMU", "Amurskaya oblast\'"),
-(4242, 1177, "ARK", "Arkhangel\'skaya oblast\'"),
-(4243, 1177, "AST", "Astrakhanskaya oblast\'"),
-(4244, 1177, "BEL", "Belgorodskaya oblast\'"),
-(4245, 1177, "BRY", "Bryanskaya oblast\'"),
-(4246, 1177, "CHE", "Chelyabinskaya oblast\'"),
-(4247, 1177, "ZSK", "Zabaykalsky Krai\'"),
-(4248, 1177, "IRK", "Irkutskaya oblast\'"),
-(4249, 1177, "IVA", "Ivanovskaya oblast\'"),
-(4250, 1177, "KGD", "Kaliningradskaya oblast\'"),
-(4251, 1177, "KLU", "Kaluzhskaya oblast\'"),
-(4252, 1177, "KAM", "Kamchatka Krai\'"),
-(4253, 1177, "KEM", "Kemerovskaya oblast\'"),
-(4254, 1177, "KIR", "Kirovskaya oblast\'"),
-(4255, 1177, "KOS", "Kostromskaya oblast\'"),
-(4256, 1177, "KGN", "Kurganskaya oblast\'"),
-(4257, 1177, "KRS", "Kurskaya oblast\'"),
-(4258, 1177, "LEN", "Leningradskaya oblast\'"),
-(4259, 1177, "LIP", "Lipetskaya oblast\'"),
-(4260, 1177, "MAG", "Magadanskaya oblast\'"),
-(4261, 1177, "MOS", "Moskovskaya oblast\'"),
-(4262, 1177, "MUR", "Murmanskaya oblast\'"),
-(4263, 1177, "NIZ", "Nizhegorodskaya oblast\'"),
-(4264, 1177, "NGR", "Novgorodskaya oblast\'"),
-(4265, 1177, "NVS", "Novosibirskaya oblast\'"),
-(4266, 1177, "OMS", "Omskaya oblast\'"),
-(4267, 1177, "ORE", "Orenburgskaya oblast\'"),
-(4268, 1177, "ORL", "Orlovskaya oblast\'"),
-(4269, 1177, "PNZ", "Penzenskaya oblast\'"),
-(4270, 1177, "PEK", "Perm krai\'"),
-(4271, 1177, "PSK", "Pskovskaya oblast\'"),
-(4272, 1177, "ROS", "Rostovskaya oblast\'"),
-(4273, 1177, "RYA", "Ryazanskaya oblast\'"),
-(4274, 1177, "SAK", "Sakhalinskaya oblast\'"),
-(4275, 1177, "SAM", "Samarskaya oblast\'"),
-(4276, 1177, "SAR", "Saratovskaya oblast\'"),
-(4277, 1177, "SMO", "Smolenskaya oblast\'"),
-(4278, 1177, "SVE", "Sverdlovskaya oblast\'"),
-(4279, 1177, "TAM", "Tambovskaya oblast\'"),
-(4280, 1177, "TOM", "Tomskaya oblast\'"),
-(4281, 1177, "TUL", "Tul\'skaya oblast\'"),
-(4282, 1177, "TVE", "Tverskaya oblast\'"),
-(4283, 1177, "TYU", "Tyumenskaya oblast\'"),
-(4284, 1177, "ULY", "Ul\'yanovskaya oblast\'"),
-(4285, 1177, "VLA", "Vladimirskaya oblast\'"),
-(4286, 1177, "VGG", "Volgogradskaya oblast\'"),
-(4287, 1177, "VLG", "Vologodskaya oblast\'"),
-(4288, 1177, "VOR", "Voronezhskaya oblast\'"),
-(4289, 1177, "YAR", "Yaroslavskaya oblast\'"),
-(4290, 1177, "MOW", "Moskva"),
-(4291, 1177, "SPE", "Sankt-Peterburg"),
-(4292, 1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
-(4294, 1177, "CHU", "Chukotskiy avtonomnyy okrug"),
-(4296, 1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
-(4299, 1177, "NEN", "Nenetskiy avtonomnyy okrug"),
-(4302, 1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
-(4303, 1178, "C", "Butare"),
-(4304, 1178, "I", "Byumba"),
-(4305, 1178, "E", "Cyangugu"),
-(4306, 1178, "D", "Gikongoro"),
-(4307, 1178, "G", "Gisenyi"),
-(4308, 1178, "B", "Gitarama"),
-(4309, 1178, "J", "Kibungo"),
-(4310, 1178, "F", "Kibuye"),
-(4311, 1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
-(4312, 1178, "L", "Kigali-Ville Kigali Ngari"),
-(4313, 1178, "M", "Mutara"),
-(4314, 1178, "H", "Ruhengeri"),
-(4315, 1187, "11", "Al Bahah"),
-(4316, 1187, "08", "Al Hudud Ash Shamaliyah"),
-(4317, 1187, "12", "Al Jawf"),
-(4318, 1187, "03", "Al Madinah"),
-(4319, 1187, "05", "Al Qasim"),
-(4320, 1187, "01", "Ar Riyad"),
-(4321, 1187, "14", "Asir"),
-(4322, 1187, "06", "Ha\'il"),
-(4323, 1187, "09", "Jlzan"),
-(4324, 1187, "02", "Makkah"),
-(4325, 1187, "10", "Najran"),
-(4326, 1187, "07", "Tabuk"),
-(4327, 1194, "CT", "Capital Territory (Honiara)"),
-(4328, 1194, "GU", "Guadalcanal"),
-(4329, 1194, "IS", "Isabel"),
-(4330, 1194, "MK", "Makira"),
-(4331, 1194, "ML", "Malaita"),
-(4332, 1194, "TE", "Temotu"),
-(4333, 1200, "23", "A\'ali an Nil"),
-(4334, 1200, "26", "Al Bah al Ahmar"),
-(4335, 1200, "18", "Al Buhayrat"),
-(4336, 1200, "07", "Al Jazirah"),
-(4337, 1200, "03", "Al Khartum"),
-(4338, 1200, "06", "Al Qadarif"),
-(4339, 1200, "22", "Al Wahdah"),
-(4340, 1200, "04", "An Nil"),
-(4341, 1200, "08", "An Nil al Abyaq"),
-(4342, 1200, "24", "An Nil al Azraq"),
-(4343, 1200, "01", "Ash Shamallyah"),
-(4344, 1200, "17", "Bahr al Jabal"),
-(4345, 1200, "16", "Gharb al Istiwa\'iyah"),
-(4346, 1200, "14", "Gharb Ba~r al Ghazal"),
-(4347, 1200, "12", "Gharb Darfur"),
-(4348, 1200, "10", "Gharb Kurdufan"),
-(4349, 1200, "11", "Janub Darfur"),
-(4350, 1200, "13", "Janub Rurdufan"),
-(4351, 1200, "20", "Jnqall"),
-(4352, 1200, "05", "Kassala"),
-(4353, 1200, "15", "Shamal Batr al Ghazal"),
-(4354, 1200, "02", "Shamal Darfur"),
-(4355, 1200, "09", "Shamal Kurdufan"),
-(4356, 1200, "19", "Sharq al Istiwa\'iyah"),
-(4357, 1200, "25", "Sinnar"),
-(4358, 1200, "21", "Warab"),
-(4359, 1204, "K", "Blekinge län"),
-(4360, 1204, "W", "Dalarnas län"),
-(4361, 1204, "I", "Gotlands län"),
-(4362, 1204, "X", "Gävleborgs län"),
-(4363, 1204, "N", "Hallands län"),
-(4364, 1204, "Z", "Jämtlands län"),
-(4365, 1204, "F", "Jönkopings län"),
-(4366, 1204, "H", "Kalmar län"),
-(4367, 1204, "G", "Kronobergs län"),
-(4368, 1204, "BD", "Norrbottens län"),
-(4369, 1204, "M", "Skåne län"),
-(4370, 1204, "AB", "Stockholms län"),
-(4371, 1204, "D", "Södermanlands län"),
-(4372, 1204, "C", "Uppsala län"),
-(4373, 1204, "S", "Värmlands län"),
-(4374, 1204, "AC", "Västerbottens län"),
-(4375, 1204, "Y", "Västernorrlands län"),
-(4376, 1204, "U", "Västmanlands län"),
-(4377, 1204, "Q", "Västra Götalands län"),
-(4378, 1204, "T", "Örebro län"),
-(4379, 1204, "E", "Östergötlands län"),
-(4380, 1180, "SH", "Saint Helena"),
-(4381, 1180, "AC", "Ascension"),
-(4382, 1180, "TA", "Tristan da Cunha"),
-(4383, 1193, "001", "Ajdovščina"),
-(4384, 1193, "002", "Beltinci"),
-(4385, 1193, "148", "Benedikt"),
-(4386, 1193, "149", "Bistrica ob Sotli"),
-(4387, 1193, "003", "Bled"),
-(4388, 1193, "150", "Bloke"),
-(4389, 1193, "004", "Bohinj"),
-(4390, 1193, "005", "Borovnica"),
-(4391, 1193, "006", "Bovec"),
-(4392, 1193, "151", "Braslovče"),
-(4393, 1193, "007", "Brda"),
-(4394, 1193, "008", "Brezovica"),
-(4395, 1193, "009", "Brežice"),
-(4396, 1193, "152", "Cankova"),
-(4397, 1193, "011", "Celje"),
-(4398, 1193, "012", "Cerklje na Gorenjskem"),
-(4399, 1193, "013", "Cerknica"),
-(4400, 1193, "014", "Cerkno"),
-(4401, 1193, "153", "Cerkvenjak"),
-(4402, 1193, "015", "Črenšovci"),
-(4403, 1193, "016", "Črna na Koroškem"),
-(4404, 1193, "017", "ÄŒrnomelj"),
-(4405, 1193, "018", "Destrnik"),
-(4406, 1193, "019", "Divača"),
-(4407, 1193, "154", "Dobje"),
-(4408, 1193, "020", "Dobrepolje"),
-(4409, 1193, "155", "Dobrna"),
-(4410, 1193, "021", "Dobrova-Polhov Gradec"),
-(4411, 1193, "156", "Dobrovnik"),
-(4412, 1193, "022", "Dol pri Ljubljani"),
-(4413, 1193, "157", "Dolenjske Toplice"),
-(4414, 1193, "023", "Domžale"),
-(4415, 1193, "024", "Dornava"),
-(4416, 1193, "025", "Dravograd"),
-(4417, 1193, "026", "Duplek"),
-(4418, 1193, "027", "Gorenja vas-Poljane"),
-(4419, 1193, "028", "Gorišnica"),
-(4420, 1193, "029", "Gornja Radgona"),
-(4421, 1193, "030", "Gornji Grad"),
-(4422, 1193, "031", "Gornji Petrovci"),
-(4423, 1193, "158", "Grad"),
-(4424, 1193, "032", "Grosuplje"),
-(4425, 1193, "159", "Hajdina"),
-(4426, 1193, "160", "Hoče-Slivnica"),
-(4427, 1193, "161", "Hodoš"),
-(4428, 1193, "162", "Horjul"),
-(4429, 1193, "034", "Hrastnik"),
-(4430, 1193, "035", "Hrpelje-Kozina"),
-(4431, 1193, "036", "Idrija"),
-(4432, 1193, "037", "Ig"),
-(4433, 1193, "038", "Ilirska Bistrica"),
-(4434, 1193, "039", "Ivančna Gorica"),
-(4435, 1193, "040", "Izola"),
-(4436, 1193, "041", "Jesenice"),
-(4437, 1193, "163", "Jezersko"),
-(4438, 1193, "042", "Juršinci"),
-(4439, 1193, "043", "Kamnik"),
-(4440, 1193, "044", "Kanal"),
-(4441, 1193, "045", "Kidričevo"),
-(4442, 1193, "046", "Kobarid"),
-(4443, 1193, "047", "Kobilje"),
-(4444, 1193, "048", "Kočevje"),
-(4445, 1193, "049", "Komen"),
-(4446, 1193, "164", "Komenda"),
-(4447, 1193, "050", "Koper"),
-(4448, 1193, "165", "Kostel"),
-(4449, 1193, "051", "Kozje"),
-(4450, 1193, "052", "Kranj"),
-(4451, 1193, "053", "Kranjska Gora"),
-(4452, 1193, "166", "Križevci"),
-(4453, 1193, "054", "Krško"),
-(4454, 1193, "055", "Kungota"),
-(4455, 1193, "056", "Kuzma"),
-(4456, 1193, "057", "Laško"),
-(4457, 1193, "058", "Lenart"),
-(4458, 1193, "059", "Lendava"),
-(4459, 1193, "060", "Litija"),
-(4460, 1193, "061", "Ljubljana"),
-(4461, 1193, "062", "Ljubno"),
-(4462, 1193, "063", "Ljutomer"),
-(4463, 1193, "064", "Logatec"),
-(4464, 1193, "065", "Loška dolina"),
-(4465, 1193, "066", "Loški Potok"),
-(4466, 1193, "167", "Lovrenc na Pohorju"),
-(4467, 1193, "067", "Luče"),
-(4468, 1193, "068", "Lukovica"),
-(4469, 1193, "069", "Majšperk"),
-(4470, 1193, "070", "Maribor"),
-(4471, 1193, "168", "Markovci"),
-(4472, 1193, "071", "Medvode"),
-(4473, 1193, "072", "Mengeš"),
-(4474, 1193, "073", "Metlika"),
-(4475, 1193, "074", "Mežica"),
-(4476, 1193, "169", "Miklavž na Dravskem polju"),
-(4477, 1193, "075", "Miren-Kostanjevica"),
-(4478, 1193, "170", "Mirna Peč"),
-(4479, 1193, "076", "Mislinja"),
-(4480, 1193, "077", "Moravče"),
-(4481, 1193, "078", "Moravske Toplice"),
-(4482, 1193, "079", "Mozirje"),
-(4483, 1193, "080", "Murska Sobota"),
-(4484, 1193, "081", "Muta"),
-(4485, 1193, "082", "Naklo"),
-(4486, 1193, "083", "Nazarje"),
-(4487, 1193, "084", "Nova Gorica"),
-(4488, 1193, "085", "Novo mesto"),
-(4489, 1193, "181", "Sveta Ana"),
-(4490, 1193, "182", "Sveti Andraž v Slovenskih goricah"),
-(4491, 1193, "116", "Sveti Jurij"),
-(4492, 1193, "033", "Å alovci"),
-(4493, 1193, "183", "Å empeter-Vrtojba"),
-(4494, 1193, "117", "Šenčur"),
-(4495, 1193, "118", "Å entilj"),
-(4496, 1193, "119", "Å entjernej"),
-(4497, 1193, "120", "Å entjur"),
-(4498, 1193, "121", "Å kocjan"),
-(4499, 1193, "122", "Å kofja Loka"),
-(4500, 1193, "123", "Å kofljica"),
-(4501, 1193, "124", "Šmarje pri Jelšah"),
-(4502, 1193, "125", "Å martno ob Paki"),
-(4503, 1193, "194", "Å martno pri Litiji"),
-(4504, 1193, "126", "Šoštanj"),
-(4505, 1193, "127", "Å tore"),
-(4506, 1193, "184", "Tabor"),
-(4507, 1193, "010", "Tišina"),
-(4508, 1193, "128", "Tolmin"),
-(4509, 1193, "129", "Trbovlje"),
-(4510, 1193, "130", "Trebnje"),
-(4511, 1193, "185", "Trnovska vas"),
-(4512, 1193, "131", "Tržič"),
-(4513, 1193, "186", "Trzin"),
-(4514, 1193, "132", "Turnišče"),
-(4515, 1193, "133", "Velenje"),
-(4516, 1193, "187", "Velika Polana"),
-(4517, 1193, "134", "Velike Lašče"),
-(4518, 1193, "188", "Veržej"),
-(4519, 1193, "135", "Videm"),
-(4520, 1193, "136", "Vipava"),
-(4521, 1193, "137", "Vitanje"),
-(4522, 1193, "138", "Vojnik"),
-(4523, 1193, "189", "Vransko"),
-(4524, 1193, "140", "Vrhnika"),
-(4525, 1193, "141", "Vuzenica"),
-(4526, 1193, "142", "Zagorje ob Savi"),
-(4527, 1193, "143", "Zavrč"),
-(4528, 1193, "144", "Zreče"),
-(4529, 1193, "190", "Žalec"),
-(4530, 1193, "146", "Železniki"),
-(4531, 1193, "191", "Žetale"),
-(4532, 1193, "147", "Žiri"),
-(4533, 1193, "192", "Žirovnica"),
-(4534, 1193, "193", "Žužemberk"),
-(4535, 1192, "BC", "Banskobystrický kraj"),
-(4536, 1192, "BL", "Bratislavský kraj"),
-(4537, 1192, "KI", "Košický kraj"),
-(4538, 1192, "NJ", "Nitriansky kraj"),
-(4539, 1192, "PV", "Prešovský kraj"),
-(4540, 1192, "TC", "Trenčiansky kraj"),
-(4541, 1192, "TA", "Trnavský kraj"),
-(4542, 1192, "ZI", "Žilinský kraj"),
-(4543, 1190, "W", "Western Area (Freetown)"),
-(4544, 1188, "DK", "Dakar"),
-(4545, 1188, "DB", "Diourbel"),
-(4546, 1188, "FK", "Fatick"),
-(4547, 1188, "KL", "Kaolack"),
-(4548, 1188, "KD", "Kolda"),
-(4549, 1188, "LG", "Louga"),
-(4550, 1188, "MT", "Matam"),
-(4551, 1188, "SL", "Saint-Louis"),
-(4552, 1188, "TC", "Tambacounda"),
-(4553, 1188, "TH", "Thies"),
-(4554, 1188, "ZG", "Ziguinchor"),
-(4555, 1195, "AW", "Awdal"),
-(4556, 1195, "BK", "Bakool"),
-(4557, 1195, "BN", "Banaadir"),
-(4558, 1195, "BY", "Bay"),
-(4559, 1195, "GA", "Galguduud"),
-(4560, 1195, "GE", "Gedo"),
-(4561, 1195, "HI", "Hiirsan"),
-(4562, 1195, "JD", "Jubbada Dhexe"),
-(4563, 1195, "JH", "Jubbada Hoose"),
-(4564, 1195, "MU", "Mudug"),
-(4565, 1195, "NU", "Nugaal"),
-(4566, 1195, "SA", "Saneag"),
-(4567, 1195, "SD", "Shabeellaha Dhexe"),
-(4568, 1195, "SH", "Shabeellaha Hoose"),
-(4569, 1195, "SO", "Sool"),
-(4570, 1195, "TO", "Togdheer"),
-(4571, 1195, "WO", "Woqooyi Galbeed"),
-(4572, 1201, "BR", "Brokopondo"),
-(4573, 1201, "CM", "Commewijne"),
-(4574, 1201, "CR", "Coronie"),
-(4575, 1201, "MA", "Marowijne"),
-(4576, 1201, "NI", "Nickerie"),
-(4577, 1201, "PM", "Paramaribo"),
-(4578, 1201, "SA", "Saramacca"),
-(4579, 1201, "SI", "Sipaliwini"),
-(4580, 1201, "WA", "Wanica"),
-(4581, 1207, "P", "Principe"),
-(4582, 1207, "S", "Sao Tome"),
-(4583, 1066, "AH", "Ahuachapan"),
-(4584, 1066, "CA", "Cabanas"),
-(4585, 1066, "CU", "Cuscatlan"),
-(4586, 1066, "CH", "Chalatenango"),
-(4587, 1066, "MO", "Morazan"),
-(4588, 1066, "SM", "San Miguel"),
-(4589, 1066, "SS", "San Salvador"),
-(4590, 1066, "SA", "Santa Ana"),
-(4591, 1066, "SV", "San Vicente"),
-(4592, 1066, "SO", "Sonsonate"),
-(4593, 1066, "US", "Usulutan"),
-(4594, 1206, "HA", "Al Hasakah"),
-(4595, 1206, "LA", "Al Ladhiqiyah"),
-(4596, 1206, "QU", "Al Qunaytirah"),
-(4597, 1206, "RA", "Ar Raqqah"),
-(4598, 1206, "SU", "As Suwayda\'"),
-(4599, 1206, "DR", "Dar\'a"),
-(4600, 1206, "DY", "Dayr az Zawr"),
-(4601, 1206, "DI", "Dimashq"),
-(4602, 1206, "HL", "Halab"),
-(4603, 1206, "HM", "Hamah"),
-(4604, 1206, "HI", "Jim\'"),
-(4605, 1206, "ID", "Idlib"),
-(4606, 1206, "RD", "Rif Dimashq"),
-(4607, 1206, "TA", "Tarts"),
-(4608, 1203, "HH", "Hhohho"),
-(4609, 1203, "LU", "Lubombo"),
-(4610, 1203, "MA", "Manzini"),
-(4611, 1203, "SH", "Shiselweni"),
-(4612, 1043, "BA", "Batha"),
-(4613, 1043, "BI", "Biltine"),
-(4614, 1043, "BET", "Borkou-Ennedi-Tibesti"),
-(4615, 1043, "CB", "Chari-Baguirmi"),
-(4616, 1043, "GR", "Guera"),
-(4617, 1043, "KA", "Kanem"),
-(4618, 1043, "LC", "Lac"),
-(4619, 1043, "LO", "Logone-Occidental"),
-(4620, 1043, "LR", "Logone-Oriental"),
-(4621, 1043, "MK", "Mayo-Kebbi"),
-(4622, 1043, "MC", "Moyen-Chari"),
-(4623, 1043, "OD", "Ouaddai"),
-(4624, 1043, "SA", "Salamat"),
-(4625, 1043, "TA", "Tandjile"),
-(4626, 1214, "K", "Kara"),
-(4627, 1214, "M", "Maritime (Region)"),
-(4628, 1214, "S", "Savannes"),
-(4629, 1211, "10", "Krung Thep Maha Nakhon Bangkok"),
-(4630, 1211, "S", "Phatthaya"),
-(4631, 1211, "37", "Amnat Charoen"),
-(4632, 1211, "15", "Ang Thong"),
-(4633, 1211, "31", "Buri Ram"),
-(4634, 1211, "24", "Chachoengsao"),
-(4635, 1211, "18", "Chai Nat"),
-(4636, 1211, "36", "Chaiyaphum"),
-(4637, 1211, "22", "Chanthaburi"),
-(4638, 1211, "50", "Chiang Mai"),
-(4639, 1211, "57", "Chiang Rai"),
-(4640, 1211, "20", "Chon Buri"),
-(4641, 1211, "86", "Chumphon"),
-(4642, 1211, "46", "Kalasin"),
-(4643, 1211, "62", "Kamphasng Phet"),
-(4644, 1211, "71", "Kanchanaburi"),
-(4645, 1211, "40", "Khon Kaen"),
-(4646, 1211, "81", "Krabi"),
-(4647, 1211, "52", "Lampang"),
-(4648, 1211, "51", "Lamphun"),
-(4649, 1211, "42", "Loei"),
-(4650, 1211, "16", "Lop Buri"),
-(4651, 1211, "58", "Mae Hong Son"),
-(4652, 1211, "44", "Maha Sarakham"),
-(4653, 1211, "49", "Mukdahan"),
-(4654, 1211, "26", "Nakhon Nayok"),
-(4655, 1211, "73", "Nakhon Pathom"),
-(4656, 1211, "48", "Nakhon Phanom"),
-(4657, 1211, "30", "Nakhon Ratchasima"),
-(4658, 1211, "60", "Nakhon Sawan"),
-(4659, 1211, "80", "Nakhon Si Thammarat"),
-(4660, 1211, "55", "Nan"),
-(4661, 1211, "96", "Narathiwat"),
-(4662, 1211, "39", "Nong Bua Lam Phu"),
-(4663, 1211, "43", "Nong Khai"),
-(4664, 1211, "12", "Nonthaburi"),
-(4665, 1211, "13", "Pathum Thani"),
-(4666, 1211, "94", "Pattani"),
-(4667, 1211, "82", "Phangnga"),
-(4668, 1211, "93", "Phatthalung"),
-(4669, 1211, "56", "Phayao"),
-(4670, 1211, "67", "Phetchabun"),
-(4671, 1211, "76", "Phetchaburi"),
-(4672, 1211, "66", "Phichit"),
-(4673, 1211, "65", "Phitsanulok"),
-(4674, 1211, "54", "Phrae"),
-(4675, 1211, "14", "Phra Nakhon Si Ayutthaya"),
-(4676, 1211, "83", "Phuket"),
-(4677, 1211, "25", "Prachin Buri"),
-(4678, 1211, "77", "Prachuap Khiri Khan"),
-(4679, 1211, "85", "Ranong"),
-(4680, 1211, "70", "Ratchaburi"),
-(4681, 1211, "21", "Rayong"),
-(4682, 1211, "45", "Roi Et"),
-(4683, 1211, "27", "Sa Kaeo"),
-(4684, 1211, "47", "Sakon Nakhon"),
-(4685, 1211, "11", "Samut Prakan"),
-(4686, 1211, "74", "Samut Sakhon"),
-(4687, 1211, "75", "Samut Songkhram"),
-(4688, 1211, "19", "Saraburi"),
-(4689, 1211, "91", "Satun"),
-(4690, 1211, "17", "Sing Buri"),
-(4691, 1211, "33", "Si Sa Ket"),
-(4692, 1211, "90", "Songkhla"),
-(4693, 1211, "64", "Sukhothai"),
-(4694, 1211, "72", "Suphan Buri"),
-(4695, 1211, "84", "Surat Thani"),
-(4696, 1211, "32", "Surin"),
-(4697, 1211, "63", "Tak"),
-(4698, 1211, "92", "Trang"),
-(4699, 1211, "23", "Trat"),
-(4700, 1211, "34", "Ubon Ratchathani"),
-(4701, 1211, "41", "Udon Thani"),
-(4702, 1211, "61", "Uthai Thani"),
-(4703, 1211, "53", "Uttaradit"),
-(4704, 1211, "95", "Yala"),
-(4705, 1211, "35", "Yasothon"),
-(4706, 1209, "SU", "Sughd"),
-(4707, 1209, "KT", "Khatlon"),
-(4708, 1209, "GB", "Gorno-Badakhshan"),
-(4709, 1220, "A", "Ahal"),
-(4710, 1220, "B", "Balkan"),
-(4711, 1220, "D", "Dasoguz"),
-(4712, 1220, "L", "Lebap"),
-(4713, 1220, "M", "Mary"),
-(4714, 1218, "31", "Béja"),
-(4715, 1218, "13", "Ben Arous"),
-(4716, 1218, "23", "Bizerte"),
-(4717, 1218, "81", "Gabès"),
-(4718, 1218, "71", "Gafsa"),
-(4719, 1218, "32", "Jendouba"),
-(4720, 1218, "41", "Kairouan"),
-(4721, 1218, "42", "Rasserine"),
-(4722, 1218, "73", "Kebili"),
-(4723, 1218, "12", "L\'Ariana"),
-(4724, 1218, "33", "Le Ref"),
-(4725, 1218, "53", "Mahdia"),
-(4726, 1218, "14", "La Manouba"),
-(4727, 1218, "82", "Medenine"),
-(4728, 1218, "52", "Moneatir"),
-(4729, 1218, "21", "Naboul"),
-(4730, 1218, "61", "Sfax"),
-(4731, 1218, "43", "Sidi Bouxid"),
-(4732, 1218, "34", "Siliana"),
-(4733, 1218, "51", "Sousse"),
-(4734, 1218, "83", "Tataouine"),
-(4735, 1218, "72", "Tozeur"),
-(4736, 1218, "11", "Tunis"),
-(4737, 1218, "22", "Zaghouan"),
-(4738, 1219, "01", "Adana"),
-(4739, 1219, "02", "Ad yaman"),
-(4740, 1219, "03", "Afyon"),
-(4741, 1219, "04", "Ag r"),
-(4742, 1219, "68", "Aksaray"),
-(4743, 1219, "05", "Amasya"),
-(4744, 1219, "06", "Ankara"),
-(4745, 1219, "07", "Antalya"),
-(4746, 1219, "75", "Ardahan"),
-(4747, 1219, "08", "Artvin"),
-(4748, 1219, "09", "Aydin"),
-(4749, 1219, "10", "Bal kesir"),
-(4750, 1219, "74", "Bartin"),
-(4751, 1219, "72", "Batman"),
-(4752, 1219, "69", "Bayburt"),
-(4753, 1219, "11", "Bilecik"),
-(4754, 1219, "12", "Bingol"),
-(4755, 1219, "13", "Bitlis"),
-(4756, 1219, "14", "Bolu"),
-(4757, 1219, "15", "Burdur"),
-(4758, 1219, "16", "Bursa"),
-(4759, 1219, "17", "Canakkale"),
-(4760, 1219, "18", "Cankir"),
-(4761, 1219, "19", "Corum"),
-(4762, 1219, "20", "Denizli"),
-(4763, 1219, "21", "Diyarbakir"),
-(4764, 1219, "81", "Duzce"),
-(4765, 1219, "22", "Edirne"),
-(4766, 1219, "23", "Elazig"),
-(4767, 1219, "24", "Erzincan"),
-(4768, 1219, "25", "Erzurum"),
-(4769, 1219, "26", "Eskis\'ehir"),
-(4770, 1219, "27", "Gaziantep"),
-(4771, 1219, "28", "Giresun"),
-(4772, 1219, "29", "Gms\'hane"),
-(4773, 1219, "30", "Hakkari"),
-(4774, 1219, "31", "Hatay"),
-(4775, 1219, "76", "Igidir"),
-(4776, 1219, "32", "Isparta"),
-(4777, 1219, "33", "Icel"),
-(4778, 1219, "34", "Istanbul"),
-(4779, 1219, "35", "Izmir"),
-(4780, 1219, "46", "Kahramanmaras"),
-(4781, 1219, "78", "Karabk"),
-(4782, 1219, "70", "Karaman"),
-(4783, 1219, "36", "Kars"),
-(4784, 1219, "37", "Kastamonu"),
-(4785, 1219, "38", "Kayseri"),
-(4786, 1219, "71", "Kirikkale"),
-(4787, 1219, "39", "Kirklareli"),
-(4788, 1219, "40", "Kirs\'ehir"),
-(4789, 1219, "79", "Kilis"),
-(4790, 1219, "41", "Kocaeli"),
-(4791, 1219, "42", "Konya"),
-(4792, 1219, "43", "Ktahya"),
-(4793, 1219, "44", "Malatya"),
-(4794, 1219, "45", "Manisa"),
-(4795, 1219, "47", "Mardin"),
-(4796, 1219, "48", "Mugila"),
-(4797, 1219, "49", "Mus"),
-(4798, 1219, "50", "Nevs\'ehir"),
-(4799, 1219, "51", "Nigide"),
-(4800, 1219, "52", "Ordu"),
-(4801, 1219, "80", "Osmaniye"),
-(4802, 1219, "53", "Rize"),
-(4803, 1219, "54", "Sakarya"),
-(4804, 1219, "55", "Samsun"),
-(4805, 1219, "56", "Siirt"),
-(4806, 1219, "57", "Sinop"),
-(4807, 1219, "58", "Sivas"),
-(4808, 1219, "63", "S\'anliurfa"),
-(4809, 1219, "73", "S\'rnak"),
-(4810, 1219, "59", "Tekirdag"),
-(4811, 1219, "60", "Tokat"),
-(4812, 1219, "61", "Trabzon"),
-(4813, 1219, "62", "Tunceli"),
-(4814, 1219, "64", "Us\'ak"),
-(4815, 1219, "65", "Van"),
-(4816, 1219, "77", "Yalova"),
-(4817, 1219, "66", "Yozgat"),
-(4818, 1219, "67", "Zonguldak"),
-(4819, 1217, "CTT", "Couva-Tabaquite-Talparo"),
-(4820, 1217, "DMN", "Diego Martin"),
-(4821, 1217, "ETO", "Eastern Tobago"),
-(4822, 1217, "PED", "Penal-Debe"),
-(4823, 1217, "PRT", "Princes Town"),
-(4824, 1217, "RCM", "Rio Claro-Mayaro"),
-(4825, 1217, "SGE", "Sangre Grande"),
-(4826, 1217, "SJL", "San Juan-Laventille"),
-(4827, 1217, "SIP", "Siparia"),
-(4828, 1217, "TUP", "Tunapuna-Piarco"),
-(4829, 1217, "WTO", "Western Tobago"),
-(4830, 1217, "ARI", "Arima"),
-(4831, 1217, "CHA", "Chaguanas"),
-(4832, 1217, "PTF", "Point Fortin"),
-(4833, 1217, "POS", "Port of Spain"),
-(4834, 1217, "SFO", "San Fernando"),
-(4835, 1063, "AL", "Aileu"),
-(4836, 1063, "AN", "Ainaro"),
-(4837, 1063, "BA", "Bacucau"),
-(4838, 1063, "BO", "Bobonaro"),
-(4839, 1063, "CO", "Cova Lima"),
-(4840, 1063, "DI", "Dili"),
-(4841, 1063, "ER", "Ermera"),
-(4842, 1063, "LA", "Laulem"),
-(4843, 1063, "LI", "Liquica"),
-(4844, 1063, "MT", "Manatuto"),
-(4845, 1063, "MF", "Manafahi"),
-(4846, 1063, "OE", "Oecussi"),
-(4847, 1063, "VI", "Viqueque"),
-(4848, 1208, "CHA", "Changhua County"),
-(4849, 1208, "CYQ", "Chiayi County"),
-(4850, 1208, "HSQ", "Hsinchu County"),
-(4851, 1208, "HUA", "Hualien County"),
-(4852, 1208, "ILA", "Ilan County"),
-(4853, 1208, "KHQ", "Kaohsiung County"),
-(4854, 1208, "MIA", "Miaoli County"),
-(4855, 1208, "NAN", "Nantou County"),
-(4856, 1208, "PEN", "Penghu County"),
-(4857, 1208, "PIF", "Pingtung County"),
-(4858, 1208, "TXQ", "Taichung County"),
-(4859, 1208, "TNQ", "Tainan County"),
-(4860, 1208, "TPQ", "Taipei County"),
-(4861, 1208, "TTT", "Taitung County"),
-(4862, 1208, "TAO", "Taoyuan County"),
-(4863, 1208, "YUN", "Yunlin County"),
-(4864, 1208, "KEE", "Keelung City"),
-(4865, 1210, "01", "Arusha"),
-(4866, 1210, "02", "Dar-es-Salaam"),
-(4867, 1210, "03", "Dodoma"),
-(4868, 1210, "04", "Iringa"),
-(4869, 1210, "05", "Kagera"),
-(4870, 1210, "06", "Kaskazini Pemba"),
-(4871, 1210, "07", "Kaskazini Unguja"),
-(4872, 1210, "08", "Xigoma"),
-(4873, 1210, "09", "Kilimanjaro"),
-(4874, 1210, "10", "Rusini Pemba"),
-(4875, 1210, "11", "Kusini Unguja"),
-(4876, 1210, "12", "Lindi"),
-(4877, 1210, "26", "Manyara"),
-(4878, 1210, "13", "Mara"),
-(4879, 1210, "14", "Mbeya"),
-(4880, 1210, "15", "Mjini Magharibi"),
-(4881, 1210, "16", "Morogoro"),
-(4882, 1210, "17", "Mtwara"),
-(4883, 1210, "19", "Pwani"),
-(4884, 1210, "20", "Rukwa"),
-(4885, 1210, "21", "Ruvuma"),
-(4886, 1210, "22", "Shinyanga"),
-(4887, 1210, "23", "Singida"),
-(4888, 1210, "24", "Tabora"),
-(4889, 1210, "25", "Tanga"),
-(4890, 1224, "71", "Cherkas\'ka Oblast\'"),
-(4891, 1224, "74", "Chernihivs\'ka Oblast\'"),
-(4892, 1224, "77", "Chernivets\'ka Oblast\'"),
-(4893, 1224, "12", "Dnipropetrovs\'ka Oblast\'"),
-(4894, 1224, "14", "Donets\'ka Oblast\'"),
-(4895, 1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
-(4896, 1224, "63", "Kharkivs\'ka Oblast\'"),
-(4897, 1224, "65", "Khersons\'ka Oblast\'"),
-(4898, 1224, "68", "Khmel\'nyts\'ka Oblast\'"),
-(4899, 1224, "35", "Kirovohrads\'ka Oblast\'"),
-(4900, 1224, "32", "Kyivs\'ka Oblast\'"),
-(4901, 1224, "09", "Luhans\'ka Oblast\'"),
-(4902, 1224, "46", "L\'vivs\'ka Oblast\'"),
-(4903, 1224, "48", "Mykolaivs\'ka Oblast\'"),
-(4904, 1224, "51", "Odes \'ka Oblast\'"),
-(4905, 1224, "53", "Poltavs\'ka Oblast\'"),
-(4906, 1224, "56", "Rivnens\'ka Oblast\'"),
-(4907, 1224, "59", "Sums \'ka Oblast\'"),
-(4908, 1224, "61", "Ternopil\'s\'ka Oblast\'"),
-(4909, 1224, "05", "Vinnyts\'ka Oblast\'"),
-(4910, 1224, "07", "Volyos\'ka Oblast\'"),
-(4911, 1224, "21", "Zakarpats\'ka Oblast\'"),
-(4912, 1224, "23", "Zaporiz\'ka Oblast\'"),
-(4913, 1224, "18", "Zhytomyrs\'ka Oblast\'"),
-(4914, 1224, "43", "Respublika Krym"),
-(4915, 1224, "30", "Kyiv"),
-(4916, 1224, "40", "Sevastopol"),
-(4917, 1223, "301", "Adjumani"),
-(4918, 1223, "302", "Apac"),
-(4919, 1223, "303", "Arua"),
-(4920, 1223, "201", "Bugiri"),
-(4921, 1223, "401", "Bundibugyo"),
-(4922, 1223, "402", "Bushenyi"),
-(4923, 1223, "202", "Busia"),
-(4924, 1223, "304", "Gulu"),
-(4925, 1223, "403", "Hoima"),
-(4926, 1223, "203", "Iganga"),
-(4927, 1223, "204", "Jinja"),
-(4928, 1223, "404", "Kabale"),
-(4929, 1223, "405", "Kabarole"),
-(4930, 1223, "213", "Kaberamaido"),
-(4931, 1223, "101", "Kalangala"),
-(4932, 1223, "102", "Kampala"),
-(4933, 1223, "205", "Kamuli"),
-(4934, 1223, "413", "Kamwenge"),
-(4935, 1223, "414", "Kanungu"),
-(4936, 1223, "206", "Kapchorwa"),
-(4937, 1223, "406", "Kasese"),
-(4938, 1223, "207", "Katakwi"),
-(4939, 1223, "112", "Kayunga"),
-(4940, 1223, "407", "Kibaale"),
-(4941, 1223, "103", "Kiboga"),
-(4942, 1223, "408", "Kisoro"),
-(4943, 1223, "305", "Kitgum"),
-(4944, 1223, "306", "Kotido"),
-(4945, 1223, "208", "Kumi"),
-(4946, 1223, "415", "Kyenjojo"),
-(4947, 1223, "307", "Lira"),
-(4948, 1223, "104", "Luwero"),
-(4949, 1223, "105", "Masaka"),
-(4950, 1223, "409", "Masindi"),
-(4951, 1223, "214", "Mayuge"),
-(4952, 1223, "209", "Mbale"),
-(4953, 1223, "410", "Mbarara"),
-(4954, 1223, "308", "Moroto"),
-(4955, 1223, "309", "Moyo"),
-(4956, 1223, "106", "Mpigi"),
-(4957, 1223, "107", "Mubende"),
-(4958, 1223, "108", "Mukono"),
-(4959, 1223, "311", "Nakapiripirit"),
-(4960, 1223, "109", "Nakasongola"),
-(4961, 1223, "310", "Nebbi"),
-(4962, 1223, "411", "Ntungamo"),
-(4963, 1223, "312", "Pader"),
-(4964, 1223, "210", "Pallisa"),
-(4965, 1223, "110", "Rakai"),
-(4966, 1223, "412", "Rukungiri"),
-(4967, 1223, "111", "Sembabule"),
-(4968, 1223, "215", "Sironko"),
-(4969, 1223, "211", "Soroti"),
-(4970, 1223, "212", "Tororo"),
-(4971, 1223, "113", "Wakiso"),
-(4972, 1223, "313", "Yumbe"),
-(4973, 1227, "81", "Baker Island"),
-(4974, 1227, "84", "Howland Island"),
-(4975, 1227, "86", "Jarvis Island"),
-(4976, 1227, "67", "Johnston Atoll"),
-(4977, 1227, "89", "Kingman Reef"),
-(4978, 1227, "71", "Midway Islands"),
-(4979, 1227, "76", "Navassa Island"),
-(4980, 1227, "95", "Palmyra Atoll"),
-(4981, 1227, "79", "Wake Island"),
-(4982, 1229, "AR", "Artigsa"),
-(4983, 1229, "CA", "Canelones"),
-(4984, 1229, "CL", "Cerro Largo"),
-(4985, 1229, "CO", "Colonia"),
-(4986, 1229, "DU", "Durazno"),
-(4987, 1229, "FS", "Flores"),
-(4988, 1229, "LA", "Lavalleja"),
-(4989, 1229, "MA", "Maldonado"),
-(4990, 1229, "MO", "Montevideo"),
-(4991, 1229, "PA", "Paysandu"),
-(4992, 1229, "RV", "Rivera"),
-(4993, 1229, "RO", "Rocha"),
-(4994, 1229, "SA", "Salto"),
-(4995, 1229, "SO", "Soriano"),
-(4996, 1229, "TA", "Tacuarembo"),
-(4997, 1229, "TT", "Treinta y Tres"),
-(4998, 1230, "TK", "Toshkent (city)"),
-(4999, 1230, "QR", "Qoraqalpogiston Respublikasi"),
-(5000, 1230, "AN", "Andijon"),
-(5001, 1230, "BU", "Buxoro"),
-(5002, 1230, "FA", "Farg\'ona"),
-(5003, 1230, "JI", "Jizzax"),
-(5004, 1230, "KH", "Khorazm"),
-(5005, 1230, "NG", "Namangan"),
-(5006, 1230, "NW", "Navoiy"),
-(5007, 1230, "QA", "Qashqadaryo"),
-(5008, 1230, "SA", "Samarqand"),
-(5009, 1230, "SI", "Sirdaryo"),
-(5010, 1230, "SU", "Surxondaryo"),
-(5011, 1230, "TO", "Toshkent"),
-(5012, 1230, "XO", "Xorazm"),
-(5013, 1232, "A", "Distrito Federal"),
-(5014, 1232, "B", "Anzoategui"),
-(5015, 1232, "C", "Apure"),
-(5016, 1232, "D", "Aragua"),
-(5017, 1232, "E", "Barinas"),
-(5018, 1232, "G", "Carabobo"),
-(5019, 1232, "H", "Cojedes"),
-(5020, 1232, "I", "Falcon"),
-(5021, 1232, "J", "Guarico"),
-(5022, 1232, "K", "Lara"),
-(5023, 1232, "L", "Merida"),
-(5024, 1232, "M", "Miranda"),
-(5025, 1232, "N", "Monagas"),
-(5026, 1232, "O", "Nueva Esparta"),
-(5027, 1232, "P", "Portuguesa"),
-(5028, 1232, "S", "Tachira"),
-(5029, 1232, "T", "Trujillo"),
-(5030, 1232, "X", "Vargas"),
-(5031, 1232, "U", "Yaracuy"),
-(5032, 1232, "V", "Zulia"),
-(5033, 1232, "Y", "Delta Amacuro"),
-(5034, 1232, "W", "Dependencias Federales"),
-(5035, 1233, "44", "An Giang"),
-(5036, 1233, "43", "Ba Ria - Vung Tau"),
-(5037, 1233, "53", "Bac Can"),
-(5038, 1233, "54", "Bac Giang"),
-(5039, 1233, "55", "Bac Lieu"),
-(5040, 1233, "56", "Bac Ninh"),
-(5041, 1233, "50", "Ben Tre"),
-(5042, 1233, "31", "Binh Dinh"),
-(5043, 1233, "57", "Binh Duong"),
-(5044, 1233, "58", "Binh Phuoc"),
-(5045, 1233, "40", "Binh Thuan"),
-(5046, 1233, "59", "Ca Mau"),
-(5047, 1233, "48", "Can Tho"),
-(5048, 1233, "04", "Cao Bang"),
-(5049, 1233, "60", "Da Nang, thanh pho"),
-(5050, 1233, "39", "Dong Nai"),
-(5051, 1233, "45", "Dong Thap"),
-(5052, 1233, "30", "Gia Lai"),
-(5053, 1233, "03", "Ha Giang"),
-(5054, 1233, "63", "Ha Nam"),
-(5055, 1233, "64", "Ha Noi, thu do"),
-(5056, 1233, "15", "Ha Tay"),
-(5057, 1233, "23", "Ha Tinh"),
-(5058, 1233, "61", "Hai Duong"),
-(5059, 1233, "62", "Hai Phong, thanh pho"),
-(5060, 1233, "14", "Hoa Binh"),
-(5061, 1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
-(5062, 1233, "66", "Hung Yen"),
-(5063, 1233, "34", "Khanh Hoa"),
-(5064, 1233, "47", "Kien Giang"),
-(5065, 1233, "28", "Kon Tum"),
-(5066, 1233, "01", "Lai Chau"),
-(5067, 1233, "35", "Lam Dong"),
-(5068, 1233, "09", "Lang Son"),
-(5069, 1233, "02", "Lao Cai"),
-(5070, 1233, "41", "Long An"),
-(5071, 1233, "67", "Nam Dinh"),
-(5072, 1233, "22", "Nghe An"),
-(5073, 1233, "18", "Ninh Binh"),
-(5074, 1233, "36", "Ninh Thuan"),
-(5075, 1233, "68", "Phu Tho"),
-(5076, 1233, "32", "Phu Yen"),
-(5077, 1233, "24", "Quang Binh"),
-(5078, 1233, "27", "Quang Nam"),
-(5079, 1233, "29", "Quang Ngai"),
-(5080, 1233, "13", "Quang Ninh"),
-(5081, 1233, "25", "Quang Tri"),
-(5082, 1233, "52", "Soc Trang"),
-(5083, 1233, "05", "Son La"),
-(5084, 1233, "37", "Tay Ninh"),
-(5085, 1233, "20", "Thai Binh"),
-(5086, 1233, "69", "Thai Nguyen"),
-(5087, 1233, "21", "Thanh Hoa"),
-(5088, 1233, "26", "Thua Thien-Hue"),
-(5089, 1233, "46", "Tien Giang"),
-(5090, 1233, "51", "Tra Vinh"),
-(5091, 1233, "07", "Tuyen Quang"),
-(5092, 1233, "49", "Vinh Long"),
-(5093, 1233, "70", "Vinh Phuc"),
-(5094, 1233, "06", "Yen Bai"),
-(5095, 1231, "MAP", "Malampa"),
-(5096, 1231, "PAM", "Penama"),
-(5097, 1231, "SAM", "Sanma"),
-(5098, 1231, "SEE", "Shefa"),
-(5099, 1231, "TAE", "Tafea"),
-(5100, 1231, "TOB", "Torba"),
-(5101, 1185, "AA", "A\'ana"),
-(5102, 1185, "AL", "Aiga-i-le-Tai"),
-(5103, 1185, "AT", "Atua"),
-(5104, 1185, "FA", "Fa\'aaaleleaga"),
-(5105, 1185, "GE", "Gaga\'emauga"),
-(5106, 1185, "GI", "Gagaifomauga"),
-(5107, 1185, "PA", "Palauli"),
-(5108, 1185, "SA", "Satupa\'itea"),
-(5109, 1185, "TU", "Tuamasaga"),
-(5110, 1185, "VF", "Va\'a-o-Fonoti"),
-(5111, 1185, "VS", "Vaisigano"),
-(5112, 1243, "CG", "Crna Gora"),
-(5113, 1242, "SR", "Srbija"),
-(5114, 1242, "KM", "Kosovo-Metohija"),
-(5115, 1242, "VO", "Vojvodina"),
-(5116, 1237, "AB", "Abyan"),
-(5117, 1237, "AD", "Adan"),
-(5118, 1237, "DA", "Ad Dali"),
-(5119, 1237, "BA", "Al Bayda\'"),
-(5120, 1237, "MU", "Al Hudaydah"),
-(5121, 1237, "MR", "Al Mahrah"),
-(5122, 1237, "MW", "Al Mahwit"),
-(5123, 1237, "AM", "Amran"),
-(5124, 1237, "DH", "Dhamar"),
-(5125, 1237, "HD", "Hadramawt"),
-(5126, 1237, "HJ", "Hajjah"),
-(5127, 1237, "IB", "Ibb"),
-(5128, 1237, "LA", "Lahij"),
-(5129, 1237, "MA", "Ma\'rib"),
-(5130, 1237, "SD", "Sa\'dah"),
-(5131, 1237, "SN", "San\'a\'"),
-(5132, 1237, "SH", "Shabwah"),
-(5133, 1237, "TA", "Ta\'izz"),
-(5134, 1196, "EC", "Eastern Cape"),
-(5135, 1196, "FS", "Free State"),
-(5136, 1196, "GT", "Gauteng"),
-(5137, 1196, "NL", "Kwazulu-Natal"),
-(5138, 1196, "MP", "Mpumalanga"),
-(5139, 1196, "NC", "Northern Cape"),
-(5140, 1196, "NP", "Limpopo"),
-(5141, 1196, "WC", "Western Cape"),
-(5142, 1239, "08", "Copperbelt"),
-(5143, 1239, "04", "Luapula"),
-(5144, 1239, "09", "Lusaka"),
-(5145, 1239, "06", "North-Western"),
-(5146, 1240, "BU", "Bulawayo"),
-(5147, 1240, "HA", "Harare"),
-(5148, 1240, "MA", "Manicaland"),
-(5149, 1240, "MC", "Mashonaland Central"),
-(5150, 1240, "ME", "Mashonaland East"),
-(5151, 1240, "MW", "Mashonaland West"),
-(5152, 1240, "MV", "Masvingo"),
-(5153, 1240, "MN", "Matabeleland North"),
-(5154, 1240, "MS", "Matabeleland South"),
-(5155, 1240, "MI", "Midlands"),
-(5156, 1075, "SK", "South Karelia"),
-(5157, 1075, "SO", "South Ostrobothnia"),
-(5158, 1075, "ES", "Etelä-Savo"),
-(5159, 1075, "HH", "Häme"),
-(5160, 1075, "IU", "Itä-Uusimaa"),
-(5161, 1075, "KA", "Kainuu"),
-(5162, 1075, "CO", "Central Ostrobothnia"),
-(5163, 1075, "CF", "Central Finland"),
-(5164, 1075, "KY", "Kymenlaakso"),
-(5165, 1075, "LA", "Lapland"),
-(5166, 1075, "TR", "Tampere Region"),
-(5167, 1075, "OB", "Ostrobothnia"),
-(5168, 1075, "NK", "North Karelia"),
-(5169, 1075, "NO", "Northern Ostrobothnia"),
-(5170, 1075, "NS", "Northern Savo"),
-(5171, 1075, "PH", "Päijät-Häme"),
-(5172, 1075, "SK", "Satakunta"),
-(5173, 1075, "UM", "Uusimaa"),
-(5174, 1075, "SW", "South-West Finland"),
-(5175, 1075, "AL", "Ã…land"),
-(5176, 1152, "LI", "Limburg"),
-(5177, 1098, "CW", "Central and Western"),
-(5178, 1098, "EA", "Eastern"),
-(5179, 1098, "SO", "Southern"),
-(5180, 1098, "WC", "Wan Chai"),
-(5181, 1098, "KC", "Kowloon City"),
-(5182, 1098, "KU", "Kwun Tong"),
-(5183, 1098, "SS", "Sham Shui Po"),
-(5184, 1098, "WT", "Wong Tai Sin"),
-(5185, 1098, "YT", "Yau Tsim Mong"),
-(5186, 1098, "IS", "Islands"),
-(5187, 1098, "KI", "Kwai Tsing"),
-(5188, 1098, "NO", "North"),
-(5189, 1098, "SK", "Sai Kung"),
-(5190, 1098, "ST", "Sha Tin"),
-(5191, 1098, "TP", "Tai Po"),
-(5192, 1098, "TW", "Tsuen Wan"),
-(5193, 1098, "TM", "Tuen Mun"),
-(5194, 1098, "YL", "Yuen Long"),
-(5195, 1108, "MR", "Manchester"),
-(5196, 1016, "13", "Al Manāmah (Al ‘Āşimah)"),
-(5197, 1016, "14", "Al Janūbīyah"),
--- (5198, 1016, "15", "Al Muḩarraq"), -- conflicts with id 1872, Al Muharraq
-(5199, 1016, "16", "Al Wusţá"),
-(5200, 1016, "17", "Ash Shamālīyah"),
-
+(1074, "E", "Eastern"),
+(1074, "N", "Northern"),
+(1074, "W", "Western"),
+(1074, "R", "Rotuma"),
+(1074, "C", "Central"),
+(1141, "TRK", "Chuuk"),
+(1141, "KSA", "Kosrae"),
+(1141, "PNI", "Pohnpei"),
+(1141, "YAP", "Yap"),
+(1076, "01", "Ain"),
+(1076, "02", "Aisne"),
+(1076, "03", "Allier"),
+(1076, "04", "Alpes-de-Haute-Provence"),
+(1076, "06", "Alpes-Maritimes"),
+(1076, "07", "Ardèche"),
+(1076, "08", "Ardennes"),
+(1076, "09", "Ariège"),
+(1076, "10", "Aube"),
+(1076, "11", "Aude"),
+(1076, "12", "Aveyron"),
+(1076, "67", "Bas-Rhin"),
+(1076, "13", "Bouches-du-Rhône"),
+(1076, "14", "Calvados"),
+(1076, "15", "Cantal"),
+(1076, "16", "Charente"),
+(1076, "17", "Charente-Maritime"),
+(1076, "18", "Cher"),
+(1076, "19", "Corrèze"),
+(1076, "20A", "Corse-du-Sud"),
+(1076, "21", "Côte-d\'Or"),
+(1076, "22", "Côtes-d\'Armor"),
+(1076, "23", "Creuse"),
+(1076, "79", "Deux-Sèvres"),
+(1076, "24", "Dordogne"),
+(1076, "25", "Doubs"),
+(1076, "26", "Drôme"),
+(1076, "91", "Essonne"),
+(1076, "27", "Eure"),
+(1076, "28", "Eure-et-Loir"),
+(1076, "29", "Finistère"),
+(1076, "30", "Gard"),
+(1076, "32", "Gers"),
+(1076, "33", "Gironde"),
+(1076, "68", "Haut-Rhin"),
+(1076, "20B", "Haute-Corse"),
+(1076, "31", "Haute-Garonne"),
+(1076, "43", "Haute-Loire"),
+(1076, "70", "Haute-Saône"),
+(1076, "74", "Haute-Savoie"),
+(1076, "87", "Haute-Vienne"),
+(1076, "05", "Hautes-Alpes"),
+(1076, "65", "Hautes-Pyrénées"),
+(1076, "92", "Hauts-de-Seine"),
+(1076, "34", "Hérault"),
+(1076, "36", "Indre"),
+(1076, "35", "Ille-et-Vilaine"),
+(1076, "37", "Indre-et-Loire"),
+(1076, "38", "Isère"),
+(1076, "40", "Landes"),
+(1076, "41", "Loir-et-Cher"),
+(1076, "42", "Loire"),
+(1076, "44", "Loire-Atlantique"),
+(1076, "45", "Loiret"),
+(1076, "46", "Lot"),
+(1076, "47", "Lot-et-Garonne"),
+(1076, "48", "Lozère"),
+(1076, "49", "Maine-et-Loire"),
+(1076, "50", "Manche"),
+(1076, "51", "Marne"),
+(1076, "53", "Mayenne"),
+(1076, "54", "Meurthe-et-Moselle"),
+(1076, "55", "Meuse"),
+(1076, "56", "Morbihan"),
+(1076, "57", "Moselle"),
+(1076, "58", "Nièvre"),
+(1076, "59", "Nord"),
+(1076, "60", "Oise"),
+(1076, "61", "Orne"),
+(1076, "75", "Paris"),
+(1076, "62", "Pas-de-Calais"),
+(1076, "63", "Puy-de-Dôme"),
+(1076, "64", "Pyrénées-Atlantiques"),
+(1076, "66", "Pyrénées-Orientales"),
+(1076, "69", "Rhône"),
+(1076, "71", "Saône-et-Loire"),
+(1076, "72", "Sarthe"),
+(1076, "73", "Savoie"),
+(1076, "77", "Seine-et-Marne"),
+(1076, "76", "Seine-Maritime"),
+(1076, "93", "Seine-Saint-Denis"),
+(1076, "80", "Somme"),
+(1076, "81", "Tarn"),
+(1076, "82", "Tarn-et-Garonne"),
+(1076, "95", "Val d\'Oise"),
+(1076, "90", "Territoire de Belfort"),
+(1076, "94", "Val-de-Marne"),
+(1076, "83", "Var"),
+(1076, "84", "Vaucluse"),
+(1076, "85", "Vendée"),
+(1076, "86", "Vienne"),
+(1076, "88", "Vosges"),
+(1076, "89", "Yonne"),
+(1076, "78", "Yvelines"),
+(1076, "GP", "Guadeloupe"),
+(1076, "MQ", "Martinique"),
+(1076, "GF", "Guyane"),
+(1076, "RE", "La Réunion"),
+(1076, "YT", "Mayotte"),
+(1076, "WF", "Wallis-et-Futuna"),
+(1076, "NC", "Nouvelle-Calédonie"),
+(1076, "52", "Haute-Marne"),
+(1076, "39", "Jura"),
+(1226, "ABE", "Aberdeen City"),
+(1226, "ABD", "Aberdeenshire"),
+(1226, "ANS", "Angus"),
+(1226, "ANT", "Co Antrim"),
+(1226, "AGB", "Argyll and Bute"),
+(1226, "ARM", "Co Armagh"),
+(1226, "BDF", "Bedfordshire"),
+(1226, "BGW", "Blaenau Gwent"),
+(1226, "BST", "Bristol, City of"),
+(1226, "BKM", "Buckinghamshire"),
+(1226, "CAM", "Cambridgeshire"),
+(1226, "CHS", "Cheshire"),
+(1226, "CLK", "Clackmannanshire"),
+(1226, "CON", "Cornwall"),
+(1226, "CMA", "Cumbria"),
+(1226, "DBY", "Derbyshire"),
+(1226, "DRY", "Co Londonderry"),
+(1226, "DEV", "Devon"),
+(1226, "DOR", "Dorset"),
+(1226, "DOW", "Co Down"),
+(1226, "DGY", "Dumfries and Galloway"),
+(1226, "DND", "Dundee City"),
+(1226, "DUR", "County Durham"),
+(1226, "EAY", "East Ayrshire"),
+(1226, "EDU", "East Dunbartonshire"),
+(1226, "ELN", "East Lothian"),
+(1226, "ERW", "East Renfrewshire"),
+(1226, "ERY", "East Riding of Yorkshire"),
+(1226, "ESX", "East Sussex"),
+(1226, "EDH", "Edinburgh, City of"),
+(1226, "ELS", "Na h-Eileanan Siar"),
+(1226, "ESS", "Essex"),
+(1226, "FAL", "Falkirk"),
+(1226, "FER", "Co Fermanagh"),
+(1226, "FIF", "Fife"),
+(1226, "GLG", "Glasgow City"),
+(1226, "GLS", "Gloucestershire"),
+(1226, "GWN", "Gwynedd"),
+(1226, "HAM", "Hampshire"),
+(1226, "HEF", "Herefordshire"),
+(1226, "HRT", "Hertfordshire"),
+(1226, "HED", "Highland"),
+(1226, "IVC", "Inverclyde"),
+(1226, "IOW", "Isle of Wight"),
+(1226, "KEN", "Kent"),
+(1226, "LAN", "Lancashire"),
+(1226, "LEC", "Leicestershire"),
+(1226, "LIN", "Lincolnshire"),
+(1226, "MLN", "Midlothian"),
+(1226, "MRY", "Moray"),
+(1226, "NFK", "Norfolk"),
+(1226, "NAY", "North Ayrshire"),
+(1226, "NLK", "North Lanarkshire"),
+(1226, "NYK", "North Yorkshire"),
+(1226, "NTH", "Northamptonshire"),
+(1226, "NBL", "Northumberland"),
+(1226, "NTT", "Nottinghamshire"),
+(1226, "OLD", "Oldham"),
+(1226, "OMH", "Omagh"),
+(1226, "ORR", "Orkney Islands"),
+(1226, "OXF", "Oxfordshire"),
+(1226, "PKN", "Perth and Kinross"),
+(1226, "POW", "Powys"),
+(1226, "RFW", "Renfrewshire"),
+(1226, "RUT", "Rutland"),
+(1226, "SCB", "Scottish Borders"),
+(1226, "ZET", "Shetland Islands"),
+(1226, "SHR", "Shropshire"),
+(1226, "SOM", "Somerset"),
+(1226, "SAY", "South Ayrshire"),
+(1226, "SGC", "South Gloucestershire"),
+(1226, "SLK", "South Lanarkshire"),
+(1226, "STS", "Staffordshire"),
+(1226, "STG", "Stirling"),
+(1226, "SFK", "Suffolk"),
+(1226, "SRY", "Surrey"),
+(1226, "VGL", "Vale of Glamorgan, The"),
+(1226, "WAR", "Warwickshire"),
+(1226, "WDU", "West Dunbartonshire"),
+(1226, "WLN", "West Lothian"),
+(1226, "WSX", "West Sussex"),
+(1226, "WIL", "Wiltshire"),
+(1226, "WOR", "Worcestershire"),
+(1226, "ANN", "Antrim and Newtownabbey"),
+(1226, "AND", "Ards and North Down"),
+(1226, "ABC", "Armagh City, Banbridge and Craigavon"),
+(1226, "BFS", "Belfast"),
+(1226, "CCG", "Causeway Coast and Glens"),
+(1226, "DRS", "Derry City and Strabane"),
+(1226, "FMO", "Fermanagh and Omagh"),
+(1226, "LBC", "Lisburn and Castlereagh"),
+(1226, "MEA", "Mid and East Antrim"),
+(1226, "MUL", "Mid Ulster"),
+(1226, "NMD", "Newry, Mourne and Down"),
+(1226, "BGE", "Bridgend"),
+(1226, "CAY", "Caerphilly"),
+(1226, "CRF", "Cardiff"),
+(1226, "CMN", "Carmarthenshire"),
+(1226, "CGN", "Ceredigion"),
+(1226, "CWY", "Conwy"),
+(1226, "DEN", "Denbighshire"),
+(1226, "FLN", "Flintshire"),
+(1226, "AGY", "Isle of Anglesey"),
+(1226, "MTY", "Merthyr Tydfil"),
+(1226, "NTL", "Neath Port Talbot"),
+(1226, "NWP", "Newport"),
+(1226, "PEM", "Pembrokeshire"),
+(1226, "RCT", "Rhondda, Cynon, Taff"),
+(1226, "SWA", "Swansea"),
+(1226, "TOF", "Torfaen"),
+(1226, "WRX", "Wrexham"),
+(1226, "MON", "Monmouthshire"),
+(1226, "TWR", "Tyne and Wear"),
+(1226, "GTM", "Greater Manchester"),
+(1226, "TYR", "Co Tyrone"),
+(1226, "WYK", "West Yorkshire"),
+(1226, "SYK", "South Yorkshire"),
+(1226, "MSY", "Merseyside"),
+(1226, "BRK", "Berkshire"),
+(1226, "WMD", "West Midlands"),
+(1226, "WGM", "West Glamorgan"),
+(1226, "LON", "London"),
+(1226, "CWD", "Clwyd"),
+(1226, "SGM", "South Glamorgan"),
+(1083, "AH", "Ashanti"),
+(1083, "BA", "Brong-Ahafo"),
+(1083, "AA", "Greater Accra"),
+(1083, "UE", "Upper East"),
+(1083, "UW", "Upper West"),
+(1083, "TV", "Volta"),
+(1083, "CP", "Central"),
+(1083, "EP", "Eastern"),
+(1083, "NP", "Northern"),
+(1083, "WP", "Western"),
+(1213, "B", "Banjul"),
+(1213, "L", "Lower River"),
+(1213, "M", "MacCarthy Island"),
+(1213, "N", "North Bank"),
+(1213, "U", "Upper River"),
+(1091, "BE", "Beyla"),
+(1091, "BF", "Boffa"),
+(1091, "BK", "Boke"),
+(1091, "CO", "Coyah"),
+(1091, "DB", "Dabola"),
+(1091, "DL", "Dalaba"),
+(1091, "DI", "Dinguiraye"),
+(1091, "DU", "Dubreka"),
+(1091, "FA", "Faranah"),
+(1091, "FO", "Forecariah"),
+(1091, "FR", "Fria"),
+(1091, "GA", "Gaoual"),
+(1091, "GU", "Guekedou"),
+(1091, "KA", "Kankan"),
+(1091, "KE", "Kerouane"),
+(1091, "KD", "Kindia"),
+(1091, "KS", "Kissidougou"),
+(1091, "KB", "Koubia"),
+(1091, "KN", "Koundara"),
+(1091, "KO", "Kouroussa"),
+(1091, "LA", "Labe"),
+(1091, "LE", "Lelouma"),
+(1091, "LO", "Lola"),
+(1091, "MC", "Macenta"),
+(1091, "ML", "Mali"),
+(1091, "MM", "Mamou"),
+(1091, "MD", "Mandiana"),
+(1091, "NZ", "Nzerekore"),
+(1091, "PI", "Pita"),
+(1091, "SI", "Siguiri"),
+(1091, "TE", "Telimele"),
+(1091, "TO", "Tougue"),
+(1091, "YO", "Yomou"),
+(1067, "C", "Region Continental"),
+(1067, "I", "Region Insular"),
+(1067, "AN", "Annobon"),
+(1067, "BN", "Bioko Norte"),
+(1067, "BS", "Bioko Sur"),
+(1067, "CS", "Centro Sur"),
+(1067, "KN", "Kie-Ntem"),
+(1067, "LI", "Litoral"),
+(1067, "WN", "Wele-Nzas"),
+(1085, "13", "Achaïa"),
+(1085, "01", "Aitolia-Akarnania"),
+(1085, "11", "Argolis"),
+(1085, "12", "Arkadia"),
+(1085, "31", "Arta"),
+(1085, "A1", "Attiki"),
+(1085, "64", "Chalkidiki"),
+(1085, "94", "Chania"),
+(1085, "85", "Chios"),
+(1085, "81", "Dodekanisos"),
+(1085, "52", "Drama"),
+(1085, "71", "Evros"),
+(1085, "05", "Evrytania"),
+(1085, "04", "Evvoia"),
+(1085, "63", "Florina"),
+(1085, "07", "Fokis"),
+(1085, "06", "Fthiotis"),
+(1085, "51", "Grevena"),
+(1085, "14", "Ileia"),
+(1085, "53", "Imathia"),
+(1085, "33", "Ioannina"),
+(1085, "91", "Irakleion"),
+(1085, "41", "Karditsa"),
+(1085, "56", "Kastoria"),
+(1085, "55", "Kavalla"),
+(1085, "23", "Kefallinia"),
+(1085, "22", "Kerkyra"),
+(1085, "57", "Kilkis"),
+(1085, "15", "Korinthia"),
+(1085, "58", "Kozani"),
+(1085, "82", "Kyklades"),
+(1085, "16", "Lakonia"),
+(1085, "42", "Larisa"),
+(1085, "92", "Lasithion"),
+(1085, "24", "Lefkas"),
+(1085, "83", "Lesvos"),
+(1085, "43", "Magnisia"),
+(1085, "17", "Messinia"),
+(1085, "59", "Pella"),
+(1085, "34", "Preveza"),
+(1085, "93", "Rethymnon"),
+(1085, "73", "Rodopi"),
+(1085, "84", "Samos"),
+(1085, "62", "Serrai"),
+(1085, "32", "Thesprotia"),
+(1085, "54", "Thessaloniki"),
+(1085, "44", "Trikala"),
+(1085, "03", "Voiotia"),
+(1085, "72", "Xanthi"),
+(1085, "21", "Zakynthos"),
+(1085, "69", "Agio Oros"),
+(1085, "61", "Pieria"),
+(1090, "AV", "Alta Verapaz"),
+(1090, "BV", "Baja Verapaz"),
+(1090, "CM", "Chimaltenango"),
+(1090, "CQ", "Chiquimula"),
+(1090, "PR", "El Progreso"),
+(1090, "ES", "Escuintla"),
+(1090, "GU", "Guatemala"),
+(1090, "HU", "Huehuetenango"),
+(1090, "IZ", "Izabal"),
+(1090, "JA", "Jalapa"),
+(1090, "JU", "Jutiapa"),
+(1090, "PE", "Peten"),
+(1090, "QZ", "Quetzaltenango"),
+(1090, "QC", "Quiche"),
+(1090, "RE", "Retalhuleu"),
+(1090, "SA", "Sacatepequez"),
+(1090, "SM", "San Marcos"),
+(1090, "SR", "Santa Rosa"),
+(1090, "SO", "Sololá"),
+(1090, "SU", "Suchitepequez"),
+(1090, "TO", "Totonicapan"),
+(1090, "ZA", "Zacapa"),
+(1092, "BS", "Bissau"),
+(1092, "BA", "Bafata"),
+(1092, "BM", "Biombo"),
+(1092, "BL", "Bolama"),
+(1092, "CA", "Cacheu"),
+(1092, "GA", "Gabu"),
+(1092, "OI", "Oio"),
+(1092, "QU", "Quloara"),
+(1092, "TO", "Tombali S"),
+(1093, "BA", "Barima-Waini"),
+(1093, "CU", "Cuyuni-Mazaruni"),
+(1093, "DE", "Demerara-Mahaica"),
+(1093, "EB", "East Berbice-Corentyne"),
+(1093, "ES", "Essequibo Islands-West Demerara"),
+(1093, "MA", "Mahaica-Berbice"),
+(1093, "PM", "Pomeroon-Supenaam"),
+(1093, "PT", "Potaro-Siparuni"),
+(1093, "UD", "Upper Demerara-Berbice"),
+(1093, "UT", "Upper Takutu-Upper Essequibo"),
+(1097, "AT", "Atlantida"),
+(1097, "CL", "Colon"),
+(1097, "CM", "Comayagua"),
+(1097, "CP", "Copan"),
+(1097, "CR", "Cortes"),
+(1097, "CH", "Choluteca"),
+(1097, "EP", "El Paraiso"),
+(1097, "FM", "Francisco Morazan"),
+(1097, "GD", "Gracias a Dios"),
+(1097, "IN", "Intibuca"),
+(1097, "IB", "Islas de la Bahia"),
+(1097, "LE", "Lempira"),
+(1097, "OC", "Ocotepeque"),
+(1097, "OL", "Olancho"),
+(1097, "SB", "Santa Barbara"),
+(1097, "VA", "Valle"),
+(1097, "YO", "Yoro"),
+(1097, "LP", "La Paz"),
+(1055, "07", "Bjelovarsko-bilogorska zupanija"),
+(1055, "12", "Brodsko-posavska zupanija"),
+(1055, "19", "Dubrovacko-neretvanska zupanija"),
+(1055, "18", "Istarska zupanija"),
+(1055, "04", "Karlovacka zupanija"),
+(1055, "06", "Koprivnickco-krizevacka zupanija"),
+(1055, "02", "Krapinako-zagorska zupanija"),
+(1055, "09", "Licko-senjska zupanija"),
+(1055, "20", "Medimurska zupanija"),
+(1055, "14", "Osjecko-baranjska zupanija"),
+(1055, "11", "Pozesko-slavonska zupanija"),
+(1055, "08", "Primorsko-goranska zupanija"),
+(1055, "03", "Sisacko-moelavacka Iupanija"),
+(1055, "17", "Splitako-dalmatinska zupanija"),
+(1055, "15", "Sibenako-kninska zupanija"),
+(1055, "05", "Varaidinska zupanija"),
+(1055, "10", "VirovitiEko-podravska zupanija"),
+(1055, "16", "VuRovarako-srijemska zupanija"),
+(1055, "13", "Zadaraka"),
+(1055, "01", "Zagrebacka zupanija"),
+(1094, "GA", "Grande-Anse"),
+(1094, "NE", "Nord-Est"),
+(1094, "NO", "Nord-Ouest"),
+(1094, "OU", "Ouest"),
+(1094, "SD", "Sud"),
+(1094, "SE", "Sud-Est"),
+(1094, "AR", "Artibonite"),
+(1094, "CE", "Centre"),
+(1094, "NI", "Nippes"),
+(1094, "ND", "Nord"),
+(1099, "BU", "Budapest"),
+(1099, "BK", "Bács-Kiskun"),
+(1099, "BA", "Baranya"),
+(1099, "BE", "Békés"),
+(1099, "BZ", "Borsod-Abaúj-Zemplén"),
+(1099, "CS", "Csongrád"),
+(1099, "FE", "Fejér"),
+(1099, "GS", "Győr-Moson-Sopron"),
+(1099, "HB", "Hajdu-Bihar"),
+(1099, "HE", "Heves"),
+(1099, "JN", "Jász-Nagykun-Szolnok"),
+(1099, "KE", "Komárom-Esztergom"),
+(1099, "NO", "Nográd"),
+(1099, "PE", "Pest"),
+(1099, "SO", "Somogy"),
+(1099, "SZ", "Szabolcs-Szatmár-Bereg"),
+(1099, "TO", "Tolna"),
+(1099, "VA", "Vas"),
+(1099, "VE", "Veszprém"),
+(1099, "ZA", "Zala"),
+(1099, "BC", "Békéscsaba"),
+(1099, "DE", "Debrecen"),
+(1099, "DU", "Dunaújváros"),
+(1099, "EG", "Eger"),
+(1099, "GY", "Győr"),
+(1099, "HV", "Hódmezővásárhely"),
+(1099, "KV", "Kaposvár"),
+(1099, "KM", "Kecskemét"),
+(1099, "MI", "Miskolc"),
+(1099, "NK", "Nagykanizsa"),
+(1099, "NY", "Nyiregyháza"),
+(1099, "PS", "Pécs"),
+(1099, "ST", "Salgótarján"),
+(1099, "SN", "Sopron"),
+(1099, "SD", "Szeged"),
+(1099, "SF", "Székesfehérvár"),
+(1099, "SS", "Szekszárd"),
+(1099, "SK", "Szolnok"),
+(1099, "SH", "Szombathely"),
+(1099, "TB", "Tatabánya"),
+(1099, "ZE", "Zalaegerszeg"),
+(1102, "BA", "Bali"),
+(1102, "BB", "Kepulauan Bangka Belitung"),
+(1102, "BT", "Banten"),
+(1102, "BE", "Bengkulu"),
+(1102, "GO", "Gorontalo"),
+(1102, "PB", "Papua Barat"),
+(1102, "JA", "Jambi"),
+(1102, "JB", "Jawa Barat"),
+(1102, "JT", "Jawa Tengah"),
+(1102, "JI", "Jawa Timur"),
+(1102, "KB", "Kalimantan Barat"),
+(1102, "KI", "Kalimantan Timur"),
+(1102, "KS", "Kalimantan Selatan"),
+(1102, "KR", "Kepulauan Riau"),
+(1102, "LA", "Lampung"),
+(1102, "MA", "Maluku"),
+(1102, "MU", "Maluku Utara"),
+(1102, "NB", "Nusa Tenggara Barat"),
+(1102, "NT", "Nusa Tenggara Timur"),
+(1102, "PA", "Papua"),
+(1102, "RI", "Riau"),
+(1102, "SN", "Sulawesi Selatan"),
+(1102, "ST", "Sulawesi Tengah"),
+(1102, "SG", "Sulawesi Tenggara"),
+(1102, "SA", "Sulawesi Utara"),
+(1102, "SB", "Sumatra Barat"),
+(1102, "SS", "Sumatra Selatan"),
+(1102, "SU", "Sumatera Utara"),
+(1102, "JK", "DKI Jakarta"),
+(1102, "AC", "Aceh"),
+(1102, "YO", "DI Yogyakarta"),
+(1102, "KT", "Kalimantan Tengah"),
+(1102, "SR", "Sulawesi Barat"),
+(1102, "KU", "Kalimantan Utara"),
+(1105, "C", "Cork"),
+(1105, "CE", "Clare"),
+(1105, "CN", "Cavan"),
+(1105, "CW", "Carlow"),
+(1105, "D", "Dublin"),
+(1105, "DL", "Donegal"),
+(1105, "G", "Galway"),
+(1105, "KE", "Kildare"),
+(1105, "KK", "Kilkenny"),
+(1105, "KY", "Kerry"),
+(1105, "LD", "Longford"),
+(1105, "LH", "Louth"),
+(1105, "LK", "Limerick"),
+(1105, "LM", "Leitrim"),
+(1105, "LS", "Laois"),
+(1105, "MH", "Meath"),
+(1105, "MN", "Monaghan"),
+(1105, "MO", "Mayo"),
+(1105, "OY", "Offaly"),
+(1105, "RN", "Roscommon"),
+(1105, "SO", "Sligo"),
+(1105, "TA", "Tipperary"),
+(1105, "WD", "Waterford"),
+(1105, "WH", "Westmeath"),
+(1105, "WW", "Wicklow"),
+(1105, "WX", "Wexford"),
+(1106, "D", "HaDarom"),
+(1106, "M", "HaMerkaz"),
+(1106, "Z", "HaZafon"),
+(1106, "HA", "Haifa"),
+(1106, "TA", "Tel-Aviv"),
+(1106, "JM", "Jerusalem"),
+(1104, "AN", "Al Anbar"),
+(1104, "BA", "Al Ba,rah"),
+(1104, "MU", "Al Muthanna"),
+(1104, "QA", "Al Qadisiyah"),
+(1104, "NA", "An Najef"),
+(1104, "AR", "Arbil"),
+(1104, "SW", "As Sulaymaniyah"),
+(1104, "TS", "At Ta\'mim"),
+(1104, "BB", "Babil"),
+(1104, "BG", "Baghdad"),
+(1104, "DA", "Dahuk"),
+(1104, "DQ", "Dhi Qar"),
+(1104, "DI", "Diyala"),
+(1104, "KA", "Karbala\'"),
+(1104, "MA", "Maysan"),
+(1104, "NI", "Ninawa"),
+(1104, "SD", "Salah ad Din"),
+(1104, "WA", "Wasit"),
+(1103, "03", "Ardabil"),
+(1103, "02", "Azarbayjan-e Gharbi"),
+(1103, "01", "Azarbayjan-e Sharqi"),
+(1103, "06", "Bushehr"),
+(1103, "08", "Chahar Mahall va Bakhtiari"),
+(1103, "04", "Esfahan"),
+(1103, "14", "Fars"),
+(1103, "19", "Gilan"),
+(1103, "27", "Golestan"),
+(1103, "24", "Hamadan"),
+(1103, "23", "Hormozgan"),
+(1103, "05", "Iiam"),
+(1103, "15", "Kerman"),
+(1103, "17", "Kermanshah"),
+(1103, "09", "Khorasan"),
+(1103, "10", "Khuzestan"),
+(1103, "18", "Kohjiluyeh va Buyer Ahmad"),
+(1103, "16", "Kordestan"),
+(1103, "20", "Lorestan"),
+(1103, "22", "Markazi"),
+(1103, "21", "Mazandaran"),
+(1103, "28", "Qazvin"),
+(1103, "26", "Qom"),
+(1103, "12", "Semnan"),
+(1103, "13", "Sistan va Baluchestan"),
+(1103, "07", "Tehran"),
+(1103, "25", "Yazd"),
+(1103, "11", "Zanjan"),
+(1100, "7", "Austurland"),
+(1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
+(1100, "6", "Norourland eystra"),
+(1100, "5", "Norourland vestra"),
+(1100, "0", "Reykjavik"),
+(1100, "8", "Suourland"),
+(1100, "2", "Suournes"),
+(1100, "4", "Vestfirolr"),
+(1100, "3", "Vesturland"),
+(1107, "AG", "Agrigento"),
+(1107, "AL", "Alessandria"),
+(1107, "AN", "Ancona"),
+(1107, "AO", "Aosta"),
+(1107, "AR", "Arezzo"),
+(1107, "AP", "Ascoli Piceno"),
+(1107, "AT", "Asti"),
+(1107, "AV", "Avellino"),
+(1107, "BA", "Bari"),
+(1107, "BL", "Belluno"),
+(1107, "BN", "Benevento"),
+(1107, "BG", "Bergamo"),
+(1107, "BI", "Biella"),
+(1107, "BO", "Bologna"),
+(1107, "BZ", "Bolzano"),
+(1107, "BS", "Brescia"),
+(1107, "BR", "Brindisi"),
+(1107, "CA", "Cagliari"),
+(1107, "CL", "Caltanissetta"),
+(1107, "CB", "Campobasso"),
+(1107, "CE", "Caserta"),
+(1107, "CT", "Catania"),
+(1107, "CZ", "Catanzaro"),
+(1107, "CH", "Chieti"),
+(1107, "CO", "Como"),
+(1107, "CS", "Cosenza"),
+(1107, "CR", "Cremona"),
+(1107, "KR", "Crotone"),
+(1107, "CN", "Cuneo"),
+(1107, "EN", "Enna"),
+(1107, "FE", "Ferrara"),
+(1107, "FI", "Firenze"),
+(1107, "FG", "Foggia"),
+(1107, "FC", "Forlì-Cesena"),
+(1107, "FR", "Frosinone"),
+(1107, "GE", "Genova"),
+(1107, "GO", "Gorizia"),
+(1107, "GR", "Grosseto"),
+(1107, "IM", "Imperia"),
+(1107, "IS", "Isernia"),
+(1107, "AQ", "L\'Aquila"),
+(1107, "SP", "La Spezia"),
+(1107, "LT", "Latina"),
+(1107, "LE", "Lecce"),
+(1107, "LC", "Lecco"),
+(1107, "LI", "Livorno"),
+(1107, "LO", "Lodi"),
+(1107, "LU", "Lucca"),
+(1107, "MC", "Macerata"),
+(1107, "MN", "Mantova"),
+(1107, "MS", "Massa-Carrara"),
+(1107, "MT", "Matera"),
+(1107, "ME", "Messina"),
+(1107, "MI", "Milano"),
+(1107, "MO", "Modena"),
+(1107, "NA", "Napoli"),
+(1107, "NO", "Novara"),
+(1107, "NU", "Nuoro"),
+(1107, "OR", "Oristano"),
+(1107, "PD", "Padova"),
+(1107, "PA", "Palermo"),
+(1107, "PR", "Parma"),
+(1107, "PV", "Pavia"),
+(1107, "PG", "Perugia"),
+(1107, "PU", "Pesaro e Urbino"),
+(1107, "PE", "Pescara"),
+(1107, "PC", "Piacenza"),
+(1107, "PI", "Pisa"),
+(1107, "PT", "Pistoia"),
+(1107, "PN", "Pordenone"),
+(1107, "PZ", "Potenza"),
+(1107, "PO", "Prato"),
+(1107, "RG", "Ragusa"),
+(1107, "RA", "Ravenna"),
+(1107, "RC", "Reggio Calabria"),
+(1107, "RE", "Reggio Emilia"),
+(1107, "RI", "Rieti"),
+(1107, "RN", "Rimini"),
+(1107, "RM", "Roma"),
+(1107, "RO", "Rovigo"),
+(1107, "SA", "Salerno"),
+(1107, "SS", "Sassari"),
+(1107, "SV", "Savona"),
+(1107, "SI", "Siena"),
+(1107, "SR", "Siracusa"),
+(1107, "SO", "Sondrio"),
+(1107, "TA", "Taranto"),
+(1107, "TE", "Teramo"),
+(1107, "TR", "Terni"),
+(1107, "TO", "Torino"),
+(1107, "TP", "Trapani"),
+(1107, "TN", "Trento"),
+(1107, "TV", "Treviso"),
+(1107, "TS", "Trieste"),
+(1107, "UD", "Udine"),
+(1107, "VA", "Varese"),
+(1107, "VE", "Venezia"),
+(1107, "VB", "Verbano-Cusio-Ossola"),
+(1107, "VC", "Vercelli"),
+(1107, "VR", "Verona"),
+(1107, "VV", "Vibo Valentia"),
+(1107, "VI", "Vicenza"),
+(1107, "VT", "Viterbo"),
+(1107, "BT", "Barletta-Andria-Trani"),
+(1107, "FM", "Fermo"),
+(1107, "MB", "Monza e Brianza"),
+(1107, "CI", "Carbonia-Iglesias"),
+(1107, "OT", "Olbia-Tempio"),
+(1107, "VS", "Medio Campidano"),
+(1107, "OG", "Ogliastra"),
+(1109, "23", "Aichi"),
+(1109, "05", "Akita"),
+(1109, "02", "Aomori"),
+(1109, "12", "Chiba"),
+(1109, "38", "Ehime"),
+(1109, "18", "Fukui"),
+(1109, "40", "Fukuoka"),
+(1109, "07", "Fukusima"),
+(1109, "21", "Gifu"),
+(1109, "10", "Gunma"),
+(1109, "34", "Hiroshima"),
+(1109, "01", "Hokkaido"),
+(1109, "28", "Hyogo"),
+(1109, "08", "Ibaraki"),
+(1109, "17", "Ishikawa"),
+(1109, "03", "Iwate"),
+(1109, "37", "Kagawa"),
+(1109, "46", "Kagoshima"),
+(1109, "14", "Kanagawa"),
+(1109, "39", "Kochi"),
+(1109, "43", "Kumamoto"),
+(1109, "26", "Kyoto"),
+(1109, "24", "Mie"),
+(1109, "04", "Miyagi"),
+(1109, "45", "Miyazaki"),
+(1109, "20", "Nagano"),
+(1109, "42", "Nagasaki"),
+(1109, "29", "Nara"),
+(1109, "15", "Niigata"),
+(1109, "44", "Oita"),
+(1109, "33", "Okayama"),
+(1109, "47", "Okinawa"),
+(1109, "27", "Osaka"),
+(1109, "41", "Saga"),
+(1109, "11", "Saitama"),
+(1109, "25", "Shiga"),
+(1109, "32", "Shimane"),
+(1109, "22", "Shizuoka"),
+(1109, "09", "Tochigi"),
+(1109, "36", "Tokushima"),
+(1109, "13", "Tokyo"),
+(1109, "31", "Tottori"),
+(1109, "16", "Toyama"),
+(1109, "30", "Wakayama"),
+(1109, "06", "Yamagata"),
+(1109, "35", "Yamaguchi"),
+(1109, "19", "Yamanashi"),
+(1108, "CN", "Clarendon"),
+(1108, "HR", "Hanover"),
+(1108, "KN", "Kingston"),
+(1108, "PD", "Portland"),
+(1108, "AW", "Saint Andrew"),
+(1108, "AN", "Saint Ann"),
+(1108, "CE", "Saint Catherine"),
+(1108, "EH", "Saint Elizabeth"),
+(1108, "JS", "Saint James"),
+(1108, "MY", "Saint Mary"),
+(1108, "TS", "Saint Thomas"),
+(1108, "TY", "Trelawny"),
+(1108, "WD", "Westmoreland"),
+(1110, "AJ", "Ajln"),
+(1110, "AQ", "Al \'Aqaba"),
+(1110, "BA", "Al Balqa\'"),
+(1110, "KA", "Al Karak"),
+(1110, "MA", "Al Mafraq"),
+(1110, "AM", "Amman"),
+(1110, "AT", "At Tafilah"),
+(1110, "AZ", "Az Zarga"),
+(1110, "JR", "Irbid"),
+(1110, "JA", "Jarash"),
+(1110, "MN", "Ma\'an"),
+(1110, "MD", "Madaba"),
+(1112, "01", "Baringo"),
+(1112, "02", "Bomet"),
+(1112, "03", "Bungoma"),
+(1112, "04", "Busia"),
+(1112, "05", "Elgeyo/Marakwet"),
+(1112, "06", "Embu"),
+(1112, "07", "Garissa"),
+(1112, "08", "Homa Bay"),
+(1112, "09", "Isiolo"),
+(1112, "10", "Kajiado"),
+(1112, "11", "Kakamega"),
+(1112, "12", "Kericho"),
+(1112, "13", "Kiambu"),
+(1112, "14", "Kilifi"),
+(1112, "15", "Kirinyaga"),
+(1112, "16", "Kisii"),
+(1112, "17", "Kisumu"),
+(1112, "18", "Kitui"),
+(1112, "19", "Kwale"),
+(1112, "20", "Laikipia"),
+(1112, "21", "Lamu"),
+(1112, "22", "Machakos"),
+(1112, "23", "Makueni"),
+(1112, "24", "Mandera"),
+(1112, "25", "Marsabit"),
+(1112, "26", "Meru"),
+(1112, "27", "Migori"),
+(1112, "28", "Mombasa"),
+(1112, "29", "Murang'a"),
+(1112, "30", "Nairobi City"),
+(1112, "31", "Nakuru"),
+(1112, "32", "Nandi"),
+(1112, "33", "Narok"),
+(1112, "34", "Nyamira"),
+(1112, "35", "Nyandarua"),
+(1112, "36", "Nyeri"),
+(1112, "37", "Samburu"),
+(1112, "38", "Siaya"),
+(1112, "39", "Taita/Taveta"),
+(1112, "40", "Tana River"),
+(1112, "41", "Tharaka-Nithi"),
+(1112, "42", "Trans Nzoia"),
+(1112, "43", "Turkana"),
+(1112, "44", "Uasin Gishu"),
+(1112, "45", "Vihiga"),
+(1112, "46", "Wajir"),
+(1112, "47", "West Pokot"),
+(1117, "GB", "Bishkek"),
+(1117, "B", "Batken"),
+(1117, "C", "Chu"),
+(1117, "J", "Jalal-Abad"),
+(1117, "N", "Naryn"),
+(1117, "O", "Osh"),
+(1117, "T", "Talas"),
+(1117, "Y", "Ysyk-Kol"),
+(1037, "23", "Krong Kaeb"),
+(1037, "24", "Krong Pailin"),
+(1037, "18", "Xrong Preah Sihanouk"),
+(1037, "12", "Phnom Penh"),
+(1037, "2", "Baat Dambang"),
+(1037, "1", "Banteay Mean Chey"),
+(1037, "3", "Rampong Chaam"),
+(1037, "4", "Kampong Chhnang"),
+(1037, "5", "Kampong Spueu"),
+(1037, "6", "Kampong Thum"),
+(1037, "7", "Kampot"),
+(1037, "8", "Kandaal"),
+(1037, "9", "Kach Kong"),
+(1037, "10", "Krachoh"),
+(1037, "11", "Mondol Kiri"),
+(1037, "22", "Otdar Mean Chey"),
+(1037, "15", "Pousaat"),
+(1037, "13", "Preah Vihear"),
+(1037, "14", "Prey Veaeng"),
+(1037, "16", "Rotanak Kiri"),
+(1037, "17", "Siem Reab"),
+(1037, "19", "Stueng Traeng"),
+(1037, "20", "Svaay Rieng"),
+(1037, "21", "Taakaev"),
+(1113, "G", "Gilbert Islands"),
+(1113, "L", "Line Islands"),
+(1113, "P", "Phoenix Islands"),
+(1049, "A", "Anjouan Ndzouani"),
+(1049, "G", "Grande Comore Ngazidja"),
+(1049, "M", "Moheli Moili"),
+(1114, "KAE", "Kaesong-si"),
+(1114, "NAM", "Nampo-si"),
+(1114, "PYO", "Pyongyang-ai"),
+(1114, "CHA", "Chagang-do"),
+(1114, "HAB", "Hamgyongbuk-do"),
+(1114, "HAN", "Hamgyongnam-do"),
+(1114, "HWB", "Hwanghaebuk-do"),
+(1114, "HWN", "Hwanghaenam-do"),
+(1114, "KAN", "Kangwon-do"),
+(1114, "PYB", "Pyonganbuk-do"),
+(1114, "PYN", "Pyongannam-do"),
+(1114, "YAN", "Yanggang-do"),
+(1114, "NAJ", "Najin Sonbong-si"),
+(1115, "11", "Seoul Teugbyeolsi"),
+(1115, "26", "Busan Gwang\'yeogsi"),
+(1115, "27", "Daegu Gwang\'yeogsi"),
+(1115, "30", "Daejeon Gwang\'yeogsi"),
+(1115, "29", "Gwangju Gwang\'yeogsi"),
+(1115, "28", "Incheon Gwang\'yeogsi"),
+(1115, "31", "Ulsan Gwang\'yeogsi"),
+(1115, "43", "Chungcheongbugdo"),
+(1115, "44", "Chungcheongnamdo"),
+(1115, "42", "Gang\'weondo"),
+(1115, "41", "Gyeonggido"),
+(1115, "47", "Gyeongsangbugdo"),
+(1115, "48", "Gyeongsangnamdo"),
+(1115, "49", "Jejudo"),
+(1115, "45", "Jeonrabugdo"),
+(1115, "46", "Jeonranamdo"),
+(1115, "50", "Sejong"),
+(1116, "AH", "Al Ahmadi"),
+(1116, "FA", "Al Farwanlyah"),
+(1116, "JA", "Al Jahrah"),
+(1116, "KU", "Al Kuwayt"),
+(1116, "HA", "Hawalli"),
+(1111, "ALA", "Almaty"),
+(1111, "AST", "Astana"),
+(1111, "ALM", "Almaty oblysy"),
+(1111, "AKM", "Aqmola oblysy"),
+(1111, "AKT", "Aqtobe oblysy"),
+(1111, "ATY", "Atyrau oblyfiy"),
+(1111, "ZAP", "Batys Quzaqstan oblysy"),
+(1111, "MAN", "Mangghystau oblysy"),
+(1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
+(1111, "PAV", "Pavlodar oblysy"),
+(1111, "KAR", "Qaraghandy oblysy"),
+(1111, "KUS", "Qostanay oblysy"),
+(1111, "KZY", "Qyzylorda oblysy"),
+(1111, "VOS", "Shyghys Quzaqstan oblysy"),
+(1111, "SEV", "Soltustik Quzaqstan oblysy"),
+(1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
+(1118, "VT", "Vientiane"),
+(1118, "AT", "Attapu"),
+(1118, "BK", "Bokeo"),
+(1118, "BL", "Bolikhamxai"),
+(1118, "CH", "Champasak"),
+(1118, "HO", "Houaphan"),
+(1118, "KH", "Khammouan"),
+(1118, "LM", "Louang Namtha"),
+(1118, "LP", "Louangphabang"),
+(1118, "OU", "Oudomxai"),
+(1118, "PH", "Phongsali"),
+(1118, "SL", "Salavan"),
+(1118, "SV", "Savannakhet"),
+(1118, "XA", "Xaignabouli"),
+(1118, "XN", "Xiasomboun"),
+(1118, "XE", "Xekong"),
+(1118, "XI", "Xiangkhoang"),
+(1120, "BA", "Beirut"),
+(1120, "BI", "Beqaa"),
+(1120, "JL", "Mount Lebanon"),
+(1120, "AS", "North Lebanon"),
+(1120, "JA", "South Lebanon"),
+(1120, "NA", "Nabatieh"),
+(1199, "52", "Ampara"),
+(1199, "71", "Anuradhapura"),
+(1199, "81", "Badulla"),
+(1199, "51", "Batticaloa"),
+(1199, "11", "Colombo"),
+(1199, "31", "Galle"),
+(1199, "12", "Gampaha"),
+(1199, "33", "Hambantota"),
+(1199, "41", "Jaffna"),
+(1199, "13", "Kalutara"),
+(1199, "21", "Kandy"),
+(1199, "92", "Kegalla"),
+(1199, "42", "Kilinochchi"),
+(1199, "61", "Kurunegala"),
+(1199, "43", "Mannar"),
+(1199, "22", "Matale"),
+(1199, "32", "Matara"),
+(1199, "82", "Monaragala"),
+(1199, "45", "Mullaittivu"),
+(1199, "23", "Nuwara Eliya"),
+(1199, "72", "Polonnaruwa"),
+(1199, "62", "Puttalum"),
+(1199, "91", "Ratnapura"),
+(1199, "53", "Trincomalee"),
+(1199, "44", "VavunLya"),
+(1122, "BM", "Bomi"),
+(1122, "BG", "Bong"),
+(1122, "GB", "Grand Basaa"),
+(1122, "CM", "Grand Cape Mount"),
+(1122, "GG", "Grand Gedeh"),
+(1122, "GK", "Grand Kru"),
+(1122, "LO", "Lofa"),
+(1122, "MG", "Margibi"),
+(1122, "MY", "Maryland"),
+(1122, "MO", "Montserrado"),
+(1122, "NI", "Nimba"),
+(1122, "RI", "Rivercess"),
+(1122, "SI", "Sinoe"),
+(1121, "D", "Berea"),
+(1121, "B", "Butha-Buthe"),
+(1121, "C", "Leribe"),
+(1121, "E", "Mafeteng"),
+(1121, "A", "Maseru"),
+(1121, "F", "Mohale\'s Hoek"),
+(1121, "J", "Mokhotlong"),
+(1121, "H", "Qacha\'s Nek"),
+(1121, "G", "Quthing"),
+(1121, "K", "Thaba-Tseka"),
+(1125, "AL", "Alytaus Apskritis"),
+(1125, "KU", "Kauno Apskritis"),
+(1125, "KL", "KlaipÄ—dos Apskritis"),
+(1125, "MR", "MarijampolÄ—s Apskritis"),
+(1125, "PN", "Panevėžio Apskritis"),
+(1125, "SA", "Šiaulių Apskritis"),
+(1125, "TA", "TauragÄ—s Apskritis"),
+(1125, "TE", "Telšių Apskritis"),
+(1125, "UT", "Utenos Apskritis"),
+(1125, "VL", "Vilniaus Apskritis"),
+(1126, "LU", "Luxembourg"),
+(1126, "DI", "Diekirch"),
+(1126, "GR", "Grevenmacher"),
+(1126, 'CA', 'Capellen'),
+(1126, 'CL', 'Clervaux'),
+(1126, 'EC', 'Echternach'),
+(1126, 'ES', 'Esch-sur-Alzette'),
+(1126, 'ME', 'Mersch'),
+(1126, 'RD', 'Redange-sur-Attert'),
+(1126, 'RM', 'Remich'),
+(1126, 'VD', 'Vianden'),
+(1126, 'WI', 'Wiltz'),
+(1119, "DGV", "Daugavpils"),
+(1119, "JEL", "Jelgava"),
+(1119, "JUR", "JÅ«rmala"),
+(1119, "LPX", "Liepāja"),
+(1119, "REZ", "RÄ“zekne"),
+(1119, "RIX", "RÄ«ga"),
+(1119, "VEN", "Ventspils"),
+(1119, "002", "Aizkraukles novads"),
+(1119, "038", "Jaunjelgavas novads"),
+(1119, "072", "Pļaviņu novads"),
+(1119, "046", "Kokneses novads"),
+(1119, "065", "Neretas novads"),
+(1119, "092", "Skrīveru novads"),
+(1119, "007", "Alūksnes novads"),
+(1119, "009", "Apes novads"),
+(1119, "015", "Balvu novads"),
+(1119, "108", "Viļakas novads"),
+(1119, "014", "Baltinavas novads"),
+(1119, "082", "Rugāju novads"),
+(1119, "016", "Bauskas novads"),
+(1119, "034", "Iecavas novads"),
+(1119, "083", "Rundāles novads"),
+(1119, "105", "Vecumnieku novads"),
+(1119, "022", "CÄ“su novads"),
+(1119, "055", "LÄ«gatnes novads"),
+(1119, "008", "Amatas novads"),
+(1119, "039", "Jaunpiebalgas novads"),
+(1119, "075", "Priekuļu novads"),
+(1119, "070", "Pārgaujas novads"),
+(1119, "076", "Raunas novads"),
+(1119, "104", "Vecpiebalgas novads"),
+(1119, "025", "Daugavpils novads"),
+(1119, "036", "Ilūkstes novads"),
+(1119, "026", "Dobeles novads"),
+(1119, "010", "Auces novads"),
+(1119, "098", "TÄ“rvetes novads"),
+(1119, "033", "Gulbenes novads"),
+(1119, "041", "Jelgavas novads"),
+(1119, "069", "Ozolnieku novads"),
+(1119, "042", "JÄ“kabpils novads"),
+(1119, "004", "Aknīstes novads"),
+(1119, "107", "Viesītes novads"),
+(1119, "049", "Krustpils novads"),
+(1119, "085", "Salas novads"),
+(1119, "047", "Krāslavas novads"),
+(1119, "024", "Dagdas novads"),
+(1119, "001", "Aglonas novads"),
+(1119, "050", "Kuldīgas novads"),
+(1119, "093", "Skrundas novads"),
+(1119, "006", "Alsungas novads"),
+(1119, "003", "Aizputes novads"),
+(1119, "028", "Durbes novads"),
+(1119, "032", "Grobiņas novads"),
+(1119, "071", "Pāvilostas novads"),
+(1119, "074", "Priekules novads"),
+(1119, "066", "NÄ«cas novads"),
+(1119, "081", "Rucavas novads"),
+(1119, "100", "Vaiņodes novads"),
+(1119, "054", "Limbažu novads"),
+(1119, "005", "Alojas novads"),
+(1119, "086", "Salacgrīvas novads"),
+(1119, "058", "Ludzas novads"),
+(1119, "044", "Kārsavas novads"),
+(1119, "110", "Zilupes novads"),
+(1119, "023", "Ciblas novads"),
+(1119, "059", "Madonas novads"),
+(1119, "021", "Cesvaines novads"),
+(1119, "057", "Lubānas novads"),
+(1119, "102", "Varakļānu novads"),
+(1119, "030", "Ērgļu novads"),
+(1119, "067", "Ogres novads"),
+(1119, "035", "Ikšķiles novads"),
+(1119, "051", "Ķeguma novads"),
+(1119, "053", "Lielvārdes novads"),
+(1119, "073", "Preiļu novads"),
+(1119, "056", "Līvānu novads"),
+(1119, "078", "Riebiņu novads"),
+(1119, "103", "Vārkavas novads"),
+(1119, "077", "RÄ“zeknes novads"),
+(1119, "109", "Viļānu novads"),
+(1119, "013", "Baldones novads"),
+(1119, "052", "Ķekavas novads"),
+(1119, "068", "Olaines novads"),
+(1119, "087", "Salaspils novads"),
+(1119, "089", "Saulkrastu novads"),
+(1119, "091", "Siguldas novads"),
+(1119, "037", "Inčukalna novads"),
+(1119, "011", "Ādažu novads"),
+(1119, "012", "Babītes novads"),
+(1119, "020", "Carnikavas novads"),
+(1119, "031", "Garkalnes novads"),
+(1119, "048", "Krimuldas novads"),
+(1119, "061", "Mālpils novads"),
+(1119, "062", "Mārupes novads"),
+(1119, "080", "Ropažu novads"),
+(1119, "090", "SÄ“jas novads"),
+(1119, "095", "Stopiņu novads"),
+(1119, "088", "Saldus novads"),
+(1119, "018", "Brocēnu novads"),
+(1119, "097", "Talsu novads"),
+(1119, "027", "Dundagas novads"),
+(1119, "063", "MÄ“rsraga novads"),
+(1119, "079", "Rojas novads"),
+(1119, "099", "Tukuma novads"),
+(1119, "043", "Kandavas novads"),
+(1119, "029", "Engures novads"),
+(1119, "040", "Jaunpils novads"),
+(1119, "101", "Valkas novads"),
+(1119, "094", "Smiltenes novads"),
+(1119, "096", "Strenču novads"),
+(1119, "045", "Kocēnu novads"),
+(1119, "060", "Mazsalacas novads"),
+(1119, "084", "RÅ«jienas novads"),
+(1119, "017", "Beverīnas novads"),
+(1119, "019", "Burtnieku novads"),
+(1119, "064", "Naukšēnu novads"),
+(1119, "106", "Ventspils novads"),
+(1119, "JKB", "JÄ“kabpils"),
+(1119, "VMR", "Valmiera"),
+(1123, "AJ", "Ajdābiyā"),
+(1123, "BU", "Al Buţnān"),
+(1123, "HZ", "Al Hizām al Akhdar"),
+(1123, "JA", "Al Jabal al Akhdar"),
+(1123, "JI", "Al Jifārah"),
+(1123, "JU", "Al Jufrah"),
+(1123, "KF", "Al Kufrah"),
+(1123, "MJ", "Al Marj"),
+(1123, "MB", "Al Marqab"),
+(1123, "QT", "Al Qaţrūn"),
+(1123, "QB", "Al Qubbah"),
+(1123, "WA", "Al Wāhah"),
+(1123, "NQ", "An Nuqaţ al Khams"),
+(1123, "SH", "Ash Shāţi\'"),
+(1123, "ZA", "Az Zāwiyah"),
+(1123, "BA", "Banghāzī"),
+(1123, "BW", "Banī Walīd"),
+(1123, "DR", "Darnah"),
+(1123, "GD", "Ghadāmis"),
+(1123, "GR", "Gharyān"),
+(1123, "GT", "Ghāt"),
+(1123, "JB", "Jaghbūb"),
+(1123, "MI", "Mişrātah"),
+(1123, "MZ", "Mizdah"),
+(1123, "MQ", "Murzuq"),
+(1123, "NL", "Nālūt"),
+(1123, "SB", "Sabhā"),
+(1123, "SS", "Şabrātah Şurmān"),
+(1123, "SR", "Surt"),
+(1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
+(1123, "TB", "Ţarābulus"),
+(1123, "TM", "Tarhūnah-Masallātah"),
+(1123, "WD", "Wādī al hayāt"),
+(1123, "YJ", "Yafran-Jādū"),
+(1146, "AGD", "Agadir"),
+(1146, "BAH", "Aït Baha"),
+(1146, "MEL", "Aït Melloul"),
+(1146, "HAO", "Al Haouz"),
+(1146, "HOC", "Al Hoceïma"),
+(1146, "ASZ", "Assa-Zag"),
+(1146, "AZI", "Azilal"),
+(1146, "BEM", "Beni Mellal"),
+(1146, "BES", "Ben Sllmane"),
+(1146, "BER", "Berkane"),
+(1146, "BOD", "Boujdour"),
+(1146, "BOM", "Boulemane"),
+(1146, "CAS", "Casablanca  [Dar el Beïda]"),
+(1146, "CHE", "Chefchaouene"),
+(1146, "CHI", "Chichaoua"),
+(1146, "HAJ", "El Hajeb"),
+(1146, "JDI", "El Jadida"),
+(1146, "ERR", "Errachidia"),
+(1146, "ESI", "Essaouira"),
+(1146, "ESM", "Es Smara"),
+(1146, "FES", "Fès"),
+(1146, "FIG", "Figuig"),
+(1146, "GUE", "Guelmim"),
+(1146, "IFR", "Ifrane"),
+(1146, "JRA", "Jerada"),
+(1146, "KES", "Kelaat Sraghna"),
+(1146, "KEN", "Kénitra"),
+(1146, "KHE", "Khemisaet"),
+(1146, "KHN", "Khenifra"),
+(1146, "KHO", "Khouribga"),
+(1146, "LAA", "Laâyoune (EH)"),
+(1146, "LAP", "Larache"),
+(1146, "MAR", "Marrakech"),
+(1146, "MEK", "Meknsès"),
+(1146, "NAD", "Nador"),
+(1146, "OUA", "Ouarzazate"),
+(1146, "OUD", "Oued ed Dahab (EH)"),
+(1146, "OUJ", "Oujda"),
+(1146, "RBA", "Rabat-Salé"),
+(1146, "SAF", "Safi"),
+(1146, "SEF", "Sefrou"),
+(1146, "SET", "Settat"),
+(1146, "SIK", "Sidl Kacem"),
+(1146, "TNG", "Tanger"),
+(1146, "TNT", "Tan-Tan"),
+(1146, "TAO", "Taounate"),
+(1146, "TAR", "Taroudannt"),
+(1146, "TAT", "Tata"),
+(1146, "TAZ", "Taza"),
+(1146, "TET", "Tétouan"),
+(1146, "TIZ", "Tiznit"),
+(1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
+(1142, "CU", "Chisinau"),
+(1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
+(1142, "BA", "Balti"),
+(1142, "CA", "Cahul"),
+(1142, "ED", "Edinet"),
+(1142, "LA", "Lapusna"),
+(1142, "OR", "Orhei"),
+(1142, "SO", "Soroca"),
+(1142, "TA", "Taraclia"),
+(1142, "TI", "Tighina [Bender]"),
+(1142, "UN", "Ungheni"),
+(1129, "T", "Antananarivo"),
+(1129, "D", "Antsiranana"),
+(1129, "F", "Fianarantsoa"),
+(1129, "M", "Mahajanga"),
+(1129, "A", "Toamasina"),
+(1129, "U", "Toliara"),
+(1135, "ALL", "Ailinglapalap"),
+(1135, "ALK", "Ailuk"),
+(1135, "ARN", "Arno"),
+(1135, "AUR", "Aur"),
+(1135, "EBO", "Ebon"),
+(1135, "ENI", "Eniwetok"),
+(1135, "JAL", "Jaluit"),
+(1135, "KIL", "Kili"),
+(1135, "KWA", "Kwajalein"),
+(1135, "LAE", "Lae"),
+(1135, "LIB", "Lib"),
+(1135, "LIK", "Likiep"),
+(1135, "MAJ", "Majuro"),
+(1135, "MAL", "Maloelap"),
+(1135, "MEJ", "Mejit"),
+(1135, "MIL", "Mili"),
+(1135, "NMK", "Namorik"),
+(1135, "NMU", "Namu"),
+(1135, "RON", "Rongelap"),
+(1135, "UJA", "Ujae"),
+(1135, "UJL", "Ujelang"),
+(1135, "UTI", "Utirik"),
+(1135, "WTN", "Wotho"),
+(1135, "WTJ", "Wotje"),
+(1133, "BK0", "Bamako"),
+(1133, "7", "Gao"),
+(1133, "1", "Kayes"),
+(1133, "8", "Kidal"),
+(1133, "2", "Xoulikoro"),
+(1133, "5", "Mopti"),
+(1133, "4", "S69ou"),
+(1133, "3", "Sikasso"),
+(1133, "6", "Tombouctou"),
+(1035, "07", "Ayeyarwady"),
+(1035, "02", "Bago"),
+(1035, "03", "Magway"),
+(1035, "04", "Mandalay"),
+(1035, "01", "Sagaing"),
+(1035, "05", "Tanintharyi"),
+(1035, "06", "Yangon"),
+(1035, "14", "Chin"),
+(1035, "11", "Kachin"),
+(1035, "12", "Kayah"),
+(1035, "13", "Kayin"),
+(1035, "15", "Mon"),
+(1035, "16", "Rakhine"),
+(1035, "17", "Shan"),
+(1144, "1", "Ulaanbaatar"),
+(1144, "073", "Arhangay"),
+(1144, "069", "Bayanhongor"),
+(1144, "071", "Bayan-Olgiy"),
+(1144, "067", "Bulgan"),
+(1144, "037", "Darhan uul"),
+(1144, "061", "Dornod"),
+(1144, "063", "Dornogov,"),
+(1144, "059", "DundgovL"),
+(1144, "057", "Dzavhan"),
+(1144, "065", "Govi-Altay"),
+(1144, "064", "Govi-Smber"),
+(1144, "039", "Hentiy"),
+(1144, "043", "Hovd"),
+(1144, "041", "Hovsgol"),
+(1144, "053", "Omnogovi"),
+(1144, "035", "Orhon"),
+(1144, "055", "Ovorhangay"),
+(1144, "049", "Selenge"),
+(1144, "051", "Shbaatar"),
+(1144, "047", "Tov"),
+(1144, "046", "Uvs"),
+(1137, "NKC", "Nouakchott"),
+(1137, "03", "Assaba"),
+(1137, "05", "Brakna"),
+(1137, "08", "Dakhlet Nouadhibou"),
+(1137, "04", "Gorgol"),
+(1137, "10", "Guidimaka"),
+(1137, "01", "Hodh ech Chargui"),
+(1137, "02", "Hodh el Charbi"),
+(1137, "12", "Inchiri"),
+(1137, "09", "Tagant"),
+(1137, "11", "Tiris Zemmour"),
+(1137, "06", "Trarza"),
+(1138, "BR", "Beau Bassin-Rose Hill"),
+(1138, "CU", "Curepipe"),
+(1138, "PU", "Port Louis"),
+(1138, "QB", "Quatre Bornes"),
+(1138, "VP", "Vacosa-Phoenix"),
+(1138, "BL", "Black River"),
+(1138, "FL", "Flacq"),
+(1138, "GP", "Grand Port"),
+(1138, "MO", "Moka"),
+(1138, "PA", "Pamplemousses"),
+(1138, "PW", "Plaines Wilhems"),
+(1138, "RP", "Riviere du Rempart"),
+(1138, "SA", "Savanne"),
+(1138, "AG", "Agalega Islands"),
+(1138, "CC", "Cargados Carajos Shoals"),
+(1138, "RO", "Rodrigues Island"),
+(1132, "MLE", "Male"),
+(1132, "02", "Alif"),
+(1132, "20", "Baa"),
+(1132, "17", "Dhaalu"),
+(1132, "14", "Faafu"),
+(1132, "27", "Gaaf Alif"),
+(1132, "28", "Gaefu Dhaalu"),
+(1132, "29", "Gnaviyani"),
+(1132, "07", "Haa Alif"),
+(1132, "23", "Haa Dhaalu"),
+(1132, "26", "Kaafu"),
+(1132, "05", "Laamu"),
+(1132, "03", "Lhaviyani"),
+(1132, "12", "Meemu"),
+(1132, "25", "Noonu"),
+(1132, "13", "Raa"),
+(1132, "01", "Seenu"),
+(1132, "24", "Shaviyani"),
+(1132, "08", "Thaa"),
+(1132, "04", "Vaavu"),
+(1130, "BA", "Balaka"),
+(1130, "BL", "Blantyre"),
+(1130, "CK", "Chikwawa"),
+(1130, "CR", "Chiradzulu"),
+(1130, "CT", "Chitipa"),
+(1130, "DE", "Dedza"),
+(1130, "DO", "Dowa"),
+(1130, "KR", "Karonga"),
+(1130, "KS", "Kasungu"),
+(1130, "LK", "Likoma Island"),
+(1130, "LI", "Lilongwe"),
+(1130, "MH", "Machinga"),
+(1130, "MG", "Mangochi"),
+(1130, "MC", "Mchinji"),
+(1130, "MU", "Mulanje"),
+(1130, "MW", "Mwanza"),
+(1130, "MZ", "Mzimba"),
+(1130, "NB", "Nkhata Bay"),
+(1130, "NK", "Nkhotakota"),
+(1130, "NS", "Nsanje"),
+(1130, "NU", "Ntcheu"),
+(1130, "NI", "Ntchisi"),
+(1130, "PH", "Phalomba"),
+(1130, "RU", "Rumphi"),
+(1130, "SA", "Salima"),
+(1130, "TH", "Thyolo"),
+(1130, "ZO", "Zomba"),
+(1140, "AGU", "Aguascalientes"),
+(1140, "BCN", "Baja California"),
+(1140, "BCS", "Baja California Sur"),
+(1140, "CAM", "Campeche"),
+(1140, "COA", "Coahuila"),
+(1140, "COL", "Colima"),
+(1140, "CHP", "Chiapas"),
+(1140, "CHH", "Chihuahua"),
+(1140, "DUR", "Durango"),
+(1140, "GUA", "Guanajuato"),
+(1140, "GRO", "Guerrero"),
+(1140, "HID", "Hidalgo"),
+(1140, "JAL", "Jalisco"),
+(1140, "MEX", "Mexico"),
+(1140, "MIC", "Michoacin"),
+(1140, "MOR", "Morelos"),
+(1140, "NAY", "Nayarit"),
+(1140, "NLE", "Nuevo Leon"),
+(1140, "OAX", "Oaxaca"),
+(1140, "PUE", "Puebla"),
+(1140, "QUE", "Queretaro"),
+(1140, "ROO", "Quintana Roo"),
+(1140, "SLP", "San Luis Potosi"),
+(1140, "SIN", "Sinaloa"),
+(1140, "SON", "Sonora"),
+(1140, "TAB", "Tabasco"),
+(1140, "TAM", "Tamaulipas"),
+(1140, "TLA", "Tlaxcala"),
+(1140, "VER", "Veracruz"),
+(1140, "YUC", "Yucatan"),
+(1140, "ZAC", "Zacatecas"),
+(1140, "DIF", "Distrito Federal"),
+(1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
+(1131, "15", "Wilayah Persekutuan Labuan"),
+(1131, "16", "Wilayah Persekutuan Putrajaya"),
+(1131, "01", "Johor"),
+(1131, "02", "Kedah"),
+(1131, "03", "Kelantan"),
+(1131, "04", "Melaka"),
+(1131, "05", "Negeri Sembilan"),
+(1131, "06", "Pahang"),
+(1131, "08", "Perak"),
+(1131, "09", "Perlis"),
+(1131, "07", "Pulau Pinang"),
+(1131, "12", "Sabah"),
+(1131, "13", "Sarawak"),
+(1131, "10", "Selangor"),
+(1131, "11", "Terengganu"),
+(1147, "MPM", "Maputo"),
+(1147, "P", "Cabo Delgado"),
+(1147, "G", "Gaza"),
+(1147, "I", "Inhambane"),
+(1147, "B", "Manica"),
+(1147, "N", "Numpula"),
+(1147, "A", "Niaaea"),
+(1147, "S", "Sofala"),
+(1147, "T", "Tete"),
+(1147, "Q", "Zambezia"),
+(1148, "CA", "Caprivi"),
+(1148, "ER", "Erongo"),
+(1148, "HA", "Hardap"),
+(1148, "KA", "Karas"),
+(1148, "KH", "Khomas"),
+(1148, "KU", "Kunene"),
+(1148, "OW", "Ohangwena"),
+(1148, "OK", "Okavango"),
+(1148, "OH", "Omaheke"),
+(1148, "OS", "Omusati"),
+(1148, "ON", "Oshana"),
+(1148, "OT", "Oshikoto"),
+(1148, "OD", "Otjozondjupa"),
+(1156, "8", "Niamey"),
+(1156, "1", "Agadez"),
+(1156, "2", "Diffa"),
+(1156, "3", "Dosso"),
+(1156, "4", "Maradi"),
+(1156, "S", "Tahoua"),
+(1156, "6", "Tillaberi"),
+(1156, "7", "Zinder"),
+(1157, "FC", "Abuja Federal Capital Territory"),
+(1157, "AB", "Abia"),
+(1157, "AD", "Adamawa"),
+(1157, "AK", "Akwa Ibom"),
+(1157, "AN", "Anambra"),
+(1157, "BA", "Bauchi"),
+(1157, "BY", "Bayelsa"),
+(1157, "BE", "Benue"),
+(1157, "BO", "Borno"),
+(1157, "CR", "Cross River"),
+(1157, "DE", "Delta"),
+(1157, "EB", "Ebonyi"),
+(1157, "ED", "Edo"),
+(1157, "EK", "Ekiti"),
+(1157, "EN", "Enugu"),
+(1157, "GO", "Gombe"),
+(1157, "IM", "Imo"),
+(1157, "JI", "Jigawa"),
+(1157, "KD", "Kaduna"),
+(1157, "KN", "Kano"),
+(1157, "KT", "Katsina"),
+(1157, "KE", "Kebbi"),
+(1157, "KO", "Kogi"),
+(1157, "KW", "Kwara"),
+(1157, "LA", "Lagos"),
+(1157, "NA", "Nassarawa"),
+(1157, "NI", "Niger"),
+(1157, "OG", "Ogun"),
+(1157, "ON", "Ondo"),
+(1157, "OS", "Osun"),
+(1157, "OY", "Oyo"),
+(1157, "RI", "Rivers"),
+(1157, "SO", "Sokoto"),
+(1157, "TA", "Taraba"),
+(1157, "YO", "Yobe"),
+(1157, "ZA", "Zamfara"),
+(1157, "PL", "Plateau"),
+(1155, "BO", "Boaco"),
+(1155, "CA", "Carazo"),
+(1155, "CI", "Chinandega"),
+(1155, "CO", "Chontales"),
+(1155, "ES", "Esteli"),
+(1155, "JI", "Jinotega"),
+(1155, "LE", "Leon"),
+(1155, "MD", "Madriz"),
+(1155, "MN", "Managua"),
+(1155, "MS", "Masaya"),
+(1155, "MT", "Matagalpa"),
+(1155, "NS", "Nueva Segovia"),
+(1155, "SJ", "Rio San Juan"),
+(1155, "RI", "Rivas"),
+(1155, "AN", "Atlantico Norte"),
+(1155, "AS", "Atlantico Sur"),
+(1152, "DR", "Drente"),
+(1152, "FL", "Flevoland"),
+(1152, "FR", "Friesland"),
+(1152, "GL", "Gelderland"),
+(1152, "GR", "Groningen"),
+(1152, "NB", "Noord-Brabant"),
+(1152, "NH", "Noord-Holland"),
+(1152, "OV", "Overijssel"),
+(1152, "UT", "Utrecht"),
+(1152, "ZH", "Zuid-Holland"),
+(1152, "ZL", "Zeeland"),
+(1161, "02", "Akershus"),
+(1161, "09", "Aust-Agder"),
+(1161, "06", "Buskerud"),
+(1161, "20", "Finnmark"),
+(1161, "04", "Hedmark"),
+(1161, "15", "Møre og Romsdal"),
+(1161, "18", "Nordland"),
+(1161, "17", "Nord-Trøndelag"),
+(1161, "05", "Oppland"),
+(1161, "03", "Oslo"),
+(1161, "11", "Rogaland"),
+(1161, "16", "Sør-Trøndelag"),
+(1161, "06", "Telemark"),
+(1161, "19", "Troms"),
+(1161, "10", "Vest-Agder"),
+(1161, "07", "Vestfold"),
+(1161, "46", "Vestland"),
+(1161, "01", "Østfold"),
+(1161, "22", "Jan Mayen"),
+(1161, "21", "Svalbard"),
+(1154, "AUK", "Auckland"),
+(1154, "BOP", "Bay of Plenty"),
+(1154, "CAN", "Canterbury"),
+(1154, "GIS", "Gisborne"),
+(1154, "HKB", "Hawkes Bay"),
+(1154, "MWT", "Manawatu-Wanganui"),
+(1154, "MBH", "Marlborough"),
+(1154, "NSN", "Nelson"),
+(1154, "NTL", "Northland"),
+(1154, "OTA", "Otago"),
+(1154, "STL", "Southland"),
+(1154, "TKI", "Taranaki"),
+(1154, "TAS", "Tasman"),
+(1154, "WKO", "Waikato"),
+(1154, "WGN", "Wellington"),
+(1154, "WTC", "West Coast"),
+(1162, "DA", "Ad Dakhillyah"),
+(1162, "BA", "Al Batinah"),
+(1162, "JA", "Al Janblyah"),
+(1162, "WU", "Al Wusta"),
+(1162, "SH", "Ash Sharqlyah"),
+(1162, "ZA", "Az Zahirah"),
+(1162, "MA", "Masqat"),
+(1162, "MU", "Musandam"),
 -- Palestinian governorates from http://en.wikipedia.org/wiki/Governorates_of_the_Palestinian_National_Authority (no ISO 3166-2 entries yet, hence temporary codes)
-(5201, 1165, "_A", "Jenin"),
-(5202, 1165, "_B", "Tubas"),
-(5203, 1165, "_C", "Tulkarm"),
-(5204, 1165, "_D", "Nablus"),
-(5205, 1165, "_E", "Qalqilya"),
-(5206, 1165, "_F", "Salfit"),
-(5207, 1165, "_G", "Ramallah and Al-Bireh"),
-(5208, 1165, "_H", "Jericho"),
-(5209, 1165, "_I", "Jerusalem"),
-(5210, 1165, "_J", "Bethlehem"),
-(5211, 1165, "_K", "Hebron"),
-(5212, 1165, "_L", "North Gaza"),
-(5213, 1165, "_M", "Gaza"),
-(5214, 1165, "_N", "Deir el-Balah"),
-(5215, 1165, "_O", "Khan Yunis"),
-(5216, 1165, "_P", "Rafah"),
-
-(5217, 1020, "BRU", "Brussels"),
-
-(5218, 1140, "DIF", "Distrito Federal"),
-(5219, 1208, "TXG", "Taichung City"),
-(5220, 1208, "KHH", "Kaohsiung City"),
-(5221, 1208, "TPE", "Taipei City"),
-(5222, 1208, "CYI", "Chiayi City"),
-(5223, 1208, "HSZ", "Hsinchu City"),
-(5224, 1208, "TNN", "Tainan City"),
-(9000, 1196, "NW", "North West"),
-
-(9986, 1226, "TWR", "Tyne and Wear"),
-(9988, 1226, "GTM", "Greater Manchester"),
-(9989, 1226, "TYR", "Co Tyrone"),
-(9990, 1226, "WYK", "West Yorkshire"),
-(9991, 1226, "SYK", "South Yorkshire"),
-(9992, 1226, "MSY", "Merseyside"),
-(9993, 1226, "BRK", "Berkshire"),
-(9994, 1226, "WMD", "West Midlands"),
-(9998, 1226, "WGM", "West Glamorgan"),
-(9999, 1226, "LON", "London"),
-
-(10000, 1107, "CI", "Carbonia-Iglesias"),
-(10001, 1107, "OT", "Olbia-Tempio"),
-(10002, 1107, "VS", "Medio Campidano"),
-(10003, 1107, "OG", "Ogliastra"),
-
--- department of France (CRM-4769)
-(10009, 1076, "39", "Jura"),
-
--- new Italian provinces (CRM-5048)
-(10010, 1107, "BT", "Barletta-Andria-Trani"),
-(10011, 1107, "FM", "Fermo"),
-(10012, 1107, "MB", "Monza e Brianza"),
-
--- new UK provinces (CRM-5224)
-(10013, 1226, "CWD", "Clwyd"),
-(10015, 1226, "SGM", "South Glamorgan"),
-
--- Haiti (CRM-5628)
-(10016, 1094, "AR", "Artibonite"),
-(10017, 1094, "CE", "Centre"),
-(10018, 1094, "NI", "Nippes"),
-(10019, 1094, "ND", "Nord"),
-
--- CRM-6002 - Argentinian provinces suplemented
-(10020, 1010, "F", "La Rioja"),
-
--- CRM-6063 - Added states for Andorra
-(10021, 1005, "07", "Andorra la Vella"),
-(10022, 1005, "02", "Canillo"),
-(10023, 1005, "03", "Encamp"),
-(10024, 1005, "08", "Escaldes-Engordany"),
-(10025, 1005, "04", "La Massana"),
-(10026, 1005, "05", "Ordino"),
-(10027, 1005, "06", "Sant Julia de Loria"),
-
--- CRM-6198 - Added provinces of Bahamas
-(NULL, 1212, "AB", "Abaco Islands"),
-(NULL, 1212, "AN", "Andros Island"),
-(NULL, 1212, "BR", "Berry Islands"),
-(NULL, 1212, "EL", "Eleuthera"),
-(NULL, 1212, "GB", "Grand Bahama"),
-(NULL, 1212, "RC", "Rum Cay"),
-(NULL, 1212, "SS", "San Salvador Island"),
-
--- Added provinces of The Democratic Republic of the Congo
-
-(NULL, 1050, "01", "Kongo central"),
-(NULL, 1050, "02", "Kwango"),
-(NULL, 1050, "03", "Kwilu"),
-(NULL, 1050, "04", "Mai-Ndombe"),
-(NULL, 1050, "05", "Kasai"),
-(NULL, 1050, "06", "Lulua"),
-(NULL, 1050, "07", "Lomami"),
-(NULL, 1050, "08", "Sankuru"),
-(NULL, 1050, "09", "Ituri"),
-(NULL, 1050, "10", "Haut-Uele"),
-(NULL, 1050, "11", "Tshopo"),
-(NULL, 1050, "12", "Bas-Uele"),
-(NULL, 1050, "13", "Nord-Ubangi"),
-(NULL, 1050, "14", "Mongala"),
-(NULL, 1050, "15", "Sud-Ubangi"),
-(NULL, 1050, "16", "Tshuapa"),
-(NULL, 1050, "17", "Haut-Lomami"),
-(NULL, 1050, "18", "Lualaba"),
-(NULL, 1050, "19", "Haut-Katanga"),
-(NULL, 1050, "20", "Tanganyika"),
-
--- CRM-8009 Added Missing Provinces for Spain
-(NULL, 1198, "TO", "Toledo" ),
-(NULL, 1198, "CO", "Córdoba" ),
-
--- CRM-8769 Added Missing Province for Philippines
-(NULL, 1170, "MNL", "Metropolitan Manila" ),
-
--- CRM-9686 Added Missing Province for Honduras
-(NULL, 1097, "LP", "La Paz"),
-
--- CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China
-(NULL, 1045, "YN", "Yinchuan"),
-(NULL, 1045, "SZ", "Shizuishan"),
-(NULL, 1045, "WZ", "Wuzhong"),
-(NULL, 1045, "GY", "Guyuan"),
-(NULL, 1045, "ZW", "Zhongwei"),
-
--- CRM-10863 Added Missing Province for Luxembourg
-(NULL, 1126, "LU", "Luxembourg"),
-
--- CRM-11367 Latvian regions
-(NULL, 1119, "002", "Aizkraukles novads"),
-(NULL, 1119, "038", "Jaunjelgavas novads"),
-(NULL, 1119, "072", "Pļaviņu novads"),
-(NULL, 1119, "046", "Kokneses novads"),
-(NULL, 1119, "065", "Neretas novads"),
-(NULL, 1119, "092", "Skrīveru novads"),
-(NULL, 1119, "007", "Alūksnes novads"),
-(NULL, 1119, "009", "Apes novads"),
-(NULL, 1119, "015", "Balvu novads"),
-(NULL, 1119, "108", "Viļakas novads"),
-(NULL, 1119, "014", "Baltinavas novads"),
-(NULL, 1119, "082", "Rugāju novads"),
-(NULL, 1119, "016", "Bauskas novads"),
-(NULL, 1119, "034", "Iecavas novads"),
-(NULL, 1119, "083", "Rundāles novads"),
-(NULL, 1119, "105", "Vecumnieku novads"),
-(NULL, 1119, "022", "CÄ“su novads"),
-(NULL, 1119, "055", "LÄ«gatnes novads"),
-(NULL, 1119, "008", "Amatas novads"),
-(NULL, 1119, "039", "Jaunpiebalgas novads"),
-(NULL, 1119, "075", "Priekuļu novads"),
-(NULL, 1119, "070", "Pārgaujas novads"),
-(NULL, 1119, "076", "Raunas novads"),
-(NULL, 1119, "104", "Vecpiebalgas novads"),
-(NULL, 1119, "025", "Daugavpils novads"),
-(NULL, 1119, "036", "Ilūkstes novads"),
-(NULL, 1119, "026", "Dobeles novads"),
-(NULL, 1119, "010", "Auces novads"),
-(NULL, 1119, "098", "TÄ“rvetes novads"),
-(NULL, 1119, "033", "Gulbenes novads"),
-(NULL, 1119, "041", "Jelgavas novads"),
-(NULL, 1119, "069", "Ozolnieku novads"),
-(NULL, 1119, "042", "JÄ“kabpils novads"),
-(NULL, 1119, "004", "Aknīstes novads"),
-(NULL, 1119, "107", "Viesītes novads"),
-(NULL, 1119, "049", "Krustpils novads"),
-(NULL, 1119, "085", "Salas novads"),
-(NULL, 1119, "047", "Krāslavas novads"),
-(NULL, 1119, "024", "Dagdas novads"),
-(NULL, 1119, "001", "Aglonas novads"),
-(NULL, 1119, "050", "Kuldīgas novads"),
-(NULL, 1119, "093", "Skrundas novads"),
-(NULL, 1119, "006", "Alsungas novads"),
-(NULL, 1119, "003", "Aizputes novads"),
-(NULL, 1119, "028", "Durbes novads"),
-(NULL, 1119, "032", "Grobiņas novads"),
-(NULL, 1119, "071", "Pāvilostas novads"),
-(NULL, 1119, "074", "Priekules novads"),
-(NULL, 1119, "066", "NÄ«cas novads"),
-(NULL, 1119, "081", "Rucavas novads"),
-(NULL, 1119, "100", "Vaiņodes novads"),
-(NULL, 1119, "054", "Limbažu novads"),
-(NULL, 1119, "005", "Alojas novads"),
-(NULL, 1119, "086", "Salacgrīvas novads"),
-(NULL, 1119, "058", "Ludzas novads"),
-(NULL, 1119, "044", "Kārsavas novads"),
-(NULL, 1119, "110", "Zilupes novads"),
-(NULL, 1119, "023", "Ciblas novads"),
-(NULL, 1119, "059", "Madonas novads"),
-(NULL, 1119, "021", "Cesvaines novads"),
-(NULL, 1119, "057", "Lubānas novads"),
-(NULL, 1119, "102", "Varakļānu novads"),
-(NULL, 1119, "030", "Ērgļu novads"),
-(NULL, 1119, "067", "Ogres novads"),
-(NULL, 1119, "035", "Ikšķiles novads"),
-(NULL, 1119, "051", "Ķeguma novads"),
-(NULL, 1119, "053", "Lielvārdes novads"),
-(NULL, 1119, "073", "Preiļu novads"),
-(NULL, 1119, "056", "Līvānu novads"),
-(NULL, 1119, "078", "Riebiņu novads"),
-(NULL, 1119, "103", "Vārkavas novads"),
-(NULL, 1119, "077", "RÄ“zeknes novads"),
-(NULL, 1119, "109", "Viļānu novads"),
-(NULL, 1119, "013", "Baldones novads"),
-(NULL, 1119, "052", "Ķekavas novads"),
-(NULL, 1119, "068", "Olaines novads"),
-(NULL, 1119, "087", "Salaspils novads"),
-(NULL, 1119, "089", "Saulkrastu novads"),
-(NULL, 1119, "091", "Siguldas novads"),
-(NULL, 1119, "037", "Inčukalna novads"),
-(NULL, 1119, "011", "Ādažu novads"),
-(NULL, 1119, "012", "Babītes novads"),
-(NULL, 1119, "020", "Carnikavas novads"),
-(NULL, 1119, "031", "Garkalnes novads"),
-(NULL, 1119, "048", "Krimuldas novads"),
-(NULL, 1119, "061", "Mālpils novads"),
-(NULL, 1119, "062", "Mārupes novads"),
-(NULL, 1119, "080", "Ropažu novads"),
-(NULL, 1119, "090", "SÄ“jas novads"),
-(NULL, 1119, "095", "Stopiņu novads"),
-(NULL, 1119, "088", "Saldus novads"),
-(NULL, 1119, "018", "Brocēnu novads"),
-(NULL, 1119, "097", "Talsu novads"),
-(NULL, 1119, "027", "Dundagas novads"),
-(NULL, 1119, "063", "MÄ“rsraga novads"),
-(NULL, 1119, "079", "Rojas novads"),
-(NULL, 1119, "099", "Tukuma novads"),
-(NULL, 1119, "043", "Kandavas novads"),
-(NULL, 1119, "029", "Engures novads"),
-(NULL, 1119, "040", "Jaunpils novads"),
-(NULL, 1119, "101", "Valkas novads"),
-(NULL, 1119, "094", "Smiltenes novads"),
-(NULL, 1119, "096", "Strenču novads"),
-(NULL, 1119, "045", "Kocēnu novads"),
-(NULL, 1119, "060", "Mazsalacas novads"),
-(NULL, 1119, "084", "RÅ«jienas novads"),
-(NULL, 1119, "017", "Beverīnas novads"),
-(NULL, 1119, "019", "Burtnieku novads"),
-(NULL, 1119, "064", "Naukšēnu novads"),
-(NULL, 1119, "106", "Ventspils novads"),
-(NULL, 1119, "JKB", "JÄ“kabpils"),
-(NULL, 1119, "VMR", "Valmiera"),
-
--- CRM-13314 Added States for Uruguay
-(NULL, 1229, "FL", "Florida"),
-(NULL, 1229, "RN", "Rio Negro"),
-(NULL, 1229, "SJ", "San Jose"),
-
--- Added Nigeria States(CRM-14183)
-(NULL, 1157, "PL", "Plateau"),
-
-
--- CRM-14493 Added State for Greece
-(NULL, 1085, "61", "Pieria"),
-
--- CRM-14843 Added States for Chile and Modify Santiago Metropolitan for consistency
-(NULL, 1044, "LR", "Los Rios"),
-(NULL, 1044, "AP", "Arica y Parinacota"),
-
--- Add missing Peruvian State (Amazonas)
-(NULL, 1169, "AMA", "Amazonas"),
-
--- Add missing Indonesian provinces (Kalimantan Tengah, Sulawesi Barat, Kalimantan Utara) and revised outdated names in code above
-(NULL, 1102, "KT", "Kalimantan Tengah"),
-(NULL, 1102, "SR", "Sulawesi Barat"),
-(NULL, 1102, "KU", "Kalimantan Utara"),
-
--- Add missing Slovenian municipalities
-(NULL, 1193, "86", "Ankaran"),
-(NULL, 1193, "87", "Apače"),
-(NULL, 1193, "88", "Cirkulane"),
-(NULL, 1193, "89", "Gorje"),
-(NULL, 1193, "90", "Kostanjevica na Krki"),
-(NULL, 1193, "91", "Log-Dragomer"),
-(NULL, 1193, "92", "Makole"),
-(NULL, 1193, "93", "Mirna"),
-(NULL, 1193, "94", "Mokronog-Trebelno"),
-(NULL, 1193, "95", "Odranci"),
-(NULL, 1193, "96", "Oplotnica"),
-(NULL, 1193, "97", "Ormož"),
-(NULL, 1193, "98", "Osilnica"),
-(NULL, 1193, "99", "Pesnica"),
-(NULL, 1193, "100", "Piran"),
-(NULL, 1193, "101", "Pivka"),
-(NULL, 1193, "102", "Podčetrtek"),
-(NULL, 1193, "103", "Podlehnik"),
-(NULL, 1193, "104", "Podvelka"),
-(NULL, 1193, "105", "Poljčane"),
-(NULL, 1193, "106", "Polzela"),
-(NULL, 1193, "107", "Postojna"),
-(NULL, 1193, "108", "Prebold"),
-(NULL, 1193, "109", "Preddvor"),
-(NULL, 1193, "110", "Prevalje"),
-(NULL, 1193, "111", "Ptuj"),
-(NULL, 1193, "112", "Puconci"),
-(NULL, 1193, "113", "Rače-Fram"),
-(NULL, 1193, "114", "Radeče"),
-(NULL, 1193, "115", "Radenci"),
-(NULL, 1193, "139", "Radlje ob Dravi"),
-(NULL, 1193, "145", "Radovljica"),
-(NULL, 1193, "171", "Ravne na Koroškem"),
-(NULL, 1193, "172", "Razkrižje"),
-(NULL, 1193, "173", "Rečica ob Savinji"),
-(NULL, 1193, "174", "Renče-Vogrsko"),
-(NULL, 1193, "175", "Ribnica"),
-(NULL, 1193, "176", "Ribnica na Pohorju"),
-(NULL, 1193, "177", "Rogaška Slatina"),
-(NULL, 1193, "178", "Rogašovci"),
-(NULL, 1193, "179", "Rogatec"),
-(NULL, 1193, "180", "Ruše"),
-(NULL, 1193, "195", "Selnica ob Dravi"),
-(NULL, 1193, "196", "Semič"),
-(NULL, 1193, "197", "Å entrupert"),
-(NULL, 1193, "198", "Sevnica"),
-(NULL, 1193, "199", "Sežana"),
-(NULL, 1193, "200", "Slovenj Gradec"),
-(NULL, 1193, "201", "Slovenska Bistrica"),
-(NULL, 1193, "202", "Slovenske Konjice"),
-(NULL, 1193, "203", "Šmarješke Toplice"),
-(NULL, 1193, "204", "Sodražica"),
-(NULL, 1193, "205", "Solčava"),
-(NULL, 1193, "206", "Središče ob Dravi"),
-(NULL, 1193, "207", "Starše"),
-(NULL, 1193, "208", "Straža"),
-(NULL, 1193, "209", "Sveta Trojica v Slovenskih goricah"),
-(NULL, 1193, "210", "Sveti Jurij v Slovenskih goricah"),
-(NULL, 1193, "211", "Sveti Tomaž"),
-(NULL, 1193, "212", "Vodice"),
-
--- CRM-16452 Missing administrative divisions for Georgia
-(NULL, 1081, "AB", "Abkhazia"),
-(NULL, 1081, "AJ", "Adjara"),
-(NULL, 1081, "TB", "Tbilisi"),
-(NULL, 1081, "GU", "Guria"),
-(NULL, 1081, "IM", "Imereti"),
-(NULL, 1081, "KA", "Kakheti"),
-(NULL, 1081, "KK", "Kvemo Kartli"),
-(NULL, 1081, "MM", "Mtskheta-Mtianeti"),
-(NULL, 1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
-(NULL, 1081, "SZ", "Samegrelo-Zemo Svaneti"),
-(NULL, 1081, "SJ", "Samtskhe-Javakheti"),
-(NULL, 1081, "SK", "Shida Kartli"),
-(NULL, 1074, "C", "Central"),
-
--- CRM-17136 Add missing Pakistani Province (Punjab)
-(NULL, 1163, "PB", "Punjab"),
-
--- CRM-17184
-(NULL, 1066, "LI", "La Libertad"),
-(NULL, 1066, "PA", "La Paz"),
-(NULL, 1066, "UN", "La Union"),
-
--- CRM-17660 Add missing Cameroon Provinces
-(NULL, 1038, "LT", "Littoral"),
-(NULL, 1038, "NW", "Nord-Ouest"),
-
--- Add Indian province of Telangana
-(NULL, 1101, "TG", "Telangana"),
-
--- CRM-17800
-(NULL, 1187, "04", "Ash Sharqiyah"),
-
--- CRM-19134 Missing French overseas departments.
-(NULL, 1076, "GP", "Guadeloupe"),
-(NULL, 1076, "MQ", "Martinique"),
-(NULL, 1076, "GF", "Guyane"),
-(NULL, 1076, "RE", "La Réunion"),
-(NULL, 1076, "YT", "Mayotte"),
-
--- CRM-20062 New counties of Kenya.
-(NULL, 1112, "01", "Baringo"),
-(NULL, 1112, "02", "Bomet"),
-(NULL, 1112, "03", "Bungoma"),
-(NULL, 1112, "04", "Busia"),
-(NULL, 1112, "05", "Elgeyo/Marakwet"),
-(NULL, 1112, "06", "Embu"),
-(NULL, 1112, "07", "Garissa"),
-(NULL, 1112, "08", "Homa Bay"),
-(NULL, 1112, "09", "Isiolo"),
-(NULL, 1112, "10", "Kajiado"),
-(NULL, 1112, "11", "Kakamega"),
-(NULL, 1112, "12", "Kericho"),
-(NULL, 1112, "13", "Kiambu"),
-(NULL, 1112, "14", "Kilifi"),
-(NULL, 1112, "15", "Kirinyaga"),
-(NULL, 1112, "16", "Kisii"),
-(NULL, 1112, "17", "Kisumu"),
-(NULL, 1112, "18", "Kitui"),
-(NULL, 1112, "19", "Kwale"),
-(NULL, 1112, "20", "Laikipia"),
-(NULL, 1112, "21", "Lamu"),
-(NULL, 1112, "22", "Machakos"),
-(NULL, 1112, "23", "Makueni"),
-(NULL, 1112, "24", "Mandera"),
-(NULL, 1112, "25", "Marsabit"),
-(NULL, 1112, "26", "Meru"),
-(NULL, 1112, "27", "Migori"),
-(NULL, 1112, "28", "Mombasa"),
-(NULL, 1112, "29", "Murang'a"),
-(NULL, 1112, "30", "Nairobi City"),
-(NULL, 1112, "31", "Nakuru"),
-(NULL, 1112, "32", "Nandi"),
-(NULL, 1112, "33", "Narok"),
-(NULL, 1112, "34", "Nyamira"),
-(NULL, 1112, "35", "Nyandarua"),
-(NULL, 1112, "36", "Nyeri"),
-(NULL, 1112, "37", "Samburu"),
-(NULL, 1112, "38", "Siaya"),
-(NULL, 1112, "39", "Taita/Taveta"),
-(NULL, 1112, "40", "Tana River"),
-(NULL, 1112, "41", "Tharaka-Nithi"),
-(NULL, 1112, "42", "Trans Nzoia"),
-(NULL, 1112, "43", "Turkana"),
-(NULL, 1112, "44", "Uasin Gishu"),
-(NULL, 1112, "45", "Vihiga"),
-(NULL, 1112, "46", "Wajir"),
-(NULL, 1112, "47", "West Pokot"),
-
--- CRM-19993 Fixes for ISO compliance with countries and counties
--- Add states for: India, Ghana, Sierra Leone, Saint Kitts & Nevis
-(NULL, 1101, "CH", "Chandigarh"),
-(NULL, 1083, "CP", "Central"),
-(NULL, 1083, "EP", "Eastern"),
-(NULL, 1083, "NP", "Northern"),
-(NULL, 1083, "WP", "Western"),
-(NULL, 1181, "K", "Saint Kitts"),
-(NULL, 1181, "N", "Nevis"),
-(NULL, 1190, "E", "Eastern"),
-(NULL, 1190, "N", "Northern"),
-(NULL, 1190, "S", "Southern"),
-
--- CRM-21234 Missing subdivisions of Tajikistan.
-(NULL, 1209, "DU", "Dushanbe"),
-(NULL, 1209, "RA", "Nohiyahoi Tobei Jumhurí"),
-
--- CRM-21268 Missing French overseas departments.
-(NULL, 1076, "WF", "Wallis-et-Futuna"),
-(NULL, 1076, "NC", "Nouvelle-Calédonie"),
-
--- CRM-21532 Add French state/departments
-(NULL, 1076, "52", "Haute-Marne"),
-
--- Add states for: Barbados and Antigua and Barbuda
-(NULL, 1009, "03", "Saint George"),
-(NULL, 1009, "04", "Saint John"),
-(NULL, 1009, "05", "Saint Mary"),
-(NULL, 1009, "06", "Saint Paul"),
-(NULL, 1009, "07", "Saint Peter"),
-(NULL, 1009, "08", "Saint Philip"),
-(NULL, 1009, "10", "Barbuda"),
-(NULL, 1009, "11", "Redonda"),
-(NULL, 1018, "01", "Christ Church"),
-(NULL, 1018, "02", "Saint Andrew"),
-(NULL, 1018, "03", "Saint George"),
-(NULL, 1018, "04", "Saint James"),
-(NULL, 1018, "05", "Saint John"),
-(NULL, 1018, "06", "Saint Joseph"),
-(NULL, 1018, "07", "Saint Lucy"),
-(NULL, 1018, "08", "Saint Michael"),
-(NULL, 1018, "09", "Saint Peter"),
-(NULL, 1018, "10", "Saint Philip"),
-(NULL, 1018, "11", "Saint Thomas"),
-
--- CRM-21837 - Missing states for Gabon
-(NULL, 1080, "01", "Estuaire"),
-(NULL, 1080, "02", "Haut-Ogooué"),
-(NULL, 1080, "03", "Moyen-Ogooué"),
-(NULL, 1080, "04", "Ngounié"),
-(NULL, 1080, "05", "Nyanga"),
-(NULL, 1080, "06", "Ogooué-Ivindo"),
-(NULL, 1080, "07", "Ogooué-Lolo"),
-(NULL, 1080, "08", "Ogooué-Maritime"),
-(NULL, 1080, "09", "Woleu-Ntem"),
-
--- dev/Core#131 Missing UK State
-(NULL, 1226, "MON", "Monmouthshire"),
-
--- dev/core#2027 Missing subdivisions for Northern Ireland and Wales
-(NULL, 1226, "ANN", "Antrim and Newtownabbey"),
-(NULL, 1226, "AND", "Ards and North Down"),
-(NULL, 1226, "ABC", "Armagh City, Banbridge and Craigavon"),
-(NULL, 1226, "BFS", "Belfast"),
-(NULL, 1226, "CCG", "Causeway Coast and Glens"),
-(NULL, 1226, "DRS", "Derry City and Strabane"),
-(NULL, 1226, "FMO", "Fermanagh and Omagh"),
-(NULL, 1226, "LBC", "Lisburn and Castlereagh"),
-(NULL, 1226, "MEA", "Mid and East Antrim"),
-(NULL, 1226, "MUL", "Mid Ulster"),
-(NULL, 1226, "NMD", "Newry, Mourne and Down"),
-
-(NULL, 1226, "BGE", "Bridgend"),
-(NULL, 1226, "CAY", "Caerphilly"),
-(NULL, 1226, "CRF", "Cardiff"),
-(NULL, 1226, "CMN", "Carmarthenshire"),
-(NULL, 1226, "CGN", "Ceredigion"),
-(NULL, 1226, "CWY", "Conwy"),
-(NULL, 1226, "DEN", "Denbighshire"),
-(NULL, 1226, "FLN", "Flintshire"),
-(NULL, 1226, "AGY", "Isle of Anglesey"),
-(NULL, 1226, "MTY", "Merthyr Tydfil"),
-(NULL, 1226, "NTL", "Neath Port Talbot"),
-(NULL, 1226, "NWP", "Newport"),
-(NULL, 1226, "PEM", "Pembrokeshire"),
-(NULL, 1226, "RCT", "Rhondda, Cynon, Taff"),
-(NULL, 1226, "SWA", "Swansea"),
-(NULL, 1226, "TOF", "Torfaen"),
-(NULL, 1226, "WRX", "Wrexham"),
-
--- Add missing state for South Korea
-(NULL, 1115, "50", "Sejong"),
-
--- Add missing province for Philippines
-(NULL, 1170, "DIN", "Dinagat Islands"),
-
--- Add missing state for Colombia
-(NULL, 1048, "HUI", "Huila"),
-
--- Add missing parishes for Bermuda
- (NULL, 1023, 'DEV', 'Devonshire'),
- (NULL, 1023, 'HAM', 'Hamilton Parish'),
- (NULL, 1023, 'HA', 'City of Hamilton'),
- (NULL, 1023, 'PAG', 'Paget'),
- (NULL, 1023, 'PEM', 'Pembroke'),
- (NULL, 1023, 'SG', 'Town of St. George'),
- (NULL, 1023, 'SGE', 'Saint George\'s'),
- (NULL, 1023, 'SAN', 'Sandys'),
- (NULL, 1023, 'SMI', 'Smiths'),
- (NULL, 1023, 'SOU', 'Southampton'),
- (NULL, 1023, 'WAR', 'Warwick'),
-
--- Add in missing Indian State provinces
-
-(NULL, 1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
-(NULL, 1101, "LA", "Ladākh"),
-
- -- end of statement:
-
--- Add missing provinces for Luxembourg
-(NULL, 1126, 'CA', 'Capellen'),
-(NULL, 1126, 'CL', 'Clervaux'),
-(NULL, 1126, 'EC', 'Echternach'),
-(NULL, 1126, 'ES', 'Esch-sur-Alzette'),
-(NULL, 1126, 'ME', 'Mersch'),
-(NULL, 1126, 'RD', 'Redange-sur-Attert'),
-(NULL, 1126, 'RM', 'Remich'),
-(NULL, 1126, 'VD', 'Vianden'),
-(NULL, 1126, 'WI', 'Wiltz')
-
--- end of statement:
- ;
+(1165, "_A", "Jenin"),
+(1165, "_B", "Tubas"),
+(1165, "_C", "Tulkarm"),
+(1165, "_D", "Nablus"),
+(1165, "_E", "Qalqilya"),
+(1165, "_F", "Salfit"),
+(1165, "_G", "Ramallah and Al-Bireh"),
+(1165, "_H", "Jericho"),
+(1165, "_I", "Jerusalem"),
+(1165, "_J", "Bethlehem"),
+(1165, "_K", "Hebron"),
+(1165, "_L", "North Gaza"),
+(1165, "_M", "Gaza"),
+(1165, "_N", "Deir el-Balah"),
+(1165, "_O", "Khan Yunis"),
+(1165, "_P", "Rafah"),
+(1166, "1", "Bocas del Toro"),
+(1166, "2", "Cocle"),
+(1166, "4", "Chiriqui"),
+(1166, "5", "Darien"),
+(1166, "6", "Herrera"),
+(1166, "7", "Loa Santoa"),
+(1166, "8", "Panama"),
+(1166, "9", "Veraguas"),
+(1166, "Q", "Comarca de San Blas"),
+(1169, "CAL", "El Callao"),
+(1169, "ANC", "Ancash"),
+(1169, "APU", "Apurimac"),
+(1169, "ARE", "Arequipa"),
+(1169, "AYA", "Ayacucho"),
+(1169, "CAJ", "Cajamarca"),
+(1169, "CUS", "Cuzco"),
+(1169, "HUV", "Huancavelica"),
+(1169, "HUC", "Huanuco"),
+(1169, "ICA", "Ica"),
+(1169, "JUN", "Junin"),
+(1169, "LAL", "La Libertad"),
+(1169, "LAM", "Lambayeque"),
+(1169, "LIM", "Lima"),
+(1169, "LOR", "Loreto"),
+(1169, "MDD", "Madre de Dios"),
+(1169, "MOQ", "Moquegua"),
+(1169, "PAS", "Pasco"),
+(1169, "PIU", "Piura"),
+(1169, "PUN", "Puno"),
+(1169, "SAM", "San Martin"),
+(1169, "TAC", "Tacna"),
+(1169, "TUM", "Tumbes"),
+(1169, "UCA", "Ucayali"),
+(1169, "AMA", "Amazonas"),
+(1167, "NCD", "National Capital District (Port Moresby)"),
+(1167, "CPK", "Chimbu"),
+(1167, "EHG", "Eastern Highlands"),
+(1167, "EBR", "East New Britain"),
+(1167, "ESW", "East Sepik"),
+(1167, "EPW", "Enga"),
+(1167, "GPK", "Gulf"),
+(1167, "MPM", "Madang"),
+(1167, "MRL", "Manus"),
+(1167, "MBA", "Milne Bay"),
+(1167, "MPL", "Morobe"),
+(1167, "NIK", "New Ireland"),
+(1167, "NSA", "North Solomons"),
+(1167, "SAN", "Santaun"),
+(1167, "SHM", "Southern Highlands"),
+(1167, "WHM", "Western Highlands"),
+(1167, "WBK", "West New Britain"),
+(1170, "ABR", "Abra"),
+(1170, "AGN", "Agusan del Norte"),
+(1170, "AGS", "Agusan del Sur"),
+(1170, "AKL", "Aklan"),
+(1170, "ALB", "Albay"),
+(1170, "ANT", "Antique"),
+(1170, "APA", "Apayao"),
+(1170, "AUR", "Aurora"),
+(1170, "BAS", "Basilan"),
+(1170, "BAN", "Bataan"),
+(1170, "BTN", "Batanes"),
+(1170, "BTG", "Batangas"),
+(1170, "BEN", "Benguet"),
+(1170, "BIL", "Biliran"),
+(1170, "BOH", "Bohol"),
+(1170, "BUK", "Bukidnon"),
+(1170, "BUL", "Bulacan"),
+(1170, "CAG", "Cagayan"),
+(1170, "CAN", "Camarines Norte"),
+(1170, "CAS", "Camarines Sur"),
+(1170, "CAM", "Camiguin"),
+(1170, "CAP", "Capiz"),
+(1170, "CAT", "Catanduanes"),
+(1170, "CAV", "Cavite"),
+(1170, "CEB", "Cebu"),
+(1170, "COM", "Davao de Oro"),
+(1170, "DAV", "Davao del Norte"),
+(1170, "DAS", "Davao del Sur"),
+(1170, "DAO", "Davao Oriental"),
+(1170, "EAS", "Eastern Samar"),
+(1170, "GUI", "Guimaras"),
+(1170, "IFU", "Ifugao"),
+(1170, "ILN", "Ilocos Norte"),
+(1170, "ILS", "Ilocos Sur"),
+(1170, "ILI", "Iloilo"),
+(1170, "ISA", "Isabela"),
+(1170, "KAL", "Kalinga"),
+(1170, "LAG", "Laguna"),
+(1170, "LAN", "Lanao del Norte"),
+(1170, "LAS", "Lanao del Sur"),
+(1170, "LUN", "La Union"),
+(1170, "LEY", "Leyte"),
+(1170, "MAG", "Maguindanao"),
+(1170, "MAD", "Marinduque"),
+(1170, "MAS", "Masbate"),
+(1170, "MDC", "Mindoro Occidental"),
+(1170, "MDR", "Mindoro Oriental"),
+(1170, "MSC", "Misamis Occidental"),
+(1170, "MSR", "Misamis Oriental"),
+(1170, "MOU", "Mountain Province"),
+(1170, "NEC", "Negroe Occidental"),
+(1170, "NER", "Negros Oriental"),
+(1170, "NCO", "Cotabato"),
+(1170, "NSA", "Northern Samar"),
+(1170, "NUE", "Nueva Ecija"),
+(1170, "NUV", "Nueva Vizcaya"),
+(1170, "PLW", "Palawan"),
+(1170, "PAM", "Pampanga"),
+(1170, "PAN", "Pangasinan"),
+(1170, "QUE", "Quezon"),
+(1170, "QUI", "Quirino"),
+(1170, "RIZ", "Rizal"),
+(1170, "ROM", "Romblon"),
+(1170, "SAR", "Sarangani"),
+(1170, "SIG", "Siquijor"),
+(1170, "SOR", "Sorsogon"),
+(1170, "SCO", "South Cotabato"),
+(1170, "SLE", "Southern Leyte"),
+(1170, "SUK", "Sultan Kudarat"),
+(1170, "SLU", "Sulu"),
+(1170, "SUN", "Surigao del Norte"),
+(1170, "SUR", "Surigao del Sur"),
+(1170, "TAR", "Tarlac"),
+(1170, "TAW", "Tawi-Tawi"),
+(1170, "WSA", "Western Samar"),
+(1170, "ZMB", "Zambales"),
+(1170, "ZAN", "Zamboanga del Norte"),
+(1170, "ZAS", "Zamboanga del Sur"),
+(1170, "ZSI", "Zamboanga Sibiguey"),
+(1170, "DIN", "Dinagat Islands"),
+(1170, "MNL", "Metropolitan Manila"),
+(1163, "IS", "Islamabad Federal Capital Area"),
+(1163, "BA", "Baluchistan"),
+(1163, "NW", "Khyber Pakhtun Khawa"),
+(1163, "SD", "Sindh"),
+(1163, "TA", "Federally Administered Tribal Areas"),
+(1163, "JK", "Azad Kashmir"),
+(1163, "NA", "Gilgit-Baltistan"),
+(1163, "PB", "Punjab"),
+(1173, "01", "Aveiro"),
+(1173, "02", "Beja"),
+(1173, "03", "Braga"),
+(1173, "04", "Bragança"),
+(1173, "05", "Castelo Branco"),
+(1173, "06", "Coimbra"),
+(1173, "07", "Évora"),
+(1173, "08", "Faro"),
+(1173, "09", "Guarda"),
+(1173, "10", "Leiria"),
+(1173, "11", "Lisboa"),
+(1173, "12", "Portalegre"),
+(1173, "13", "Porto"),
+(1173, "14", "Santarém"),
+(1173, "15", "Setúbal"),
+(1173, "16", "Viana do Castelo"),
+(1173, "17", "Vila Real"),
+(1173, "18", "Viseu"),
+(1173, "20", "Região Autónoma dos Açores"),
+(1173, "30", "Região Autónoma da Madeira"),
+(1168, "ASU", "Asuncion"),
+(1168, "16", "Alto Paraguay"),
+(1168, "10", "Alto Parana"),
+(1168, "13", "Amambay"),
+(1168, "19", "Boqueron"),
+(1168, "5", "Caeguazu"),
+(1168, "6", "Caazapl"),
+(1168, "14", "Canindeyu"),
+(1168, "1", "Concepcion"),
+(1168, "3", "Cordillera"),
+(1168, "4", "Guaira"),
+(1168, "7", "Itapua"),
+(1168, "8", "Miaiones"),
+(1168, "12", "Neembucu"),
+(1168, "9", "Paraguari"),
+(1168, "15", "Presidente Hayes"),
+(1168, "2", "San Pedro"),
+(1175, "DA", "Ad Dawhah"),
+(1175, "GH", "Al Ghuwayriyah"),
+(1175, "JU", "Al Jumayliyah"),
+(1175, "KH", "Al Khawr"),
+(1175, "WA", "Al Wakrah"),
+(1175, "RA", "Ar Rayyan"),
+(1175, "JB", "Jariyan al Batnah"),
+(1175, "MS", "Madinat ash Shamal"),
+(1175, "US", "Umm Salal"),
+(1176, "B", "Bucuresti"),
+(1176, "AB", "Alba"),
+(1176, "AR", "Arad"),
+(1176, "AG", "ArgeÈ™"),
+(1176, "BC", "Bacău"),
+(1176, "BH", "Bihor"),
+(1176, "BN", "Bistrița-Năsăud"),
+(1176, "BT", "Botoșani"),
+(1176, "BV", "Brașov"),
+(1176, "BR", "Brăila"),
+(1176, "BZ", "Buzău"),
+(1176, "CS", "CaraÈ™-Severin"),
+(1176, "CL", "Călărași"),
+(1176, "CJ", "Cluj"),
+(1176, "CT", "Constanța"),
+(1176, "CV", "Covasna"),
+(1176, "DB", "Dâmbovița"),
+(1176, "DJ", "Dolj"),
+(1176, "GL", "Galați"),
+(1176, "GR", "Giurgiu"),
+(1176, "GJ", "Gorj"),
+(1176, "HR", "Harghita"),
+(1176, "HD", "Hunedoara"),
+(1176, "IL", "Ialomița"),
+(1176, "IS", "Iași"),
+(1176, "IF", "Ilfov"),
+(1176, "MM", "MaramureÈ™"),
+(1176, "MH", "Mehedinți"),
+(1176, "MS", "MureÈ™"),
+(1176, "NT", "NeamÈ›"),
+(1176, "OT", "Olt"),
+(1176, "PH", "Prahova"),
+(1176, "SM", "Satu Mare"),
+(1176, "SJ", "Sălaj"),
+(1176, "SB", "Sibiu"),
+(1176, "SV", "Suceava"),
+(1176, "TR", "Teleorman"),
+(1176, "TM", "TimiÈ™"),
+(1176, "TL", "Tulcea"),
+(1176, "VS", "Vaslui"),
+(1176, "VL", "Vâlcea"),
+(1176, "VN", "Vrancea"),
+(1177, "AD", "Adygeya, Respublika"),
+(1177, "AL", "Altay, Respublika"),
+(1177, "BA", "Bashkortostan, Respublika"),
+(1177, "BU", "Buryatiya, Respublika"),
+(1177, "CE", "Chechenskaya Respublika"),
+(1177, "CU", "Chuvashskaya Respublika"),
+(1177, "DA", "Dagestan, Respublika"),
+(1177, "IN", "Ingushskaya Respublika"),
+(1177, "KB", "Kabardino-Balkarskaya"),
+(1177, "KL", "Kalmykiya, Respublika"),
+(1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
+(1177, "KR", "Kareliya, Respublika"),
+(1177, "KK", "Khakasiya, Respublika"),
+(1177, "KO", "Komi, Respublika"),
+(1177, "ME", "Mariy El, Respublika"),
+(1177, "MO", "Mordoviya, Respublika"),
+(1177, "SA", "Sakha, Respublika [Yakutiya]"),
+(1177, "SE", "Severnaya Osetiya, Respublika"),
+(1177, "TA", "Tatarstan, Respublika"),
+(1177, "TY", "Tyva, Respublika [Tuva]"),
+(1177, "UD", "Udmurtskaya Respublika"),
+(1177, "ALT", "Altayskiy kray"),
+(1177, "KHA", "Khabarovskiy kray"),
+(1177, "KDA", "Krasnodarskiy kray"),
+(1177, "KYA", "Krasnoyarskiy kray"),
+(1177, "PRI", "Primorskiy kray"),
+(1177, "STA", "Stavropol\'skiy kray"),
+(1177, "AMU", "Amurskaya oblast\'"),
+(1177, "ARK", "Arkhangel\'skaya oblast\'"),
+(1177, "AST", "Astrakhanskaya oblast\'"),
+(1177, "BEL", "Belgorodskaya oblast\'"),
+(1177, "BRY", "Bryanskaya oblast\'"),
+(1177, "CHE", "Chelyabinskaya oblast\'"),
+(1177, "ZSK", "Zabaykalsky Krai\'"),
+(1177, "IRK", "Irkutskaya oblast\'"),
+(1177, "IVA", "Ivanovskaya oblast\'"),
+(1177, "KGD", "Kaliningradskaya oblast\'"),
+(1177, "KLU", "Kaluzhskaya oblast\'"),
+(1177, "KAM", "Kamchatka Krai\'"),
+(1177, "KEM", "Kemerovskaya oblast\'"),
+(1177, "KIR", "Kirovskaya oblast\'"),
+(1177, "KOS", "Kostromskaya oblast\'"),
+(1177, "KGN", "Kurganskaya oblast\'"),
+(1177, "KRS", "Kurskaya oblast\'"),
+(1177, "LEN", "Leningradskaya oblast\'"),
+(1177, "LIP", "Lipetskaya oblast\'"),
+(1177, "MAG", "Magadanskaya oblast\'"),
+(1177, "MOS", "Moskovskaya oblast\'"),
+(1177, "MUR", "Murmanskaya oblast\'"),
+(1177, "NIZ", "Nizhegorodskaya oblast\'"),
+(1177, "NGR", "Novgorodskaya oblast\'"),
+(1177, "NVS", "Novosibirskaya oblast\'"),
+(1177, "OMS", "Omskaya oblast\'"),
+(1177, "ORE", "Orenburgskaya oblast\'"),
+(1177, "ORL", "Orlovskaya oblast\'"),
+(1177, "PNZ", "Penzenskaya oblast\'"),
+(1177, "PEK", "Perm krai\'"),
+(1177, "PSK", "Pskovskaya oblast\'"),
+(1177, "ROS", "Rostovskaya oblast\'"),
+(1177, "RYA", "Ryazanskaya oblast\'"),
+(1177, "SAK", "Sakhalinskaya oblast\'"),
+(1177, "SAM", "Samarskaya oblast\'"),
+(1177, "SAR", "Saratovskaya oblast\'"),
+(1177, "SMO", "Smolenskaya oblast\'"),
+(1177, "SVE", "Sverdlovskaya oblast\'"),
+(1177, "TAM", "Tambovskaya oblast\'"),
+(1177, "TOM", "Tomskaya oblast\'"),
+(1177, "TUL", "Tul\'skaya oblast\'"),
+(1177, "TVE", "Tverskaya oblast\'"),
+(1177, "TYU", "Tyumenskaya oblast\'"),
+(1177, "ULY", "Ul\'yanovskaya oblast\'"),
+(1177, "VLA", "Vladimirskaya oblast\'"),
+(1177, "VGG", "Volgogradskaya oblast\'"),
+(1177, "VLG", "Vologodskaya oblast\'"),
+(1177, "VOR", "Voronezhskaya oblast\'"),
+(1177, "YAR", "Yaroslavskaya oblast\'"),
+(1177, "MOW", "Moskva"),
+(1177, "SPE", "Sankt-Peterburg"),
+(1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
+(1177, "CHU", "Chukotskiy avtonomnyy okrug"),
+(1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
+(1177, "NEN", "Nenetskiy avtonomnyy okrug"),
+(1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
+(1178, "C", "Butare"),
+(1178, "I", "Byumba"),
+(1178, "E", "Cyangugu"),
+(1178, "D", "Gikongoro"),
+(1178, "G", "Gisenyi"),
+(1178, "B", "Gitarama"),
+(1178, "J", "Kibungo"),
+(1178, "F", "Kibuye"),
+(1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
+(1178, "L", "Kigali-Ville Kigali Ngari"),
+(1178, "M", "Mutara"),
+(1178, "H", "Ruhengeri"),
+(1181, "K", "Saint Kitts"),
+(1181, "N", "Nevis"),
+(1187, "11", "Al Bahah"),
+(1187, "08", "Al Hudud Ash Shamaliyah"),
+(1187, "12", "Al Jawf"),
+(1187, "03", "Al Madinah"),
+(1187, "05", "Al Qasim"),
+(1187, "01", "Ar Riyad"),
+(1187, "14", "Asir"),
+(1187, "06", "Ha\'il"),
+(1187, "09", "Jlzan"),
+(1187, "02", "Makkah"),
+(1187, "10", "Najran"),
+(1187, "07", "Tabuk"),
+(1187, "04", "Ash Sharqiyah"),
+(1194, "CT", "Capital Territory (Honiara)"),
+(1194, "GU", "Guadalcanal"),
+(1194, "IS", "Isabel"),
+(1194, "MK", "Makira"),
+(1194, "ML", "Malaita"),
+(1194, "TE", "Temotu"),
+(1200, "23", "A\'ali an Nil"),
+(1200, "26", "Al Bah al Ahmar"),
+(1200, "18", "Al Buhayrat"),
+(1200, "07", "Al Jazirah"),
+(1200, "03", "Al Khartum"),
+(1200, "06", "Al Qadarif"),
+(1200, "22", "Al Wahdah"),
+(1200, "04", "An Nil"),
+(1200, "08", "An Nil al Abyaq"),
+(1200, "24", "An Nil al Azraq"),
+(1200, "01", "Ash Shamallyah"),
+(1200, "17", "Bahr al Jabal"),
+(1200, "16", "Gharb al Istiwa\'iyah"),
+(1200, "14", "Gharb Ba~r al Ghazal"),
+(1200, "12", "Gharb Darfur"),
+(1200, "10", "Gharb Kurdufan"),
+(1200, "11", "Janub Darfur"),
+(1200, "13", "Janub Rurdufan"),
+(1200, "20", "Jnqall"),
+(1200, "05", "Kassala"),
+(1200, "15", "Shamal Batr al Ghazal"),
+(1200, "02", "Shamal Darfur"),
+(1200, "09", "Shamal Kurdufan"),
+(1200, "19", "Sharq al Istiwa\'iyah"),
+(1200, "25", "Sinnar"),
+(1200, "21", "Warab"),
+(1204, "K", "Blekinge län"),
+(1204, "W", "Dalarnas län"),
+(1204, "I", "Gotlands län"),
+(1204, "X", "Gävleborgs län"),
+(1204, "N", "Hallands län"),
+(1204, "Z", "Jämtlands län"),
+(1204, "F", "Jönkopings län"),
+(1204, "H", "Kalmar län"),
+(1204, "G", "Kronobergs län"),
+(1204, "BD", "Norrbottens län"),
+(1204, "M", "Skåne län"),
+(1204, "AB", "Stockholms län"),
+(1204, "D", "Södermanlands län"),
+(1204, "C", "Uppsala län"),
+(1204, "S", "Värmlands län"),
+(1204, "AC", "Västerbottens län"),
+(1204, "Y", "Västernorrlands län"),
+(1204, "U", "Västmanlands län"),
+(1204, "Q", "Västra Götalands län"),
+(1204, "T", "Örebro län"),
+(1204, "E", "Östergötlands län"),
+(1180, "SH", "Saint Helena"),
+(1180, "AC", "Ascension"),
+(1180, "TA", "Tristan da Cunha"),
+(1193, "001", "Ajdovščina"),
+(1193, "002", "Beltinci"),
+(1193, "148", "Benedikt"),
+(1193, "149", "Bistrica ob Sotli"),
+(1193, "003", "Bled"),
+(1193, "150", "Bloke"),
+(1193, "004", "Bohinj"),
+(1193, "005", "Borovnica"),
+(1193, "006", "Bovec"),
+(1193, "151", "Braslovče"),
+(1193, "007", "Brda"),
+(1193, "008", "Brezovica"),
+(1193, "009", "Brežice"),
+(1193, "152", "Cankova"),
+(1193, "011", "Celje"),
+(1193, "012", "Cerklje na Gorenjskem"),
+(1193, "013", "Cerknica"),
+(1193, "014", "Cerkno"),
+(1193, "153", "Cerkvenjak"),
+(1193, "015", "Črenšovci"),
+(1193, "016", "Črna na Koroškem"),
+(1193, "017", "ÄŒrnomelj"),
+(1193, "018", "Destrnik"),
+(1193, "019", "Divača"),
+(1193, "154", "Dobje"),
+(1193, "020", "Dobrepolje"),
+(1193, "155", "Dobrna"),
+(1193, "021", "Dobrova-Polhov Gradec"),
+(1193, "156", "Dobrovnik"),
+(1193, "022", "Dol pri Ljubljani"),
+(1193, "157", "Dolenjske Toplice"),
+(1193, "023", "Domžale"),
+(1193, "024", "Dornava"),
+(1193, "025", "Dravograd"),
+(1193, "026", "Duplek"),
+(1193, "027", "Gorenja vas-Poljane"),
+(1193, "028", "Gorišnica"),
+(1193, "029", "Gornja Radgona"),
+(1193, "030", "Gornji Grad"),
+(1193, "031", "Gornji Petrovci"),
+(1193, "158", "Grad"),
+(1193, "032", "Grosuplje"),
+(1193, "159", "Hajdina"),
+(1193, "160", "Hoče-Slivnica"),
+(1193, "161", "Hodoš"),
+(1193, "162", "Horjul"),
+(1193, "034", "Hrastnik"),
+(1193, "035", "Hrpelje-Kozina"),
+(1193, "036", "Idrija"),
+(1193, "037", "Ig"),
+(1193, "038", "Ilirska Bistrica"),
+(1193, "039", "Ivančna Gorica"),
+(1193, "040", "Izola"),
+(1193, "041", "Jesenice"),
+(1193, "163", "Jezersko"),
+(1193, "042", "Juršinci"),
+(1193, "043", "Kamnik"),
+(1193, "044", "Kanal"),
+(1193, "045", "Kidričevo"),
+(1193, "046", "Kobarid"),
+(1193, "047", "Kobilje"),
+(1193, "048", "Kočevje"),
+(1193, "049", "Komen"),
+(1193, "164", "Komenda"),
+(1193, "050", "Koper"),
+(1193, "165", "Kostel"),
+(1193, "051", "Kozje"),
+(1193, "052", "Kranj"),
+(1193, "053", "Kranjska Gora"),
+(1193, "166", "Križevci"),
+(1193, "054", "Krško"),
+(1193, "055", "Kungota"),
+(1193, "056", "Kuzma"),
+(1193, "057", "Laško"),
+(1193, "058", "Lenart"),
+(1193, "059", "Lendava"),
+(1193, "060", "Litija"),
+(1193, "061", "Ljubljana"),
+(1193, "062", "Ljubno"),
+(1193, "063", "Ljutomer"),
+(1193, "064", "Logatec"),
+(1193, "065", "Loška dolina"),
+(1193, "066", "Loški Potok"),
+(1193, "167", "Lovrenc na Pohorju"),
+(1193, "067", "Luče"),
+(1193, "068", "Lukovica"),
+(1193, "069", "Majšperk"),
+(1193, "070", "Maribor"),
+(1193, "168", "Markovci"),
+(1193, "071", "Medvode"),
+(1193, "072", "Mengeš"),
+(1193, "073", "Metlika"),
+(1193, "074", "Mežica"),
+(1193, "169", "Miklavž na Dravskem polju"),
+(1193, "075", "Miren-Kostanjevica"),
+(1193, "170", "Mirna Peč"),
+(1193, "076", "Mislinja"),
+(1193, "077", "Moravče"),
+(1193, "078", "Moravske Toplice"),
+(1193, "079", "Mozirje"),
+(1193, "080", "Murska Sobota"),
+(1193, "081", "Muta"),
+(1193, "082", "Naklo"),
+(1193, "083", "Nazarje"),
+(1193, "084", "Nova Gorica"),
+(1193, "085", "Novo mesto"),
+(1193, "181", "Sveta Ana"),
+(1193, "182", "Sveti Andraž v Slovenskih goricah"),
+(1193, "116", "Sveti Jurij"),
+(1193, "033", "Å alovci"),
+(1193, "183", "Å empeter-Vrtojba"),
+(1193, "117", "Šenčur"),
+(1193, "118", "Å entilj"),
+(1193, "119", "Å entjernej"),
+(1193, "120", "Å entjur"),
+(1193, "121", "Å kocjan"),
+(1193, "122", "Å kofja Loka"),
+(1193, "123", "Å kofljica"),
+(1193, "124", "Šmarje pri Jelšah"),
+(1193, "125", "Å martno ob Paki"),
+(1193, "194", "Å martno pri Litiji"),
+(1193, "126", "Šoštanj"),
+(1193, "127", "Å tore"),
+(1193, "184", "Tabor"),
+(1193, "010", "Tišina"),
+(1193, "128", "Tolmin"),
+(1193, "129", "Trbovlje"),
+(1193, "130", "Trebnje"),
+(1193, "185", "Trnovska vas"),
+(1193, "131", "Tržič"),
+(1193, "186", "Trzin"),
+(1193, "132", "Turnišče"),
+(1193, "133", "Velenje"),
+(1193, "187", "Velika Polana"),
+(1193, "134", "Velike Lašče"),
+(1193, "188", "Veržej"),
+(1193, "135", "Videm"),
+(1193, "136", "Vipava"),
+(1193, "137", "Vitanje"),
+(1193, "138", "Vojnik"),
+(1193, "189", "Vransko"),
+(1193, "140", "Vrhnika"),
+(1193, "141", "Vuzenica"),
+(1193, "142", "Zagorje ob Savi"),
+(1193, "143", "Zavrč"),
+(1193, "144", "Zreče"),
+(1193, "190", "Žalec"),
+(1193, "146", "Železniki"),
+(1193, "191", "Žetale"),
+(1193, "147", "Žiri"),
+(1193, "192", "Žirovnica"),
+(1193, "193", "Žužemberk"),
+(1193, "86", "Ankaran"),
+(1193, "87", "Apače"),
+(1193, "88", "Cirkulane"),
+(1193, "89", "Gorje"),
+(1193, "90", "Kostanjevica na Krki"),
+(1193, "91", "Log-Dragomer"),
+(1193, "92", "Makole"),
+(1193, "93", "Mirna"),
+(1193, "94", "Mokronog-Trebelno"),
+(1193, "95", "Odranci"),
+(1193, "96", "Oplotnica"),
+(1193, "97", "Ormož"),
+(1193, "98", "Osilnica"),
+(1193, "99", "Pesnica"),
+(1193, "100", "Piran"),
+(1193, "101", "Pivka"),
+(1193, "102", "Podčetrtek"),
+(1193, "103", "Podlehnik"),
+(1193, "104", "Podvelka"),
+(1193, "105", "Poljčane"),
+(1193, "106", "Polzela"),
+(1193, "107", "Postojna"),
+(1193, "108", "Prebold"),
+(1193, "109", "Preddvor"),
+(1193, "110", "Prevalje"),
+(1193, "111", "Ptuj"),
+(1193, "112", "Puconci"),
+(1193, "113", "Rače-Fram"),
+(1193, "114", "Radeče"),
+(1193, "115", "Radenci"),
+(1193, "139", "Radlje ob Dravi"),
+(1193, "145", "Radovljica"),
+(1193, "171", "Ravne na Koroškem"),
+(1193, "172", "Razkrižje"),
+(1193, "173", "Rečica ob Savinji"),
+(1193, "174", "Renče-Vogrsko"),
+(1193, "175", "Ribnica"),
+(1193, "176", "Ribnica na Pohorju"),
+(1193, "177", "Rogaška Slatina"),
+(1193, "178", "Rogašovci"),
+(1193, "179", "Rogatec"),
+(1193, "180", "Ruše"),
+(1193, "195", "Selnica ob Dravi"),
+(1193, "196", "Semič"),
+(1193, "197", "Å entrupert"),
+(1193, "198", "Sevnica"),
+(1193, "199", "Sežana"),
+(1193, "200", "Slovenj Gradec"),
+(1193, "201", "Slovenska Bistrica"),
+(1193, "202", "Slovenske Konjice"),
+(1193, "203", "Šmarješke Toplice"),
+(1193, "204", "Sodražica"),
+(1193, "205", "Solčava"),
+(1193, "206", "Središče ob Dravi"),
+(1193, "207", "Starše"),
+(1193, "208", "Straža"),
+(1193, "209", "Sveta Trojica v Slovenskih goricah"),
+(1193, "210", "Sveti Jurij v Slovenskih goricah"),
+(1193, "211", "Sveti Tomaž"),
+(1193, "212", "Vodice"),
+(1192, "BC", "Banskobystrický kraj"),
+(1192, "BL", "Bratislavský kraj"),
+(1192, "KI", "Košický kraj"),
+(1192, "NJ", "Nitriansky kraj"),
+(1192, "PV", "Prešovský kraj"),
+(1192, "TC", "Trenčiansky kraj"),
+(1192, "TA", "Trnavský kraj"),
+(1192, "ZI", "Žilinský kraj"),
+(1190, "W", "Western Area (Freetown)"),
+(1190, "E", "Eastern"),
+(1190, "N", "Northern"),
+(1190, "S", "Southern"),
+(1188, "DK", "Dakar"),
+(1188, "DB", "Diourbel"),
+(1188, "FK", "Fatick"),
+(1188, "KL", "Kaolack"),
+(1188, "KD", "Kolda"),
+(1188, "LG", "Louga"),
+(1188, "MT", "Matam"),
+(1188, "SL", "Saint-Louis"),
+(1188, "TC", "Tambacounda"),
+(1188, "TH", "Thies"),
+(1188, "ZG", "Ziguinchor"),
+(1195, "AW", "Awdal"),
+(1195, "BK", "Bakool"),
+(1195, "BN", "Banaadir"),
+(1195, "BY", "Bay"),
+(1195, "GA", "Galguduud"),
+(1195, "GE", "Gedo"),
+(1195, "HI", "Hiirsan"),
+(1195, "JD", "Jubbada Dhexe"),
+(1195, "JH", "Jubbada Hoose"),
+(1195, "MU", "Mudug"),
+(1195, "NU", "Nugaal"),
+(1195, "SA", "Saneag"),
+(1195, "SD", "Shabeellaha Dhexe"),
+(1195, "SH", "Shabeellaha Hoose"),
+(1195, "SO", "Sool"),
+(1195, "TO", "Togdheer"),
+(1195, "WO", "Woqooyi Galbeed"),
+(1201, "BR", "Brokopondo"),
+(1201, "CM", "Commewijne"),
+(1201, "CR", "Coronie"),
+(1201, "MA", "Marowijne"),
+(1201, "NI", "Nickerie"),
+(1201, "PM", "Paramaribo"),
+(1201, "SA", "Saramacca"),
+(1201, "SI", "Sipaliwini"),
+(1201, "WA", "Wanica"),
+(1207, "P", "Principe"),
+(1207, "S", "Sao Tome"),
+(1066, "AH", "Ahuachapan"),
+(1066, "CA", "Cabanas"),
+(1066, "CU", "Cuscatlan"),
+(1066, "CH", "Chalatenango"),
+(1066, "MO", "Morazan"),
+(1066, "SM", "San Miguel"),
+(1066, "SS", "San Salvador"),
+(1066, "SA", "Santa Ana"),
+(1066, "SV", "San Vicente"),
+(1066, "SO", "Sonsonate"),
+(1066, "US", "Usulutan"),
+(1066, "LI", "La Libertad"),
+(1066, "PA", "La Paz"),
+(1066, "UN", "La Union"),
+(1206, "HA", "Al Hasakah"),
+(1206, "LA", "Al Ladhiqiyah"),
+(1206, "QU", "Al Qunaytirah"),
+(1206, "RA", "Ar Raqqah"),
+(1206, "SU", "As Suwayda\'"),
+(1206, "DR", "Dar\'a"),
+(1206, "DY", "Dayr az Zawr"),
+(1206, "DI", "Dimashq"),
+(1206, "HL", "Halab"),
+(1206, "HM", "Hamah"),
+(1206, "HI", "Jim\'"),
+(1206, "ID", "Idlib"),
+(1206, "RD", "Rif Dimashq"),
+(1206, "TA", "Tarts"),
+(1203, "HH", "Hhohho"),
+(1203, "LU", "Lubombo"),
+(1203, "MA", "Manzini"),
+(1203, "SH", "Shiselweni"),
+(1043, "BA", "Batha"),
+(1043, "BI", "Biltine"),
+(1043, "BET", "Borkou-Ennedi-Tibesti"),
+(1043, "CB", "Chari-Baguirmi"),
+(1043, "GR", "Guera"),
+(1043, "KA", "Kanem"),
+(1043, "LC", "Lac"),
+(1043, "LO", "Logone-Occidental"),
+(1043, "LR", "Logone-Oriental"),
+(1043, "MK", "Mayo-Kebbi"),
+(1043, "MC", "Moyen-Chari"),
+(1043, "OD", "Ouaddai"),
+(1043, "SA", "Salamat"),
+(1043, "TA", "Tandjile"),
+(1214, "K", "Kara"),
+(1214, "M", "Maritime (Region)"),
+(1214, "S", "Savannes"),
+(1211, "10", "Krung Thep Maha Nakhon Bangkok"),
+(1211, "S", "Phatthaya"),
+(1211, "37", "Amnat Charoen"),
+(1211, "15", "Ang Thong"),
+(1211, "31", "Buri Ram"),
+(1211, "24", "Chachoengsao"),
+(1211, "18", "Chai Nat"),
+(1211, "36", "Chaiyaphum"),
+(1211, "22", "Chanthaburi"),
+(1211, "50", "Chiang Mai"),
+(1211, "57", "Chiang Rai"),
+(1211, "20", "Chon Buri"),
+(1211, "86", "Chumphon"),
+(1211, "46", "Kalasin"),
+(1211, "62", "Kamphasng Phet"),
+(1211, "71", "Kanchanaburi"),
+(1211, "40", "Khon Kaen"),
+(1211, "81", "Krabi"),
+(1211, "52", "Lampang"),
+(1211, "51", "Lamphun"),
+(1211, "42", "Loei"),
+(1211, "16", "Lop Buri"),
+(1211, "58", "Mae Hong Son"),
+(1211, "44", "Maha Sarakham"),
+(1211, "49", "Mukdahan"),
+(1211, "26", "Nakhon Nayok"),
+(1211, "73", "Nakhon Pathom"),
+(1211, "48", "Nakhon Phanom"),
+(1211, "30", "Nakhon Ratchasima"),
+(1211, "60", "Nakhon Sawan"),
+(1211, "80", "Nakhon Si Thammarat"),
+(1211, "55", "Nan"),
+(1211, "96", "Narathiwat"),
+(1211, "39", "Nong Bua Lam Phu"),
+(1211, "43", "Nong Khai"),
+(1211, "12", "Nonthaburi"),
+(1211, "13", "Pathum Thani"),
+(1211, "94", "Pattani"),
+(1211, "82", "Phangnga"),
+(1211, "93", "Phatthalung"),
+(1211, "56", "Phayao"),
+(1211, "67", "Phetchabun"),
+(1211, "76", "Phetchaburi"),
+(1211, "66", "Phichit"),
+(1211, "65", "Phitsanulok"),
+(1211, "54", "Phrae"),
+(1211, "14", "Phra Nakhon Si Ayutthaya"),
+(1211, "83", "Phuket"),
+(1211, "25", "Prachin Buri"),
+(1211, "77", "Prachuap Khiri Khan"),
+(1211, "85", "Ranong"),
+(1211, "70", "Ratchaburi"),
+(1211, "21", "Rayong"),
+(1211, "45", "Roi Et"),
+(1211, "27", "Sa Kaeo"),
+(1211, "47", "Sakon Nakhon"),
+(1211, "11", "Samut Prakan"),
+(1211, "74", "Samut Sakhon"),
+(1211, "75", "Samut Songkhram"),
+(1211, "19", "Saraburi"),
+(1211, "91", "Satun"),
+(1211, "17", "Sing Buri"),
+(1211, "33", "Si Sa Ket"),
+(1211, "90", "Songkhla"),
+(1211, "64", "Sukhothai"),
+(1211, "72", "Suphan Buri"),
+(1211, "84", "Surat Thani"),
+(1211, "32", "Surin"),
+(1211, "63", "Tak"),
+(1211, "92", "Trang"),
+(1211, "23", "Trat"),
+(1211, "34", "Ubon Ratchathani"),
+(1211, "41", "Udon Thani"),
+(1211, "61", "Uthai Thani"),
+(1211, "53", "Uttaradit"),
+(1211, "95", "Yala"),
+(1211, "35", "Yasothon"),
+(1209, "SU", "Sughd"),
+(1209, "KT", "Khatlon"),
+(1209, "GB", "Gorno-Badakhshan"),
+(1209, "DU", "Dushanbe"),
+(1209, "RA", "Nohiyahoi Tobei Jumhurí"),
+(1220, "A", "Ahal"),
+(1220, "B", "Balkan"),
+(1220, "D", "Dasoguz"),
+(1220, "L", "Lebap"),
+(1220, "M", "Mary"),
+(1218, "31", "Béja"),
+(1218, "13", "Ben Arous"),
+(1218, "23", "Bizerte"),
+(1218, "81", "Gabès"),
+(1218, "71", "Gafsa"),
+(1218, "32", "Jendouba"),
+(1218, "41", "Kairouan"),
+(1218, "42", "Rasserine"),
+(1218, "73", "Kebili"),
+(1218, "12", "L\'Ariana"),
+(1218, "33", "Le Ref"),
+(1218, "53", "Mahdia"),
+(1218, "14", "La Manouba"),
+(1218, "82", "Medenine"),
+(1218, "52", "Moneatir"),
+(1218, "21", "Naboul"),
+(1218, "61", "Sfax"),
+(1218, "43", "Sidi Bouxid"),
+(1218, "34", "Siliana"),
+(1218, "51", "Sousse"),
+(1218, "83", "Tataouine"),
+(1218, "72", "Tozeur"),
+(1218, "11", "Tunis"),
+(1218, "22", "Zaghouan"),
+(1219, "01", "Adana"),
+(1219, "02", "Ad yaman"),
+(1219, "03", "Afyon"),
+(1219, "04", "Ag r"),
+(1219, "68", "Aksaray"),
+(1219, "05", "Amasya"),
+(1219, "06", "Ankara"),
+(1219, "07", "Antalya"),
+(1219, "75", "Ardahan"),
+(1219, "08", "Artvin"),
+(1219, "09", "Aydin"),
+(1219, "10", "Bal kesir"),
+(1219, "74", "Bartin"),
+(1219, "72", "Batman"),
+(1219, "69", "Bayburt"),
+(1219, "11", "Bilecik"),
+(1219, "12", "Bingol"),
+(1219, "13", "Bitlis"),
+(1219, "14", "Bolu"),
+(1219, "15", "Burdur"),
+(1219, "16", "Bursa"),
+(1219, "17", "Canakkale"),
+(1219, "18", "Cankir"),
+(1219, "19", "Corum"),
+(1219, "20", "Denizli"),
+(1219, "21", "Diyarbakir"),
+(1219, "81", "Duzce"),
+(1219, "22", "Edirne"),
+(1219, "23", "Elazig"),
+(1219, "24", "Erzincan"),
+(1219, "25", "Erzurum"),
+(1219, "26", "Eskis\'ehir"),
+(1219, "27", "Gaziantep"),
+(1219, "28", "Giresun"),
+(1219, "29", "Gms\'hane"),
+(1219, "30", "Hakkari"),
+(1219, "31", "Hatay"),
+(1219, "76", "Igidir"),
+(1219, "32", "Isparta"),
+(1219, "33", "Icel"),
+(1219, "34", "Istanbul"),
+(1219, "35", "Izmir"),
+(1219, "46", "Kahramanmaras"),
+(1219, "78", "Karabk"),
+(1219, "70", "Karaman"),
+(1219, "36", "Kars"),
+(1219, "37", "Kastamonu"),
+(1219, "38", "Kayseri"),
+(1219, "71", "Kirikkale"),
+(1219, "39", "Kirklareli"),
+(1219, "40", "Kirs\'ehir"),
+(1219, "79", "Kilis"),
+(1219, "41", "Kocaeli"),
+(1219, "42", "Konya"),
+(1219, "43", "Ktahya"),
+(1219, "44", "Malatya"),
+(1219, "45", "Manisa"),
+(1219, "47", "Mardin"),
+(1219, "48", "Mugila"),
+(1219, "49", "Mus"),
+(1219, "50", "Nevs\'ehir"),
+(1219, "51", "Nigide"),
+(1219, "52", "Ordu"),
+(1219, "80", "Osmaniye"),
+(1219, "53", "Rize"),
+(1219, "54", "Sakarya"),
+(1219, "55", "Samsun"),
+(1219, "56", "Siirt"),
+(1219, "57", "Sinop"),
+(1219, "58", "Sivas"),
+(1219, "63", "S\'anliurfa"),
+(1219, "73", "S\'rnak"),
+(1219, "59", "Tekirdag"),
+(1219, "60", "Tokat"),
+(1219, "61", "Trabzon"),
+(1219, "62", "Tunceli"),
+(1219, "64", "Us\'ak"),
+(1219, "65", "Van"),
+(1219, "77", "Yalova"),
+(1219, "66", "Yozgat"),
+(1219, "67", "Zonguldak"),
+(1217, "CTT", "Couva-Tabaquite-Talparo"),
+(1217, "DMN", "Diego Martin"),
+(1217, "ETO", "Eastern Tobago"),
+(1217, "PED", "Penal-Debe"),
+(1217, "PRT", "Princes Town"),
+(1217, "RCM", "Rio Claro-Mayaro"),
+(1217, "SGE", "Sangre Grande"),
+(1217, "SJL", "San Juan-Laventille"),
+(1217, "SIP", "Siparia"),
+(1217, "TUP", "Tunapuna-Piarco"),
+(1217, "WTO", "Western Tobago"),
+(1217, "ARI", "Arima"),
+(1217, "CHA", "Chaguanas"),
+(1217, "PTF", "Point Fortin"),
+(1217, "POS", "Port of Spain"),
+(1217, "SFO", "San Fernando"),
+(1063, "AL", "Aileu"),
+(1063, "AN", "Ainaro"),
+(1063, "BA", "Bacucau"),
+(1063, "BO", "Bobonaro"),
+(1063, "CO", "Cova Lima"),
+(1063, "DI", "Dili"),
+(1063, "ER", "Ermera"),
+(1063, "LA", "Laulem"),
+(1063, "LI", "Liquica"),
+(1063, "MT", "Manatuto"),
+(1063, "MF", "Manafahi"),
+(1063, "OE", "Oecussi"),
+(1063, "VI", "Viqueque"),
+(1208, "CHA", "Changhua County"),
+(1208, "CYQ", "Chiayi County"),
+(1208, "HSQ", "Hsinchu County"),
+(1208, "HUA", "Hualien County"),
+(1208, "ILA", "Ilan County"),
+(1208, "KHQ", "Kaohsiung County"),
+(1208, "MIA", "Miaoli County"),
+(1208, "NAN", "Nantou County"),
+(1208, "PEN", "Penghu County"),
+(1208, "PIF", "Pingtung County"),
+(1208, "TXQ", "Taichung County"),
+(1208, "TNQ", "Tainan County"),
+(1208, "TPQ", "Taipei County"),
+(1208, "TTT", "Taitung County"),
+(1208, "TAO", "Taoyuan County"),
+(1208, "YUN", "Yunlin County"),
+(1208, "KEE", "Keelung City"),
+(1208, "TXG", "Taichung City"),
+(1208, "KHH", "Kaohsiung City"),
+(1208, "TPE", "Taipei City"),
+(1208, "CYI", "Chiayi City"),
+(1208, "HSZ", "Hsinchu City"),
+(1208, "TNN", "Tainan City"),
+(1210, "01", "Arusha"),
+(1210, "02", "Dar-es-Salaam"),
+(1210, "03", "Dodoma"),
+(1210, "04", "Iringa"),
+(1210, "05", "Kagera"),
+(1210, "06", "Kaskazini Pemba"),
+(1210, "07", "Kaskazini Unguja"),
+(1210, "08", "Xigoma"),
+(1210, "09", "Kilimanjaro"),
+(1210, "10", "Rusini Pemba"),
+(1210, "11", "Kusini Unguja"),
+(1210, "12", "Lindi"),
+(1210, "26", "Manyara"),
+(1210, "13", "Mara"),
+(1210, "14", "Mbeya"),
+(1210, "15", "Mjini Magharibi"),
+(1210, "16", "Morogoro"),
+(1210, "17", "Mtwara"),
+(1210, "19", "Pwani"),
+(1210, "20", "Rukwa"),
+(1210, "21", "Ruvuma"),
+(1210, "22", "Shinyanga"),
+(1210, "23", "Singida"),
+(1210, "24", "Tabora"),
+(1210, "25", "Tanga"),
+(1224, "71", "Cherkas\'ka Oblast\'"),
+(1224, "74", "Chernihivs\'ka Oblast\'"),
+(1224, "77", "Chernivets\'ka Oblast\'"),
+(1224, "12", "Dnipropetrovs\'ka Oblast\'"),
+(1224, "14", "Donets\'ka Oblast\'"),
+(1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
+(1224, "63", "Kharkivs\'ka Oblast\'"),
+(1224, "65", "Khersons\'ka Oblast\'"),
+(1224, "68", "Khmel\'nyts\'ka Oblast\'"),
+(1224, "35", "Kirovohrads\'ka Oblast\'"),
+(1224, "32", "Kyivs\'ka Oblast\'"),
+(1224, "09", "Luhans\'ka Oblast\'"),
+(1224, "46", "L\'vivs\'ka Oblast\'"),
+(1224, "48", "Mykolaivs\'ka Oblast\'"),
+(1224, "51", "Odes \'ka Oblast\'"),
+(1224, "53", "Poltavs\'ka Oblast\'"),
+(1224, "56", "Rivnens\'ka Oblast\'"),
+(1224, "59", "Sums \'ka Oblast\'"),
+(1224, "61", "Ternopil\'s\'ka Oblast\'"),
+(1224, "05", "Vinnyts\'ka Oblast\'"),
+(1224, "07", "Volyos\'ka Oblast\'"),
+(1224, "21", "Zakarpats\'ka Oblast\'"),
+(1224, "23", "Zaporiz\'ka Oblast\'"),
+(1224, "18", "Zhytomyrs\'ka Oblast\'"),
+(1224, "43", "Respublika Krym"),
+(1224, "30", "Kyiv"),
+(1224, "40", "Sevastopol"),
+(1223, "301", "Adjumani"),
+(1223, "302", "Apac"),
+(1223, "303", "Arua"),
+(1223, "201", "Bugiri"),
+(1223, "401", "Bundibugyo"),
+(1223, "402", "Bushenyi"),
+(1223, "202", "Busia"),
+(1223, "304", "Gulu"),
+(1223, "403", "Hoima"),
+(1223, "203", "Iganga"),
+(1223, "204", "Jinja"),
+(1223, "404", "Kabale"),
+(1223, "405", "Kabarole"),
+(1223, "213", "Kaberamaido"),
+(1223, "101", "Kalangala"),
+(1223, "102", "Kampala"),
+(1223, "205", "Kamuli"),
+(1223, "413", "Kamwenge"),
+(1223, "414", "Kanungu"),
+(1223, "206", "Kapchorwa"),
+(1223, "406", "Kasese"),
+(1223, "207", "Katakwi"),
+(1223, "112", "Kayunga"),
+(1223, "407", "Kibaale"),
+(1223, "103", "Kiboga"),
+(1223, "408", "Kisoro"),
+(1223, "305", "Kitgum"),
+(1223, "306", "Kotido"),
+(1223, "208", "Kumi"),
+(1223, "415", "Kyenjojo"),
+(1223, "307", "Lira"),
+(1223, "104", "Luwero"),
+(1223, "105", "Masaka"),
+(1223, "409", "Masindi"),
+(1223, "214", "Mayuge"),
+(1223, "209", "Mbale"),
+(1223, "410", "Mbarara"),
+(1223, "308", "Moroto"),
+(1223, "309", "Moyo"),
+(1223, "106", "Mpigi"),
+(1223, "107", "Mubende"),
+(1223, "108", "Mukono"),
+(1223, "311", "Nakapiripirit"),
+(1223, "109", "Nakasongola"),
+(1223, "310", "Nebbi"),
+(1223, "411", "Ntungamo"),
+(1223, "312", "Pader"),
+(1223, "210", "Pallisa"),
+(1223, "110", "Rakai"),
+(1223, "412", "Rukungiri"),
+(1223, "111", "Sembabule"),
+(1223, "215", "Sironko"),
+(1223, "211", "Soroti"),
+(1223, "212", "Tororo"),
+(1223, "113", "Wakiso"),
+(1223, "313", "Yumbe"),
+(1227, "81", "Baker Island"),
+(1227, "84", "Howland Island"),
+(1227, "86", "Jarvis Island"),
+(1227, "67", "Johnston Atoll"),
+(1227, "89", "Kingman Reef"),
+(1227, "71", "Midway Islands"),
+(1227, "76", "Navassa Island"),
+(1227, "95", "Palmyra Atoll"),
+(1227, "79", "Wake Island"),
+(1229, "AR", "Artigsa"),
+(1229, "CA", "Canelones"),
+(1229, "CL", "Cerro Largo"),
+(1229, "CO", "Colonia"),
+(1229, "DU", "Durazno"),
+(1229, "FS", "Flores"),
+(1229, "LA", "Lavalleja"),
+(1229, "MA", "Maldonado"),
+(1229, "MO", "Montevideo"),
+(1229, "PA", "Paysandu"),
+(1229, "RV", "Rivera"),
+(1229, "RO", "Rocha"),
+(1229, "SA", "Salto"),
+(1229, "SO", "Soriano"),
+(1229, "TA", "Tacuarembo"),
+(1229, "TT", "Treinta y Tres"),
+(1229, "FL", "Florida"),
+(1229, "RN", "Rio Negro"),
+(1229, "SJ", "San Jose"),
+(1230, "TK", "Toshkent (city)"),
+(1230, "QR", "Qoraqalpogiston Respublikasi"),
+(1230, "AN", "Andijon"),
+(1230, "BU", "Buxoro"),
+(1230, "FA", "Farg\'ona"),
+(1230, "JI", "Jizzax"),
+(1230, "KH", "Khorazm"),
+(1230, "NG", "Namangan"),
+(1230, "NW", "Navoiy"),
+(1230, "QA", "Qashqadaryo"),
+(1230, "SA", "Samarqand"),
+(1230, "SI", "Sirdaryo"),
+(1230, "SU", "Surxondaryo"),
+(1230, "TO", "Toshkent"),
+(1230, "XO", "Xorazm"),
+(1232, "A", "Distrito Federal"),
+(1232, "B", "Anzoategui"),
+(1232, "C", "Apure"),
+(1232, "D", "Aragua"),
+(1232, "E", "Barinas"),
+(1232, "G", "Carabobo"),
+(1232, "H", "Cojedes"),
+(1232, "I", "Falcon"),
+(1232, "J", "Guarico"),
+(1232, "K", "Lara"),
+(1232, "L", "Merida"),
+(1232, "M", "Miranda"),
+(1232, "N", "Monagas"),
+(1232, "O", "Nueva Esparta"),
+(1232, "P", "Portuguesa"),
+(1232, "S", "Tachira"),
+(1232, "T", "Trujillo"),
+(1232, "X", "Vargas"),
+(1232, "U", "Yaracuy"),
+(1232, "V", "Zulia"),
+(1232, "Y", "Delta Amacuro"),
+(1232, "W", "Dependencias Federales"),
+(1233, "44", "An Giang"),
+(1233, "43", "Ba Ria - Vung Tau"),
+(1233, "53", "Bac Can"),
+(1233, "54", "Bac Giang"),
+(1233, "55", "Bac Lieu"),
+(1233, "56", "Bac Ninh"),
+(1233, "50", "Ben Tre"),
+(1233, "31", "Binh Dinh"),
+(1233, "57", "Binh Duong"),
+(1233, "58", "Binh Phuoc"),
+(1233, "40", "Binh Thuan"),
+(1233, "59", "Ca Mau"),
+(1233, "48", "Can Tho"),
+(1233, "04", "Cao Bang"),
+(1233, "60", "Da Nang, thanh pho"),
+(1233, "39", "Dong Nai"),
+(1233, "45", "Dong Thap"),
+(1233, "30", "Gia Lai"),
+(1233, "03", "Ha Giang"),
+(1233, "63", "Ha Nam"),
+(1233, "64", "Ha Noi, thu do"),
+(1233, "15", "Ha Tay"),
+(1233, "23", "Ha Tinh"),
+(1233, "61", "Hai Duong"),
+(1233, "62", "Hai Phong, thanh pho"),
+(1233, "14", "Hoa Binh"),
+(1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
+(1233, "66", "Hung Yen"),
+(1233, "34", "Khanh Hoa"),
+(1233, "47", "Kien Giang"),
+(1233, "28", "Kon Tum"),
+(1233, "01", "Lai Chau"),
+(1233, "35", "Lam Dong"),
+(1233, "09", "Lang Son"),
+(1233, "02", "Lao Cai"),
+(1233, "41", "Long An"),
+(1233, "67", "Nam Dinh"),
+(1233, "22", "Nghe An"),
+(1233, "18", "Ninh Binh"),
+(1233, "36", "Ninh Thuan"),
+(1233, "68", "Phu Tho"),
+(1233, "32", "Phu Yen"),
+(1233, "24", "Quang Binh"),
+(1233, "27", "Quang Nam"),
+(1233, "29", "Quang Ngai"),
+(1233, "13", "Quang Ninh"),
+(1233, "25", "Quang Tri"),
+(1233, "52", "Soc Trang"),
+(1233, "05", "Son La"),
+(1233, "37", "Tay Ninh"),
+(1233, "20", "Thai Binh"),
+(1233, "69", "Thai Nguyen"),
+(1233, "21", "Thanh Hoa"),
+(1233, "26", "Thua Thien-Hue"),
+(1233, "46", "Tien Giang"),
+(1233, "51", "Tra Vinh"),
+(1233, "07", "Tuyen Quang"),
+(1233, "49", "Vinh Long"),
+(1233, "70", "Vinh Phuc"),
+(1233, "06", "Yen Bai"),
+(1231, "MAP", "Malampa"),
+(1231, "PAM", "Penama"),
+(1231, "SAM", "Sanma"),
+(1231, "SEE", "Shefa"),
+(1231, "TAE", "Tafea"),
+(1231, "TOB", "Torba"),
+(1185, "AA", "A\'ana"),
+(1185, "AL", "Aiga-i-le-Tai"),
+(1185, "AT", "Atua"),
+(1185, "FA", "Fa\'aaaleleaga"),
+(1185, "GE", "Gaga\'emauga"),
+(1185, "GI", "Gagaifomauga"),
+(1185, "PA", "Palauli"),
+(1185, "SA", "Satupa\'itea"),
+(1185, "TU", "Tuamasaga"),
+(1185, "VF", "Va\'a-o-Fonoti"),
+(1185, "VS", "Vaisigano"),
+(1243, "CG", "Crna Gora"),
+(1242, "SR", "Srbija"),
+(1242, "KM", "Kosovo-Metohija"),
+(1242, "VO", "Vojvodina"),
+(1237, "AB", "Abyan"),
+(1237, "AD", "Adan"),
+(1237, "DA", "Ad Dali"),
+(1237, "BA", "Al Bayda\'"),
+(1237, "MU", "Al Hudaydah"),
+(1237, "MR", "Al Mahrah"),
+(1237, "MW", "Al Mahwit"),
+(1237, "AM", "Amran"),
+(1237, "DH", "Dhamar"),
+(1237, "HD", "Hadramawt"),
+(1237, "HJ", "Hajjah"),
+(1237, "IB", "Ibb"),
+(1237, "LA", "Lahij"),
+(1237, "MA", "Ma\'rib"),
+(1237, "SD", "Sa\'dah"),
+(1237, "SN", "San\'a\'"),
+(1237, "SH", "Shabwah"),
+(1237, "TA", "Ta\'izz"),
+(1196, "EC", "Eastern Cape"),
+(1196, "FS", "Free State"),
+(1196, "GT", "Gauteng"),
+(1196, "NL", "Kwazulu-Natal"),
+(1196, "MP", "Mpumalanga"),
+(1196, "NC", "Northern Cape"),
+(1196, "NP", "Limpopo"),
+(1196, "WC", "Western Cape"),
+(1196, "NW", "North West"),
+(1239, "08", "Copperbelt"),
+(1239, "04", "Luapula"),
+(1239, "09", "Lusaka"),
+(1239, "06", "North-Western"),
+(1239, 'C', 'Central'),
+(1239, 'E', 'Eastern'),
+(1239, 'M', 'Muchinga'),
+(1239, 'N', 'Northern'),
+(1239, 'S', 'Southern'),
+(1239, 'W', 'Western'),
+(1240, "BU", "Bulawayo"),
+(1240, "HA", "Harare"),
+(1240, "MA", "Manicaland"),
+(1240, "MC", "Mashonaland Central"),
+(1240, "ME", "Mashonaland East"),
+(1240, "MW", "Mashonaland West"),
+(1240, "MV", "Masvingo"),
+(1240, "MN", "Matabeleland North"),
+(1240, "MS", "Matabeleland South"),
+(1240, "MI", "Midlands"),
+(1075, "SK", "South Karelia"),
+(1075, "SO", "South Ostrobothnia"),
+(1075, "ES", "Etelä-Savo"),
+(1075, "HH", "Häme"),
+(1075, "IU", "Itä-Uusimaa"),
+(1075, "KA", "Kainuu"),
+(1075, "CO", "Central Ostrobothnia"),
+(1075, "CF", "Central Finland"),
+(1075, "KY", "Kymenlaakso"),
+(1075, "LA", "Lapland"),
+(1075, "TR", "Tampere Region"),
+(1075, "OB", "Ostrobothnia"),
+(1075, "NK", "North Karelia"),
+(1075, "NO", "Northern Ostrobothnia"),
+(1075, "NS", "Northern Savo"),
+(1075, "PH", "Päijät-Häme"),
+(1075, "SK", "Satakunta"),
+(1075, "UM", "Uusimaa"),
+(1075, "SW", "South-West Finland"),
+(1075, "AL", "Ã…land"),
+(1152, "LI", "Limburg"),
+(1098, "CW", "Central and Western"),
+(1098, "EA", "Eastern"),
+(1098, "SO", "Southern"),
+(1098, "WC", "Wan Chai"),
+(1098, "KC", "Kowloon City"),
+(1098, "KU", "Kwun Tong"),
+(1098, "SS", "Sham Shui Po"),
+(1098, "WT", "Wong Tai Sin"),
+(1098, "YT", "Yau Tsim Mong"),
+(1098, "IS", "Islands"),
+(1098, "KI", "Kwai Tsing"),
+(1098, "NO", "North"),
+(1098, "SK", "Sai Kung"),
+(1098, "ST", "Sha Tin"),
+(1098, "TP", "Tai Po"),
+(1098, "TW", "Tsuen Wan"),
+(1098, "TM", "Tuen Mun"),
+(1098, "YL", "Yuen Long"),
+(1108, "MR", "Manchester"),
+(1016, "13", "Al Manāmah (Al ‘Āşimah)"),
+(1016, "14", "Al Janūbīyah"),
+(1016, "16", "Al Wusţá"),
+(1016, "17", "Ash Shamālīyah");
diff --git a/civicrm/xml/templates/drop.tpl b/civicrm/xml/templates/drop.tpl
index 92e98df8df..8239a2c9cd 100644
--- a/civicrm/xml/templates/drop.tpl
+++ b/civicrm/xml/templates/drop.tpl
@@ -8,11 +8,12 @@
 --
 -- Generated from {$smarty.template}
 -- {$generated}
---{/if}
+--
+{/if}
 -- /*******************************************************
 -- *
--- * Clean up the existing tables{if !$isOutputLicense} - this section generated from {$smarty.template}
-{/if}
+-- * Clean up the existing tables{if !$isOutputLicense} - this section generated from {$smarty.template}{/if}
+
 -- *
 -- *******************************************************/
 
diff --git a/civicrm/xml/templates/languages_setup.tpl b/civicrm/xml/templates/languages_setup.tpl
new file mode 100644
index 0000000000..fccb5e14b9
--- /dev/null
+++ b/civicrm/xml/templates/languages_setup.tpl
@@ -0,0 +1,5 @@
+<?php
+
+\Civi\Setup::assertRunning();
+
+$langs = {$langs};
diff --git a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
index e32cfcaf38..213665d7eb 100644
--- a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
@@ -14,9 +14,9 @@
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
index c7bcc10fb4..4675e488c8 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
@@ -82,7 +82,7 @@
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'}
+                {$line.line_total|crmMoney:'{contribution.currency}'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
index 0c067179ea..2049f45086 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
@@ -27,7 +27,7 @@
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:'{contribution.currency}'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:'{contribution.currency}'|string_format:"%10s"}
 {/foreach}
 {/if}
 
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
index 8321861206..d148b5218a 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
@@ -61,7 +61,7 @@
                 <td>{$line.qty}</td>
                 <td>{$line.unit_price|crmMoney:$currency}</td>
                 {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  <td>{$line.line_total|crmMoney:$currency}</td>
                   {if $line.tax_rate || $line.tax_amount != ""}
                     <td>{$line.tax_rate|string_format:"%.2f"}%</td>
                     <td>{$line.tax_amount|crmMoney:$currency}</td>
@@ -85,7 +85,7 @@
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
index 2e4844feee..e69de29bb2 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
@@ -1,203 +0,0 @@
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{if $isShowLineItems}
-
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:'{contribution.currency}'}
-  {/foreach}
-{/if}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
-
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
-
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
index 8fad146e4b..7b14fdd5b7 100644
--- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
@@ -25,8 +25,8 @@
    <td>
     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
 
     {if !empty($isOnWaitlist)}
@@ -134,7 +134,7 @@
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
index 30b451ca27..b86de3c205 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
@@ -142,7 +142,7 @@
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -206,7 +206,7 @@
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -228,7 +228,7 @@
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -300,25 +300,12 @@
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq 'skip'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
index 1eb6b86c06..1b49df076c 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
@@ -70,7 +70,7 @@
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -113,7 +113,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
index a22a344947..b3da8e213a 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
@@ -23,8 +23,8 @@
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -108,7 +108,7 @@
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'}
+                                {$line.line_total|crmMoney:'{contribution.currency}'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
index 29c852f1b4..e5c60081e3 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
@@ -1,7 +1,7 @@
 {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -40,7 +40,7 @@
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
index 6d1f2200dc..26bda0d5b3 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
@@ -21,20 +21,18 @@
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -45,366 +43,256 @@
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
-
-       <tr>
-        <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$membership_amount|crmMoney}
-        </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
             </td>
             <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
-
-       {foreach from=$lineItem item=value key=priceset}
+              {$line.line_total_inclusive|crmMoney:'{contribution.currency}'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:'{contribution.currency}'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:'{contribution.currency}'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:'{contribution.currency}'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
         </tr>
-       {/foreach}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Total Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney}
-        </td>
-       </tr>
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
             <tr>
-             <td>
-             {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:'{contribution.currency}'}</td>
             </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Amount{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
+            {contribution.total_amount}
         </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
       </tr>
+    {/if}
 
-
-     {/if}
-
-     {if !empty($receive_date)}
+    {if {contribution.receive_date|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
+        <td {$labelStyle}>
+          {ts}Date{/ts}
+        </td>
+        <td {$valueStyle}>
+          {contribution.receive_date}
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -412,134 +300,134 @@
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br />
-       </td>
+        <td colspan="2" {$valueStyle}>
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br />
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($selectPremium)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
       </tr>
       {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
       {/if}
       {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
       {/if}
       {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
-        <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
-        </td>
-       </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
       {/if}
       {if $is_deductible AND !empty($price)}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
          </td>
         </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($customPre)}
+    {if !empty($customPre)}
       <tr>
        <th {$headerStyle}>
-        {$customPre_grouptitle}
+         {$customPre_grouptitle}
        </th>
       </tr>
       {foreach from=$customPre item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($customPost)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
       </tr>
       {foreach from=$customPost item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
   </table>
 
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
index 43eed64b71..7fe701830c 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
@@ -1 +1 @@
-{if '{contribution.contribution_status_id:name}' === 'Pending'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
+{if '{contribution.contribution_status_id:name}' === 'Pending'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
index b692a4fa8a..e69de29bb2 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
@@ -1,237 +0,0 @@
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
index 9da9560b5c..83600ab429 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
@@ -22,11 +22,11 @@
   <tr>
     <td>
       {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
         <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
+        {if !{contribution.balance_amount|boolean}}
           <p>{ts}Thank you for completing this contribution.{/ts}</p>
         {/if}
       {/if}
@@ -35,7 +35,7 @@
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
       <tr>
         <th {$headerStyle}>{ts}Refund Details{/ts}</th>
       </tr>
@@ -44,7 +44,7 @@
         {ts}This Refund Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
+          {financial_trxn.total_amount}
         </td>
       </tr>
     {else}
@@ -56,47 +56,47 @@
         {ts}This Payment Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
+        {financial_trxn.total_amount}
         </td>
       </tr>
     {/if}
-    {if $receive_date}
+    {if {financial_trxn.trxn_date|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction Date{/ts}
         </td>
         <td {$valueStyle}>
-        {$receive_date|crmDate}
+         {financial_trxn.trxn_date}
         </td>
       </tr>
     {/if}
-    {if !empty($trxn_id)}
+    {if {financial_trxn.trxn_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction #{/ts}
         </td>
         <td {$valueStyle}>
-        {$trxn_id}
+          {financial_trxn.trxn_id}
         </td>
       </tr>
     {/if}
-    {if !empty($paidBy)}
+    {if {financial_trxn.payment_instrument_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Paid By{/ts}
         </td>
         <td {$valueStyle}>
-        {$paidBy}
+          {financial_trxn.payment_instrument_id:label}
         </td>
       </tr>
     {/if}
-    {if !empty($checkNumber)}
+    {if {financial_trxn.check_number|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Check Number{/ts}
         </td>
         <td {$valueStyle}>
-        {$checkNumber}
+          {financial_trxn.check_number}
         </td>
       </tr>
     {/if}
@@ -104,34 +104,34 @@
   <tr>
     <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
   </tr>
-  {if $totalAmount}
+  {if {contribution.total_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Fee{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
+      {contribution.total_amount}
     </td>
   </tr>
   {/if}
-  {if $totalPaid}
+  {if {contribution.paid_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Paid{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
+      {contribution.paid_amount}
     </td>
   </tr>
   {/if}
-  {if $amountOwed}
+  {if {contribution.balance_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Balance Owed{/ts}
     </td>
     <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
+      {contribution.balance_amount}
+    </td>
   </tr>
   {/if}
   </table>
@@ -142,105 +142,125 @@
       <td>
   <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
     {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
         {if !empty($billingName)}{$billingName}{/if}<br />
         {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:''|crmDate}
-            </td>
-          </tr>
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
     {/if}
-    {if $component eq 'event'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if '{event.end_date|crmDate:"%Y%m%d"}' === '{event.start_date|crmDate:"%Y%m%d"}'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
       </td>
     </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
   </table>
-      </td>
-    </tr>
-
-    </table>
-
  </body>
 </html>
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
index 7fc6a6b084..2e8f8f99ce 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
@@ -1 +1 @@
-{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq 'event'} - {$event.title}{/if} - {contact.display_name}
+{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
index 96657fddbb..e69de29bb2 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
@@ -1,116 +0,0 @@
-{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-{if $component eq 'event'}
-===============================================================================
-
-{ts}Event Information and Location{/ts}
-
-===============================================================================
-
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
-
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
-
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
-
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
-
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index e832cab151..867b3f4c0a 100644
--- a/civicrm/xml/version.xml
+++ b/civicrm/xml/version.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="iso-8859-1" ?>
 <version>
-  <version_no>5.68.1</version_no>
+  <version_no>5.69.0</version_no>
 </version>
diff --git a/includes/admin-metaboxes/civicrm.metabox.contact.add.php b/includes/admin-metaboxes/civicrm.metabox.contact.add.php
index 4bb01d48cf..cf1460cd7f 100644
--- a/includes/admin-metaboxes/civicrm.metabox.contact.add.php
+++ b/includes/admin-metaboxes/civicrm.metabox.contact.add.php
@@ -107,7 +107,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function enqueue_js($hook) {
 
     // Bail if not the dashboard.
-    if ('index.php' != $hook) {
+    if ('index.php' !== $hook) {
       return;
     }
 
@@ -116,7 +116,8 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
       'civicrm-contact-add-script',
       CIVICRM_PLUGIN_URL . 'assets/js/civicrm.contact.add.js',
       ['jquery'],
-      CIVICRM_PLUGIN_VERSION
+      CIVICRM_PLUGIN_VERSION,
+      FALSE
     );
 
     // Init settings and localisation array.
@@ -150,7 +151,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function enqueue_css($hook) {
 
     // Bail if not the dashboard.
-    if ('index.php' != $hook) {
+    if ('index.php' !== $hook) {
       return;
     }
 
@@ -236,8 +237,11 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     // Detect error message.
     $error = '';
     $error_css = ' display: none;';
-    if (!empty($_GET['quick-add-error'])) {
-      switch ($_GET['quick-add-error']) {
+    // Nonce not needed since $_GET['quick-add-error'] must match certain pre-defined slugs.
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    $quick_add_error = isset($_GET['quick-add-error']) ? sanitize_text_field(wp_unslash($_GET['quick-add-error'])) : '';
+    if (!empty($quick_add_error)) {
+      switch ($quick_add_error) {
 
         case 'civicrm':
           $error = __('Failed to init CiviCRM.', 'civicrm');
@@ -289,17 +293,21 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
    */
   public function form_submitted() {
 
-    if (!empty($_POST['civicrm_quick_add_submit'])) {
-      // Save Contact.
-      $this->form_nonce_check();
-      $this->form_save_contact();
-      $this->form_redirect();
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:ignore WordPress.Security.NonceVerification.Missing
+    if (!isset($_POST['civicrm_quick_add_submit'])) {
+      return;
     }
 
+    // Save Contact.
+    $this->form_nonce_check();
+    $this->form_save_contact();
+    $this->form_redirect();
+
   }
 
   /**
-   * Save the CiviCRM Base Page Setting.
+   * Save the CiviCRM Contact.
    *
    * @since 5.34
    */
@@ -309,25 +317,31 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
       $this->form_redirect(['quick-add-error' => 'civicrm']);
     }
 
-    // Bail if there's no valid First Name.
-    $first_name = empty($_POST['civicrm_quick_add_first_name']) ? '' : trim($_POST['civicrm_quick_add_first_name']);
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
 
+    // Bail if there's no valid First Name.
+    $first_name = empty($_POST['civicrm_quick_add_first_name']) ? '' : sanitize_text_field(wp_unslash($_POST['civicrm_quick_add_first_name']));
     if ($first_name === '') {
       $this->form_redirect(['quick-add-error' => 'first-name']);
     }
 
     // Bail if there's no valid Last Name.
-    $last_name = empty($_POST['civicrm_quick_add_last_name']) ? '' : trim($_POST['civicrm_quick_add_last_name']);
+    $last_name = empty($_POST['civicrm_quick_add_last_name']) ? '' : sanitize_text_field(wp_unslash($_POST['civicrm_quick_add_last_name']));
     if ($last_name === '') {
       $this->form_redirect(['quick-add-error' => 'last-name']);
     }
 
     // Bail if there's no valid Email.
-    $email = empty($_POST['civicrm_quick_add_email']) ? '' : trim($_POST['civicrm_quick_add_email']);
+    $email = empty($_POST['civicrm_quick_add_email']) ? '' : sanitize_email(wp_unslash($_POST['civicrm_quick_add_email']));
     if (!is_email($email)) {
       $this->form_redirect(['quick-add-error' => 'email']);
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
     // Build params to create Contact.
     $params = [
       'version' => 3,
@@ -341,7 +355,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     $result = civicrm_api('Contact', 'create', $params);
 
     // Bail if there's an error.
-    if (!empty($result['is_error']) && $result['is_error'] == 1) {
+    if (!empty($result['is_error']) && 1 === (int) $result['is_error']) {
       $this->form_redirect(['quick-add-error' => 'api']);
     }
 
@@ -428,7 +442,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function ajax_contact_add() {
 
     // Default response.
-    $data = [
+    $response = [
       'notice' => __('Could not save the contact.', 'civicrm'),
       'added' => FALSE,
     ];
@@ -436,60 +450,64 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     // Since this is an AJAX request, check security.
     $result = check_ajax_referer('civicrm_metabox_contact_add', FALSE, FALSE);
     if ($result === FALSE) {
-      $data['notice'] = __('Authentication failed.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Authentication failed.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if CiviCRM not inited.
     if (!$this->civi->initialize()) {
-      $data['notice'] = __('CiviCRM not loaded.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('CiviCRM not loaded.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if user cannot create Contacts.
     if (!CRM_Core_Permission::check('add contacts')) {
-      $data['notice'] = __('Permission denied.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Permission denied.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if there is no valid data.
-    $data = isset($_POST['value']) ? (array) $_POST['value'] : [];
+    $data = filter_input(INPUT_POST, 'value', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
     if (empty($data)) {
-      $data['notice'] = __('No data received.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('No data received.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if first name is not valid.
-    if (empty($data['first_name'])) {
-      $data['notice'] = __('Please enter a first name.', 'civicrm');
-      wp_send_json($data);
+    $first_name = sanitize_text_field(wp_unslash($data['first_name']));
+    if (empty($first_name)) {
+      $response['notice'] = __('Please enter a first name.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if last name is not valid.
-    if (empty($data['last_name'])) {
-      $data['notice'] = __('Please enter a last name.', 'civicrm');
-      wp_send_json($data);
+    $last_name = sanitize_text_field(wp_unslash($data['last_name']));
+    if (empty($last_name)) {
+      $response['notice'] = __('Please enter a last name.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if email is not valid.
-    if (!is_email($data['email'])) {
-      $data['notice'] = __('Please enter a valid email.', 'civicrm');
-      wp_send_json($data);
+    $email = sanitize_email(wp_unslash($data['email']));
+    if (!is_email($email)) {
+      $response['notice'] = __('Please enter a valid email.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Build params to check for an existing Contact.
     $contact = [
-      'first_name' => $data['first_name'],
-      'last_name' => $data['last_name'],
-      'email' => $data['email'],
+      'first_name' => $first_name,
+      'last_name' => $last_name,
+      'email' => $email,
     ];
 
     // Bail if there is an existing Contact.
     $existing_id = civi_wp()->admin->get_by_dedupe_unsupervised($contact);
     if ($existing_id !== FALSE && $existing_id !== 0) {
       $open = '<a href="' . $this->civi->admin->get_admin_link('civicrm/contact/view', 'reset=1&cid=' . $existing_id) . '">';
-      $data['notice'] = sprintf(__('There seems to be %1$san existing Contact%2$s with these details.', 'civicrm'), $open, '</a>');
-      wp_send_json($data);
+      /* translators: 1: The opening anchor tag, 2: The closing anchor tag. */
+      $response['notice'] = sprintf(__('There seems to be %1$san existing Contact%2$s with these details.', 'civicrm'), $open, '</a>');
+      wp_send_json($response);
     }
 
     // Build params to create Contact.
@@ -502,15 +520,16 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     $result = civicrm_api('Contact', 'create', $params);
 
     // Bail if there's an error.
-    if (!empty($result['is_error']) && $result['is_error'] == 1) {
-      $data['notice'] = sprintf(__('Could not create Contact: %s', 'civicrm'), $result['error_message']);
-      wp_send_json($data);
+    if (!empty($result['is_error']) && 1 === (int) $result['is_error']) {
+      /* translators: %s: The error message. */
+      $response['notice'] = sprintf(__('Could not create Contact: %s', 'civicrm'), $result['error_message']);
+      wp_send_json($response);
     }
 
     // Bail if there are no results.
     if (empty($result['values'])) {
-      $data['notice'] = __('Could not find the created Contact.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Could not find the created Contact.', 'civicrm');
+      wp_send_json($response);
     }
 
     // The result set should contain only one item.
diff --git a/includes/admin-pages/civicrm.page.error.php b/includes/admin-pages/civicrm.page.error.php
index ceda45cc05..2ff4bc7113 100644
--- a/includes/admin-pages/civicrm.page.error.php
+++ b/includes/admin-pages/civicrm.page.error.php
@@ -180,7 +180,7 @@ class CiviCRM_For_WordPress_Admin_Page_Error {
     do_action('civicrm/page/error/add_meta_boxes', $screen->id);
 
     // Grab columns.
-    $columns = (1 == $screen->get_columns() ? '1' : '2');
+    $columns = (1 === $screen->get_columns() ? '1' : '2');
 
     // Include template file.
     include CIVICRM_PLUGIN_DIR . 'assets/templates/pages/page.error.php';
diff --git a/includes/admin-pages/civicrm.page.integration.php b/includes/admin-pages/civicrm.page.integration.php
index 5de94eaf74..78ff99a88f 100644
--- a/includes/admin-pages/civicrm.page.integration.php
+++ b/includes/admin-pages/civicrm.page.integration.php
@@ -306,7 +306,7 @@ class CiviCRM_For_WordPress_Admin_Page_Integration {
     // Query again if it's not found.
     if ($plugins === FALSE) {
 
-      // Build query
+      // Build query.
       $query = [
         'tag' => 'civicrm',
         'fields' => [
@@ -374,7 +374,7 @@ class CiviCRM_For_WordPress_Admin_Page_Integration {
           // We're good - grab the actual data.
           $plugins = json_decode(wp_remote_retrieve_body($response), TRUE);
 
-          // Store for a week given how infrequently plugins are added,
+          // Store for a week given how infrequently plugins are added.
           set_site_transient('civicrm_plugins_by_repo', $plugins, 1 * WEEK_IN_SECONDS);
 
         }
diff --git a/includes/admin-pages/civicrm.page.options.php b/includes/admin-pages/civicrm.page.options.php
index 84eb4cbce9..a73a56348b 100644
--- a/includes/admin-pages/civicrm.page.options.php
+++ b/includes/admin-pages/civicrm.page.options.php
@@ -165,7 +165,8 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
       'civicrm-options-script',
       CIVICRM_PLUGIN_URL . 'assets/js/civicrm.options.js',
       ['jquery'],
-      CIVICRM_PLUGIN_VERSION
+      CIVICRM_PLUGIN_VERSION,
+      FALSE
     );
 
     // Init settings and localisation array.
@@ -425,7 +426,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     $params = [
       'post_type' => 'page',
       'sort_column' => 'menu_order, post_title',
-      'show_option_none' => __('- Select a Base Page -'),
+      'show_option_none' => __('- Select a Base Page -', 'civicrm'),
     ];
 
     // If the Base Page is set, add its ID.
@@ -696,6 +697,10 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    */
   public function form_submitted() {
 
+    // Nonce is irrelevant at this stage.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+
     if (!empty($_POST['civicrm_basepage_post_submit'])) {
       // Save Base Page.
       $this->form_nonce_check();
@@ -727,6 +732,9 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
       $this->form_redirect();
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
   }
 
   /**
@@ -734,10 +742,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.34
    */
-  public function form_save_basepage() {
+  private function form_save_basepage() {
 
     // Bail if there's no valid Post ID.
-    $post_id = empty($_POST['page_id']) ? 0 : (int) trim($_POST['page_id']);
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $post_id = empty($_POST['page_id']) ? 0 : (int) sanitize_text_field(wp_unslash($_POST['page_id']));
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($post_id === 0) {
       return;
     }
@@ -760,10 +771,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.44
    */
-  public function form_save_shortcode() {
+  private function form_save_shortcode() {
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['shortcode_mode']) ? trim($_POST['shortcode_mode']) : 0;
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $chosen = isset($_POST['shortcode_mode']) ? sanitize_text_field(wp_unslash($_POST['shortcode_mode'])) : 0;
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($chosen === 0 || !in_array($chosen, $this->civi->admin->get_shortcode_modes())) {
       return;
     }
@@ -778,10 +792,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.34
    */
-  public function form_save_email_sync() {
+  private function form_save_email_sync() {
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['sync_email']) ? trim($_POST['sync_email']) : 0;
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $chosen = isset($_POST['sync_email']) ? sanitize_text_field(wp_unslash($_POST['sync_email'])) : 0;
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($chosen === 0) {
       return;
     }
@@ -854,7 +871,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there's no valid Post ID.
-    $post_id = empty($_POST['value']) ? 0 : (int) trim($_POST['value']);
+    $post_id = empty($_POST['value']) ? 0 : (int) sanitize_text_field(wp_unslash($_POST['value']));
     if ($post_id === 0) {
       $data['notice'] = __('No Page ID detected. Unable to save the WordPress Base Page.', 'civicrm');
       wp_send_json($data);
@@ -931,7 +948,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0 || !in_array($chosen, $this->civi->admin->get_shortcode_modes())) {
       $data['notice'] = __('Unrecognised parameter. Could not save the selected setting.', 'civicrm');
       wp_send_json($data);
@@ -975,7 +992,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0) {
       $data['notice'] = __('Unrecognised parameter. Could not save the selected setting.', 'civicrm');
       wp_send_json($data);
@@ -1031,7 +1048,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0 || !in_array($chosen, ['enable', 'disable'])) {
       $data['notice'] = __('Unrecognised parameter. Could not refresh the CiviCRM permissions.', 'civicrm');
       wp_send_json($data);
@@ -1092,8 +1109,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid value.
-    $chosen = isset($_POST['value']) ? (int) trim($_POST['value']) : 0;
-
+    $chosen = isset($_POST['value']) ? (int) sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen !== 1) {
       $data['notice'] = __('Unrecognised parameter. Could not clear the CiviCRM caches.', 'civicrm');
       wp_send_json($data);
diff --git a/includes/civicrm.admin.php b/includes/civicrm.admin.php
index 582ad17acf..548cd76029 100644
--- a/includes/civicrm.admin.php
+++ b/includes/civicrm.admin.php
@@ -76,6 +76,13 @@ class CiviCRM_For_WordPress_Admin {
    */
   public $metabox_quick_add;
 
+  /**
+   * @var string
+   * Reference to the CiviCRM menu item's hook_suffix, in the WordPress admin menu.
+   * @access public
+   */
+  public $menu_page;
+
   /**
    * Instance constructor.
    *
@@ -201,11 +208,12 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if we are on our installer page.
-    if ($screen->id == 'toplevel_page_civicrm-install') {
+    if ($screen->id === 'toplevel_page_civicrm-install') {
       return;
     }
 
     $message = sprintf(
+      /* translators: 1: Opening strong tag, 2: Closing strong tag, 3: Opening anchor tag, 4: Closing anchor tag. */
       __('%1$sCiviCRM is almost ready.%2$s You must %3$sconfigure CiviCRM%4$s for it to work.', 'civicrm'),
       '<strong>',
       '</strong>',
@@ -227,6 +235,7 @@ class CiviCRM_For_WordPress_Admin {
   public function run_installer() {
 
     // Set install type.
+    // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
     $_GET['civicrm_install_type'] = 'wordpress';
 
     $civicrmCore = CIVICRM_PLUGIN_DIR . 'civicrm';
@@ -293,11 +302,12 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if we are on our error page.
-    if ($screen->id == 'toplevel_page_CiviCRM') {
+    if ($screen->id === 'toplevel_page_CiviCRM') {
       return;
     }
 
     $message = sprintf(
+      /* translators: 1: Opening strong tag, 2: Closing strong tag, 3: Opening anchor tag, 4: Closing anchor tag. */
       __('%1$sCiviCRM needs your attention.%2$s Please visit the %3$sInformation Page%4$s for details.', 'civicrm'),
       '<strong>',
       '</strong>',
@@ -400,7 +410,7 @@ class CiviCRM_For_WordPress_Admin {
      * including "civicrm.settings.php" will throw a fatal error if $civicrm_root
      * is wrong.
      */
-    if ($error == FALSE) {
+    if ($error === FALSE) {
       $this->error_flag = 'settings-include';
       $initialized = FALSE;
       return FALSE;
@@ -424,7 +434,7 @@ class CiviCRM_For_WordPress_Admin {
     $error = include_once 'CRM/Core/Config.php';
 
     // Bail if the config file returns something other than int(1).
-    if ($error == FALSE) {
+    if ($error === FALSE) {
       $this->error_flag = 'config-include';
       $initialized = FALSE;
       return FALSE;
@@ -505,7 +515,7 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if this is not CiviCRM admin.
-    if ($pagenow != 'admin.php' || FALSE === strpos($current_screen['query'], 'page=CiviCRM')) {
+    if ($pagenow !== 'admin.php' || FALSE === strpos($current_screen['query'], 'page=CiviCRM')) {
       return $settings;
     }
 
@@ -537,7 +547,7 @@ class CiviCRM_For_WordPress_Admin {
 
     // Delete the option if conditions are met.
     if ($dao instanceof CRM_Core_DAO_Setting) {
-      if (isset($dao->name) && $dao->name == 'wpBasePage') {
+      if (isset($dao->name) && $dao->name === 'wpBasePage') {
         delete_option('civicrm_rules_flushed');
       }
     }
@@ -551,6 +561,11 @@ class CiviCRM_For_WordPress_Admin {
    *
    * @since 5.28
    * @since 5.33 Moved to this class.
+   *
+   * @param string $html The auto-update markup.
+   * @param string $plugin_file The path to the plugin.
+   * @param array $plugin_data An array of plugin data.
+   * @return string $html The modified auto-update markup.
    */
   public function auto_update_prevent($html, $plugin_file, $plugin_data) {
 
@@ -595,6 +610,7 @@ class CiviCRM_For_WordPress_Admin {
    */
   public function add_menu_items() {
 
+    // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
     $civilogo = file_get_contents(CIVICRM_PLUGIN_DIR . 'assets/images/civilogo.svg.b64');
 
     global $wp_version;
@@ -706,7 +722,7 @@ class CiviCRM_For_WordPress_Admin {
 
     // This option is created on activation.
     $existing_option = FALSE;
-    if ('fjwlws' != get_option('civicrm_activation_in_progress', 'fjwlws')) {
+    if ('fjwlws' !== get_option('civicrm_activation_in_progress', 'fjwlws')) {
       $existing_option = TRUE;
     }
 
diff --git a/includes/civicrm.basepage.php b/includes/civicrm.basepage.php
index 0e5eabbd92..27aae45246 100644
--- a/includes/civicrm.basepage.php
+++ b/includes/civicrm.basepage.php
@@ -557,7 +557,7 @@ class CiviCRM_For_WordPress_Basepage {
     }
 
     // Construct title depending on separator location.
-    if ($separator_location == 'right') {
+    if ($separator_location === 'right') {
       $title = $this->basepage_title . " $separator " . get_bloginfo('name', 'display');
     }
     else {
@@ -636,21 +636,26 @@ class CiviCRM_For_WordPress_Basepage {
     // Access CiviCRM config object.
     $config = CRM_Core_Config::singleton();
 
+    // None of the following needs a nonce check.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+
     // Retain old logic when not using clean URLs.
     if (!$config->cleanURL) {
 
+      $civiwp = empty($_GET['civiwp']) ? '' : sanitize_text_field(wp_unslash($_GET['civiwp']));
+      $q = empty($_GET['q']) ? '' : sanitize_text_field(wp_unslash($_GET['q']));
+
       /*
        * It would be better to specify which params are okay to accept as the
        * canonical URLs, but this will work for the time being.
        */
-      if (empty($_GET['civiwp'])
-        || empty($_GET['q'])
-        || 'CiviCRM' !== $_GET['civiwp']) {
+      if (empty($civiwp)
+        || 'CiviCRM' !== $civiwp
+        || empty($q)) {
         return $canonical;
       }
-      $path = $_GET['q'];
-      unset($_GET['q']);
-      unset($_GET['civiwp']);
+      $path = $q;
+      unset($q, $_GET['q'], $civiwp, $_GET['civiwp']);
       $query = http_build_query($_GET);
 
     }
@@ -662,6 +667,8 @@ class CiviCRM_For_WordPress_Basepage {
 
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
     /*
      * We should, however, build the URL the way that CiviCRM expects it to be
      * (rather than through some other funny Base Page).
@@ -687,12 +694,12 @@ class CiviCRM_For_WordPress_Basepage {
     $template_name = str_replace(trailingslashit(get_stylesheet_directory()), '', $template);
 
     // If the above fails, try parent theme.
-    if ($template_name == $template) {
+    if ($template_name === $template) {
       $template_name = str_replace(trailingslashit(get_template_directory()), '', $template);
     }
 
     // Bail in the unlikely event that the template name has not been found.
-    if ($template_name == $template) {
+    if ($template_name === $template) {
       return $template;
     }
 
@@ -713,7 +720,7 @@ class CiviCRM_For_WordPress_Basepage {
     $page_template = locate_template([$basepage_template]);
 
     // If not homepage and template is found.
-    if ('' != $page_template && !is_front_page()) {
+    if (!is_front_page() && !empty($page_template)) {
       return $page_template;
     }
 
@@ -740,7 +747,7 @@ class CiviCRM_For_WordPress_Basepage {
     $home_template = locate_template([$home_template_name]);
 
     // Use it if found.
-    if ('' != $home_template) {
+    if (!empty($home_template)) {
       return $home_template;
     }
 
@@ -863,6 +870,94 @@ class CiviCRM_For_WordPress_Basepage {
 
   }
 
+  /**
+   * Gets a URL that points to the CiviCRM Base Page.
+   *
+   * There can be situations where `CRM_Utils_System::url` does not return
+   * a link to the Base Page, e.g. in a page template where the content
+   * contains a Shortcode. This utility method will always return a URL
+   * that points to the CiviCRM Base Page.
+   *
+   * @see https://lab.civicrm.org/dev/wordpress/-/issues/144
+   *
+   * @since 5.69
+   *
+   * @param string $path The path being linked to, such as "civicrm/add".
+   * @param array|string $query A query string to append to the link, or an array of key-value pairs.
+   * @param bool $absolute Whether to force the output to be an absolute link.
+   * @param string $fragment A fragment identifier (named anchor) to append to the link.
+   * @param bool $htmlize Whether to encode special html characters such as &.
+   * @return string $link An HTML string containing a link to the given path.
+   */
+  public function url(
+    $path = '',
+    $query = '',
+    $absolute = TRUE,
+    $fragment = NULL,
+    $htmlize = TRUE
+  ) {
+
+    // Return early if no CiviCRM.
+    $link = '';
+    if (!$this->civi->initialize()) {
+      return $link;
+    }
+
+    // Add modifying callbacks prior to multi-lingual compat.
+    add_filter('civicrm/basepage/match', [$this, 'ensure_match'], 9);
+    add_filter('civicrm/core/url/base', [$this, 'ensure_url'], 9, 2);
+
+    // Pass to CiviCRM to construct front-end URL.
+    $link = CRM_Utils_System::url(
+      $path,
+      $query,
+      TRUE,
+      $fragment,
+      $htmlize,
+      TRUE,
+      FALSE
+    );
+
+    // Remove callbacks.
+    remove_filter('civicrm/basepage/match', [$this, 'ensure_match'], 9);
+    remove_filter('civicrm/core/url/base', [$this, 'ensure_url'], 9);
+
+    return $link;
+
+  }
+
+  /**
+   * Callback to ensure CiviCRM returns a Base Page URL.
+   *
+   * @since 5.69
+   *
+   * @return bool
+   */
+  public function ensure_match() {
+    return TRUE;
+  }
+
+  /**
+   * Callback to ensure CiviCRM builds a Base Page URL.
+   *
+   * @since 5.69
+   *
+   * @param str $url The "base" URL as built by CiviCRM.
+   * @param bool $admin_request True if building an admin URL, false otherwise.
+   * @return str $url The Base Page URL.
+   */
+  public function ensure_url($url, $admin_request) {
+
+    // Skip when not defined.
+    if (empty($url) || $admin_request) {
+      return $url;
+    }
+
+    // Return the Base Page URL.
+    return $this->url_get();
+
+  }
+
   /**
    * Gets the current Base Page ID.
    *
diff --git a/includes/civicrm.functions.php b/includes/civicrm.functions.php
index 1d9a62610f..afd144a17a 100644
--- a/includes/civicrm.functions.php
+++ b/includes/civicrm.functions.php
@@ -21,6 +21,36 @@ if (!defined('ABSPATH')) {
   exit;
 }
 
+/**
+ * Gets a URL that points to the CiviCRM Base Page.
+ *
+ * @see CiviCRM_For_WordPress_Basepage::url
+ *
+ * @since 5.69
+ *
+ * @param string $path The path being linked to, such as "civicrm/add".
+ * @param array|string $query A query string to append to the link, or an array of key-value pairs.
+ * @param bool $absolute Whether to force the output to be an absolute link.
+ * @param string $fragment A fragment identifier (named anchor) to append to the link.
+ * @param bool $htmlize Whether to encode special html characters such as &.
+ * @return string $link An HTML string containing a link to the given path.
+ */
+function civicrm_basepage_url(
+  $path = '',
+  $query = '',
+  $absolute = TRUE,
+  $fragment = NULL,
+  $htmlize = TRUE
+) {
+  return civi_wp()->basepage->url(
+    $path,
+    $query,
+    $absolute,
+    $fragment,
+    $htmlize
+  );
+}
+
 /**
  * Add CiviCRM access capabilities to WordPress roles.
  *
@@ -168,7 +198,7 @@ function civicrm_get_ctype($default = NULL) {
  *
  * @since 4.3
  *
- * @return string $wp_set_breadCrumb The breadcrumb markup.
+ * @return array $wp_set_breadCrumb The breadcrumb markup.
  */
 function wp_get_breadcrumb() {
   global $wp_set_breadCrumb;
@@ -183,8 +213,8 @@ function wp_get_breadcrumb() {
  *
  * @since 4.3
  *
- * @param string $breadCrumb The desired breadcrumb markup.
- * @return string $wp_set_breadCrumb The breadcrumb markup.
+ * @param array $breadCrumb The desired breadcrumb markup.
+ * @return array $wp_set_breadCrumb The breadcrumb markup.
  */
 function wp_set_breadcrumb($breadCrumb) {
   global $wp_set_breadCrumb;
diff --git a/includes/civicrm.shortcodes.modal.php b/includes/civicrm.shortcodes.modal.php
index 0d7f765d7b..4deb557368 100644
--- a/includes/civicrm.shortcodes.modal.php
+++ b/includes/civicrm.shortcodes.modal.php
@@ -86,6 +86,7 @@ class CiviCRM_For_WordPress_Shortcodes_Modal {
     // Add button to selected WordPress Post Types, if allowed.
     if ($this->post_type_has_button()) {
 
+      // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
       $civilogo = file_get_contents(CIVICRM_PLUGIN_DIR . 'assets/images/civilogo.svg.b64');
 
       $url = admin_url('admin.php?page=CiviCRM&q=civicrm/shortcode&reset=1');
@@ -122,7 +123,7 @@ class CiviCRM_For_WordPress_Shortcodes_Modal {
     // Get screen object.
     $screen = get_current_screen();
 
-    // Bail if no post type (e.g. Ninja Forms)
+    // Bail if no post type - e.g. Ninja Forms.
     if (!isset($screen->post_type)) {
       return;
     }
diff --git a/includes/civicrm.shortcodes.php b/includes/civicrm.shortcodes.php
index 6c04747364..eb2b00fa65 100644
--- a/includes/civicrm.shortcodes.php
+++ b/includes/civicrm.shortcodes.php
@@ -224,7 +224,7 @@ class CiviCRM_For_WordPress_Shortcodes {
           $atts = $this->get_atts($shortcode);
 
           // Test for hijacking.
-          if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+          if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
             add_filter('civicrm_context', [$this, 'get_context']);
           }
 
@@ -232,7 +232,7 @@ class CiviCRM_For_WordPress_Shortcodes {
           $this->shortcode_markup[$post->ID][$key] = do_shortcode($shortcode);
 
           // Test for hijacking.
-          if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+          if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
 
             // Ditch the filter.
             remove_filter('civicrm_context', [$this, 'get_context']);
@@ -328,6 +328,8 @@ class CiviCRM_For_WordPress_Shortcodes {
   public function render_single($atts) {
 
     // Do not parse Shortcodes in REST context for PUT, POST and DELETE methods.
+    // Nonce is not necessary here.
+    // phpcs:ignore WordPress.Security.NonceVerification.Missing
     if (defined('REST_REQUEST') && REST_REQUEST && (isset($_PUT) || isset($_POST) || isset($_DELETE))) {
       // Return the original Shortcode.
       $shortcode = '[civicrm';
@@ -488,18 +490,18 @@ class CiviCRM_For_WordPress_Shortcodes {
     $config = CRM_Core_Config::singleton();
 
     // Do we have multiple Shortcodes?
-    if ($multiple != 0) {
+    if ($multiple !== 0) {
 
       $links = [];
       foreach ($args as $var => $arg) {
-        if (!empty($arg) && $var != 'q') {
+        if (!empty($arg) && $var !== 'q') {
           $links[] = $var . '=' . $arg;
         }
       }
       $query = implode('&', $links);
 
-      // $absolute, $frontend, $forceBackend
-      $base_url = $this->civi->get_base_url(TRUE, FALSE, FALSE);
+      // Params are: $absolute, $frontend, $forceBackend.
+      $base_url = CRM_Utils_System::getBaseUrl(TRUE, FALSE, FALSE);
 
       // Init query parts.
       $queryParts = [];
@@ -541,7 +543,7 @@ class CiviCRM_For_WordPress_Shortcodes {
     // Test for hijacking.
     if (!$multiple) {
 
-      if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+      if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
 
         // Add title to array.
         $this->post_titles[$post_id] = $data['title'];
@@ -570,33 +572,30 @@ class CiviCRM_For_WordPress_Shortcodes {
       $description = $data['text'];
     }
 
-    // Provide an enticing link.
-    $more_link = sprintf(
-      '<a href="%s">%s</a>',
-      $link,
-
-      /**
-       * Filter the CiviCRM Shortcode more link text.
-       *
-       * @since 4.6
-       *
-       * @param str The existing Shortcode more link text.
-       */
-      apply_filters('civicrm_shortcode_more_link', __('Find out more...', 'civicrm'))
+    /**
+     * Filter the CiviCRM Shortcode more link text.
+     *
+     * @since 4.6
+     *
+     * @param str The existing Shortcode more link text.
+     */
+    $link_text = apply_filters('civicrm_shortcode_more_link', __('Find out more...', 'civicrm'));
 
-    );
+    // Provide an enticing link.
+    $more_link = sprintf('<a href="%s">%s</a>', $link, $link_text);
 
     // Assume CiviCRM footer is not enabled.
     $empowered_enabled = FALSE;
     $footer = '';
 
     // Test config object for setting.
-    if ($config->empoweredBy == 1) {
+    if (1 === (int) $config->empoweredBy) {
 
       // Footer enabled - define it.
       $civi = __('CiviCRM.org - Growing and Sustaining Relationships', 'civicrm');
       $logo = '<div class="empowered-by-logo"><span>' . __('CiviCRM', 'civicrm') . '</span></div>';
       $civi_link = '<a href="https://civicrm.org/" title="' . $civi . '" target="_blank" class="empowered-by-link">' . $logo . '</a>';
+      /* translators: %s: The link to the CiviCRM website. */
       $empowered = sprintf(__('Empowered by %s', 'civicrm'), $civi_link);
 
       /**
@@ -650,7 +649,8 @@ class CiviCRM_For_WordPress_Shortcodes {
    *
    * @since 4.6
    *
-   * @return string The overridden content.
+   * @param string $content The content.
+   * @return string $content The overridden content.
    */
   public function get_content($content) {
 
@@ -726,7 +726,7 @@ class CiviCRM_For_WordPress_Shortcodes {
       return $civicrm_wp_title;
     }
 
-    // Fallback
+    // Fallback.
     return $post_title;
 
   }
@@ -784,7 +784,7 @@ class CiviCRM_For_WordPress_Shortcodes {
    *
    * @since 4.6
    *
-   * @param $shortcode The Shortcode to parse.
+   * @param string $shortcode The Shortcode to parse.
    * @return array $shortcode_atts Array of Shortcode attributes.
    */
   private function get_atts($shortcode) {
@@ -822,37 +822,33 @@ class CiviCRM_For_WordPress_Shortcodes {
     ];
 
     // Parse Shortcode attributes.
-    $shortcode_atts = shortcode_atts($defaults, $atts, 'civicrm');
-    extract($shortcode_atts);
+    $attributes = shortcode_atts($defaults, $atts, 'civicrm');
 
     $args = [
       'reset' => 1,
-      'id'    => $id,
-      'force' => $force,
+      'id'    => $attributes['id'],
+      'force' => $attributes['force'],
     ];
 
     // Construct args for known components.
-    switch ($component) {
+    switch ($attributes['component']) {
 
       case 'contribution':
 
-        if ($mode == 'preview' || $mode == 'test') {
+        if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
           $args['action'] = 'preview';
         }
 
-        switch ($action) {
-          case 'transact':
-            $args['q'] = 'civicrm/contribute/transact';
-            break;
-
+        switch ($attributes['action']) {
           case 'setup':
             $args['q'] = 'civicrm/contribute/campaign';
             $args['action'] = 'add';
             $args['component'] = 'contribute';
             unset($args['id']);
-            $args['pageId'] = $id;
+            $args['pageId'] = $attributes['id'];
             break;
 
+          case 'transact':
           default:
             $args['q'] = 'civicrm/contribute/transact';
             break;
@@ -861,11 +857,11 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'pcp':
 
-        if ($mode == 'preview' || $mode == 'test') {
+        if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
           $args['action'] = 'preview';
         }
 
-        switch ($action) {
+        switch ($attributes['action']) {
           case 'transact':
             $args['q'] = 'civicrm/contribute/transact';
             $args['pcpId'] = $args['id'];
@@ -884,10 +880,10 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'event':
 
-        switch ($action) {
+        switch ($attributes['action']) {
           case 'register':
             $args['q'] = 'civicrm/event/register';
-            if ($mode == 'preview' || $mode == 'test') {
+            if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
               $args['action'] = 'preview';
             }
             break;
@@ -909,23 +905,23 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'profile':
 
-        if ($mode == 'edit') {
+        if ($attributes['mode'] === 'edit') {
           $args['q'] = 'civicrm/profile/edit';
         }
-        elseif ($mode == 'view') {
+        elseif ($attributes['mode'] === 'view') {
           $args['q'] = 'civicrm/profile/view';
         }
-        elseif ($mode == 'search') {
+        elseif ($attributes['mode'] === 'search') {
           $args['q'] = 'civicrm/profile';
         }
-        elseif ($mode == 'map') {
+        elseif ($attributes['mode'] === 'map') {
           $args['q'] = 'civicrm/profile/map';
           $args['map'] = 1;
         }
         else {
           $args['q'] = 'civicrm/profile/create';
         }
-        $args['gid'] = $gid;
+        $args['gid'] = $attributes['gid'];
         break;
 
       case 'petition':
@@ -947,9 +943,9 @@ class CiviCRM_For_WordPress_Shortcodes {
      * @since 4.7.28
      *
      * @param array $args Existing Shortcode arguments.
-     * @param array $shortcode_atts Shortcode attributes.
+     * @param array $attributes Shortcode attributes.
      */
-    return apply_filters('civicrm_shortcode_preprocess_atts', $args, $shortcode_atts);
+    return apply_filters('civicrm_shortcode_preprocess_atts', $args, $attributes);
 
   }
 
@@ -1021,6 +1017,7 @@ class CiviCRM_For_WordPress_Shortcodes {
         switch ($atts['action']) {
           case 'register':
             $data['title'] = sprintf(
+              /* translators: %s: The event title. */
               __('Register for %s', 'civicrm'),
               $civi_entity['title']
             );
diff --git a/includes/civicrm.users.php b/includes/civicrm.users.php
index cd08845c98..8baa1d7758 100644
--- a/includes/civicrm.users.php
+++ b/includes/civicrm.users.php
@@ -118,7 +118,7 @@ class CiviCRM_For_WordPress_Users {
    */
   public function check_permission($args) {
 
-    if ($args[0] != 'civicrm') {
+    if ($args[0] !== 'civicrm') {
       return FALSE;
     }
 
@@ -246,7 +246,7 @@ class CiviCRM_For_WordPress_Users {
    *
    * @since 4.6
    *
-   * @param $user_id The numerical ID of the WordPress user.
+   * @param int $user_id The numerical ID of the WordPress user.
    */
   public function delete_user_ufmatch($user_id) {
 
@@ -367,27 +367,32 @@ class CiviCRM_For_WordPress_Users {
    */
   public function get_civicrm_contact_type($default = NULL) {
 
+    // Nonce verification not necessary here.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+
     /*
      * Here we are creating a new Contact.
      * Get the Contact Type from the POST variables if any.
      */
     if (isset($_REQUEST['ctype'])) {
-      $ctype = $_REQUEST['ctype'];
+      $ctype = sanitize_text_field(wp_unslash($_REQUEST['ctype']));
     }
     elseif (
       isset($_REQUEST['edit']) &&
       isset($_REQUEST['edit']['ctype'])
     ) {
-      $ctype = $_REQUEST['edit']['ctype'];
+      $ctype = sanitize_text_field(wp_unslash($_REQUEST['edit']['ctype']));
     }
     else {
       $ctype = $default;
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
     if (
-      $ctype != 'Individual' &&
-      $ctype != 'Organization' &&
-      $ctype != 'Household'
+      $ctype !== 'Individual' &&
+      $ctype !== 'Organization' &&
+      $ctype !== 'Household'
     ) {
       $ctype = $default;
     }
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 0000000000..4bb40b455b
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<ruleset name="CiviCRM.WordPress">
+
+	<!-- Add source codes in the report. -->
+	<arg value="s" />
+	<arg name="colors" />
+
+	<!-- Check all PHP files in directory tree by default. -->
+	<arg name="extensions" value="php" />
+	<file>.</file>
+
+	<rule ref="WordPress">
+
+		<!-- Allow slash-delimited hooks. -->
+		<exclude name="WordPress.NamingConventions.ValidHookName.UseUnderscores" />
+
+		<!-- Ignore docblock formatting. -->
+		<exclude name="Squiz.Commenting.FunctionComment.SpacingAfterParamType" />
+
+		<!-- Allow CiviCRM control structures. -->
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.BlankLineAfterEnd" />
+
+		<!-- Allow CiviCRM file headers. -->
+		<exclude name="Squiz.Commenting.FileComment.MissingPackageTag" />
+		<exclude name="Squiz.Commenting.FileComment.WrongStyle" />
+
+		<!-- Ignore arrow or equals alignment. -->
+		<exclude name="WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned" />
+		<exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning" />
+
+		<!-- Ignore file-naming conventions. -->
+		<exclude name="WordPress.Files.FileName.InvalidClassFileName" />
+		<exclude name="WordPress.Files.FileName.NotHyphenatedLowercase" />
+
+		<!-- Allow unreachable code in disabled Integration Page class for now. -->
+		<exclude name="Squiz.PHP.NonExecutableCode.Unreachable" />
+
+		<!-- Ignore any other rules that conflict with CiviCRM and civilint. -->
+		<exclude name="Generic.Commenting.DocComment.MissingShort" />
+		<exclude name="Generic.Commenting.DocComment.SpacingAfter" />
+		<exclude name="Generic.Metrics.NestingLevel.MaxExceeded" />
+		<exclude name="Generic.PHP.LowerCaseConstant.Found" />
+		<exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceAfterOpen" />
+		<exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceBeforeClose" />
+		<exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed" />
+		<exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect" />
+		<exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact" />
+		<exclude name="Squiz.Commenting.BlockComment.HasEmptyLineBefore" />
+		<exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace" />
+		<exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen" />
+		<exclude name="Squiz.PHP.CommentedOutCode.Found" />
+		<exclude name="Squiz.PHP.DisallowMultipleAssignments.Found" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeOpen" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentAfterOpen" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeEnd" />
+		<exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE" />
+		<exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakIndent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.CloseBracketLine" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.Indent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.MultipleArguments" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.OpeningIndent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
+		<exclude name="WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceAfterArrayOpener" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceBeforeArrayCloser" />
+		<exclude name="WordPress.Arrays.ArrayIndentation.ItemNotAligned" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine" />
+		<exclude name="WordPress.Arrays.ArrayIndentation.MultiLineArrayItemNotAligned" />
+		<exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase" />
+		<exclude name="WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase" />
+		<exclude name="WordPress.PHP.StrictInArray.MissingTrueStrict" />
+		<exclude name="WordPress.PHP.YodaConditions.NotYoda" />
+		<exclude name="WordPress.Security.EscapeOutput.OutputNotEscaped" />
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeCloseParenthesis" />
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterOpenParenthesis" />
+		<exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore" />
+		<exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceAfter" />
+		<exclude name="WordPress.WhiteSpace.PrecisionAlignment.Found" />
+
+	</rule>
+
+	<rule ref="WordPress.WP.I18n">
+		<properties>
+			<property name="text_domain" type="array" value="civicrm" />
+		</properties>
+	</rule>
+
+	<!-- Allow short array syntax. -->
+	<rule ref="Generic.Arrays.DisallowShortArraySyntax.Found">
+		<severity>0</severity>
+	</rule>
+	<rule ref="Generic.Arrays.DisallowLongArraySyntax.Found" />
+
+	<!-- Nesting levels. -->
+	<rule ref="Generic.Metrics.NestingLevel">
+		<properties>
+			<property name="absoluteNestingLevel" value="5" />
+		</properties>
+	</rule>
+
+	<!-- Ignore the CiviCRM Core subdirectory when present. -->
+	<exclude-pattern>civicrm/civicrm/*</exclude-pattern>
+
+	<!-- Ignore the following subdirectories for now. -->
+	<exclude-pattern>wp-cli/*</exclude-pattern>
+	<exclude-pattern>wp-rest/*</exclude-pattern>
+	<exclude-pattern>tests/*</exclude-pattern>
+
+</ruleset>
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 64151559fc..363f5bc3f1 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,24 +1,24 @@
-<phpunit backupGlobals="false"
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         backupGlobals="false"
          backupStaticAttributes="false"
          colors="true"
          convertErrorsToExceptions="true"
          convertNoticesToExceptions="true"
          convertWarningsToExceptions="true"
+         convertDeprecationsToExceptions="true"
          processIsolation="false"
          stopOnFailure="false"
+         stderr="true"
          beStrictAboutTestsThatDoNotTestAnything="false"
          bootstrap="tests/phpunit/bootstrap.php"
          cacheResult="false"
->
+         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
+
   <testsuites>
     <testsuite name="CiviCRM-WordPress Test Suite">
       <directory>./tests/phpunit</directory>
     </testsuite>
   </testsuites>
-
-  <filter>
-    <whitelist>
-      <directory suffix=".php">./CiviWP</directory>
-    </whitelist>
-  </filter>
 </phpunit>
+
diff --git a/readme.txt b/readme.txt
index 69e93b328c..fc6a304e0e 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,8 +2,8 @@
 Contributors: needle
 Tags: civicrm, crm
 Requires at least: 4.9
-Tested up to: 6.2
-Stable tag: 5.63
+Tested up to: 6.4
+Stable tag: 5.69
 License: AGPL3
 License URI: http://www.gnu.org/licenses/agpl-3.0.html
 
diff --git a/wp-cli/README.md b/wp-cli/README.md
index 65be93e473..35525dc177 100644
--- a/wp-cli/README.md
+++ b/wp-cli/README.md
@@ -1,88 +1,103 @@
-# WP-CLI integration for CiviCRM
+# Command Line Tools for CiviCRM
 
-#### wp civicrm api
+Manage CiviCRM through the command line.
 
-Command for accessing the CiviCRM API. Syntax is identical to `drush cvap`.
+The latest iteration of the Command Line Tools for CiviCRM is built in a multi-class structure that WP-CLI expects and which enables proper documentation of the `wp civicrm` command and all its sub-commands. The following details what has changed, what has stayed the same, and what is new.
 
-#### wp civicrm cache-clear
+### Dropped Commands
 
-Command for accessing clearing cache. Equivilant of running `civicrm/admin/setting/updateConfigBackend&reset=1`.
+* `wp civicrm rest`: Use [CiviCRM's WordPress REST API](https://github.com/civicrm/civicrm-wordpress/tree/master/wp-rest) or `wp civicrm api` instead.
 
-#### wp civicrm enable-debug
+### Unchanged Commands
 
-Command for to turn debug on.
+* `wp civicrm api`: For the time-being this command is an alias of `wp civicrm api3`. It may become an alias for `wp civicrm api4` when that command is added, so it is definitely better to use `wp civicrm api3` directly to avoid problems in the future. There will, of course, be a deprecation notice issued well before the switch, so don't worry!
+* `wp civicrm pipe`: This command will remain in the top-level namespace.
 
-#### wp civicrm disable-debug
+### New Commands
 
-Command for to turn debug off.
+There is a new command `wp civicrm core <command>` which (sort of) mirrors the functionality in `wp core <command>`. It holds the commands that apply to CiviCRM as a whole.
 
-#### wp civicrm member-records
+| Command | Description | Old Command |
+| --- | --- | --- |
+| `wp civicrm core activate` | Activates the CiviCRM plugin and loads the database. | New |
+| `wp civicrm core backup` | Back up the CiviCRM plugin, CiviCRM files and database. | New |
+| `wp civicrm core check-update` | Checks for CiviCRM updates via Version Check API. | New |
+| `wp civicrm core check-version` | Checks for a CiviCRM version or matching localization archive. | New |
+| `wp civicrm core download` | Downloads core CiviCRM files. | New |
+| `wp civicrm core install` | Installs the CiviCRM plugin. | `wp civicrm install` but without activation |
+| `wp civicrm core is-installed` | Checks if CiviCRM is installed. | Not implemented yet |
+| `wp civicrm core restore` | Restore the CiviCRM plugin, CiviCRM files and database from a backup. | Requires a backup made with `wp civicrm core backup` |
+| `wp civicrm core update` | Updates CiviCRM to a newer version. | `wp civicrm upgrade` |
+| `wp civicrm core update-cfg` | Reset paths to correct config settings. | `wp civicrm update-cfg` |
+| `wp civicrm core update-db` | Runs the CiviCRM database update procedure. | `wp civicrm upgrade-db` |
+| `wp civicrm core verify-checksums` | Verifies CiviCRM files against checksums via `googleapis`. | Not implemented yet |
+| `wp civicrm core version` | Displays the CiviCRM version. | New |
 
-Run the CiviMember UpdateMembershipRecord cron (civicrm member-records).
+Use `wp help civicrm <command>` or `wp help civicrm core <command>` for full details and examples.
 
-#### wp civicrm process-mail-queue
+There is a new command `wp civicrm db <command>` which (sort of) mirrors the functionality in `wp db <command>`. It holds the commands that apply to interaction with the CiviCRM database.
 
-Process pending CiviMail mailing jobs.
+| Command | Description | Old Command |
+| --- | --- | --- |
+| `wp civicrm db clear` | Drop all CiviCRM tables, views, functions and stored procedures from the database. | New |
+| `wp civicrm db cli` | Quickly enter the MySQL command line. | `wp civicrm sql-cli` |
+| `wp civicrm db config` | Show the CiviCRM database connection details. | `wp civicrm sql-conf` |
+| `wp civicrm db connect` | Get a string which connects to the CiviCRM database. | `wp civicrm sql-connect` |
+| `wp civicrm db drop` | Drop the CiviCRM database when it is not shared with WordPress. | New |
+| `wp civicrm db drop-tables` | Drop the CiviCRM tables from the database. | New |
+| `wp civicrm db dump` | Dump the whole CiviCRM database and print to STDOUT or save to a file. | `wp civicrm sql-dump` |
+| `wp civicrm db export` | Export the CiviCRM database and print to STDOUT or save to a file. | New |
+| `wp civicrm db functions` | Get the list of CiviCRM functions in the database. | New |
+| `wp civicrm db import` | Loads a whole CiviCRM database. | New |
+| `wp civicrm db is-shared` | Check if CiviCRM shares a database with WordPress. | New |
+| `wp civicrm db procedures` | Get the list of CiviCRM procedures in the database. | New |
+| `wp civicrm db query` | Perform a query on the CiviCRM database. | `wp civicrm sql-query` |
+| `wp civicrm db tables` | Gets a set of CiviCRM tables in the database. | New |
 
-Example: `wp civicrm process-mail-queue -u admin`
+Use `wp help civicrm db <command>` for full details and examples.
 
-#### wp civicrm rest
+### Deprecated Commands
 
-Rest interface for accessing CiviCRM APIs. It can return `xml` or `json` formatted data.
+All previous commands still exist for the time being. However, because they were attached to the top-level `wp civicrm` namespace, it seems sensible to deprecate them in favour of better-namespaced new commands. The following table shows you replacement commands:
 
-#### wp civicrm restore
+| Old Command | New Command |
+| --- | --- |
+| `wp civicrm cache-clear` | `wp civicrm cache flush` |
+| `wp civicrm disable-debug` | `wp civicrm debug disable` |
+| `wp civicrm enable-debug` | `wp civicrm debug enable` |
+| `wp civicrm install` | See [Composite Commands](#composite-commands) below |
+| `wp civicrm member-records` | `wp civicrm job member-records` or `wp civicrm job membership` |
+| `wp civicrm process-mail-queue` | `wp civicrm job process-mail-queue` or `wp civicrm job mailing` |
+| `wp civicrm restore` | Only works with backups made by `wp civicrm upgrade` |
+| `wp civicrm sql-conf` | `wp civicrm db config` or `wp civicrm db conf` |
+| `wp civicrm sql-connect` | `wp civicrm db connect` |
+| `wp civicrm sql-cli` | `wp civicrm db cli` |
+| `wp civicrm sql-dump` | `wp civicrm db dump` |
+| `wp civicrm sql-query` | `wp civicrm db query` |
+| `wp civicrm update-cfg` | `wp civicrm core update-cfg` |
+| `wp civicrm upgrade` | See [Composite Commands](#composite-commands) below |
+| `wp civicrm upgrade-db` | `wp civicrm core update-db` |
 
-Restore CiviCRM codebase and database back from the specified backup directory.
+As above, use `wp help civicrm <command>` for full details and examples.
 
-#### wp civicrm sql-conf
+### Composite Commands
 
-Show CiviCRM database connection details.
+There are two special cases in the set of old commands:
 
-#### wp civicrm sql-connect
+* `wp civicrm install`
+* `wp civicrm upgrade`
 
-A string which connects to the CiviCRM database.
+These are both composite commands.
 
-#### wp civicrm sql-cli
+The `wp civicrm install` command calls the following sequence:
 
-Quickly enter the `mysql` command line.
+1. `wp civicrm core install`
+2. `wp civicrm core activate`
 
-#### wp civicrm sql-dump
+The `wp civicrm upgrade` command calls the following sequence:
 
-Prints the whole CiviCRM database to `STDOUT` or save to a file.
+1. A custom backup procedure. Better to call `wp civicrm core backup` instead, but `wp civicrm restore` requires the custom procedure.
+2. `wp civicrm core update`
+3. `wp civicrm core update-db`
 
-#### wp civicrm sql-query
-
-Usage: `wp civicrm sql-query <query> <options>...`
-
-`<query>` is a SQL statement which can alternatively be passed via `STDIN`. Any additional arguments are passed to the `mysql` command directly.
-
-#### wp civicrm update-cfg
-
-Update `config_backend` to correct config settings, especially when the CiviCRM site has been cloned or migrated.
-
-#### wp civicrm upgrade
-
-Take backups, replace CiviCRM codebase with new specified tarfile and upgrade database by executing the CiviCRM upgrade process - `civicrm/upgrade?reset=1`. Use `wp civicrm restore` to revert to previous state in case anything goes wrong.
-
-#### wp civicrm upgrade-db
-
-Run `civicrm/upgrade?reset=1` just as a web browser would.
-
-#### wp civicrm install
-
-Command for to install CiviCRM. The install command requires that you have downloaded a tarball or zip file first.
-
-Options:
-
-```
---dbhost            MySQL host for your WordPress/CiviCRM database. Defaults to localhost.
---dbname            MySQL database name of your WordPress/CiviCRM database.
---dbpass            MySQL password for your WordPress/CiviCRM database.
---dbuser            MySQL username for your WordPress/CiviCRM database.
---lang              Default language to use for installation.
---langtarfile       Path to your l10n tar.gz file.
---site_url          Base Url for your WordPress/CiviCRM website without http (e.g. mysite.com)
---ssl               Using ssl for your WordPress/CiviCRM website if set to on (e.g. --ssl=on)
---tarfile           Path to your CiviCRM tar.gz file.
---zipfile           Path to your CiviCRM zip file.
-```
+It is preferable to call the new commands individually in the same sequence - but there may also be a case for a set of composite commands like these for commonly used sequences.
diff --git a/wp-cli/civicrm.php b/wp-cli/civicrm.php
deleted file mode 100644
index c5e5e82a28..0000000000
--- a/wp-cli/civicrm.php
+++ /dev/null
@@ -1,1454 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- *
- */
-
-if (!defined('CIVICRM_WPCLI_LOADED')) {
-  define('CIVICRM_WPCLI_LOADED', 1);
-
-  /**
-   * WP-CLI port of drush-civicrm integration.
-   *
-   * @see https://github.com/andy-walker/wp-cli-civicrm
-   *
-   * @since 4.5
-   */
-  class CiviCRM_Command extends WP_CLI_Command {
-
-    private $args;
-    private $assoc_args;
-
-    /**
-     * WP-CLI integration with CiviCRM.
-     *
-     * wp civicrm api
-     * ==============
-     * Command for accessing the CiviCRM API. Syntax is identical to `drush cvap`.
-     *
-     * wp civicrm cache-clear
-     * ======================
-     * Command for accessing clearing cache.  Equivilant of running `civicrm/admin/setting/updateConfigBackend&reset=1`.
-     *
-     * wp civicrm enable-debug
-     * =======================
-     * Command for to turn debug on.
-     *
-     * wp civicrm disable-debug
-     * ========================
-     * Command for to turn debug off.
-     *
-     * wp civicrm member-records
-     * =========================
-     * Run the CiviMember UpdateMembershipRecord cron (civicrm member-records).
-     *
-     * wp civicrm pipe <connection-flags>
-     * ==================
-     * Start a Civi::pipe session (JSON-RPC 2.0)
-     * See https://docs.civicrm.org/dev/en/latest/framework/pipe#flags
-     *
-     * wp civicrm process-mail-queue
-     * =============================
-     * Process pending CiviMail mailing jobs.
-     * Example:
-     * wp civicrm process-mail-queue -u admin
-     *
-     * wp civicrm rest
-     * ===============
-     * Rest interface for accessing CiviCRM APIs. It can return xml or json formatted data.
-     *
-     * wp civicrm restore
-     * ==================
-     * Restore CiviCRM codebase and database back from the specified backup directory.
-     *
-     * wp civicrm sql-conf
-     * ===================
-     * Show CiviCRM database connection details.
-     *
-     * wp civicrm sql-connect
-     * ======================
-     * A string which connects to the CiviCRM database.
-     *
-     * wp civicrm sql-cli
-     * ==================
-     * Quickly enter the mysql command line.
-     *
-     * wp civicrm sql-dump
-     * ===================
-     * Prints the whole CiviCRM database to STDOUT or save to a file.
-     *
-     * wp civicrm sql-query
-     * ====================
-     * Usage: wp civicrm sql-query <query> <options>...
-     * <query> is a SQL statement, which can alternatively be passed via STDIN. Any additional arguments are passed to the mysql command directly.
-     *
-     * wp civicrm update-cfg
-     * =====================
-     * Update config_backend to correct config settings, especially when the CiviCRM site has been cloned or migrated.
-     *
-     * wp civicrm upgrade
-     * ==================
-     * Take backups, replace CiviCRM codebase with new specified tarfile and upgrade database by executing the CiviCRM upgrade process - civicrm/upgrade?reset=1. Use civicrm-restore to revert to previous state in case anything goes wrong.
-     *
-     * wp civicrm upgrade-db
-     * =====================
-     * Run civicrm/upgrade?reset=1 just as a web browser would.
-     *
-     * wp civicrm install
-     * ==================
-     * Command for to install CiviCRM.  The install command requires that you have downloaded a tarball or zip file first.
-     * Options:
-     * --dbhost            MySQL host for your WordPress/CiviCRM database. Defaults to localhost.
-     * --dbname            MySQL database name of your WordPress/CiviCRM database.
-     * --dbpass            MySQL password for your WordPress/CiviCRM database.
-     * --dbuser            MySQL username for your WordPress/CiviCRM database.
-     * --lang              Default language to use for installation.
-     * --langtarfile       Path to your l10n tar.gz file.
-     * --site_url          Base Url for your WordPress/CiviCRM website without http (e.g. mysite.com)
-     * --ssl               Using ssl for your WordPress/CiviCRM website if set to on (e.g. --ssl=on)
-     * --tarfile           Path to your CiviCRM tar.gz file.
-     * --zipfile           Path to your CiviCRM zip file.
-     *
-     */
-    public function __invoke($args, $assoc_args) {
-
-      $this->args       = $args;
-      $this->assoc_args = $assoc_args;
-
-      // Define command router.
-      $command_router = [
-        'api'                => 'api',
-        'cache-clear'        => 'cacheClear',
-        'enable-debug'       => 'enableDebug',
-        'disable-debug'      => 'disableDebug',
-        'install'            => 'install',
-        'member-records'     => 'memberRecords',
-        'pipe'               => 'pipe',
-        'process-mail-queue' => 'processMailQueue',
-        'rest'               => 'rest',
-        'restore'            => 'restore',
-        'sql-cli'            => 'sqlCLI',
-        'sql-conf'           => 'sqlConf',
-        'sql-connect'        => 'sqlConnect',
-        'sql-dump'           => 'sqlDump',
-        'sql-query'          => 'sqlQuery',
-        'update-cfg'         => 'updateConfig',
-        'upgrade'            => 'upgrade',
-        'upgrade-db'         => 'upgradeDB',
-      ];
-
-      // Get the command.
-      $command = array_shift($args);
-
-      // Allow help to pass.
-      if ('help' === $command) {
-        return;
-      }
-
-      // Check for existence of CiviCRM (except for command 'install').
-      if (!function_exists('civicrm_initialize') && 'install' != $command) {
-        return WP_CLI::error('Unable to find CiviCRM install.');
-      }
-
-      // Check existence of router entry / handler method.
-      if (!isset($command_router[$command]) || !method_exists($this, $command_router[$command])) {
-        return WP_CLI::error(sprintf('Unrecognized command: %s', $command));
-      }
-
-      // Run command.
-      return $this->{$command_router[$command]}();
-
-    }
-
-    /**
-     * Implementation of command 'api'.
-     *
-     * @since 4.5
-     */
-    private function api() {
-
-      $defaults = ['version' => 3];
-
-      array_shift($this->args);
-      list($entity, $action) = explode('.', $this->args[0]);
-      array_shift($this->args);
-
-      //  Parse params.
-      $format = $this->getOption('in', 'args');
-      switch ($format) {
-
-        //  Input params supplied via args.
-        case 'args':
-          $params = $defaults;
-          foreach ($this->args as $arg) {
-            preg_match('/^([^=]+)=(.*)$/', $arg, $matches);
-            $params[$matches[1]] = $matches[2];
-          }
-          break;
-
-        //  Input params supplied via json.
-        case 'json':
-          $json   = stream_get_contents(STDIN);
-          $params = (empty($json) ? $defaults : array_merge($defaults, json_decode($json, TRUE)));
-          break;
-
-        default:
-          WP_CLI::error(sprintf('Unknown format: %s', $format));
-          break;
-
-      }
-
-      civicrm_initialize();
-
-      /*
-       * CRM-12523
-       * WordPress has it's own timezone calculations. CiviCRM relies on the PHP
-       * default timezone which WordPress overrides with UTC in wp-settings.php
-       */
-      $original_timezone = date_default_timezone_get();
-      $wp_site_timezone = $this->getOption('timezone', $this->getTimeZoneString());
-      if ($wp_site_timezone) {
-        date_default_timezone_set($wp_site_timezone);
-        CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
-      }
-
-      $result = civicrm_api($entity, $action, $params);
-
-      // Restore original timezone.
-      if ($original_timezone) {
-        date_default_timezone_set($original_timezone);
-      }
-
-      switch ($this->getOption('out', 'pretty')) {
-
-        // Pretty-print output (default).
-        case 'pretty':
-          WP_CLI::line(print_r($result, TRUE));
-          break;
-
-        // Display output as json.
-        case 'json':
-          WP_CLI::line(json_encode($result));
-          break;
-
-        default:
-          return WP_CLI::error(sprintf('Unknown format: %s', $format));
-
-      }
-
-    }
-
-    /**
-     * Returns the timezone string for the current WordPress site.
-     *
-     * If a timezone identifier is used, return that.
-     * If an offset is used, try to build a suitable timezone.
-     * If all else fails, uses UTC.
-     *
-     * @since 5.64
-     *
-     * @return string $tzstring The site timezone string.
-     */
-    private function getTimeZoneString() {
-
-      // Return the timezone string when set.
-      $tzstring = get_option('timezone_string');
-      if (!empty($tzstring)) {
-        return $tzstring;
-      }
-
-      /*
-       * Try and build a deprecated (but currently valid) timezone string
-       * from the GMT offset value.
-       *
-       * Note: manual offsets should be discouraged. WordPress works more
-       * reliably when setting an actual timezone (e.g. "Europe/London")
-       * because of support for Daylight Saving changes.
-       *
-       * Note: the IANA timezone database that provides PHP's timezone
-       * support uses (reversed) POSIX style signs.
-       *
-       * @see https://www.php.net/manual/en/timezones.others.php
-       */
-      $offset = get_option('gmt_offset');
-      if (0 != $offset && floor($offset) == $offset) {
-        $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset);
-        $tzstring = 'Etc/GMT' . $offset_string;
-      }
-
-      // Default to "UTC" if the timezone string is still empty.
-      if (empty($tzstring)) {
-        $tzstring = 'UTC';
-      }
-
-      return $tzstring;
-
-    }
-
-    /**
-     * Implementation of command 'cache-clear'.
-     *
-     * @since 4.5
-     */
-    private function cacheClear() {
-
-      civicrm_initialize();
-      require_once 'CRM/Core/Config.php';
-      $config = CRM_Core_Config::singleton();
-
-      // Clear db caching.
-      $config->clearDBCache();
-
-      // Also cleanup the templates_c directory.
-      $config->cleanup(1, FALSE);
-
-      // Also cleanup the session object.
-      $session = CRM_Core_Session::singleton();
-      $session->reset(1);
-
-    }
-
-    /**
-     * Implementation of command 'enable-debug'.
-     *
-     * @since 4.5
-     */
-    private function enableDebug() {
-      civicrm_initialize();
-      Civi::settings()->add([
-        'debug_enabled' => 1,
-        'backtrace' => 1,
-      ]);
-      WP_CLI::success('Debug setting enabled.');
-    }
-
-    /**
-     * Implementation of command 'disable-debug'.
-     *
-     * @since 4.7
-     */
-    private function disableDebug() {
-      civicrm_initialize();
-      Civi::settings()->add([
-        'debug_enabled' => 0,
-        'backtrace' => 0,
-      ]);
-      WP_CLI::success('Debug setting disabled.');
-    }
-
-    /**
-     * Implementation of command 'install'.
-     *
-     * @since 4.5
-     */
-    private function install() {
-      if ('on' === $this->getOption('ssl', FALSE)) {
-        $_SERVER['HTTPS'] = 'on';
-      }
-
-      // Identify the destination.
-
-      if ($plugin_path = $this->getOption('destination', FALSE)) {
-        $plugin_path = ABSPATH . $plugin_path;
-      }
-      else {
-        $plugin_path = WP_PLUGIN_DIR . '/civicrm';
-      }
-
-      global $crmPath;
-      $crmPath = "$plugin_path/civicrm";
-      $crm_files_present = is_dir($crmPath);
-
-      // Validate install parameters.
-
-      if (!$dbuser = $this->getOption('dbuser', FALSE)) {
-        return WP_CLI::error('CiviCRM database username not specified.');
-      }
-      if (!$dbpass = $this->getOption('dbpass', FALSE)) {
-        return WP_CLI::error('CiviCRM database password not specified.');
-      }
-      if (!$dbhost = $this->getOption('dbhost', FALSE)) {
-        return WP_CLI::error('CiviCRM database host not specified.');
-      }
-      if (!$dbname = $this->getOption('dbname', FALSE)) {
-        return WP_CLI::error('CiviCRM database name not specified.');
-      }
-      if ($lang = $this->getOption('lang', FALSE)) {
-        $moPath = "$crmPath/l10n/$lang/LC_MESSAGES/civicrm.mo";
-
-        if (!($langtarfile = $this->getOption('langtarfile', FALSE)) && !file_exists($moPath)) {
-          return WP_CLI::error("Failed to find data for language ($lang). Please download valid language data with --langtarfile=<path/to/tarfile>.");
-        }
-      }
-
-      // Extract the archive.
-      if ($this->getOption('tarfile', FALSE)) {
-        // Should probably never get to here as Wordpress Civi comes in a zip file.
-        // Check anyway just in case that ever changes.
-        if ($crm_files_present) {
-          return WP_CLI::error('Existing CiviCRM found. No action taken.');
-        }
-
-        if (!$this->untar(dirname($plugin_path))) {
-          return WP_CLI::error('Error extracting tarfile.');
-        }
-      }
-      elseif ($this->getOption('zipfile', FALSE)) {
-        if ($crm_files_present) {
-          return WP_CLI::error('Existing CiviCRM found. No action taken.');
-        }
-
-        if (!$this->unzip(dirname($plugin_path))) {
-          return WP_CLI::error('Error extracting zipfile.');
-        }
-      }
-      elseif ($crm_files_present) {
-        // Site is already extracted - which is how we're running this script.
-        // We just need to run the installer.
-      }
-      else {
-        return WP_CLI::error('No zipfile specified. Use "--zipfile=path/to/zipfile" or extract file ahead of time.');
-      }
-
-      // Include CiviCRM classloader - so that we can run `Civi\Setup`.
-      $classLoaderPath = "$crmPath/CRM/Core/ClassLoader.php";
-
-      if (!file_exists($classLoaderPath)) {
-        return WP_CLI::error('Archive could not be unpacked or CiviCRM installer helper file is missing.');
-      }
-
-      if ($crm_files_present) {
-        // We were using a directory that was already there.
-        WP_CLI::success('Using installer files found on the site.');
-      }
-      else {
-        // We must've just unpacked the archive because it wasn't there
-        // before.
-        WP_CLI::success('Archive unpacked.');
-      }
-
-      if ($this->getOption('langtarfile', FALSE)) {
-        if (!$this->untar($plugin_path, 'langtarfile')) {
-          return WP_CLI::error('Error downloading langtarfile');
-        }
-      }
-
-      if (!empty($lang) && !file_exists($moPath)) {
-        return WP_CLI::error("Failed to find data for language ($lang). Please download valid language data with \"--langtarfile=<path/to/tarfile>\".");
-      }
-
-      // Initialize civicrm-setup
-      @WP_CLI::run_command(['plugin', 'activate', 'civicrm'], []);
-      require_once $classLoaderPath;
-      CRM_Core_ClassLoader::singleton()->register();
-      \Civi\Setup::assertProtocolCompatibility(1.0);
-      \Civi\Setup::init(['cms' => 'WordPress', 'srcPath' => $crmPath]);
-      $setup = \Civi\Setup::instance();
-      $setup->getModel()->db = ['server' => $dbhost, 'username' => $dbuser, 'password' => $dbpass, 'database' => $dbname];
-      $setup->getModel()->lang = (empty($lang) ? 'en_US' : $lang);
-      if ($base_url = $this->getOption('site_url', FALSE)) {
-        $ssl = $this->getOption('ssl', FALSE);
-        $protocol = ('on' == $ssl ? 'https' : 'http');
-        $base_url = $protocol . '://' . $base_url;
-        if (substr($base_url, -1) != '/') {
-          $base_url .= '/';
-        }
-        $setup->getModel()->cmsBaseUrl = $base_url;
-      }
-
-      // Check system requirements
-      $reqs = $setup->checkRequirements();
-      array_map('WP_CLI::print_value', $this->formatRequirements(array_merge($reqs->getErrors(), $reqs->getWarnings())));
-      if ($reqs->getErrors()) {
-        WP_CLI::error(sprintf("Cannot install. Please check requirements and resolve errors.", count($reqs->getErrors()), count($reqs->getWarnings())));
-      }
-
-      $installed = $setup->checkInstalled();
-      if ($installed->isSettingInstalled() || $installed->isDatabaseInstalled()) {
-        WP_CLI::error("Cannot install. CiviCRM has already been installed.");
-      }
-
-      // Go time
-      $setup->installFiles();
-      WP_CLI::success('CiviCRM data files initialized successfully.');
-      $setup->installDatabase();
-      WP_CLI::success('CiviCRM database loaded successfully.');
-      WP_CLI::success('CiviCRM installed.');
-    }
-
-    private function formatRequirements(array $messages): array {
-      $formatted = [];
-      foreach ($messages as $message) {
-        $formatted[] = sprintf("[%s] %s: %s", $message['severity'], $message['section'], $message['message']);
-      }
-      return array_unique($formatted);
-    }
-
-    /**
-     * Implementation of command 'member-records'.
-     *
-     * @since 4.5
-     */
-    private function memberRecords() {
-
-      civicrm_initialize();
-
-      if (substr(CRM_Utils_System::version(), 0, 3) >= '4.3') {
-
-        $job = new CRM_Core_JobManager();
-        $job->executeJobByAction('job', 'process_membership');
-        WP_CLI::success('Executed "process_membership" job.');
-
-      }
-      else {
-
-        $_REQUEST['name'] = $this->getOption('civicrm_cron_username', NULL);
-        $_REQUEST['pass'] = $this->getOption('civicrm_cron_password', NULL);
-        $_REQUEST['key']  = $this->getOption('civicrm_sitekey', NULL);
-
-        global $argv;
-        $argv = [
-          0 => 'drush',
-          1 => '-u' . $_REQUEST['name'],
-          2 => '-p' . $_REQUEST['pass'],
-          3 => '-s' . $this->getOption('uri', FALSE),
-        ];
-
-        # if (!defined('CIVICRM_CONFDIR')) {
-        # $plugins_dir = plugin_dir_path(__FILE__);
-        #     define('CIVICRM_CONFDIR', $plugins_dir);
-        # }
-
-        include 'bin/UpdateMembershipRecord.php';
-
-      }
-
-    }
-
-    private function pipe() {
-      civicrm_initialize();
-      if (!is_callable(['Civi', 'pipe'])) {
-        return WP_CLI::error('This version of CiviCRM does not include Civi::pipe() support.');
-      }
-
-      if (!empty($this->args[1])) {
-        Civi::pipe($this->args[1]);
-      }
-      else {
-        Civi::pipe();
-      }
-    }
-
-    /**
-     * Implementation of command 'process-mail-queue'.
-     *
-     * @since 4.5
-     */
-    private function processMailQueue() {
-
-      civicrm_initialize();
-
-      if (substr(CRM_Utils_System::version(), 0, 3) >= '4.3') {
-
-        $job = new CRM_Core_JobManager();
-        $job->executeJobByAction('job', 'process_mailing');
-        WP_CLI::success("Executed 'process_mailing' job.");
-
-      }
-      else {
-
-        $result = civicrm_api('Mailing', 'Process', ['version' => 3]);
-        if ($result['is_error']) {
-          WP_CLI::error($result['error_message']);
-        }
-      }
-
-    }
-
-    /**
-     * Implementation of command 'rest'.
-     *
-     * @since 4.5
-     */
-    private function rest() {
-
-      civicrm_initialize();
-
-      if (!$query = $this->getOption('query', FALSE)) {
-        return WP_CLI::error('query not specified.');
-      }
-
-      $query     = explode('&', $query);
-      $_GET['q'] = array_shift($query);
-
-      foreach ($query as $key_val) {
-        list($key, $val) = explode('=', $key_val);
-        $_REQUEST[$key]  = $val;
-        $_GET[$key]      = $val;
-      }
-
-      require_once 'CRM/Utils/REST.php';
-      $rest = new CRM_Utils_REST();
-
-      require_once 'CRM/Core/Config.php';
-      $config = CRM_Core_Config::singleton();
-
-      global $civicrm_root;
-      // Adding dummy script, since based on this api file path is computed.
-      $_SERVER['SCRIPT_FILENAME'] = "$civicrm_root/extern/rest.php";
-
-      if (isset($_GET['json']) && $_GET['json']) {
-        header('Content-Type: text/javascript');
-      }
-      else {
-        header('Content-Type: text/xml');
-      }
-
-      echo $rest->run($config);
-
-    }
-
-    /**
-     * Implementation of command 'restore'.
-     *
-     * @since 4.5
-     */
-    private function restore() {
-
-      // Validate.
-      $restore_dir = $this->getOption('restore-dir', FALSE);
-      $restore_dir = rtrim($restore_dir, '/');
-      if (!$restore_dir) {
-        return WP_CLI::error('"restore-dir" not specified.');
-      }
-
-      $sql_file = $restore_dir . '/civicrm.sql';
-      if (!file_exists($sql_file)) {
-        return WP_CLI::error('Could not locate "civicrm.sql" file in the restore directory.');
-      }
-
-      $code_dir = $restore_dir . '/civicrm';
-      if (!is_dir($code_dir)) {
-        return WP_CLI::error('Could not locate the CiviCRM directory inside "restore-dir".');
-      }
-      elseif (!file_exists("$code_dir/civicrm/civicrm-version.txt") && !file_exists("$code_dir/civicrm/civicrm-version.php")) {
-        return WP_CLI::error('The CiviCRM directory inside "restore-dir" does not seem to be a valid CiviCRM codebase.');
-      }
-
-      // Prepare to restore.
-      $date = date('YmdHis');
-
-      civicrm_initialize();
-      global $civicrm_root;
-
-      $civicrm_root_base = explode('/', $civicrm_root);
-      array_pop($civicrm_root_base);
-      $civicrm_root_base = implode('/', $civicrm_root_base) . '/';
-
-      $basepath = explode('/', $civicrm_root);
-
-      if (!end($basepath)) {
-        array_pop($basepath);
-      }
-
-      array_pop($basepath);
-      $project_path = implode('/', $basepath) . '/';
-
-      $wp_root = ABSPATH;
-      $restore_backup_dir = $this->getOption('backup-dir', $wp_root . '/../backup');
-      $restore_backup_dir = rtrim($restore_backup_dir, '/');
-
-      // Get confirmation from user.
-
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $db_spec = DB::parseDSN(CIVICRM_DSN);
-      WP_CLI::line('');
-      WP_CLI::line('Process involves:');
-      WP_CLI::line(sprintf("1. Restoring '\$restore-dir/civicrm' directory to '%s'.", $civicrm_root_base));
-      WP_CLI::line(sprintf("2. Dropping and creating '%s' database.", $db_spec['database']));
-      WP_CLI::line("3. Loading '\$restore-dir/civicrm.sql' file into the database.");
-      WP_CLI::line('');
-      WP_CLI::line(sprintf("Note: Before restoring, a backup will be taken in '%s' directory.", "$restore_backup_dir/plugins/restore"));
-      WP_CLI::line('');
-
-      WP_CLI::confirm('Do you really want to continue?');
-
-      $restore_backup_dir .= '/plugins/restore/' . $date;
-
-      if (!mkdir($restore_backup_dir, 0755, TRUE)) {
-        return WP_CLI::error(sprintf('Failed to create directory: %s', $restore_backup_dir));
-      }
-
-      // 1. Backup and restore codebase.
-      WP_CLI::line('Restoring CiviCRM codebase...');
-      if (is_dir($project_path) && !rename($project_path, $restore_backup_dir . '/civicrm')) {
-        return WP_CLI::error(sprintf("Failed to take backup for '%s' directory", $project_path));
-      }
-
-      if (!rename($code_dir, $project_path)) {
-        return WP_CLI::error(sprintf("Failed to restore CiviCRM directory '%s' to '%s'", $code_dir, $project_path));
-      }
-
-      WP_CLI::success('Codebase restored.');
-
-      // 2. Backup, drop and create database.
-      WP_CLI::run_command(
-        ['civicrm', 'sql-dump'],
-        ['result-file' => $restore_backup_dir . '/civicrm.sql']
-      );
-
-      WP_CLI::success('Database backed up.');
-
-      // Prepare a mysql command-line string for issuing db drop/create commands.
-      $command = sprintf(
-        'mysql --user=%s --password=%s',
-        $db_spec['username'],
-        $db_spec['password']
-      );
-
-      if (isset($db_spec['hostspec'])) {
-        $command .= ' --host=' . $db_spec['hostspec'];
-      }
-
-      if (isset($dsn['port']) && !mpty($dsn['port'])) {
-        $command .= ' --port=' . $db_spec['port'];
-      }
-
-      // Attempt to drop old database.
-      if (system($command . sprintf(' --execute="DROP DATABASE IF EXISTS %s"', $db_spec['database']))) {
-        return WP_CLI::error(sprintf('Could not drop database: %s', $db_spec['database']));
-      }
-
-      WP_CLI::success('Database dropped.');
-
-      // Attempt to create new database.
-      if (system($command . sprintf(' --execute="CREATE DATABASE %s"', $db_spec['database']))) {
-        WP_CLI::error(sprintf('Could not create new database: %s', $db_spec['database']));
-      }
-
-      WP_CLI::success('Database created.');
-
-      // 3. Restore database.
-      WP_CLI::line('Loading "civicrm.sql" file from "restore-dir"...');
-      system($command . ' ' . $db_spec['database'] . ' < ' . $sql_file);
-
-      WP_CLI::success('Database restored.');
-
-      WP_CLI::line('Clearing caches...');
-      WP_CLI::run_command(['civicrm', 'cache-clear']);
-
-      WP_CLI::success('Restore process completed.');
-
-    }
-
-    /**
-     * Implementation of command 'sql-conf'.
-     *
-     * @since 4.5
-     */
-    private function sqlConf() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      WP_CLI::line(print_r(DB::parseDSN(CIVICRM_DSN), TRUE));
-
-    }
-
-    /**
-     * Implementation of command 'sql-connect'.
-     *
-     * @since 4.5
-     */
-    private function sqlConnect() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        return WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $command = sprintf(
-        'mysql --database=%s --host=%s --user=%s --password=%s',
-        $dsn['database'],
-        $dsn['hostspec'],
-        $dsn['username'],
-        $dsn['password']
-      );
-
-      if (isset($dsn['port']) && !empty($dsn['port'])) {
-        $command .= ' --port=' . $dsn['port'];
-      }
-
-      return WP_CLI::line($command);
-
-    }
-
-    /**
-     * Implementation of command 'sql-dump'.
-     *
-     * @since 4.5
-     */
-    private function sqlDump() {
-
-      // Bootstrap CiviCRM when we're not being called as part of an upgrade.
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        civicrm_initialize();
-      }
-
-      if (!defined('CIVICRM_DSN') && !defined('CIVICRM_OLD_DSN')) {
-        WP_CLI::error('DSN is not defined.');
-      }
-
-      $dsn = self::parseDSN(defined('CIVICRM_DSN') ? CIVICRM_DSN : CIVICRM_OLD_DSN);
-
-      $assoc_args       = $this->assoc_args;
-      $stdout           = !isset($assoc_args['result-file']);
-      $command          = "mysqldump --no-defaults --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
-      $command_esc_args = [$dsn['database']];
-
-      if (isset($assoc_args['tables'])) {
-        $tables = explode(',', $assoc_args['tables']);
-        unset($assoc_args['tables']);
-        $command .= ' --tables';
-        foreach ($tables as $table) {
-          $command .= ' %s';
-          $command_esc_args[] = trim($table);
-        }
-      }
-
-      $escaped_command = call_user_func_array(
-        '\WP_CLI\Utils\esc_cmd',
-        array_merge(
-          [$command],
-          $command_esc_args
-        )
-      );
-
-      \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
-
-      if (!$stdout) {
-        WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
-      }
-
-    }
-
-    /**
-     * Implementation of command 'sql-query'.
-     *
-     * @since 4.5
-     */
-    private function sqlQuery() {
-
-      if (!isset($this->args[0])) {
-        WP_CLI::error('No query specified.');
-        return;
-      }
-
-      $query = $this->args[0];
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $mysql_args = [
-        'host'     => $dsn['hostspec'],
-        'database' => $dsn['database'],
-        'user'     => $dsn['username'],
-        'password' => $dsn['password'],
-        'execute'  => $query,
-      ];
-
-      \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
-
-    }
-
-    /**
-     * Implementation of command 'sql-cli'.
-     *
-     * @since 4.5
-     */
-    private function sqlCLI() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $mysql_args = [
-        'host'     => $dsn['hostspec'],
-        'database' => $dsn['database'],
-        'user'     => $dsn['username'],
-        'password' => $dsn['password'],
-      ];
-
-      \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
-
-    }
-
-    /**
-     * Implementation of command 'update-cfg'.
-     *
-     * @since 4.5
-     */
-    private function updateConfig() {
-
-      civicrm_initialize();
-
-      $default_values = [];
-      $states         = ['old', 'new'];
-
-      for ($i = 1; $i <= 3; $i++) {
-        foreach ($states as $state) {
-          $name = "{$state}Val_{$i}";
-          $value = $this->getOption($name, NULL);
-          if ($value) {
-            $default_values[$name] = $value;
-          }
-        }
-      }
-
-      $webserver_user  = $this->getWebServerUser();
-      $webserver_group = $this->getWebServerGroup();
-
-      require_once 'CRM/Core/I18n.php';
-      require_once 'CRM/Core/BAO/ConfigSetting.php';
-      $result = CRM_Core_BAO_ConfigSetting::doSiteMove($default_values);
-
-      if ($result) {
-
-        // Attempt to preserve webserver ownership of templates_c, civicrm/upload.
-        if ($webserver_user && $webserver_group) {
-          $upload_dir      = wp_upload_dir();
-          $civicrm_files_dir      = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR;
-          system(sprintf('chown -R %s:%s %s/templates_c', $webserver_user, $webserver_group, $civicrm_files_dir));
-          system(sprintf('chown -R %s:%s %s/upload', $webserver_user, $webserver_group, $civicrm_files_dir));
-        }
-
-        WP_CLI::success('Config successfully updated.');
-
-      }
-      else {
-        WP_CLI::error('Config update failed.');
-      }
-
-    }
-
-    /**
-     * Implementation of command 'upgrade'.
-     *
-     * @since 4.5
-     */
-    private function upgrade() {
-
-      // TODO: Use wp-cli to download tarfile.
-      // TODO: If tarfile is not specified, see if the code already exists and use that instead.
-      if (!$this->getOption('tarfile', FALSE) && !$this->getOption('zipfile', FALSE)) {
-        return WP_CLI::error('Must specify either --tarfile or --zipfile');
-      }
-
-      // FIXME: Throw error if tarfile is not in a valid format.
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        define('CIVICRM_UPGRADE_ACTIVE', 1);
-      }
-
-      $wp_root       = ABSPATH;
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $legacy_settings_file = $plugins_dir . '/civicrm.settings.php';
-      $upload_dir      = wp_upload_dir();
-      $settings_file     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'civicrm.settings.php';
-      if (!file_exists($legacy_settings_file) && !file_exists($settings_file)) {
-        return WP_CLI::error(sprintf('Unable to locate settings file at "%s" or at "%s"', $legacy_settings_file, $settings_file));
-      }
-
-      /*
-       * We don't want to require "civicrm.settings.php" here, because:
-       *
-       * a) This is the old environment we're going to replace.
-       * b) upgrade-db needs to bootstrap the new environment, so requiring the file
-       *    now will create multiple inclusion problems later on.
-       *
-       * However, all we're really after is $civicrm_root and CIVICRM_DSN, so we're going to
-       * pull out the lines we need using a regex and run them - yes, it's pretty silly.
-       * Don't try this at home, kids.
-       */
-
-      $legacy_settings = file_get_contents($legacy_settings_file);
-      $legacy_settings = str_replace("\r", '', $legacy_settings);
-      $legacy_settings = explode("\n", $legacy_settings);
-      $settings = file_get_contents($settings_file);
-      $settings = str_replace("\r", '', $settings);
-      $settings = explode("\n", $settings);
-
-      if ($civicrm_root_code = reset(preg_grep('/^\s*\$civicrm_root\s*=.*$/', $legacy_settings))) {
-        // phpcs:disable
-        eval($civicrm_root_code);
-        // phpcs:enable
-      }
-      elseif ($civicrm_root_code = reset(preg_grep('/^\s*\$civicrm_root\s*=.*$/', $settings))) {
-        // phpcs:disable
-        eval($civicrm_root_code);
-        // phpcs:enable
-      }
-      else {
-        return WP_CLI::error('Unable to read $civicrm_root from civicrm.settings.php');
-      }
-
-      if ($civicrm_dsn_code = reset(preg_grep('/^\s*define.*CIVICRM_DSN.*$/', $settings))) {
-        $civicrm_dsn_code = str_replace('CIVICRM_DSN', 'CIVICRM_OLD_DSN', $civicrm_dsn_code);
-        // phpcs:disable
-        eval($civicrm_dsn_code);
-        // phpcs:enable
-      }
-      else {
-        return WP_CLI::error('Unable to read CIVICRM_DSN from civicrm.settings.php');
-      }
-
-      if (!defined('CIVICRM_OLD_DSN')) {
-        return WP_CLI::error('Unable to set CIVICRM_OLD_DSN.');
-      }
-
-      $date        = date('YmdHis');
-      $backup_file = 'civicrm';
-
-      $basepath = explode('/', $civicrm_root);
-
-      if (!end($basepath)) {
-        array_pop($basepath);
-      }
-
-      array_pop($basepath);
-      $project_path = implode('/', $basepath) . '/';
-      array_pop($basepath);
-      $plugin_path = implode('/', $basepath) . '/';
-
-      $backup_dir = $this->getOption('backup-dir', $wp_root . '../backup');
-      $backup_dir = rtrim($backup_dir, '/');
-
-      WP_CLI::line();
-      WP_CLI::line('The upgrade process involves:');
-      WP_CLI::line(sprintf('1. Backing up current CiviCRM code as => %s', "$backup_dir/plugins/$date/$backup_file"));
-      WP_CLI::line(sprintf('2. Backing up database as => %s', "$backup_dir/plugins/$date/$backup_file.sql"));
-      WP_CLI::line(sprintf('3. Unpacking tarfile to => %s', $plugin_path));
-      WP_CLI::line('4. Executing "civicrm/upgrade?reset=1" just as a browser would.');
-      WP_CLI::line();
-
-      WP_CLI::confirm('Do you really want to continue?');
-
-      // Begin upgrade.
-      $backup_dir .= '/plugins/' . $date;
-      if (!mkdir($backup_dir, 0755, TRUE)) {
-        return WP_CLI::error(sprintf('Failed to create directory: %s', $backup_dir));
-      }
-
-      $backup_target = $backup_dir . '/' . $backup_file;
-
-      if (!rename($project_path, $backup_target)) {
-        return WP_CLI::error(sprintf('Failed to backup CiviCRM project directory %s to %s', $project_path, $backup_target));
-      }
-
-      WP_CLI::line();
-      WP_CLI::success('1. Code backed up.');
-
-      WP_CLI::run_command(
-        ['civicrm', 'sql-dump'],
-        ['result-file' => $backup_target . '.sql']
-      );
-
-      WP_CLI::success('2. Database backed up.');
-
-      // Decompress.
-      if ($this->getOption('tarfile', FALSE)) {
-        // Should probably never get to here, because WordPress CiviCRM comes in a zip file.
-        if (!$this->untar($plugin_path)) {
-          return WP_CLI::error('Error extracting tarfile');
-        }
-      }
-      elseif ($this->getOption('zipfile', FALSE)) {
-        if (!$this->unzip($plugin_path)) {
-          return WP_CLI::error('Error extracting zipfile');
-        }
-      }
-      else {
-        return WP_CLI::error('No zipfile specified, use --zipfile=path/to/zipfile');
-      }
-
-      WP_CLI::success('3. Archive unpacked.');
-
-      WP_CLI::line('Copying civicrm.settings.php to ' . $project_path . '..');
-      define('CIVICRM_SETTINGS_PATH', $project_path . 'civicrm.settings.php');
-
-      if (!copy($backup_dir . '/civicrm/civicrm.settings.php', CIVICRM_SETTINGS_PATH)) {
-        return WP_CLI::error('Failed to copy file.');
-      }
-
-      WP_CLI::success('4. Settings file copied.');
-
-      WP_CLI::run_command(['civicrm', 'upgrade-db'], []);
-
-      WP_CLI::success('Process completed.');
-
-    }
-
-    /**
-     * Implementation of command 'upgrade-db'.
-     *
-     * @since 4.5
-     */
-    private function upgradeDB() {
-
-      civicrm_initialize();
-
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        define('CIVICRM_UPGRADE_ACTIVE', 1);
-      }
-
-      if (class_exists('CRM_Upgrade_Headless')) {
-
-        // CRM_Upgrade_Headless introduced in 4.2 - at the same time as class auto-loading.
-        try {
-          $upgrade_headless = new CRM_Upgrade_Headless();
-          $result = $upgrade_headless->run();
-          WP_CLI::line(sprintf('Upgrade outputs: "%s"', $result['message']));
-        }
-        catch (Exception $e) {
-          WP_CLI::error($e->getMessage());
-        }
-
-      }
-      else {
-
-        require_once 'CRM/Core/Smarty.php';
-        $template = CRM_Core_Smarty::singleton();
-
-        require_once 'CRM/Upgrade/Page/Upgrade.php';
-        $upgrade = new CRM_Upgrade_Page_Upgrade();
-
-        // New since CiviCRM 4.1.
-        if (is_callable([$upgrade, 'setPrint'])) {
-          $upgrade->setPrint(TRUE);
-        }
-
-        // To suppress HTML output with source code.
-        ob_start();
-        $upgrade->run();
-        // Capture the required message.
-        $result = $template->get_template_vars('message');
-        ob_end_clean();
-        WP_CLI::line(sprintf('Upgrade outputs: "%s"', $result));
-
-      }
-
-    }
-
-    /**
-     * DSN parser - this has been stolen from PEAR DB since we don't always have a
-     * bootstrapped environment we can access this from, eg: when doing an upgrade.
-     *
-     * @since 4.5
-     *
-     * @param string|array $dsn
-     * @return array $parsed The arry containing db connection details.
-     */
-    private static function parseDSN($dsn) {
-
-      $parsed = [
-        'phptype'  => FALSE,
-        'dbsyntax' => FALSE,
-        'username' => FALSE,
-        'password' => FALSE,
-        'protocol' => FALSE,
-        'hostspec' => FALSE,
-        'port'     => FALSE,
-        'socket'   => FALSE,
-        'database' => FALSE,
-      ];
-
-      if (is_array($dsn)) {
-        $dsn = array_merge($parsed, $dsn);
-        if (!$dsn['dbsyntax']) {
-          $dsn['dbsyntax'] = $dsn['phptype'];
-        }
-        return $dsn;
-      }
-
-      // Find phptype and dbsyntax.
-      if (($pos = strpos($dsn, '://')) !== FALSE) {
-        $str = substr($dsn, 0, $pos);
-        $dsn = substr($dsn, $pos + 3);
-      }
-      else {
-        $str = $dsn;
-        $dsn = NULL;
-      }
-
-      // Get phptype and dbsyntax.
-      // $str => phptype(dbsyntax)
-      if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) {
-        $parsed['phptype']  = $arr[1];
-        $parsed['dbsyntax'] = !$arr[2] ? $arr[1] : $arr[2];
-      }
-      else {
-        $parsed['phptype']  = $str;
-        $parsed['dbsyntax'] = $str;
-      }
-
-      if (empty($dsn)) {
-        return $parsed;
-      }
-
-      // Get (if found): username and password.
-      // $dsn => username:password@protocol+hostspec/database
-      if (($at = strrpos($dsn, '@')) !== FALSE) {
-        $str = substr($dsn, 0, $at);
-        $dsn = substr($dsn, $at + 1);
-        if (($pos = strpos($str, ':')) !== FALSE) {
-          $parsed['username'] = rawurldecode(substr($str, 0, $pos));
-          $parsed['password'] = rawurldecode(substr($str, $pos + 1));
-        }
-        else {
-          $parsed['username'] = rawurldecode($str);
-        }
-      }
-
-      // Find protocol and hostspec.
-
-      if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) {
-        // $dsn => proto(proto_opts)/database
-        $proto       = $match[1];
-        $proto_opts  = $match[2] ? $match[2] : FALSE;
-        $dsn         = $match[3];
-
-      }
-      else {
-        // $dsn => protocol+hostspec/database (old format)
-        if (strpos($dsn, '+') !== FALSE) {
-          list($proto, $dsn) = explode('+', $dsn, 2);
-        }
-        if (strpos($dsn, '/') !== FALSE) {
-          list($proto_opts, $dsn) = explode('/', $dsn, 2);
-        }
-        else {
-          $proto_opts = $dsn;
-          $dsn = NULL;
-        }
-      }
-
-      // Process the different protocol options.
-      $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp';
-      $proto_opts = rawurldecode($proto_opts);
-      if (strpos($proto_opts, ':') !== FALSE) {
-        list($proto_opts, $parsed['port']) = explode(':', $proto_opts);
-      }
-      if ('tcp' == $parsed['protocol']) {
-        $parsed['hostspec'] = $proto_opts;
-      }
-      elseif ('unix' == $parsed['protocol']) {
-        $parsed['socket'] = $proto_opts;
-      }
-
-      // Get dabase if any.
-      // $dsn => database
-      if ($dsn) {
-        if (($pos = strpos($dsn, '?')) === FALSE) {
-          // /database
-          $parsed['database'] = rawurldecode($dsn);
-        }
-        else {
-          // /database?param1=value1&param2=value2
-          $parsed['database'] = rawurldecode(substr($dsn, 0, $pos));
-          $dsn = substr($dsn, $pos + 1);
-          if (strpos($dsn, '&') !== FALSE) {
-            $opts = explode('&', $dsn);
-          }
-          else {
-            // database?param1=value1
-            $opts = [$dsn];
-          }
-          foreach ($opts as $opt) {
-            list($key, $value) = explode('=', $opt);
-            if (!isset($parsed[$key])) {
-              // Don't allow params overwrite.
-              $parsed[$key] = rawurldecode($value);
-            }
-          }
-        }
-      }
-
-      return $parsed;
-
-    }
-
-    /**
-     * Helper function to replicate functionality of 'drush_get_option'.
-     *
-     * @since 4.5
-     *
-     * @param string $name
-     * @param string $default
-     * @return mixed The value if found or default if not.
-     */
-    private function getOption($name, $default) {
-      return isset($this->assoc_args[$name]) ? $this->assoc_args[$name] : $default;
-    }
-
-    /**
-     * Get the user the web server runs as - used to preserve file permissions on
-     * templates_c, civicrm/upload etc when running as root. This is not a very
-     * good check, but is good enough for what we want to do, which is to preserve
-     * file permissions.
-     *
-     * @since 4.5
-     *
-     * @return string The user which owns templates_c. Empty string if not found.
-     */
-    private function getWebServerUser() {
-
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $plugins_dir_root = WP_PLUGIN_DIR;
-      $upload_dir      = wp_upload_dir();
-      $tpl_path     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'templates_c';
-      $legacy_tpl_path = $plugins_dir_root . '/files/civicrm/templates_c';
-
-      if (is_dir($legacy_tpl_path)) {
-        $owner = posix_getpwuid(fileowner($legacy_tpl_path));
-        if (isset($owner['name'])) {
-          return $owner['name'];
-        }
-      }
-      elseif (is_dir($tpl_path)) {
-        $owner = posix_getpwuid(fileowner($tpl_path));
-        if (isset($owner['name'])) {
-          return $owner['name'];
-        }
-      }
-
-      return '';
-
-    }
-
-    /**
-     * Get the group the webserver runs as - as above, but for group.
-     *
-     * @since 4.5
-     *
-     * @return string The group the webserver runs as. Empty string if not found.
-     */
-    private function getWebServerGroup() {
-
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $plugins_dir_root = WP_PLUGIN_DIR;
-      $upload_dir      = wp_upload_dir();
-      $tpl_path     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'templates_c';
-      $legacy_tpl_path = $plugins_dir_root . '/files/civicrm/templates_c';
-
-      if (is_dir($legacy_tpl_path)) {
-        $group = posix_getgrgid(filegroup($legacy_tpl_path));
-        if (isset($group['name'])) {
-          return $group['name'];
-        }
-      }
-      elseif (is_dir($tpl_path)) {
-        $group = posix_getgrgid(filegroup($tpl_path));
-        if (isset($group['name'])) {
-          return $group['name'];
-        }
-      }
-
-      return '';
-
-    }
-
-    /**
-     * Extracts a tar.gz archive.
-     *
-     * @since 4.5
-     *
-     * @param string $destination_path The path to extract to.
-     * @param string $option The command line option to get input filename from, defaults to 'tarfile'.
-     * @return bool True if successful, false otherwise.
-     */
-    private function untar($destination_path, $option = 'tarfile') {
-
-      if ($tarfile = $this->getOption($option, FALSE)) {
-        WP_CLI::line('Extracting tar.gz archive...');
-        WP_CLI::launch("gzip -d $tarfile");
-        $tarfile = substr($tarfile, 0, strlen($tarfile) - 3);
-        WP_CLI::launch("tar -xf $tarfile -C \"$destination_path\"");
-        return TRUE;
-      }
-      else {
-        return FALSE;
-      }
-
-    }
-
-    /**
-     * Extracts a zip archive.
-     *
-     * @since 4.5
-     *
-     * @param string $destination_path The path to extract to.
-     * @param string $option The command line option to get zip filename from, defaults to 'zipfile'.
-     * @return bool True if successful, false otherwise.
-     */
-    private function unzip($destination_path, $option = 'zipfile') {
-
-      if ($zipfile = $this->getOption($option, FALSE)) {
-        WP_CLI::line('Extracting zip archive...');
-        WP_CLI::launch("unzip -q $zipfile -d $destination_path");
-        return TRUE;
-      }
-      else {
-        return FALSE;
-      }
-
-    }
-
-  }
-
-  WP_CLI::add_command('civicrm', 'CiviCRM_Command');
-  WP_CLI::add_command('cv', 'CiviCRM_Command');
-
-  // Set path early.
-  WP_CLI::add_hook('before_wp_load', function() {
-
-    global $civicrm_paths;
-    $wp_cli_config = WP_CLI::get_config();
-
-    // If --path is set, save for later use by CiviCRM.
-    if (!empty($wp_cli_config['path'])) {
-      $civicrm_paths['cms.root']['path'] = $wp_cli_config['path'];
-    }
-
-    // If --url is set, save for later use by CiviCRM.
-    if (!empty($wp_cli_config['url'])) {
-      $civicrm_paths['cms.root']['url'] = $wp_cli_config['url'];
-    }
-
-  });
-
-}
diff --git a/wp-cli/commands/command-api-v3.php b/wp-cli/commands/command-api-v3.php
new file mode 100755
index 0000000000..a1eea93fd9
--- /dev/null
+++ b/wp-cli/commands/command-api-v3.php
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Access the CiviCRM API v3.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm api contact.get id=10
+ *     Output here.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_API_V3 extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Object fields.
+   *
+   * @var array
+   */
+  protected $obj_fields = [
+    'id',
+  ];
+
+  /**
+   * Access the CiviCRM API v3.
+   *
+   * ## OPTIONS
+   *
+   * <args>...
+   * : The API query passed as arguments.
+   *
+   * [--input=<input>]
+   * : Specify the input in a particular format.
+   * ---
+   * default: args
+   * options:
+   *   - args
+   *   - json
+   * ---
+   *
+   * [--timezone=<timezone>]
+   * : The CiviCRM timezone string. Defaults to the WordPress `timezone_string` setting.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format. The "table" format can only be used when retrieving a single item.
+   * ---
+   * default: pretty
+   * options:
+   *   - pretty
+   *   - json
+   *   - table
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm api contact.get id=10
+   *     $ wp civicrm api contact.get id=10 --format=json
+   *     $ wp civicrm api group.get id=1 --format=table
+   *     $ echo '{"id":10, "api.Email.get": 1}' | wp cv api contact.get --input=json
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $input_format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'input', 'args');
+    $site_timezone = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'timezone', $this->site_timezone_get());
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'pretty');
+
+    // Get the Entity and Action from the first positional argument.
+    list($entity, $action) = explode('.', $args[0]);
+    array_shift($args);
+
+    // Parse params.
+    $defaults = ['version' => 3];
+    switch ($input_format) {
+
+      // Input params supplied via args.
+      case 'args':
+        $params = $defaults;
+        foreach ($args as $arg) {
+          preg_match('/^([^=]+)=(.*)$/', $arg, $matches);
+          $params[$matches[1]] = $matches[2];
+        }
+        break;
+
+      // Input params supplied via json.
+      case 'json':
+        $json = stream_get_contents(STDIN);
+        if (empty($json)) {
+          $params = $defaults;
+        }
+        else {
+          $params = array_merge($defaults, json_decode($json, TRUE));
+        }
+        break;
+
+      default:
+        WP_CLI::error(sprintf('Unknown format: %s', $input_format));
+        break;
+
+    }
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // CRM-18062: Configure timezone for CiviCRM.
+    $current_timezone = date_default_timezone_get();
+    if ($site_timezone) {
+      date_default_timezone_set($site_timezone);
+      CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
+    }
+
+    // Now call the CiviCRM API.
+    $result = civicrm_api($entity, $action, $params);
+
+    // Restore timezone.
+    if ($current_timezone) {
+      date_default_timezone_set($current_timezone);
+    }
+
+    switch ($format) {
+
+      // Pretty-print output (default).
+      case 'pretty':
+        WP_CLI::log(print_r($result, TRUE));
+        break;
+
+      // Display output as json.
+      case 'json':
+        WP_CLI::log(json_encode($result));
+        break;
+
+      // Display output as table.
+      case 'table':
+        $assoc_args['format'] = $format;
+        if (count($result['values']) === 1) {
+          $item = array_pop($result['values']);
+          $assoc_args['fields'] = array_keys($item);
+          $formatter = $this->formatter_get($assoc_args);
+          $formatter->display_item($item);
+        }
+        else {
+
+          // Give up and log usual output.
+          WP_CLI::log(print_r($result, TRUE));
+
+          // phpcs:disable
+
+          /*
+          // Testing whether we can do this. It's hard, but kinda works.
+          $fields_query = civicrm_api3($entity, 'getfields', [
+            'api_action' => $action,
+          ]);;
+          $fields = array_keys($fields_query['values']);
+          //WP_CLI::log(print_r($fields, TRUE));
+
+          //WP_CLI::log(print_r($result['values'], TRUE));
+          $assoc_args['fields'] = $fields;
+          //WP_CLI::log(print_r($assoc_args['fields'], TRUE));
+
+          // Cast items as objects.
+          array_walk($result['values'], function( &$item ) use ( $fields ) {
+            foreach ($fields as $field) {
+              // Make sure the array has all keys.
+              if (!array_key_exists($field, $item)) {
+                $item[$field] = '';
+              }
+            }
+            $item = (object) $item;
+          });
+          //WP_CLI::log(print_r($result['values'], TRUE));
+
+          $formatter = $this->formatter_get($assoc_args);
+          //WP_CLI::log(print_r($formatter, TRUE));
+
+          $formatter->display_items($result['values']);
+          */
+
+          // phpcs:enable
+
+        }
+        break;
+
+      default:
+        WP_CLI::error(sprintf('Unknown format: %s', $format));
+
+    }
+
+  }
+
+}
diff --git a/wp-cli/commands/command-base.php b/wp-cli/commands/command-base.php
new file mode 100644
index 0000000000..fc0a062342
--- /dev/null
+++ b/wp-cli/commands/command-base.php
@@ -0,0 +1,552 @@
+<?php
+/**
+ * Base command class.
+ *
+ * @since 5.69
+ */
+abstract class CLI_Tools_CiviCRM_Command_Base extends \WP_CLI\CommandWithDBObject {
+
+  /**
+   * Dependency check.
+   *
+   * @since 5.69
+   */
+  public static function check_dependencies() {
+    // Check for existence of CiviCRM.
+    if (!function_exists('civicrm_initialize')) {
+      WP_CLI::error('Unable to find CiviCRM install.');
+    }
+  }
+
+  /**
+   * Bootstrap CiviCRM.
+   *
+   * @since 5.69
+   */
+  protected function bootstrap_civicrm() {
+    self::check_dependencies();
+    if (!civicrm_initialize()) {
+      WP_CLI::error('Unable to initialize CiviCRM.');
+    }
+  }
+
+  /**
+   * Returns the timezone string for the current site.
+   *
+   * If a timezone identifier is used, then return it.
+   * If an offset is used, build a suitable timezone.
+   * If all else fails, uses UTC.
+   *
+   * @since 5.69
+   *
+   * @return string $tzstring The site timezone string.
+   */
+  protected function site_timezone_get() {
+
+    // Check our cached value first.
+    $tzstring = wp_cache_get('cli_tools_civicrm_timezone');
+
+    // Build value if none is cached.
+    if (FALSE === $tzstring) {
+
+      // Get relevant WordPress settings.
+      $tzstring = get_option('timezone_string');
+      $offset = get_option('gmt_offset');
+
+      /*
+       * Setting manual offsets should be discouraged.
+       *
+       * The IANA timezone database that provides PHP's timezone support
+       * uses (reversed) POSIX style signs.
+       *
+       * @see https://github.com/stephenharris/Event-Organiser/issues/287
+       * @see https://www.php.net/manual/en/timezones.others.php
+       * @see https://bugs.php.net/bug.php?id=45543
+       * @see https://bugs.php.net/bug.php?id=45528
+       */
+      if (empty($tzstring) && 0 != $offset && floor($offset) == $offset) {
+        $offset_string = $offset > 0 ? "-$offset" : '+' . absint($offset);
+        $tzstring = 'Etc/GMT' . $offset_string;
+      }
+
+      // Default to "UTC" if the timezone string is empty.
+      if (empty($tzstring)) {
+        $tzstring = 'UTC';
+      }
+
+      // Cache timezone string.
+      wp_cache_set('cli_tools_civicrm_timezone', $tzstring);
+
+    }
+
+    // --<
+    return $tzstring;
+
+  }
+
+  /**
+   * Downloads a remote file with a GET request.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param string $destination Optional. The path to the download directory. Default is local temp dir.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return string $filepath The path to the downloaded file.
+   */
+  protected function file_download($url, $destination = '', $headers = [], $options = []) {
+
+    // Set default destination.
+    if (empty($destination)) {
+      $destination = \WP_CLI\Utils\get_temp_dir();
+    }
+
+    // Extract filename, stripping query variables if present.
+    $filename = basename($url);
+    if (FALSE !== strpos($filename, '?')) {
+      $arr = explode('?', $filename);
+      $filename = $arr[0];
+    }
+
+    // Build final path to file.
+    $filepath = trailingslashit($destination) . $filename;
+
+    // Build request options.
+    $options = array_merge(
+      [
+        'timeout'  => 600,
+        'filename' => $filepath,
+        'insecure' => FALSE,
+      ],
+      $options
+    );
+
+    // Okay, do the download.
+    $response = \WP_CLI\Utils\http_request('GET', $url, NULL, $headers, $options);
+    if (!$response->success || 200 !== (int) $response->status_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize("Couldn't fetch response from %y%s%n (HTTP code %y%s%n)."), $url, $response->status_code));
+    }
+
+    return $filepath;
+
+  }
+
+  /**
+   * Gets the Formatter object for a given set of arguments.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The params passed to a command. Determines the formatting.
+   * @return \WP_CLI\Formatter
+   */
+  protected function formatter_get(&$assoc_args) {
+    return new \WP_CLI\Formatter($assoc_args, $this->obj_fields);
+  }
+
+  /**
+   * Performs a remote GET request.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return object $response The response object.
+   */
+  protected function http_get_response($url, $headers = [], $options = []) {
+
+    $options = array_merge(
+      ['halt_on_error' => FALSE],
+      $options
+    );
+
+    $response = \WP_CLI\Utils\http_request('GET', $url, NULL, $headers, $options);
+    if (!$response->success || 200 > (int) $response->status_code || 300 <= $response->status_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize("Couldn't fetch response from %y%s%n (HTTP code %y%s%n)."), $url, $response->status_code));
+    }
+
+    return trim($response->body);
+
+  }
+
+  /**
+   * Performs a remote GET request that requires JSON data in response.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return mixed|false False on failure. Decoded JSON on success.
+   */
+  protected function json_get_request($url, $headers = [], $options = []) {
+
+    $headers = array_merge(
+      ['Accept' => 'application/json'],
+      $headers
+    );
+
+    $response = $this->http_get_response($url, $headers, $options);
+    if (FALSE === $response) {
+      return $response;
+    }
+
+    $data = json_decode($response, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $data;
+
+  }
+
+  /**
+   * Gets the path to the CiviCRM plugin directory.
+   *
+   * @since 5.69
+   *
+   * @return string|bool $plugin_path The path to the CiviCRM plugin directory.
+   */
+  protected function plugin_path_get() {
+
+    global $wp_filesystem;
+    if (empty($wp_filesystem)) {
+      WP_Filesystem();
+    }
+
+    // Get the path to the WordPress plugins directory.
+    $plugins_dir = $wp_filesystem->wp_plugins_dir();
+    if (empty($plugins_dir)) {
+      WP_CLI::error('Unable to locate WordPress plugins directory.');
+    }
+
+    // The path to the CiviCRM plugin directory.
+    $plugin_path = trailingslashit($plugins_dir) . 'civicrm';
+
+    return $plugin_path;
+
+  }
+
+  /**
+   * Extracts a tar.gz archive.
+   *
+   * @since 5.69
+   *
+   * @param string $tarfile The path to the tarfile.
+   * @param string $destination The path to extract to.
+   * @param bool $delete True deletes the zip archive once extracted. Default to true.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function untar($tarfile, $destination, $delete = TRUE) {
+
+    // Sanity check tarfile.
+    if (empty($tarfile)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    WP_CLI::log(WP_CLI::colorize('%GExtracting tar.gz archive...%n'));
+
+    // First unpack the gz archive.
+    $command = "gzip -d $tarfile";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract gz archive: %y%s.%n'), $this->stderr_error_msg($process_run)));
+    }
+
+    // Next unpack the tarball.
+    $tarfile = substr($tarfile, 0, strlen($tarfile) - 3);
+    $command = "tar -xf $tarfile -C \"$destination\"";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract tarball: %y%s.%n'), $this->stderr_error_msg($process_run)));
+    }
+
+    // Delete the tar archive.
+    if (!empty($delete)) {
+      global $wp_filesystem;
+      if (empty($wp_filesystem)) {
+        WP_Filesystem();
+      }
+      $wp_filesystem->delete($tarfile, TRUE);
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive.
+   *
+   * Note: if no extension is supplied, `unzip` will check for "filename.zip" and "filename.ZIP"
+   * in the same location.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The path to extract to.
+   * @param bool $delete True deletes the zip archive once extracted. Defaults to true.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function unzip($zipfile, $destination, $delete = TRUE) {
+
+    // Sanity check zipfile.
+    if (empty($zipfile)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GExtracting zip archive...%n'));
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    // Run the command.
+    $command = "unzip -q $zipfile -d $destination";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $this->unzip_error_msg($process_run->return_code)));
+    }
+
+    // Delete the zip archive.
+    if (!empty($delete)) {
+      global $wp_filesystem;
+      if (empty($wp_filesystem)) {
+        WP_Filesystem();
+      }
+      $wp_filesystem->delete($zipfile, TRUE);
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Compresses a zip archive.
+   *
+   * @since 5.69
+   *
+   * @param string $directory The directory to compress.
+   * @param string $destination The path to the directory where the compressed archive will be saved.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_compress($directory, $destination) {
+
+    // Sanity check directory.
+    if (empty($directory)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GCompressing zip archive...%n'));
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    // Run the command.
+    $command = 'pushd ' . dirname($directory) . '; ' . "zip -rq {$destination} ./" . basename($directory) . '; popd';
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to compress zip archive: %y%s.%n'), $this->zip_error_msg($process_run->return_code)));
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive to a destination directory and removes zip archive.
+   *
+   * This is useful if we want to extract a zip archive and know the name we want to give
+   * the enclosing directory. It's better to use `self::unzip()` if we want to leave the
+   * enclosing directory with its given directory name, e.g. when extracting the CiviCRM
+   * plugin archive somewhere other than the WordPress plugins directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @param array $options The array of extraction options.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_extract($zipfile, $destination, $options = []) {
+
+    // Let's use a custom WP_Upgrader object.
+    require_once __DIR__ . '/utilities/class-zip-extractor.php';
+    $extractor = \WP_CLI\Utils\get_upgrader('CLI_Tools_CiviCRM_Zip_Extractor');
+
+    // Go ahead and extract the archive.
+    $extractor->init();
+    $result = $extractor->extract($zipfile, $destination, $options);
+
+    // Trap any problems.
+    if ($result === FALSE) {
+      WP_CLI::error('Unable to connect to the filesystem.');
+    }
+    if (is_wp_error($result)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $result->get_error_message()));
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive and overwrites a destination directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_overwrite($zipfile, $destination) {
+
+    // Let's use a custom WP_Upgrader object.
+    require_once __DIR__ . '/utilities/class-backup-restorer.php';
+    $overwriter = \WP_CLI\Utils\get_upgrader('CLI_Tools_CiviCRM_WP_Upgrader');
+
+    // Go ahead and restore from backup.
+    $overwriter->init();
+    $result = $overwriter->restore($zipfile, $destination);
+
+    // Trap any problems.
+    if ($result === FALSE) {
+      WP_CLI::error('Unable to connect to the filesystem.');
+    }
+    if (is_wp_error($result)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $result->get_error_message()));
+    }
+
+    return TRUE;
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Returns a formatted error message from a ProcessRun command.
+   *
+   * @since 5.69
+   *
+   * @param object $process_run The ProcessRun object.
+   * @return string|int The error message of the process if available, otherwise the return code.
+   */
+  private function stderr_error_msg($process_run) {
+
+    // Grab error string.
+    $stderr = trim($process_run->stderr);
+    $nl_pos = strpos($stderr, "\n");
+    if (FALSE !== $nl_pos) {
+      $stderr = trim(substr($stderr, 0, $nl_pos));
+    }
+
+    // Return formatted string if possible.
+    if ($stderr) {
+      return sprintf('%s (%d)', $stderr, $process_run->return_code);
+    }
+
+    // Fall back to raw error code.
+    return $process_run->return_code;
+
+  }
+
+  /**
+   * Returns a formatted `unzip` error message for a given error code.
+   *
+   * @since 5.69
+   *
+   * @param int $error_code The error code.
+   * @return string $error_code The formatted error code.
+   */
+  private function unzip_error_msg($error_code) {
+
+    $zip_err_msgs = [
+      0 => 'No errors or warnings detected.',
+      1 => 'One or more warning errors were encountered, but processing completed successfully anyway. This includes zipfiles where one or more files was skipped due to unsupported compression method or encryption with an unknown password.',
+      2 => 'A generic error in the zipfile format was detected. Processing may have completed successfully anyway; some broken zipfiles created by other archivers have simple work-arounds.',
+      3 => 'A severe error in the zipfile format was detected. Processing probably failed immediately.',
+      4 => 'unzip was unable to allocate memory for one or more buffers during program initialization.',
+      5 => 'unzip was unable to allocate memory or unable to obtain a tty to read the decryption password(s).',
+      6 => 'unzip was unable to allocate memory during decompression to disk.',
+      7 => 'unzip was unable to allocate memory during in-memory decompression.',
+      8 => '[currently not used]',
+      9 => 'The specified zipfiles were not found.',
+      10 => 'Invalid options were specified on the command line.',
+      11 => 'No matching files were found.',
+      50 => 'The disk is (or was) full during extraction.',
+      51 => 'The end of the ZIP archive was encountered prematurely.',
+      80 => 'The user aborted unzip prematurely with control-C (or similar)',
+      81 => 'Testing or extraction of one or more files failed due to unsupported compression methods or unsupported decryption.',
+      82 => 'No files were found due to bad decryption password(s). (If even one file is successfully processed, however, the exit status is 1.)',
+    ];
+
+    if (isset($zip_err_msgs[$error_code])) {
+      return sprintf('%s (%d)', $zip_err_msgs[$error_code], $error_code);
+    }
+
+    return $error_code;
+
+  }
+
+  /**
+   * Returns a formatted `zip` error message for a given error code.
+   *
+   * @since 5.69
+   *
+   * @param int $error_code The error code.
+   * @return string $error_code The formatted error code.
+   */
+  private function zip_error_msg($error_code) {
+
+    $zip_err_msgs = [
+      0 => 'No errors or warnings detected.',
+      2 => 'Unexpected end of zip file.',
+      3 => 'A generic error in the zipfile format was detected. Processing may have completed successfully anyway; some broken zipfiles created by other archivers have simple work-arounds..',
+      4 => 'zip was unable to allocate memory for one or more buffers during program initialization.',
+      5 => 'A severe error in the zipfile format was detected. Processing probably failed immediately.',
+      6 => 'Entry too large to be processed (such as input files larger than 2 GB when not using Zip64 or trying to read an existing archive that is too large) or entry too large to be split with zipsplit',
+      7 => 'Invalid comment format.',
+      8 => 'zip -T failed or out of memory',
+      9 => 'The user aborted zip prematurely with control-C (or similar).',
+      10 => 'zip encountered an error while using a temp file.',
+      11 => 'read or seek error.',
+      12 => 'zip has nothing to do.',
+      13 => 'Missing or empty zip file.',
+      14 => 'Error writing to a file.',
+      15 => 'zip was unable to create a file to write to.',
+      16 => 'Bad command line parameters.',
+      18 => 'zip could not open a specified file to read.',
+      19 => 'zip was compiled with options not supported on this system.',
+    ];
+
+    if (isset($zip_err_msgs[$error_code])) {
+      return sprintf('%s (%d)', $zip_err_msgs[$error_code], $error_code);
+    }
+
+    return $error_code;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-cache.php b/wp-cli/commands/command-cache.php
new file mode 100755
index 0000000000..24351ea516
--- /dev/null
+++ b/wp-cli/commands/command-cache.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Flush the CiviCRM cache.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm cache flush
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Cache extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Flush the CiviCRM cache.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm cache flush
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function flush($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $config = CRM_Core_Config::singleton();
+
+    // Clear db caching.
+    $config->clearDBCache();
+
+    // Also cleanup the templates_c directory.
+    $config->cleanup(1, FALSE);
+
+    // Also cleanup the session object.
+    $session = CRM_Core_Session::singleton();
+    $session->reset(1);
+
+    WP_CLI::success('CiviCRM cache cleared.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-civicrm.php b/wp-cli/commands/command-civicrm.php
new file mode 100644
index 0000000000..ca41006630
--- /dev/null
+++ b/wp-cli/commands/command-civicrm.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Manage CiviCRM through the command-line.
+ *
+ * ## EXAMPLES
+ *
+ *     # Download the latest stable CiviCRM core archive.
+ *     $ wp civicrm core download
+ *     Checking file to download...
+ *     Downloading file...
+ *     Success: CiviCRM downloaded to /tmp/
+ *
+ *     # Install the current stable version of CiviCRM with localization files.
+ *     $ wp civicrm core install --l10n
+ *     Success: Installed 1 of 1 plugins.
+ *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+ *
+ *     # Check for the latest stable version of CiviCRM.
+ *     $ wp civicrm core check-update
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | Package   | Version | Package URL                                                                               |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+ *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *
+ *     # Check the CiviCRM database config.
+ *     $ wp civicrm db config --format=table
+ *     +----------+----------------+
+ *     | Field    | Value          |
+ *     +----------+----------------+
+ *     | phptype  | mysqli         |
+ *     | dbsyntax | mysqli         |
+ *     | username | db_username    |
+ *     | password | db_password    |
+ *     | protocol | tcp            |
+ *     | hostspec | localhost      |
+ *     | port     | false          |
+ *     | socket   | false          |
+ *     | database | civicrm_dbname |
+ *     | new_link | true           |
+ *     +----------+----------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command extends CLI_Tools_CiviCRM_Command_Base {
+
+  /**
+   * Adds our description and sub-commands.
+   *
+   * @since 5.69
+   *
+   * @param object $command The command.
+   * @return array $info The array of information about the command.
+   */
+  private function command_to_array($command) {
+
+    $info = [
+      'name' => $command->get_name(),
+      'description' => $command->get_shortdesc(),
+      'longdesc' => $command->get_longdesc(),
+    ];
+
+    foreach ($command->get_subcommands() as $subcommand) {
+      $info['subcommands'][] = $this->command_to_array($subcommand);
+    }
+
+    if (empty($info['subcommands'])) {
+      $info['synopsis'] = (string) $command->get_synopsis();
+    }
+
+    return $info;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-core.php b/wp-cli/commands/command-core.php
new file mode 100755
index 0000000000..db61217d51
--- /dev/null
+++ b/wp-cli/commands/command-core.php
@@ -0,0 +1,2170 @@
+<?php
+/**
+ * Downloads, installs, updates, and manages a CiviCRM installation.
+ *
+ * ## EXAMPLES
+ *
+ *     # Download the latest stable CiviCRM core archive.
+ *     $ wp civicrm core download
+ *     Checking file to download...
+ *     Downloading file...
+ *     Success: CiviCRM downloaded to /tmp/
+ *
+ *     # Install the current stable version of CiviCRM with localization files.
+ *     $ wp civicrm core install --l10n
+ *     Success: Installed 1 of 1 plugins.
+ *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+ *
+ *     # Check for the latest stable version of CiviCRM.
+ *     $ wp civicrm core check-update
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | Package   | Version | Package URL                                                                               |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+ *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Core extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * @var string
+   * The URL to check for CiviCRM upgrades.
+   * @since 5.69
+   * @access private
+   */
+  private $upgrade_url = 'https://download.civicrm.org/check';
+
+  /**
+   * @var string
+   * The Google API URL to check for all top-level CiviCRM prefixes.
+   * @since 5.69
+   * @access private
+   */
+  private $google_url = 'https://storage.googleapis.com/storage/v1/b/civicrm/o/?delimiter=/';
+
+  /**
+   * @var string
+   * The Google API query param to append for checking CiviCRM stable versions.
+   * @since 5.69
+   * @access private
+   */
+  private $google_prefix_stable = 'prefix=civicrm-stable/';
+
+  /**
+   * @var string
+   * The common part of the Google API URL for CiviCRM release archive downloads.
+   * @since 5.69
+   * @access private
+   */
+  private $google_download_url = 'https://storage.googleapis.com/civicrm/';
+
+  /**
+   * Activates the CiviCRM plugin and loads the database.
+   *
+   * ## OPTIONS
+   *
+   * [--dbname=<dbname>]
+   * : MySQL database name of your CiviCRM database. Defaults to the WordPress database name.
+   *
+   * [--dbpass=<dbpass>]
+   * : MySQL password for your CiviCRM database. Defaults to the WordPress MySQL database password.
+   *
+   * [--dbuser=<dbuser>]
+   * : MySQL username for your CiviCRM database. Defaults to the WordPress MySQL database username.
+   *
+   * [--dbhost=<dbhost>]
+   * : MySQL host for your CiviCRM database. Defaults to the WordPress MySQL host.
+   *
+   * [--locale=<locale>]
+   * : Locale to use for installation. Defaults to "en_US".
+   *
+   * [--ssl=<ssl>]
+   * : The SSL setting for your website, e.g. '--ssl=on'. Defaults to "on".
+   *
+   * [--site-url=<site-url>]
+   * : Domain for your website, e.g. 'mysite.com'.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Activate the CiviCRM plugin.
+   *     $ wp civicrm core activate
+   *     CiviCRM database credentials:
+   *     +----------+-----------------------+
+   *     | Field    | Value                 |
+   *     +----------+-----------------------+
+   *     | Database | civicrm_database_name |
+   *     | Username | foo                   |
+   *     | Password | dbpassword            |
+   *     | Host     | localhost             |
+   *     | Locale   | en_US                 |
+   *     | SSL      | on                    |
+   *     +----------+-----------------------+
+   *     Do you want to continue? [y/n] y
+   *     Creating file /httpdocs/wp-content/uploads/civicrm/civicrm.settings.php
+   *     Success: CiviCRM data files initialized.
+   *     Creating civicrm_* database tables in civicrm_database_name
+   *     Success: CiviCRM database loaded.
+   *     Plugin 'civicrm' activated.
+   *     Success: Activated 1 of 1 plugins.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function activate($args, $assoc_args) {
+
+    // Only install plugin if not already installed.
+    $fetcher = new \WP_CLI\Fetchers\Plugin();
+    $plugin_installed = $fetcher->get('civicrm');
+    if (!$plugin_installed) {
+      WP_CLI::error('You need to install CiviCRM first.');
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    /*
+     * Check for the presence of the CiviCRM core codebase.
+     *
+     * NOTE: This is *not* the CiviCRM plugin - it is the directory where the common
+     * CiviCRM code lives. It always lives in a sub-directory of the plugin directory
+     * called "civicrm".
+     */
+    global $crmPath;
+    $crmPath = trailingslashit($plugin_path) . 'civicrm';
+    if (!is_dir($crmPath)) {
+      WP_CLI::error('CiviCRM core files are missing.');
+    }
+
+    // We need the CiviCRM classloader so that we can run `Civi\Setup`.
+    $classLoaderPath = "$crmPath/CRM/Core/ClassLoader.php";
+    if (!file_exists($classLoaderPath)) {
+      WP_CLI::error('CiviCRM installer helper file is missing.');
+    }
+
+    // Grab associative arguments.
+    $dbuser = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbuser', (defined('DB_USER') ? DB_USER : ''));
+    $dbpass = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbpass', (defined('DB_PASSWORD') ? DB_PASSWORD : ''));
+    $dbhost = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbhost', (defined('DB_HOST') ? DB_HOST : ''));
+    $dbname = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbname', (defined('DB_NAME') ? DB_NAME : ''));
+    $locale = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', 'en_US');
+    $ssl = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'ssl', 'on');
+    $base_url = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'site-url', '');
+
+    // Show database parameters.
+    WP_CLI::log(WP_CLI::colorize('%GCiviCRM database credentials:%n'));
+    $assoc_args['format'] = 'table';
+    $feedback = [
+      'Database' => $dbname,
+      'Username' => $dbuser,
+      'Password' => $dbpass,
+      'Host' => $dbhost,
+      'Locale' => $locale,
+      'SSL' => $ssl,
+    ];
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Activation and installation.
+    // ----------------------------------------------------------------------------
+
+    // Set some constants that CiviCRM requires.
+    if (!defined('CIVICRM_PLUGIN_DIR')) {
+      define('CIVICRM_PLUGIN_DIR', \WP_CLI\Utils\trailingslashit($plugin_path));
+    }
+    if (!defined('CIVICRM_PLUGIN_URL')) {
+      define('CIVICRM_PLUGIN_URL', plugin_dir_url(CIVICRM_PLUGIN_DIR));
+    }
+
+    // Maybe set SSL.
+    if ('on' === $ssl) {
+      $_SERVER['HTTPS'] = 'on';
+    }
+
+    // Initialize civicrm-setup.
+    require_once $classLoaderPath;
+    CRM_Core_ClassLoader::singleton()->register();
+    \Civi\Setup::assertProtocolCompatibility(1.0);
+    \Civi\Setup::init(['cms' => 'WordPress', 'srcPath' => $crmPath]);
+    $setup = \Civi\Setup::instance();
+
+    // Apply essential arguments.
+    $setup->getModel()->db = ['server' => $dbhost, 'username' => $dbuser, 'password' => $dbpass, 'database' => $dbname];
+    $setup->getModel()->lang = $locale;
+
+    /*
+     * The "base URL" should already be known, either by:
+     *
+     * * The "site_url()" setting in WordPress standalone
+     * * The URL flag in WordPress Multisite: --url=https://my-domain.com
+     *
+     * TODO: This means that the `--site_url` flag is basically redundant.
+     */
+    if (!empty($base_url)) {
+      $protocol = ('on' === $ssl ? 'https' : 'http');
+      $base_url = $protocol . '://' . $base_url;
+      $setup->getModel()->cmsBaseUrl = trailingslashit($base_url);
+    }
+
+    // Validate system requirements.
+    $reqs = $setup->checkRequirements();
+    foreach ($reqs->getWarnings() as $msg) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%YWARNING:%n %y(%s) %s:%n %s'), $msg['section'], $msg['name'], $msg['message']));
+    }
+    $errors = $reqs->getErrors();
+    if ($errors) {
+      foreach ($errors as $msg) {
+        WP_CLI::log(sprintf(WP_CLI::colorize('%RERROR:%n %r(%s) %s:%n %s'), $msg['section'], $msg['name'], $msg['message']));
+      }
+      WP_CLI::error('Requirements check failed.');
+    }
+
+    // Install data files.
+    $installed = $setup->checkInstalled();
+    if (!$installed->isSettingInstalled()) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating file%n %Y%s%n'), $setup->getModel()->settingsPath));
+      $setup->installFiles();
+    }
+    else {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%gFound existing%n %Y%s%n %Gin%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+      switch ($this->conflict_action_pick('civicrm.settings.php')) {
+        case 'abort':
+          WP_CLI::log(WP_CLI::colorize('%CAborted%n'));
+          WP_CLI::halt(0);
+
+        case 'overwrite':
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GRemoving%n %Y%s%n %Gfrom%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+          $setup->uninstallFiles();
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Y%s%n %Gin%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+          $setup->installFiles();
+          break;
+
+        case 'keep':
+          break;
+
+        default:
+          WP_CLI::error('Unrecognized action');
+      }
+    }
+
+    WP_CLI::success('CiviCRM data files initialized.');
+
+    // Clean the "templates_c" directory to avoid fatal error when overwriting the database.
+    if (function_exists('civicrm_initialize')) {
+      $this->bootstrap_civicrm();
+      $config = CRM_Core_Config::singleton();
+      $config->cleanup(1, FALSE);
+    }
+
+    // Install database.
+    if (!$installed->isDatabaseInstalled()) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Ycivicrm_*%n %Gdatabase tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+      $setup->installDatabase();
+    }
+    else {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GFound existing%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+      switch ($this->conflict_action_pick('database tables')) {
+        case 'abort':
+          WP_CLI::log(WP_CLI::colorize('%CAborted%n'));
+          WP_CLI::halt(0);
+
+        case 'overwrite':
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GRemoving%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+          $setup->uninstallDatabase();
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+          $setup->installDatabase();
+          break;
+
+        case 'keep':
+          break;
+
+        default:
+          WP_CLI::error('Unrecognized action');
+      }
+    }
+
+    WP_CLI::success('CiviCRM database loaded.');
+
+    // Looking good, let's activate the CiviCRM plugin.
+    WP_CLI::run_command(['plugin', 'activate', 'civicrm'], []);
+
+  }
+
+  /**
+   * Back up the CiviCRM plugin files and database.
+   *
+   * ## OPTIONS
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--also-include=<also-include>]
+   * : Comma separated list of additional tables to back up based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Standard backup.
+   *     $ wp civicrm core backup
+   *     Gathering system information.
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Field                  | Value                                                                 |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Backup directory       | /example.com/civicrm-backup                                           |
+   *     | Plugin path            | /example.com/httpdocs/wp-content/plugins/civicrm/                     |
+   *     | Database name          | civicrm_db                                                            |
+   *     | Database username      | dbuser                                                                |
+   *     | Database password      | dbpassword                                                            |
+   *     | Database host          | localhost                                                             |
+   *     | Settings file          | /example.com/httpdocs/wp-content/uploads/civicrm/civicrm.settings.php |
+   *     | Config and Log         | /example.com/httpdocs/wp-content/uploads/civicrm/ConfigAndLog/        |
+   *     | Custom PHP             | Not found                                                             |
+   *     | Custom templates       | Not found                                                             |
+   *     | Compiled templates     | /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/         |
+   *     | Extensions directory   | /example.com/httpdocs/wp-content/uploads/civicrm/ext/                 |
+   *     | Uploads directory      | /example.com/httpdocs/wp-content/uploads/civicrm/upload/              |
+   *     | Image upload directory | /example.com/httpdocs/wp-content/uploads/civicrm/persist/contribute/  |
+   *     | File upload directory  | /example.com/httpdocs/wp-content/uploads/civicrm/custom/              |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     Do you want to continue? [y/n] y
+   *
+   *     # Also back up tables not registered with CiviCRM.
+   *     # In this case, also exports tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm core backup --also-include='cdntaxreceipts_*'
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function backup($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $backup_dir = \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', trailingslashit(dirname(ABSPATH)) . 'civicrm-backup');
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    $config = CRM_Core_Config::singleton();
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($backup_dir)) {
+      $feedback['Backup directory'] = $backup_dir;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    else {
+      $feedback['Plugin path'] = 'Not found';
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+    else {
+      $feedback['Database Settings'] = 'Not found';
+    }
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      $feedback['Settings file'] = CIVICRM_SETTINGS_PATH;
+    }
+    else {
+      $feedback['Settings file'] = 'Not found';
+    }
+    if (!empty($config->configAndLogDir)) {
+      $feedback['Config and Log'] = $config->configAndLogDir;
+    }
+    else {
+      $feedback['Config and Log'] = 'Not found';
+    }
+    if (!empty($config->customPHPPathDir)) {
+      $feedback['Custom PHP'] = $config->customPHPPathDir;
+    }
+    else {
+      $feedback['Custom PHP'] = 'Not found';
+    }
+    if (!empty($config->customTemplateDir)) {
+      $feedback['Custom templates'] = $config->customTemplateDir;
+    }
+    else {
+      $feedback['Custom templates'] = 'Not found';
+    }
+    if (!empty($config->templateCompileDir)) {
+      $feedback['Compiled templates'] = $config->templateCompileDir;
+    }
+    else {
+      $feedback['Compiled templates'] = 'Not found';
+    }
+    if (!empty($config->extensionsDir)) {
+      $feedback['Extensions directory'] = $config->extensionsDir;
+    }
+    else {
+      $feedback['Extensions directory'] = 'Not found';
+    }
+    if (!empty($config->uploadDir)) {
+      $feedback['Uploads directory'] = $config->uploadDir;
+    }
+    else {
+      $feedback['Uploads directory'] = 'Not found';
+    }
+    if (!empty($config->imageUploadDir)) {
+      $feedback['Image upload directory'] = $config->imageUploadDir;
+    }
+    else {
+      $feedback['Image upload directory'] = 'Not found';
+    }
+    if (!empty($config->customFileUploadDir)) {
+      $feedback['File upload directory'] = $config->customFileUploadDir;
+    }
+    else {
+      $feedback['File upload directory'] = 'Not found';
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Validate backup directory.
+    // ----------------------------------------------------------------------------
+    $backup_dir = untrailingslashit($backup_dir);
+
+    // Maybe create destination directory.
+    if (!is_dir($backup_dir)) {
+      if (!is_writable(dirname($backup_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_dir)) {
+      WP_CLI::error("'{$backup_dir}' is not writable by current user.");
+    }
+
+    // ----------------------------------------------------------------------------
+    // Backup procedure.
+    // ----------------------------------------------------------------------------
+
+    // Maybe add extra filters.
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db export" to export the CiviCRM database tables.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GExporting database...%n'));
+    $command = 'civicrm db export' . $also_include_args . ' --result-file=' . $backup_dir . '/civicrm-db.sql';
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database exported.');
+
+    // Back up plugin directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up plugin directory...%n'));
+    $plugin_path = $this->plugin_path_get();
+    if (!$this->zip_compress($plugin_path, $backup_dir . '/civicrm.zip')) {
+      WP_CLI::error('Could not compress plugin archive.');
+    }
+    WP_CLI::success('Plugin directory backed up.');
+
+    // Back up "civicrm.settings.php" file.
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Settings File...%n'));
+      $dest_path = $backup_dir . '/civicrm.settings.php';
+      if (file_exists($dest_path) && is_writable($dest_path)) {
+        copy(CIVICRM_SETTINGS_PATH, $dest_path);
+      }
+      elseif (!file_exists($dest_path)) {
+        copy(CIVICRM_SETTINGS_PATH, $dest_path);
+      }
+      else {
+        WP_CLI::error("Could not copy '" . CIVICRM_SETTINGS_PATH . "' to backup directory.");
+      }
+      WP_CLI::success('Settings File backed up.');
+    }
+
+    // Back up Config and Log directory.
+    if (!empty($config->configAndLogDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Config and Log directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->configAndLogDir), $backup_dir . '/civicrm-config-log.zip')) {
+        WP_CLI::error('Could not compress Config and Log archive.');
+      }
+      WP_CLI::success('Config and Log directory backed up.');
+    }
+
+    // Back up Custom PHP directory.
+    if (!empty($config->customPHPPathDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Custom PHP directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customPHPPathDir), $backup_dir . '/civicrm-custom-php.zip')) {
+        WP_CLI::error('Could not compress Custom PHP archive.');
+      }
+      WP_CLI::success('Custom PHP directory backed up.');
+    }
+
+    // Back up Custom templates directory.
+    if (!empty($config->customTemplateDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Custom Templates directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customTemplateDir), $backup_dir . '/civicrm-custom-templates.zip')) {
+        WP_CLI::error('Could not compress Custom Templates archive.');
+      }
+      WP_CLI::success('Custom Templates directory backed up.');
+    }
+
+    // Back up Compiled templates directory.
+    if (!empty($config->templateCompileDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Compiled Templates directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->templateCompileDir), $backup_dir . '/civicrm-compiled-templates.zip')) {
+        WP_CLI::error('Could not compress Compiled templates archive.');
+      }
+      WP_CLI::success('Compiled Templates directory backed up.');
+    }
+
+    // Back up Extensions directory.
+    if (!empty($config->extensionsDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Extensions directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->extensionsDir), $backup_dir . '/civicrm-extensions.zip')) {
+        WP_CLI::error('Could not compress Extensions archive.');
+      }
+      WP_CLI::success('Extensions directory backed up.');
+    }
+
+    // Back up Uploads directory.
+    if (!empty($config->uploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->uploadDir), $backup_dir . '/civicrm-uploads.zip')) {
+        WP_CLI::error('Could not compress Uploads archive.');
+      }
+      WP_CLI::success('Uploads directory backed up.');
+    }
+
+    // Back up Image upload directory.
+    if (!empty($config->imageUploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Image Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->imageUploadDir), $backup_dir . '/civicrm-image-uploads.zip')) {
+        WP_CLI::error('Could not compress Image Uploads archive.');
+      }
+      WP_CLI::success('Image Uploads directory backed up.');
+    }
+
+    // Back up File Uploads directory.
+    if (!empty($config->customFileUploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up File Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customFileUploadDir), $backup_dir . '/civicrm-file-uploads.zip')) {
+        WP_CLI::error('Could not compress File Uploads archive.');
+      }
+      WP_CLI::success('File Uploads directory backed up.');
+    }
+
+  }
+
+  /**
+   * Checks for a CiviCRM version or matching localization archive.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the version to check. Accepts a version number, 'stable', 'rc' or 'nightly'.
+   *
+   * [--l10n]
+   * : Get the localization file data for the specified version.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - url
+   *   - version
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Check for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | Package   | Version | Package URL                                                                               |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | WordPress | 5.17.2  | https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-wordpress.zip |
+   *     | L10n      | 5.17.2  | https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-l10n.tar.gz   |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *
+   *     # Get the URL for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2 --format=url
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-wordpress.zip
+   *
+   *     # Get the URL for a stable version of the CiviCRM localisation archive
+   *     $ wp civicrm core check-version --version=5.17.2 --format=url --l10n
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-l10n.tar.gz
+   *
+   *     # Get the JSON-formatted data for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2 --format=json
+   *     {"version":"5.17.2","tar":{"L10n":"civicrm-stable\/5.17.2\/civicrm-5.17.2-l10n.tar.gz","WordPress":"civicrm-stable\/5.17.2\/civicrm-5.17.2-wordpress.zip"}}
+   *
+   *     # Get the latest nightly version of CiviCRM
+   *     $ wp civicrm core check-version --version=nightly --format=version
+   *     5.59.alpha1
+   *
+   * @subcommand check-version
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function check_version($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Pass to "check-update" for "stable", "rc" or "nightly".
+    if (in_array($version, ['stable', 'rc', 'nightly'])) {
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'civicrm core check-update --version=' . $version . ' --format=' . $format . (empty($l10n) ? '' : ' --l10n');
+      WP_CLI::runcommand($command, $options);
+      return;
+    }
+
+    // Check for valid release.
+    $versions = $this->releases_get();
+    if (!in_array($version, $versions)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Version %Y%s%n is not a valid CiviCRM version.'), $version));
+    }
+
+    // Get the release data.
+    $data = $this->release_data_get($version);
+
+    switch ($format) {
+
+      // URL-only output.
+      case 'url':
+        if ($l10n) {
+          echo $this->google_download_url . $data['L10n'] . "\n";
+        }
+        else {
+          echo $this->google_download_url . $data['WordPress'] . "\n";
+        }
+        break;
+
+      // Version-only output.
+      case 'version':
+        echo $version . "\n";
+        break;
+
+      // Display output as json.
+      case 'json':
+        // Use a similar format to the Version Check API.
+        $info = [
+          'version' => $version,
+          'tar' => $data,
+        ];
+        $json = json_encode($info);
+        if (JSON_ERROR_NONE !== json_last_error()) {
+          WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+        }
+        echo $json . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Package', 'Version', 'Package URL'];
+        $rows[] = [
+          'Package' => 'WordPress',
+          'Version' => $version,
+          'Package URL' => $this->google_download_url . $data['WordPress'],
+        ];
+        $rows[] = [
+          'Package'  => 'L10n',
+          'Version' => $version,
+          'Package URL' => $this->google_download_url . $data['L10n'],
+        ];
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  /**
+   * Checks for CiviCRM updates via Version Check API.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the version to get.
+   * ---
+   * default: stable
+   * options:
+   *   - nightly
+   *   - rc
+   *   - stable
+   * ---
+   *
+   * [--l10n]
+   * : Get the localization file data for the specified version.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - url
+   *   - version
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Check for the latest stable version of CiviCRM
+   *     $ wp civicrm core check-update
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | Package   | Version | Package URL                                                                               |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+   *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *
+   *     # Get the URL for the latest stable version of CiviCRM core
+   *     $ wp civicrm core check-update --format=url
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip
+   *
+   *     # Get the URL for the latest stable version of CiviCRM localisation archive
+   *     $ wp civicrm core check-update --format=url --l10n
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz
+   *
+   *     # Get the complete JSON-formatted data for the latest RC version of CiviCRM core
+   *     $ wp civicrm core check-update --version=rc --format=json
+   *     {"version":"5.58.beta1","rev":"5.58.beta1-202301260741" [...] "pretty":"Thu, 26 Jan 2023 07:41:00 +0000"}}
+   *
+   * @subcommand check-update
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function check_update($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Look up the data.
+    $url = $this->upgrade_url . '?stability=' . $version;
+    $response = $this->http_get_response($url);
+
+    // Try and decode response.
+    $lookup = json_decode($response, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %Y%s.%n'), json_last_error_msg()));
+    }
+
+    // Sanity checks.
+    if (empty($lookup)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Version not found at: %Y%s%n'), $url));
+    }
+    if (empty($lookup['tar']['WordPress'])) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('No WordPress version found at: %Y%s%n'), $url));
+    }
+
+    switch ($format) {
+
+      // URL-only output.
+      case 'url':
+        if ($l10n) {
+          echo $lookup['tar']['L10n'] . "\n";
+        }
+        else {
+          echo $lookup['tar']['WordPress'] . "\n";
+        }
+        break;
+
+      // Version-only output.
+      case 'version':
+        echo $lookup['version'] . "\n";
+        break;
+
+      // Display output as json.
+      case 'json':
+        echo $response . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Package', 'Version', 'Package URL'];
+        $rows[] = [
+          'Package' => 'WordPress',
+          'Version' => $lookup['version'],
+          'Package URL' => $lookup['tar']['WordPress'],
+        ];
+        $rows[] = [
+          'Package' => 'L10n',
+          'Version' => $lookup['version'],
+          'Package URL' => $lookup['tar']['L10n'],
+        ];
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  /**
+   * Downloads CiviCRM core files or localization files.
+   *
+   * Downloads and extracts CiviCRM core files or localization files to the
+   * specified path. Uses the local temp directory when no path is specified.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--l10n]
+   * : Get the localization file for the specified version.
+   *
+   * [--destination=<destination>]
+   * : Specify the absolute path to put the archive file. Defaults to local temp directory.
+   *
+   * [--insecure]
+   * : Retry without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
+   *
+   * [--extract]
+   * : Whether to extract the downloaded file. Defaults to false.
+   *
+   * ## EXAMPLES
+   *
+   *     # Download the latest stable CiviCRM core archive.
+   *     $ wp civicrm core download
+   *     Checking file to download...
+   *     Downloading file...
+   *     Success: CiviCRM downloaded to /tmp/
+   *
+   *     # Download and extract a stable CiviCRM core archive to a directory.
+   *     $ wp civicrm core download --version=5.17.2 --extract --destination=/some/path
+   *     Checking file to download...
+   *     Downloading file...
+   *     Extracting zip archive...
+   *     Success: CiviCRM downloaded and extracted to: /some/path/
+   *
+   *     # Quietly download a stable CiviCRM core archive.
+   *     $ wp civicrm core download --version=5.17.2 --quiet
+   *     /tmp/civicrm-5.17.2-wordpress.zip
+   *
+   *     # Download and extract a stable CiviCRM localization archive to a directory.
+   *     $ wp civicrm core download --version=5.17.2 --l10n --extract --destination=/some/path
+   *     Checking file to download...
+   *     Downloading file...
+   *     Extracting tar.gz archive...
+   *     Success: CiviCRM localization downloaded and extracted to: /some/path/
+   *
+   *     # Quietly download a stable CiviCRM localization archive.
+   *     $ wp civicrm core download --version=5.17.2 --l10n --quiet
+   *     /tmp/civicrm-5.17.2-l10n.tar.gz
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function download($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $download_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'destination', \WP_CLI\Utils\get_temp_dir());
+    $insecure = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'insecure', FALSE);
+    $extract = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'extract', FALSE);
+
+    // Maybe create destination directory.
+    if (!is_dir($download_dir)) {
+      if (!is_writable(dirname($download_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$download_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$download_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($download_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$download_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($download_dir)) {
+      WP_CLI::error("'{$download_dir}' is not writable by current user.");
+    }
+
+    // Use "wp civicrm core check-version" to find out which file to download.
+    WP_CLI::log(WP_CLI::colorize('%GChecking' . (empty($l10n) ? '' : ' localization') . ' file to download...%n'));
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $command = 'civicrm core check-version --version=' . $version . ' --format=url' . (empty($l10n) ? '' : ' --l10n');
+    $url = WP_CLI::runcommand($command, $options);
+
+    // Configure the download.
+    $headers = [];
+    $options = [
+      'insecure' => (bool) $insecure,
+    ];
+
+    // Do the download now.
+    WP_CLI::log(WP_CLI::colorize('%GDownloading file...%n'));
+    $archive = $this->file_download($url, $download_dir, $headers, $options);
+
+    // Stop early if not extracting.
+    if (empty($extract)) {
+      if (empty($l10n)) {
+        WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM downloaded to: %Y%s%n'), $download_dir));
+      }
+      else {
+        WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization downloaded to: %Y%s%n'), $download_dir));
+      }
+      if (!empty(WP_CLI::get_config('quiet'))) {
+        echo $archive . "\n";
+      }
+      WP_CLI::halt(0);
+    }
+
+    // Extract the download.
+    if (empty($l10n)) {
+      if (!$this->unzip($archive, $download_dir)) {
+        WP_CLI::error('Could not extract zipfile.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM downloaded and extracted to: %Y%s%n'), $download_dir));
+    }
+    else {
+      if (!$this->untar($archive, $download_dir)) {
+        WP_CLI::error('Could not extract tarfile.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization downloaded and extracted to: %Y%s%n'), $download_dir));
+    }
+
+  }
+
+  /**
+   * Install the CiviCRM plugin.
+   *
+   * This command obviously can't be used until the CiviCRM plugin has been installed.
+   * It is included here for completeness and in preparation for creating a package.
+   * If you want to use this command, you can install the CLI Tools for CiviCRM plugin
+   * so that no conflicts occur when you call it.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--l10n]
+   * : Additionally install the localization files for the specified version.
+   *
+   * [--l10n-tarfile=<l10n-tarfile>]
+   * : Path to your l10n tar.gz file. If specified --l10n is ignored.
+   *
+   * [--force]
+   * : If set, the command will overwrite any installed version of the plugin, without prompting for confirmation.
+   *
+   * ## EXAMPLES
+   *
+   *     # Install the current stable version of CiviCRM.
+   *     $ wp civicrm core install
+   *     Success: Installed 1 of 1 plugins.
+   *
+   *     # Install the current stable version of CiviCRM with localization files.
+   *     $ wp civicrm core install --l10n
+   *     Success: Installed 1 of 1 plugins.
+   *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+   *
+   *     # Install a specific version of CiviCRM.
+   *     $ wp civicrm core install --version=5.56.2
+   *     Success: Installed 1 of 1 plugins.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function install($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $l10n = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', '');
+    $l10n_tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+    $force = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'force', FALSE);
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Only install plugin if not already installed.
+    $fetcher = new \WP_CLI\Fetchers\Plugin();
+    $installed = $fetcher->get('civicrm');
+    if (!$installed || !empty($force)) {
+
+      // When no zipfile is specified.
+      if (!empty($version) && empty($zipfile)) {
+
+        // Use "wp civicrm core check-version" to find out which file to download.
+        WP_CLI::log(WP_CLI::colorize('%GChecking plugin file to download...%n'));
+        $options = ['launch' => FALSE, 'return' => TRUE];
+        $command = 'civicrm core check-version --version=' . $version . ' --format=url';
+        $url = WP_CLI::runcommand($command, $options);
+
+        // Use "wp plugin install" to install CiviCRM core.
+        $options = ['launch' => FALSE, 'return' => FALSE];
+        $command = 'plugin install ' . $url . (empty($force) ? '' : ' --force');
+        WP_CLI::runcommand($command, $options);
+
+      }
+      elseif (!empty($zipfile)) {
+
+        // Default extraction options.
+        $extract_options = [
+          'clear_destination' => FALSE,
+          'clear_working' => FALSE,
+        ];
+
+        // If forcing, overwrite existing CiviCRM plugin directory.
+        if (!empty($force)) {
+          $extract_options['clear_destination'] = TRUE;
+        }
+
+        // Let's do it.
+        $this->zip_extract($zipfile, $plugin_path, $extract_options);
+
+      }
+
+    }
+    elseif (empty($l10n) && empty($l10n_tarfile)) {
+
+      // Bail when plugin is installed and no localization archive is specified.
+      WP_CLI::error('CiviCRM is already installed.');
+
+    }
+
+    // When localization is wanted but no archive is specified.
+    if (!empty($l10n) && empty($l10n_tarfile)) {
+
+      // Use "wp civicrm core check-version" to find out which file to download.
+      $options = ['launch' => FALSE, 'return' => TRUE];
+      $command = 'civicrm core check-version --version=' . $version . ' --l10n --format=url';
+      $url = WP_CLI::runcommand($command, $options);
+
+      // Use "wp civicrm core download" to download and extract.
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'civicrm core download --version=' . $version . ' --l10n --extract --destination=' . $plugin_path;
+      WP_CLI::runcommand($command, $options);
+
+    }
+    elseif (!empty($l10n_tarfile)) {
+
+      // Extract localization archive to plugin directory.
+      WP_CLI::log(sprintf(WP_CLI::colorize('Extracting localization archive to: %y%s%n'), $plugin_path));
+      if (!$this->untar($l10n_tarfile, $plugin_path)) {
+        WP_CLI::error('Could not extract localization archive.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization files extracted to: %Y%s%n'), $plugin_path));
+
+    }
+
+  }
+
+  /**
+   * Restore the CiviCRM plugin files and database from a backup created with `wp civicrm backup`.
+   *
+   * ## OPTIONS
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--also-include=<also-include>]
+   * : Comma separated list of additional tables to restore based on wildcard search. Ensures existing tables are cleared.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Standard restore.
+   *     $ wp civicrm core restore
+   *     Gathering system information.
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Field                  | Value                                                                 |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Backup directory       | /example.com/civicrm-backup                                           |
+   *     | Plugin path            | /example.com/httpdocs/wp-content/plugins/civicrm/                     |
+   *     | Database name          | civicrm_db                                                            |
+   *     | Database username      | dbuser                                                                |
+   *     | Database password      | dbpassword                                                            |
+   *     | Database host          | localhost                                                             |
+   *     | Settings file          | /example.com/httpdocs/wp-content/uploads/civicrm/civicrm.settings.php |
+   *     | Config and Log         | /example.com/httpdocs/wp-content/uploads/civicrm/ConfigAndLog/        |
+   *     | Custom PHP             | Not found                                                             |
+   *     | Custom templates       | Not found                                                             |
+   *     | Compiled templates     | /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/         |
+   *     | Extensions directory   | /example.com/httpdocs/wp-content/uploads/civicrm/ext/                 |
+   *     | Uploads directory      | /example.com/httpdocs/wp-content/uploads/civicrm/upload/              |
+   *     | Image upload directory | /example.com/httpdocs/wp-content/uploads/civicrm/persist/contribute/  |
+   *     | File upload directory  | /example.com/httpdocs/wp-content/uploads/civicrm/custom/              |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     Do you want to continue? [y/n] y
+   *
+   *     # Also restore tables not registered with CiviCRM.
+   *     # In this case, also correctly restores tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm core restore --also-include='cdntaxreceipts_*'
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function restore($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $backup_dir = \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', trailingslashit(dirname(ABSPATH)) . 'civicrm-backup');
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    $config = CRM_Core_Config::singleton();
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($backup_dir)) {
+      $feedback['Backup directory'] = $backup_dir;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    else {
+      $feedback['Plugin path'] = 'Not found';
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+    else {
+      $feedback['Database Settings'] = 'Not found';
+    }
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      $feedback['Settings file'] = CIVICRM_SETTINGS_PATH;
+    }
+    else {
+      $feedback['Settings file'] = 'Not found';
+    }
+    if (!empty($config->configAndLogDir)) {
+      $feedback['Config and Log'] = $config->configAndLogDir;
+    }
+    else {
+      $feedback['Config and Log'] = 'Not found';
+    }
+    if (!empty($config->customPHPPathDir)) {
+      $feedback['Custom PHP'] = $config->customPHPPathDir;
+    }
+    else {
+      $feedback['Custom PHP'] = 'Not found';
+    }
+    if (!empty($config->customTemplateDir)) {
+      $feedback['Custom templates'] = $config->customTemplateDir;
+    }
+    else {
+      $feedback['Custom templates'] = 'Not found';
+    }
+    if (!empty($config->templateCompileDir)) {
+      $feedback['Compiled templates'] = $config->templateCompileDir;
+    }
+    else {
+      $feedback['Compiled templates'] = 'Not found';
+    }
+    if (!empty($config->extensionsDir)) {
+      $feedback['Extensions directory'] = $config->extensionsDir;
+    }
+    else {
+      $feedback['Extensions directory'] = 'Not found';
+    }
+    if (!empty($config->uploadDir)) {
+      $feedback['Uploads directory'] = $config->uploadDir;
+    }
+    else {
+      $feedback['Uploads directory'] = 'Not found';
+    }
+    if (!empty($config->imageUploadDir)) {
+      $feedback['Image upload directory'] = $config->imageUploadDir;
+    }
+    else {
+      $feedback['Image upload directory'] = 'Not found';
+    }
+    if (!empty($config->customFileUploadDir)) {
+      $feedback['File upload directory'] = $config->customFileUploadDir;
+    }
+    else {
+      $feedback['File upload directory'] = 'Not found';
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // Ensure there's no trailing slash.
+    $backup_dir = untrailingslashit($backup_dir);
+
+    // ----------------------------------------------------------------------------
+    // Restore procedure.
+    // ----------------------------------------------------------------------------
+
+    // Restore File Uploads directory.
+    if (!empty($config->customFileUploadDir) && file_exists($backup_dir . '/civicrm-file-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring File Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-file-uploads.zip';
+      $destination = untrailingslashit($config->customFileUploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('File Uploads directory restored.');
+    }
+
+    // Restore Image upload directory.
+    if (!empty($config->imageUploadDir) && file_exists($backup_dir . '/civicrm-image-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Image Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-image-uploads.zip';
+      $destination = untrailingslashit($config->imageUploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Image Uploads directory restored.');
+    }
+
+    // Restore Uploads directory.
+    if (!empty($config->uploadDir) && file_exists($backup_dir . '/civicrm-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-uploads.zip';
+      $destination = untrailingslashit($config->uploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Uploads directory restored.');
+    }
+
+    // Restore Extensions directory.
+    if (!empty($config->extensionsDir) && file_exists($backup_dir . '/civicrm-extensions.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Extensions directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-extensions.zip';
+      $destination = untrailingslashit($config->extensionsDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Extensions directory restored.');
+    }
+
+    // Restore Compiled templates directory.
+    if (!empty($config->templateCompileDir) && file_exists($backup_dir . '/civicrm-compiled-templates.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Compiled Templates directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-compiled-templates.zip';
+      $destination = untrailingslashit($config->templateCompileDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Compiled Templates directory restored.');
+    }
+
+    // Restore Custom templates directory.
+    if (!empty($config->customTemplateDir) && file_exists($backup_dir . '/civicrm-custom-templates.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Custom Templates directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-custom-templates.zip';
+      $destination = untrailingslashit($config->customTemplateDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Custom Templates directory restored.');
+    }
+
+    // Restore Custom PHP directory.
+    if (!empty($config->customPHPPathDir) && file_exists($backup_dir . '/civicrm-custom-php.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Custom PHP directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-custom-php.zip';
+      $destination = untrailingslashit($config->customPHPPathDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Custom PHP directory restored.');
+    }
+
+    // Restore Config and Log directory.
+    if (!empty($config->configAndLogDir) && file_exists($backup_dir . '/civicrm-config-log.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Config and Log directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-config-log.zip';
+      $destination = untrailingslashit($config->configAndLogDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Config and Log directory restored.');
+    }
+
+    // Restore "civicrm.settings.php" file.
+    if (defined('CIVICRM_SETTINGS_PATH') && file_exists($backup_dir . '/civicrm.settings.php')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Settings File...%n'));
+      $source_path = $backup_dir . '/civicrm.settings.php';
+      if (file_exists(CIVICRM_SETTINGS_PATH) && is_writable(CIVICRM_SETTINGS_PATH)) {
+        copy(CIVICRM_SETTINGS_PATH, $source_path);
+      }
+      elseif (!file_exists(CIVICRM_SETTINGS_PATH)) {
+        copy($source_path, CIVICRM_SETTINGS_PATH);
+      }
+      else {
+        WP_CLI::error("Could not restore '" . CIVICRM_SETTINGS_PATH . "' from backup directory.");
+      }
+      WP_CLI::success('Settings File restored.');
+    }
+
+    // Use "wp plugin install" to restore plugin directory.
+    if (file_exists($backup_dir . '/civicrm.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring plugin directory...%n'));
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'plugin install ' . $backup_dir . '/civicrm.zip --force';
+      WP_CLI::runcommand($command, $options);
+      WP_CLI::success('Plugin directory restored.');
+    }
+
+    // Use "wp civicrm db clear" and "wp civicrm db import" to restore database.
+    if (defined('CIVICRM_DSN') && file_exists($backup_dir . '/civicrm-db.sql')) {
+
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring database...%n'));
+
+      // Maybe add extra filters.
+      $also_include_args = '';
+      if (!empty($also_include)) {
+        $also_include_args = " --also-include={$also_include}";
+      }
+
+      // Clear existing tables.
+      $command = 'civicrm db clear' . $also_include_args;
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      WP_CLI::runcommand($command, $options);
+
+      // Load backup tables.
+      $command = 'civicrm db import --load-file=' . $backup_dir . '/civicrm-db.sql';
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      WP_CLI::runcommand($command, $options);
+
+      WP_CLI::success('Database restored.');
+
+    }
+
+  }
+
+  /**
+   * Upgrade the CiviCRM plugin files and database.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--l10n]
+   * : Additionally install the localization files for the specified version.
+   *
+   * [--l10n-tarfile=<l10n-tarfile>]
+   * : Path to your l10n tar.gz file. If specified --l10n is ignored.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Update to the current stable version of CiviCRM.
+   *     $ wp civicrm core update
+   *     Success: Installed 1 of 1 plugins.
+   *
+   * @alias upgrade
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $l10n = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', '');
+    $l10n_tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    global $civicrm_root;
+    $config = CRM_Core_Config::singleton();
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($zipfile)) {
+      $feedback['Plugin zip archive'] = $zipfile;
+    }
+    if (!empty($version) && empty($zipfile)) {
+      $feedback['Requested version'] = $version;
+      $options = ['launch' => FALSE, 'return' => TRUE];
+      $command = 'civicrm core check-version --version=' . $version . ' --format=url';
+      $archive = WP_CLI::runcommand($command, $options);
+      // Maybe strip all the Google authentication stuff if present.
+      if (FALSE !== strpos($archive, '?')) {
+        $arr = explode('?', $archive);
+        $archive = $arr[0];
+      }
+      $feedback['Requested archive'] = $archive;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    if (!empty($civicrm_root)) {
+      $feedback['CiviCRM root'] = $civicrm_root;
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Start upgrade.
+    // ----------------------------------------------------------------------------
+
+    // Enable Maintenance Mode.
+    //WP_CLI::runcommand('maintenance-mode activate', ['launch' => FALSE, 'return' => FALSE]);
+
+    // Build install command.
+    $command = 'civicrm core install' .
+      (empty($version) ? '' : ' --version=' . $version) .
+      (empty($zipfile) ? '' : ' --zipfile=' . $zipfile) .
+      (empty($l10n) ? '' : ' --l10n') .
+      (empty($langtarfile) ? '' : ' --l10n-tarfile=' . $langtarfile) .
+      ' --force';
+
+    // Run "wp civicrm core install".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Disable Maintenance Mode.
+    //WP_CLI::runcommand('maintenance-mode deactivate', ['launch' => FALSE, 'return' => FALSE]);
+
+  }
+
+  /**
+   * Upgrade the CiviCRM database schema.
+   *
+   * ## OPTIONS
+   *
+   * [--dry-run]
+   * : Preview the list of upgrade tasks.
+   *
+   * [--retry]
+   * : Resume a failed upgrade, retrying the last step.
+   *
+   * [--skip]
+   * : Resume a failed upgrade, skipping the last step.
+   *
+   * [--step]
+   * : Run the upgrade queue in steps, pausing before each step.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--vvv]
+   * : An alias of --vv for old timers more used to cv syntax.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation messages. Does not apply to step messages.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm core update-db --dry-run --v
+   *     Found CiviCRM code version: 5.57.1
+   *     Found CiviCRM database version: 5.57.0
+   *     Checking pre-upgrade messages.
+   *     (No messages)
+   *     Dropping SQL triggers.
+   *     Preparing upgrade.
+   *     Executing upgrade.
+   *     Cleanup old files
+   *     Cleanup old upgrade snapshots
+   *     Checking extensions
+   *     Finish Upgrade DB to 5.57.1
+   *     Update all reserved message templates
+   *     Finish core DB updates 5.57.1
+   *     Assess extension upgrades
+   *     Generate final messages
+   *     Finishing upgrade.
+   *     Upgrade to 5.57.1 completed.
+   *     Checking post-upgrade messages.
+   *     (No messages)
+   *     Have a nice day.
+   *
+   * @subcommand update-db
+   *
+   * @alias upgrade-db
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update_db($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
+      define('CIVICRM_UPGRADE_ACTIVE', 1);
+    }
+
+    // Check whether an upgrade is necessary.
+    $code_version = CRM_Utils_System::version();
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GFound CiviCRM code version:%n %Y%s%n'), $code_version));
+    $db_version = CRM_Core_BAO_Domain::version();
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GFound CiviCRM database version:%n %Y%s%n'), $db_version));
+    if (version_compare($code_version, $db_version) === 0) {
+      WP_CLI::success(sprintf('You are already upgraded to CiviCRM %s', $code_version));
+      WP_CLI::halt(0);
+    }
+
+    // Get flags.
+    $dry_run = \WP_CLI\Utils\get_flag_value($assoc_args, 'dry-run', FALSE);
+    $retry = \WP_CLI\Utils\get_flag_value($assoc_args, 'retry', FALSE);
+    $skip = \WP_CLI\Utils\get_flag_value($assoc_args, 'skip', FALSE);
+    $step = \WP_CLI\Utils\get_flag_value($assoc_args, 'step', FALSE);
+    $first_try = (empty($retry) && empty($skip)) ? TRUE : FALSE;
+
+    // Get verbosity.
+    $verbose = \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $verbose_extra = \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $verbose_old_skool = \WP_CLI\Utils\get_flag_value($assoc_args, 'vvv', FALSE);
+    if (!empty($verbose_old_skool)) {
+      $verbose_extra = TRUE;
+    }
+
+    // When stepping, we need at least "verbose".
+    if (!empty($step)) {
+      if (empty($verbose_extra) && empty($verbose)) {
+        $verbose = TRUE;
+      }
+    }
+
+    // Bail if incomplete upgrade.
+    if ($first_try && FALSE !== stripos($db_version, 'upgrade')) {
+      WP_CLI::error('Cannot begin upgrade: The database indicates that an incomplete upgrade is pending. If you would like to resume, use --retry or --skip.');
+    }
+
+    // Bootstrap upgrader.
+    $upgrade = new CRM_Upgrade_Form();
+    $error = $upgrade->checkUpgradeableVersion($db_version, $code_version);
+    if (!empty($error)) {
+      WP_CLI::error($error);
+    }
+
+    // Check pre-upgrade messages.
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gChecking pre-upgrade messages.%n'));
+      $preUpgradeMessage = NULL;
+      $upgrade->setPreUpgradeMessage($preUpgradeMessage, $db_version, $code_version);
+      if ($preUpgradeMessage) {
+        WP_CLI::log(CRM_Utils_String::htmlToText($preUpgradeMessage));
+        WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+      }
+      else {
+        WP_CLI::log('(No messages)');
+      }
+    }
+
+    // Why is dropTriggers() hard-coded? Can't we just enqueue this as part of buildQueue()?
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gDropping SQL triggers.%n'));
+      if (empty($dry_run)) {
+        CRM_Core_DAO::dropTriggers();
+      }
+    }
+
+    // Let's create a file for storing upgrade messages.
+    $post_upgrade_message_file = CRM_Utils_File::tempnam('civicrm-post-upgrade');
+
+    // Build the queue.
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gPreparing upgrade.%n'));
+      $queue = CRM_Upgrade_Form::buildQueue($db_version, $code_version, $post_upgrade_message_file);
+      // Sanity check - only SQL queues can be resumed.
+      if (!($queue instanceof CRM_Queue_Queue_Sql)) {
+        WP_CLI::error('The "upgrade-db" command only supports SQL-based queues.');
+      }
+    }
+    else {
+      WP_CLI::log(WP_CLI::colorize('%Resuming upgrade.%n'));
+      $queue = CRM_Queue_Service::singleton()->load([
+        'name' => CRM_Upgrade_Form::QUEUE_NAME,
+        'type' => 'Sql',
+      ]);
+      if ($skip) {
+        $item = $queue->stealItem();
+        if (!empty($item->data->title)) {
+          WP_CLI::log(sprintf('Skip task: %s', $item->data->title));
+          $queue->deleteItem($item);
+        }
+      }
+    }
+
+    // Start the upgrade.
+    WP_CLI::log(WP_CLI::colorize('%gExecuting upgrade.%n'));
+    set_time_limit(0);
+
+    // Mimic what "Console Queue Runner" does.
+    $task_context = new CRM_Queue_TaskContext();
+    $task_context->queue = $queue;
+
+    // Maybe suppress Task Context logger output.
+    if (empty($verbose_extra) && empty($verbose)) {
+      if (!class_exists('CLI_Tools_CiviCRM_Logger_Dummy')) {
+        require_once __DIR__ . '/utilities/class-logger-dummy.php';
+      }
+      $task_context->log = new CLI_Tools_CiviCRM_Logger_Dummy();
+    }
+    else {
+      $task_context->log = \Log::singleton('display');
+    }
+
+    while ($queue->numberOfItems()) {
+
+      // In case we're retrying a failed job.
+      $item = $queue->stealItem();
+      $task = $item->data;
+
+      // Feedback.
+      if (!empty($verbose_extra)) {
+        $feedback = self::task_callback_format($task);
+        WP_CLI::log(WP_CLI::colorize('%g' . $task->title . '%n') . ' ' . WP_CLI::colorize($feedback));
+      }
+      elseif (!empty($verbose)) {
+        WP_CLI::log(WP_CLI::colorize('%g' . $task->title . '%n'));
+      }
+      else {
+        echo '.';
+      }
+
+      // Get action.
+      $action = 'y';
+      if (!empty($step)) {
+        fwrite(STDOUT, 'Execute this step? [ y=yes / s=skip / a=abort ] ');
+        $action = strtolower(trim(fgets(STDIN)));
+      }
+
+      // Bail if skip action is "abort".
+      if ($action === 'a') {
+        WP_CLI::halt(1);
+      }
+
+      // Run the task when action is "yes".
+      if ($action === 'y' && empty($dry_run)) {
+        try {
+          $success = $task->run($task_context);
+          if (!$success) {
+            WP_CLI::error('Task returned false');
+          }
+        }
+        catch (\Exception $e) {
+          // WISHLIST: For interactive mode, perhaps allow retry/skip?
+          WP_CLI::log(sprintf(WP_CLI::colorize('%RError executing task%n %Y"%s"%n'), $task->title));
+          WP_CLI::log('');
+          WP_CLI::log(WP_CLI::colorize('%RError message:%n'));
+          WP_CLI::log(sprintf(WP_CLI::colorize('%r%s%n'), $e->getMessage()));
+          WP_CLI::log('');
+          WP_CLI::log(WP_CLI::colorize('%RStack trace:%n'));
+          WP_CLI::log(sprintf(WP_CLI::colorize('%r%s%n'), $e->getTraceAsString()));
+          WP_CLI::log('');
+          WP_CLI::error('Could not complete database update.');
+        }
+      }
+
+      $queue->deleteItem($item);
+
+    }
+
+    // End feedback.
+    if (empty($verbose_extra) && empty($verbose)) {
+      echo "\n";
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%gFinishing upgrade.%n'));
+    if (empty($dry_run)) {
+      CRM_Upgrade_Form::doFinish();
+    }
+
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GUpgrade to%n %Y%s%n %Gcompleted.%n'), $code_version));
+
+    if (version_compare($code_version, '5.26.alpha', '<')) {
+      // Work-around for bugs like dev/core#1713.
+      WP_CLI::log(WP_CLI::colorize('%GDetected CiviCRM 5.25 or earlier. Force flush.%n'));
+      if (empty($dry_run)) {
+        \Civi\Cv\Util\Cv::passthru('flush');
+      }
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GChecking post-upgrade messages.%n'));
+    $message = file_get_contents($post_upgrade_message_file);
+    if ($message) {
+      WP_CLI::log(CRM_Utils_String::htmlToText($message));
+    }
+    else {
+      WP_CLI::log('(No messages)');
+    }
+
+    // Remove file for storing upgrade messages.
+    unlink($post_upgrade_message_file);
+
+    WP_CLI::log(WP_CLI::colorize('%GHave a nice day.%n'));
+
+  }
+
+  /**
+   * Reset paths to correct config settings.
+   *
+   * This command can be useful when the CiviCRM site has been cloned or migrated.
+   *
+   * The old version of this command tried to preserve webserver ownership of "templates_c"
+   * and "civicrm/upload" because (when running this command as something other than the
+   * web-user) `doSiteMove` clears and recreates these directories. The check took place
+   * *after* `doSiteMove` had run, however, so would only report back the current user and
+   * group ownership.
+   *
+   * If you run this command as something other than the web-user, it's up to you to assign
+   * correct user and group permissions for these directories.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm core update-cfg
+   *     Beginning site move process...
+   *     Template cache and upload directory have been cleared.
+   *     Database cache tables cleared.
+   *     Session has been reset.
+   *     Please make sure the following directories have the correct permissions:
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/upload/
+   *     Success: Config successfully updated.
+   *
+   * @subcommand update-cfg
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update_cfg($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Do site move.
+    $result = CRM_Core_BAO_ConfigSetting::doSiteMove();
+
+    // Bail on error.
+    if (empty($result)) {
+      WP_CLI::error('Config update failed.');
+    }
+
+    // Result is HTML, so format and show.
+    $results = explode('<br />', $result);
+    foreach ($results as $result) {
+      if (!empty($result)) {
+        WP_CLI::log($result);
+      }
+    }
+
+    // Show permissions reminder.
+    $config = CRM_Core_Config::singleton();
+    WP_CLI::log('Please make sure the following directories have the correct permissions:');
+    if (!empty($config->templateCompileDir)) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%y%s%n'), $config->templateCompileDir));
+    }
+    if (!empty($config->uploadDir)) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%y%s%n'), $config->uploadDir));
+    }
+
+    WP_CLI::success('Config successfully updated.');
+
+  }
+
+  /**
+   * Get the current version of the CiviCRM plugin and database.
+   *
+   * ## OPTIONS
+   *
+   * [--source=<source>]
+   * : Specify the version to get.
+   * ---
+   * default: all
+   * options:
+   *   - all
+   *   - plugin
+   *   - db
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - number
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Get all CiviCRM version information.
+   *     $ wp civicrm core version
+   *     +----------+---------+
+   *     | Source   | Version |
+   *     +----------+---------+
+   *     | Plugin   | 5.57.1  |
+   *     | Database | 5.46.3  |
+   *     +----------+---------+
+   *
+   *     # Get just the CiviCRM database version number.
+   *     $ wp civicrm core version --source=db --format=number
+   *     5.46.3
+   *
+   *     # Get just the CiviCRM plugin version number.
+   *     $ wp civicrm core version --source=plugin --format=number
+   *     5.57.1
+   *
+   *     # Get all CiviCRM version information as JSON-formatted data.
+   *     $ wp civicrm core version --format=json
+   *     {"plugin":"5.57.1","db":"5.46.3"}
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function version($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $source = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'source', 'all');
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Get the data we want.
+    $plugin_version = CRM_Utils_System::version();
+    $db_version = CRM_Core_BAO_Domain::version();
+
+    switch ($format) {
+
+      // Version number-only output.
+      case 'number':
+        if (!in_array($source, ['db', 'plugin'])) {
+          WP_CLI::error(WP_CLI::colorize('You must specify %Y--source=plugin%n or %Y--source=db%n to use this output format.'));
+        }
+        if ('plugin' === $source) {
+          echo $plugin_version . "\n";
+        }
+        if ('db' === $source) {
+          echo $db_version . "\n";
+        }
+        break;
+
+      // Display output as json.
+      case 'json':
+        $info = [];
+        if (in_array($source, ['all', 'plugin'])) {
+          $info['plugin'] = $plugin_version;
+        }
+        if (in_array($source, ['all', 'db'])) {
+          $info['db'] = $db_version;
+        }
+        $json = json_encode($info);
+        if (JSON_ERROR_NONE !== json_last_error()) {
+          WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+        }
+        echo $json . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Source', 'Version'];
+        if (in_array($source, ['all', 'plugin'])) {
+          $rows[] = [
+            'Source' => 'Plugin',
+            'Version' => $plugin_version,
+          ];
+        }
+        if (in_array($source, ['all', 'db'])) {
+          $rows[] = [
+            'Source' => 'Database',
+            'Version' => $db_version,
+          ];
+        }
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Determine what action to take to resolve a conflict.
+   *
+   * @since 5.69
+   *
+   * @param string $title The thing which had a conflict.
+   * @return string One of 'abort', 'keep' or 'overwrite'.
+   */
+  private function conflict_action_pick($title) {
+
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GThe%n %Y%s%n %Galready exists.%n'), $title));
+    WP_CLI::log(WP_CLI::colorize('%G[a]%n %gAbort. (Default.)%n'));
+    WP_CLI::log(sprintf(WP_CLI::colorize('%G[k]%n %gKeep existing%n %y%s%n%g.%n %r(%n%RWARNING:%n %rThis may fail if the existing version is out-of-date.)%n'), $title));
+    WP_CLI::log(sprintf(WP_CLI::colorize('%G[o]%n %gOverwrite with new%n %y%s%g.%n %r(%n%RWARNING:%n %rThis may destroy data.)%n'), $title));
+
+    fwrite(STDOUT, WP_CLI::colorize('%GWhat you like to do?%n '));
+    $action = strtolower(trim(fgets(STDIN)));
+    switch ($action) {
+      case 'k':
+        return 'keep';
+
+      case 'o':
+        return 'overwrite';
+
+      case 'a':
+      default:
+        return 'abort';
+    }
+
+  }
+
+  /**
+   * Recursively implode an array.
+   *
+   * @since 5.69
+   *
+   * @param array $value The array to implode.
+   * @param integer $level The current level.
+   * @return string
+   */
+  private static function implode_recursive($value, $level = 0) {
+
+    // Maybe recurse.
+    $array = [];
+    if (is_array($value)) {
+      foreach ($value as $val) {
+        if (is_array($val)) {
+          $array[] = self::implode_recursive($val, $level + 1);
+        }
+        else {
+          $array[] = $val;
+        }
+      }
+    }
+    else {
+      $array[] = $value;
+    }
+
+    // Wrap sub-arrays but leave top level alone.
+    if ($level > 0) {
+      $string = '[' . implode(',', $array) . ']';
+    }
+    else {
+      $string = implode(',', $array);
+    }
+
+    return $string;
+
+  }
+
+  /**
+   * Gets the array of CiviCRM stable release versions.
+   *
+   * @since 5.69
+   *
+   * @return array The array of CiviCRM stable release versions.
+   */
+  private function releases_get() {
+
+    // Get all release versions.
+    $url = $this->google_url . '&' . $this->google_prefix_stable . '&maxResults=1000';
+    $result = $this->json_get_request($url);
+    if (empty($result['prefixes'])) {
+      return [];
+    }
+
+    // Strip out all but the version.
+    array_walk($result['prefixes'], function(&$item) {
+      $item = trim(str_replace('civicrm-stable/', '', $item));
+      $item = trim(str_replace('/', '', $item));
+    });
+
+    // Sort by version.
+    usort($result['prefixes'], 'version_compare');
+
+    return $result['prefixes'];
+
+  }
+
+  /**
+   * Gets the array of CiviCRM release data.
+   *
+   * @since 5.69
+   *
+   * @param string $release The CiviCRM release.
+   * @return array $data The array of CiviCRM release data.
+   */
+  private function release_data_get($release) {
+
+    // Get the release data.
+    $url = $this->google_url . '&' . $this->google_prefix_stable . $release . '/';
+    $result = $this->json_get_request($url);
+    if (empty($result['items'])) {
+      return [];
+    }
+
+    // Strip out all but the WordPress and l10n data.
+    $data = [];
+    foreach ($result['items'] as $item) {
+      if (!empty($item['name'])) {
+        if (FALSE !== strpos($item['name'], 'wordpress.zip')) {
+          $data['WordPress'] = $item['name'];
+        }
+        if (FALSE !== strpos($item['name'], 'l10n.tar.gz')) {
+          $data['L10n'] = $item['name'];
+        }
+      }
+    }
+
+    return $data;
+
+  }
+
+  /**
+   * Format the task for when run with extra verbosity.
+   *
+   * This method re-builds the task arguments because some of them may themselves be arrays.
+   *
+   * @since 5.69
+   *
+   * @param CRM_Queue_Task $task The CiviCRM task object.
+   * @return string $task The CiviCRM task object.
+   */
+  private static function task_callback_format($task) {
+
+    $callback_info = implode('::', (array) $task->callback);
+    $args_info = self::implode_recursive((array) $task->arguments);
+
+    // Build string with colorization tokens.
+    $feedback = '%y' . $callback_info . '(' . $args_info . '%n)';
+
+    return $feedback;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-db.php b/wp-cli/commands/command-db.php
new file mode 100755
index 0000000000..9c21fb1bb4
--- /dev/null
+++ b/wp-cli/commands/command-db.php
@@ -0,0 +1,1243 @@
+<?php
+/**
+ * Utilities for interacting with the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm db cli
+ *
+ *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+ *     Your MySQL connection id is 180
+ *     Server version: 5.7.34 MySQL Community Server (GPL)
+ *
+ *     mysql>
+ *
+ *     $ wp civicrm db config --format=table
+ *     +----------+----------------+
+ *     | Field    | Value          |
+ *     +----------+----------------+
+ *     | phptype  | mysqli         |
+ *     | dbsyntax | mysqli         |
+ *     | username | db_username    |
+ *     | password | db_password    |
+ *     | protocol | tcp            |
+ *     | hostspec | localhost      |
+ *     | port     | false          |
+ *     | socket   | false          |
+ *     | database | civicrm_dbname |
+ *     | new_link | true           |
+ *     +----------+----------------+
+ *
+ *     $ wp civicrm db query 'select id,name from civicrm_group;'
+ *     +----+---------------------------+
+ *     | id | name                      |
+ *     +----+---------------------------+
+ *     |  1 | Administrators            |
+ *     |  4 | Advisory Board            |
+ *     |  2 | Newsletter Subscribers    |
+ *     |  3 | Summer Program Volunteers |
+ *     +----+---------------------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_DB extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Drop all CiviCRM tables, views, functions and stored procedures from the database.
+   *
+   * ## OPTIONS
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional tables to drop based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Clear all CiviCRM entities from the database.
+   *     $ wp civicrm db clear
+   *     Dropping CiviCRM database tables...
+   *     ...
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also clear tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db clear --also-include='cdntaxreceipts_*'
+   *     Dropping CiviCRM database tables...
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function clear($args, $assoc_args) {
+
+    // Let's give folks a chance to bail.
+    WP_CLI::confirm(WP_CLI::colorize('%GAre you sure you want to all CiviCRM entities from the database?%n'), $assoc_args);
+
+    // Get all CiviCRM database entities.
+    $functions = $this->cividb_functions_get();
+    $procedures = $this->cividb_procedures_get();
+    $tables = $this->cividb_tables_get($assoc_args);
+    $views = $this->cividb_views_get($assoc_args);
+
+    // Get an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 0');
+
+    // Drop all the CiviCRM database tables.
+    if (!empty($tables)) {
+      WP_CLI::log('Dropping CiviCRM database tables...');
+      foreach ($tables as $table) {
+        $query = 'DROP TABLE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($table);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database tables dropped.');
+    }
+
+    // Drop all the the CiviCRM database views.
+    if (!empty($views)) {
+      WP_CLI::log('Dropping CiviCRM database views...');
+      foreach ($views as $view) {
+        $query = 'DROP VIEW IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($view);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database views dropped.');
+    }
+
+    // Drop all the the CiviCRM database functions.
+    if (!empty($functions)) {
+      WP_CLI::log('Dropping CiviCRM database functions...');
+      foreach ($functions as $function) {
+        $query = 'DROP FUNCTION IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($function);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database functions dropped.');
+    }
+
+    // Drop all the the CiviCRM database procedures.
+    if (!empty($procedures)) {
+      WP_CLI::log('Dropping CiviCRM database procedures...');
+      foreach ($procedures as $procedure) {
+        $query = 'DROP PROCEDURE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($procedure);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database procedures dropped.');
+    }
+
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 1');
+
+  }
+
+  /**
+   * Quickly enter the MySQL command line.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db cli
+   *
+   *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+   *     Your MySQL connection id is 180
+   *     Server version: 5.7.34 MySQL Community Server (GPL)
+   *
+   *     mysql>
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function cli($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host' => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user' => $dsn['username'],
+      'pass' => $dsn['password'],
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
+
+  }
+
+  /**
+   * Show the CiviCRM database connection details.
+   *
+   * ## OPTIONS
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - pretty
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db config --format=table
+   *     +----------+----------------+
+   *     | Field    | Value          |
+   *     +----------+----------------+
+   *     | phptype  | mysqli         |
+   *     | dbsyntax | mysqli         |
+   *     | username | db_username    |
+   *     | password | db_password    |
+   *     | protocol | tcp            |
+   *     | hostspec | localhost      |
+   *     | port     | false          |
+   *     | socket   | false          |
+   *     | database | civicrm_dbname |
+   *     | new_link | true           |
+   *     +----------+----------------+
+   *
+   * @alias conf
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function config($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+    switch ($format) {
+
+      // Pretty-print output.
+      case 'pretty':
+        WP_CLI::log(print_r($dsn, TRUE));
+        break;
+
+      // Display output as json.
+      case 'json':
+        WP_CLI::log(json_encode($dsn));
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        $assoc_args['format'] = $format;
+        $assoc_args['fields'] = array_keys($dsn);
+        $formatter = $this->formatter_get($assoc_args);
+        $formatter->display_item($dsn);
+
+    }
+
+  }
+
+  /**
+   * Get a string which connects to the CiviCRM database.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db connect
+   *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function connect($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $command = sprintf(
+      'mysql --database=%s --host=%s --user=%s --password=%s',
+      $dsn['database'],
+      $dsn['hostspec'],
+      $dsn['username'],
+      $dsn['password']
+    );
+
+    if (isset($dsn['port']) && !empty($dsn['port'])) {
+      $command .= ' --port=' . $dsn['port'];
+    }
+
+    WP_CLI::log($command);
+
+  }
+
+  /**
+   * Drop an entire CiviCRM database.
+   *
+   * It is not possible to drop the CiviCRM database when it is shared with WordPress.
+   *
+   * To create a fresh CiviCRM database, use `wp civicrm db import` to load an existing
+   * database file or make sure you have the CiviCRM plugin installed (e.g. using the
+   *  `wp civicrm core install` command) and then call `wp civicrm core activate`.
+   *
+   * ## OPTIONS
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Drop the CiviCRM database.
+   *     $ wp civicrm db drop
+   *
+   *     # Drop the CiviCRM database without the confirm message.
+   *     $ wp civicrm db drop --yes
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function drop($args, $assoc_args) {
+
+    // Use "wp civicrm db is-shared" to check if the CiviCRM database is shared with WordPress.
+    $command = 'civicrm db is-shared --show-result';
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $shared = WP_CLI::runcommand($command, $options);
+
+    // Bail if sharing database with WordPress.
+    if (!empty($shared)) {
+      WP_CLI::error('You cannot drop the CiviCRM database when it is shared with WordPress.');
+    }
+
+    // Let's give folks a chance to bail.
+    WP_CLI::confirm(WP_CLI::colorize('%GAre you sure you want to drop the CiviCRM database?%n'), $assoc_args);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Use "wp civicrm db query" to drop the CiviCRM database.
+    $command = 'civicrm db query ' . sprintf('DROP DATABASE IF EXISTS %s', $dsn['database']);
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+  /**
+   * Drop the CiviCRM tables and views from the database.
+   *
+   * ## OPTIONS
+   *
+   * [--tables-only]
+   * : Drop only tables.
+   *
+   * [--views-only]
+   * : Drop only views.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional tables to drop based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Drop all CiviCRM tables and views.
+   *     $ wp civicrm db drop-tables
+   *
+   *     # Drop just the CiviCRM tables.
+   *     $ wp civicrm db drop-tables --tables-only
+   *
+   *     # Drop just the CiviCRM views.
+   *     $ wp civicrm db drop-tables --views-only
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also drop tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db drop-tables --also-include='cdntaxreceipts_*' --tables-only
+   *
+   * @subcommand drop-tables
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function drop_tables($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'tables-only', FALSE);
+    $views_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'views-only', FALSE);
+
+    // Let's give folks a chance to bail.
+    if (empty($views_only) && empty($tables_only)) {
+      $message = 'tables and views';
+    }
+    elseif (!empty($views_only)) {
+      $message = 'views';
+    }
+    elseif (!empty($tables_only)) {
+      $message = 'tables';
+    }
+    WP_CLI::confirm(sprintf(WP_CLI::colorize('%GAre you sure you want to drop the CiviCRM %s from the database?%n'), $message), $assoc_args);
+
+    // Get CiviCRM tables and views.
+    $tables = $this->cividb_tables_get($assoc_args);
+    $views = $this->cividb_views_get($assoc_args);
+
+    // Get an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 0');
+
+    // Drop all the CiviCRM database tables.
+    if (empty($views_only)) {
+      WP_CLI::log('Dropping CiviCRM database tables...');
+      foreach ($tables as $table) {
+        $query = 'DROP TABLE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($table);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database tables dropped.');
+    }
+
+    // Drop all the the CiviCRM database views.
+    if (empty($tables_only)) {
+      WP_CLI::log('Dropping CiviCRM database views...');
+      foreach ($views as $view) {
+        $query = 'DROP VIEW ' . \WP_CLI\Utils\esc_sql_ident($view);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database views dropped.');
+    }
+
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 1');
+
+  }
+
+  /**
+   * Dump the whole database that CiviCRM has credentials for and print to STDOUT or save to a file.
+   *
+   * This command is useful on servers where the user may not have direct access to the `mysqldump`
+   * command and the user wants to dump the entire database in which the CiviCRM tables reside.
+   * For more granular exports of the CiviCRM tables, functions, procedures and views, use the
+   * `wp civicrm db export` command instead.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db dump
+   *
+   *     $ wp civicrm db dump --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function dump($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Build command and escaped shell arguments.
+    $mysqldump_binary = \WP_CLI\Utils\force_env_on_nix_systems('mysqldump');
+    $command = $mysqldump_binary . " --opt --triggers --routines --events --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
+    $command_esc_args = [$dsn['database']];
+    if (!empty($tables)) {
+      $requested_tables = explode(',', $tables);
+      unset($assoc_args['tables']);
+      $command .= ' --tables';
+      foreach ($requested_tables as $table) {
+        $command .= ' %s';
+        $command_esc_args[] = trim($table);
+      }
+    }
+
+    // Process command and escaped shell arguments.
+    $escaped_command = call_user_func_array(
+      '\WP_CLI\Utils\esc_cmd',
+      array_merge(
+        [$command],
+        $command_esc_args
+      )
+    );
+
+    \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
+
+    // Maybe show some feedback.
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+    if (!empty($result_file)) {
+      WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
+    }
+
+  }
+
+  /**
+   * Export the whole CiviCRM database and print to STDOUT or save to a file.
+   *
+   * By default, CiviCRM loads its tables into the WordPress database but it is also possible
+   * to configure CiviCRM to have its own database. To keep things contained, this command
+   * only exports the tables, views, triggers, routines and events that are part of CiviCRM.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : Comma separated list of tables to export based on wildcard search. Excluding this parameter will export all CiviCRM tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file. Excluding this parameter will export to STDOUT.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional wildcards to search.
+   *
+   * ## EXAMPLES
+   *
+   *     # Export database to STDOUT.
+   *     $ wp civicrm db export
+   *     -- MySQL dump 10.13  Distrib 5.7.34, for osx11.0 (x86_64)
+   *     --
+   *     -- Host: localhost    Database: civicrm_db
+   *     -- ------------------------------------------------------
+   *     -- Server version  5.7.34
+   *     ...
+   *
+   *     # Export database to file.
+   *     $ wp civicrm db export --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Restrict the exported tables using a wildcard argument as a filter.
+   *     $ wp civicrm db export --tables='*_log' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     $ wp civicrm db export --also-include='cdntaxreceipts_*' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Restrict the exported tables using a wildcard argument as a filter.
+   *     # Also uses an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also exports tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db export --tables='*_log' --also-include='cdntaxreceipts_*' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function export($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Do we want only certain CiviCRM tables?
+    $table_args = '';
+    if (!empty($tables)) {
+      $requested_tables = explode(',', $tables);
+      foreach ($requested_tables as $table) {
+        $table_args .= ' ' . trim($table);
+      }
+      unset($assoc_args['tables']);
+    }
+
+    // Maybe add extra filters.
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+      unset($assoc_args['also-include']);
+    }
+
+    // Get the list of tables.
+    $tables_command = "civicrm db tables{$table_args}{$also_include_args} --format=csv";
+    WP_CLI::debug('Tables Command: ' . $tables_command, 'civicrm');
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $tables = WP_CLI::runcommand($tables_command, $options);
+    $tables = explode(',', $tables);
+
+    // Build command and escaped shell arguments.
+    $mysqldump_binary = \WP_CLI\Utils\force_env_on_nix_systems('mysqldump');
+    $command = $mysqldump_binary . " --opt --triggers --routines --events --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
+    $command_esc_args = [$dsn['database']];
+    $command .= ' --tables';
+    foreach ($tables as $table) {
+      $command .= ' %s';
+      $command_esc_args[] = trim($table);
+    }
+
+    // Process command and escaped shell arguments.
+    $escaped_command = call_user_func_array(
+      '\WP_CLI\Utils\esc_cmd',
+      array_merge(
+        [$command],
+        $command_esc_args
+      )
+    );
+
+    WP_CLI::debug('Final "mysqldump" Command: ' . $escaped_command, 'civicrm');
+    \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
+
+    // Maybe show some feedback.
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+    if (!empty($result_file)) {
+      WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
+    }
+
+  }
+
+  /**
+   * Get the list of CiviCRM functions in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<function>...]
+   * : List functions based on wildcard search, e.g. 'civicrm_*' or 'civicrm_event?'.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db functions
+   *     civicrm_strip_non_numeric
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function functions($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $dsn = $this->cividb_dsn_get();
+    $functions_sql = "SHOW FUNCTION STATUS WHERE Db = '{$dsn['database']}'";
+
+    // Perform query.
+    $functions = $cividb->get_col($functions_sql, 1);
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $functions = $this->names_filter($args, $functions);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $functions));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($functions);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($functions as $function) {
+        WP_CLI::log($function);
+      }
+    }
+
+  }
+
+  /**
+   * Loads a whole CiviCRM database.
+   *
+   * ## OPTIONS
+   *
+   * [--load-file=<load-file>]
+   * : The path to the database file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db import /tmp/civicrm.sql
+   *
+   * @alias load
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function import($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $load_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'load-file', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => 'SOURCE ' . $load_file,
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql', $mysql_args);
+
+  }
+
+  /**
+   * Check if CiviCRM shares a database with WordPress.
+   *
+   * ## OPTIONS
+   *
+   * [--show-result]
+   * : Print the result to STDOUT. Note that the echoed boolean is the reverse of the exit status.
+   *
+   * ## EXAMPLES
+   *
+   *     # Check if CiviCRM shares a database with WordPress. Exit status 0 if shared, otherwise 1.
+   *     $ wp civicrm db is-shared
+   *     $ echo $?
+   *     0
+   *
+   *     # Show whether CiviCRM shares a database with WordPress. Prints 1 if shared, otherwise 0.
+   *     $ wp civicrm db is-shared --show-result
+   *     1
+   *
+   *     # Shell command that shows if CiviCRM shares a database with WordPress.
+   *     if wp civicrm db is-shared; then echo "Yup"; else echo "Nope"; fi
+   *     Nope
+   *
+   * @subcommand is-shared
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function is_shared($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $show = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'show-result', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // True when host and database name are identical.
+    $shared = FALSE;
+    if ($dsn['hostspec'] === DB_HOST && $dsn['database'] === DB_NAME) {
+      $shared = TRUE;
+    }
+
+    // Exit with code if not showing result.
+    if (empty($show)) {
+      if (!empty($shared)) {
+        WP_CLI::halt(0);
+      }
+      else {
+        WP_CLI::halt(1);
+      }
+    }
+
+    // Show result.
+    if (empty($shared)) {
+      echo "0\n";
+    }
+    else {
+      echo "1\n";
+    }
+
+  }
+
+  /**
+   * Get the list of CiviCRM stored procedures in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<procedure>...]
+   * : List procedures based on wildcard search, e.g. 'civicrm_*'.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db procedures
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function procedures($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $dsn = $this->cividb_dsn_get();
+    $procedures_sql = "SHOW PROCEDURE STATUS WHERE Db = '{$dsn['database']}'";
+
+    // Perform query.
+    $procedures = $cividb->get_col($procedures_sql, 1);
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $procedures = $this->names_filter($args, $procedures);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $procedures));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($procedures);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($procedures as $procedure) {
+        WP_CLI::log($procedure);
+      }
+    }
+
+  }
+
+  /**
+   * Perform a query on the CiviCRM database.
+   *
+   * ## OPTIONS
+   *
+   * <query>
+   * : The SQL query to perform.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db query 'select id,name from civicrm_group;'
+   *     +----+---------------------------+
+   *     | id | name                      |
+   *     +----+---------------------------+
+   *     |  1 | Administrators            |
+   *     |  4 | Advisory Board            |
+   *     |  2 | Newsletter Subscribers    |
+   *     |  3 | Summer Program Volunteers |
+   *     +----+---------------------------+
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function query($args, $assoc_args) {
+
+    if (!isset($args[0])) {
+      WP_CLI::error('No query specified.');
+    }
+
+    $query = $args[0];
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => $query,
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql --no-defaults', $mysql_args);
+
+  }
+
+  /**
+   * Gets a set of CiviCRM tables in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<table>...]
+   * : List tables based on wildcard search, e.g. 'civicrm_*_group' or 'civicrm_event?'.
+   *
+   * [--tables-only]
+   * : Restrict returned tables to those that are not views.
+   *
+   * [--views-only]
+   * : Restrict returned tables to those that are views.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional wildcards to search.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Use a wildcard to get matching table names from the set of CiviCRM tables.
+   *     $ wp civicrm db tables 'civicrm_*_group' --tables-only
+   *     civicrm_campaign_group
+   *     civicrm_custom_group
+   *     civicrm_dedupe_rule_group
+   *     civicrm_mailing_group
+   *     civicrm_option_group
+   *     civicrm_uf_group
+   *
+   *     # Use wildcards to get matching view names from the set of CiviCRM multi-lingual views.
+   *     % wp civicrm db tables 'civicrm_*_group_de_de' 'civicrm_*_group_en_us' --views-only
+   *     civicrm_custom_group_de_de
+   *     civicrm_custom_group_en_us
+   *     civicrm_option_group_de_de
+   *     civicrm_option_group_en_us
+   *     civicrm_uf_group_de_de
+   *     civicrm_uf_group_en_us
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, include tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db tables '*_log' --also-include='cdntaxreceipts_*' --tables-only
+   *     cdntaxreceipts_log
+   *     civicrm_action_log
+   *     civicrm_job_log
+   *     civicrm_log
+   *     civicrm_membership_log
+   *     civicrm_system_log
+   *     civirule_rule_log
+   *
+   *     # When CiviCRM shares a database with WordPress, use an extra wildcard to include
+   *     # WordPress tables in a query. Here `$wpdb->prefix` is set to the default 'wp_'.
+   *     % wp civicrm db tables '*_user*' --also-include='wp_*' --tables-only
+   *     civicrm_user_job
+   *     log_civicrm_user_job
+   *     wp_usermeta
+   *     wp_users
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function tables($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'tables-only', FALSE);
+    $views_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'views-only', FALSE);
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Bail if incompatible args have been supplied.
+    if (!empty($tables_only) && !empty($views_only)) {
+      WP_CLI::error('You cannot supply --tables-only and --views-only at the same time.');
+    }
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $tables_sql = 'SHOW TABLES';
+
+    // Override query with table type restriction if needed.
+    if (!empty($tables_only)) {
+      $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "BASE TABLE"';
+    }
+    elseif (!empty($views_only)) {
+      $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "VIEW"';
+    }
+
+    // Perform query.
+    $tables = $cividb->get_col($tables_sql, 0);
+
+    // Pre-filter with CiviCRM tables and views only.
+    $pre_filter = [
+      'civicrm_*',
+      'log_civicrm_*',
+      'snap_civicrm_*',
+    ];
+
+    // Add in any extra wildcard filters.
+    if (!empty($also_include)) {
+      $wildcards = explode(',', $also_include);
+      foreach ($wildcards as $wildcard) {
+        $pre_filter[] = trim($wildcard);
+      }
+    }
+
+    // Pre-filter now.
+    $tables = $this->names_filter($pre_filter, $tables);
+
+    // When tables are part of the query, add tables that are present in civicrm tables.
+    if (empty($views_only)) {
+      $civicrm_tables = array_keys(CRM_Core_DAO_AllCoreTables::tables());
+      foreach ($civicrm_tables as $table) {
+        if (!in_array($table, $tables)) {
+          $tables[] = $table;
+        }
+      }
+    }
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $tables = $this->names_filter($args, $tables);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $tables));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($tables);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($tables as $table) {
+        WP_CLI::log($table);
+      }
+    }
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Gets the instance of wpdb with CiviCRM credentials.
+   *
+   * @since 5.69
+   *
+   * @return object $cividb The instance of wpdb with CiviCRM credentials.
+   */
+  private function cividb_get() {
+
+    // Return instance if we have it.
+    static $cividb;
+    if (isset($cividb)) {
+      return $cividb;
+    }
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+    $cividb = new wpdb($dsn['username'], $dsn['password'], $dsn['database'], $dsn['hostspec']);
+
+    return $cividb;
+
+  }
+
+  /**
+   * Gets the CiviCRM database credentials.
+   *
+   * @since 5.69
+   *
+   * @return array $dsn The array of CiviCRM database credentials.
+   */
+  private function cividb_dsn_get() {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Bail if we can't fetch database credentials.
+    if (!defined('CIVICRM_DSN')) {
+      WP_CLI::error('CIVICRM_DSN is not defined.');
+    }
+
+    // Parse the CiviCRM credentials.
+    $dsn = DB::parseDSN(CIVICRM_DSN);
+
+    return $dsn;
+
+  }
+
+  /**
+   * Gets the CiviCRM database functions.
+   *
+   * @since 5.69
+   *
+   * @return array $functions The array of CiviCRM database functions.
+   */
+  private function cividb_functions_get() {
+
+    // Use "wp civicrm db functions" to find the CiviCRM database functions.
+    $command = "civicrm db functions 'civicrm_*' --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_functions = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $functions = json_decode($core_functions, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $functions;
+
+  }
+
+  /**
+   * Gets the CiviCRM database procedures.
+   *
+   * @since 5.69
+   *
+   * @return array $procedures The array of CiviCRM database procedures.
+   */
+  private function cividb_procedures_get() {
+
+    // Use "wp civicrm db procedures" to find the CiviCRM database procedures.
+    $command = 'civicrm db procedures --format=json';
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_procedures = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $procedures = json_decode($core_procedures, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $procedures;
+
+  }
+
+  /**
+   * Gets the CiviCRM database tables.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The WP-CLI associative arguments.
+   * @return array $tables The array of CiviCRM database tables.
+   */
+  private function cividb_tables_get($assoc_args) {
+
+    // Maybe add extra filters.
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db tables" to find the CiviCRM database tables.
+    $command = "civicrm db tables{$also_include_args} --tables-only --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_tables = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $tables = json_decode($core_tables, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $tables;
+
+  }
+
+  /**
+   * Gets the CiviCRM database views.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The WP-CLI associative arguments.
+   * @return array $views The array of CiviCRM database views.
+   */
+  private function cividb_views_get($assoc_args) {
+
+    // Maybe add extra filters.
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db tables" to find the CiviCRM database views.
+    $command = "civicrm db tables 'civicrm_*'{$also_include_args} --views-only --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_views = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $views = json_decode($core_views, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $views;
+
+  }
+
+  /**
+   * Filters an array of CiviCRM database entity names.
+   *
+   * @since 5.69
+   *
+   * @param array $wildcards The array of wildcards.
+   * @param array $tables The array of CiviCRM table names.
+   * @return array $filtered The filtered array of CiviCRM table names.
+   */
+  private function names_filter($wildcards, $tables) {
+
+    // Build filtered array.
+    $args_tables = [];
+    foreach ($wildcards as $wildcard) {
+      if (FALSE !== strpos($wildcard, '*') || FALSE !== strpos($wildcard, '?')) {
+        $args_tables = array_merge(
+          $args_tables,
+          array_filter(
+            $tables,
+            function ($v) use ($wildcard) {
+              // WP-CLI itself uses fnmatch() so ignore the civilint warning.
+              // phpcs:disable
+              return fnmatch($wildcard, $v);
+              // phpcs:enable
+            }
+          )
+        );
+      }
+      else {
+        $args_tables[] = $wildcard;
+      }
+    }
+
+    // Clean up.
+    $args_tables = array_values(array_unique($args_tables));
+    $filtered = array_values(array_intersect($tables, $args_tables));
+
+    return $filtered;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-debug.php b/wp-cli/commands/command-debug.php
new file mode 100755
index 0000000000..fb446e9004
--- /dev/null
+++ b/wp-cli/commands/command-debug.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Enable or disable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm debug enable
+ *     Success: Debug setting enabled.
+ *
+ *     $ wp civicrm debug disable
+ *     Success: Debug setting disabled.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Enable debugging in CiviCRM.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm debug enable
+   *     Success: Debug setting enabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function enable($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    Civi::settings()->add([
+      'debug_enabled' => 1,
+      'backtrace' => 1,
+    ]);
+
+    WP_CLI::success('Debug setting enabled.');
+
+  }
+
+  /**
+   * Disable debugging in CiviCRM.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm debug disable
+   *     Success: Debug setting disabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function disable($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    Civi::settings()->add([
+      'debug_enabled' => 0,
+      'backtrace' => 0,
+    ]);
+
+    WP_CLI::success('Debug setting disabled.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-job.php b/wp-cli/commands/command-job.php
new file mode 100755
index 0000000000..93c8f53944
--- /dev/null
+++ b/wp-cli/commands/command-job.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Run CiviCRM cron jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm job mailing
+ *     Success: Executed 'process_mailing' job.
+ *
+ *     $ wp civicrm job membership
+ *     Success: Executed 'process_membership' job.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Job extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMail mailing jobs.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm job mailing
+   *     Success: Executed 'process_mailing' job.
+   *
+   * @alias process-mail-queue
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function mailing($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $job = new CRM_Core_JobManager();
+    $job->executeJobByAction('job', 'process_mailing');
+
+    WP_CLI::success("Executed 'process_mailing' job.");
+
+  }
+
+  /**
+   * Process pending CiviMember membership record update jobs.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm job membership
+   *     Success: Executed 'process_membership' job.
+   *
+   * @alias member-records
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function membership($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $job = new CRM_Core_JobManager();
+    $job->executeJobByAction('job', 'process_membership');
+
+    WP_CLI::success('Executed "process_membership" job.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-pipe.php b/wp-cli/commands/command-pipe.php
new file mode 100755
index 0000000000..374fe2f29b
--- /dev/null
+++ b/wp-cli/commands/command-pipe.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Start a Civi::pipe session (JSON-RPC 2.0)
+ *
+ * The Civi::pipe protocol provides a line-oriented session for executing multiple requests in a single CiviCRM instance.
+ *
+ * Callers may request <connection-flags>, such as:
+ *
+ * v: Show version
+ * l: Show login support
+ * t: Enable trusted mode
+ * u: Enable untrusted mode
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm pipe
+ *     {"Civi::pipe":{"v":"5.47.alpha1","t":"trusted","l":["nologin"]}}
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Pipe extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Start a Civi::pipe session (JSON-RPC 2.0)
+   *
+   * The Civi::pipe protocol provides a line-oriented session for executing multiple requests in a single CiviCRM instance.
+   *
+   * Callers may request <connection-flags>, such as:
+   *
+   * v: Show version
+   * l: Show login support
+   * t: Enable trusted mode
+   * u: Enable untrusted mode
+   *
+   * See https://docs.civicrm.org/dev/en/latest/framework/pipe#flags
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm pipe
+   *     {"Civi::pipe":{"v":"5.47.alpha1","t":"trusted","l":["nologin"]}}
+   *
+   *     $ wp civicrm pipe vu
+   *     {"Civi::pipe":{"v":"5.57.1","u":"untrusted"}}
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    if (!is_callable(['Civi', 'pipe'])) {
+      WP_CLI::error('This version of CiviCRM does not include Civi::pipe() support.');
+    }
+
+    if (!empty($args[0])) {
+      Civi::pipe($args[0]);
+    }
+    else {
+      Civi::pipe();
+    }
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-cache-clear.php b/wp-cli/commands/legacy/command-cache-clear.php
new file mode 100755
index 0000000000..2b8fb4a9b8
--- /dev/null
+++ b/wp-cli/commands/legacy/command-cache-clear.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Flush the CiviCRM cache.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm cache-clear
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Cache_Clear extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Flush the CiviCRM cache. Deprecated: use `wp civicrm cache flush` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm cache-clear
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm cache flush` instead.%n'));
+
+    // Pass on to "wp civicrm cache flush".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm cache flush', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-debug-disable.php b/wp-cli/commands/legacy/command-debug-disable.php
new file mode 100755
index 0000000000..c0ba0a8a67
--- /dev/null
+++ b/wp-cli/commands/legacy/command-debug-disable.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Disable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm disable-debug
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug_Disable extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Disable debugging in CiviCRM. Deprecated: use `wp civicrm debug disable` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm disable-debug
+   *     Success: Debug setting disabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm debug disable` instead.%n'));
+
+    // Pass on to "wp civicrm debug disable".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm debug disable', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-debug-enable.php b/wp-cli/commands/legacy/command-debug-enable.php
new file mode 100755
index 0000000000..8c3449f36a
--- /dev/null
+++ b/wp-cli/commands/legacy/command-debug-enable.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Enable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm enable-debug
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug_Enable extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Enable debugging in CiviCRM. Deprecated: use `wp civicrm debug enable` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm enable-debug
+   *     Success: Debug setting enabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm debug enable` instead.%n'));
+
+    // Pass on to "wp civicrm debug enable".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm debug enable', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-install.php b/wp-cli/commands/legacy/command-install.php
new file mode 100755
index 0000000000..396569bd96
--- /dev/null
+++ b/wp-cli/commands/legacy/command-install.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Install the CiviCRM plugin.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm install --zipfile=~/civicrm-5.57.1-wordpress.zip
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Install extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Install the CiviCRM plugin. Deprecated: use `wp civicrm core install` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--dbname=<dbname>]
+   * : MySQL database name of your CiviCRM database. Defaults to the WordPress database name.
+   *
+   * [--dbpass=<dbpass>]
+   * : MySQL password for your CiviCRM database. Defaults to the WordPress MySQL database password.
+   *
+   * [--dbuser=<dbuser>]
+   * : MySQL username for your CiviCRM database. Defaults to the WordPress MySQL database username.
+   *
+   * [--dbhost=<dbhost>]
+   * : MySQL host for your CiviCRM database. Defaults to the WordPress MySQL host.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--tarfile=<tarfile>]
+   * : Path to your CiviCRM .tar.gz file. Not currently available.
+   *
+   * [--lang=<lang>]
+   * : Locale to use for installation. Defaults to "en_US".
+   *
+   * [--langtarfile=<langtarfile>]
+   * : Path to your CiviCRM localization .tar.gz file.
+   *
+   * [--ssl=<ssl>]
+   * : The SSL setting for your website, e.g. '--ssl=on'. Defaults to "on".
+   *
+   * [--site_url=<site_url>]
+   * : Domain for your website, e.g. 'mysite.com'.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm install --zipfile=~/civicrm-5.57.1-wordpress.zip
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core install` instead.%n'));
+
+    // Grab associative arguments.
+    $dbuser = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbuser', (defined('DB_USER') ? DB_USER : ''));
+    $dbpass = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbpass', (defined('DB_PASSWORD') ? DB_PASSWORD : ''));
+    $dbhost = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbhost', (defined('DB_HOST') ? DB_HOST : ''));
+    $dbname = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbname', (defined('DB_NAME') ? DB_NAME : ''));
+    $locale = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', 'en_US');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'tarfile', '');
+    $lang = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'lang', '');
+    $langtarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'langtarfile', '');
+    $ssl = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'ssl', '');
+    $site_url = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'site_url', '');
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Bail when .tar.gz archive is specified.
+    if (!empty($tarfile)) {
+      WP_CLI::error('CiviCRM .tar.gz archives are not supported.');
+    }
+
+    // Bail when no .zip archive is specified.
+    if (empty($zipfile)) {
+      WP_CLI::error('You must supply a CiviCRM zip archive.');
+    }
+
+    // Build install command.
+    $command = 'civicrm core install --zipfile=' . $zipfile .
+      (empty($langtarfile) ? '' : ' --l10n-tarfile=' . $langtarfile);
+
+    // Run "wp civicrm core install".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Build activate command.
+    $command = 'civicrm core activate' .
+      (empty($dbuser) ? '' : ' --dbuser=' . $dbuser) .
+      (empty($dbpass) ? '' : ' --dbpass=' . $dbpass) .
+      (empty($dbhost) ? '' : ' --dbhost=' . $dbhost) .
+      (empty($dbname) ? '' : ' --dbname=' . $dbname) .
+      (empty($lang) ? '' : ' --locale=' . $lang) .
+      (empty($ssl) ? '' : ' --ssl=' . $ssl) .
+      (empty($site_url) ? '' : ' --site-url=' . $site_url) .
+      (empty($yes) ? '' : ' --yes');
+
+    // Run "wp civicrm core activate".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-mail-queue.php b/wp-cli/commands/legacy/command-mail-queue.php
new file mode 100755
index 0000000000..95f31e4a95
--- /dev/null
+++ b/wp-cli/commands/legacy/command-mail-queue.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Process pending CiviMail mailing jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm process-mail-queue
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Mail_Queue extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMail mailing jobs. Deprecated: use `wp civicrm job mailing` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm process-mail-queue
+   *     Success: Executed 'process_mailing' job.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm job mailing` instead.%n'));
+
+    // Pass on to "wp civicrm job mailing".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm job mailing', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-member-records.php b/wp-cli/commands/legacy/command-member-records.php
new file mode 100755
index 0000000000..aead7f0fcf
--- /dev/null
+++ b/wp-cli/commands/legacy/command-member-records.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Process pending CiviMember membership record update jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm member-records
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Member_Records extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMember membership record update jobs. Deprecated: use `wp civicrm job membership` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm member-records
+   *     Success: Executed 'process_membership' job.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm job membership` instead.%n'));
+
+    // Pass on to "wp civicrm job membership".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm job membership', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-restore.php b/wp-cli/commands/legacy/command-restore.php
new file mode 100755
index 0000000000..e0d801bfbb
--- /dev/null
+++ b/wp-cli/commands/legacy/command-restore.php
@@ -0,0 +1,209 @@
+<?php
+/**
+ * Restore the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm restore
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Restore extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Restore the CiviCRM plugin files and database. Deprecated: use `wp civicrm core restore` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--restore-dir=<restore-dir>]
+   * : Path to your CiviCRM backup directory.
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm restore --restore-dir=/Users/haystack/Sites/civicrm/attendance.latest/backup/plugins/20230207152318
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $restore_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'restore-dir', '');
+    $backup_root_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', '');
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // ----------------------------------------------------------------------------
+    // Validate before proceeding.
+    // ----------------------------------------------------------------------------
+
+    // Bail when no restore directory is specified.
+    if (empty($restore_dir)) {
+      WP_CLI::error('You must supply a restore directory.');
+    }
+
+    // Bail when no restore directory is found.
+    if (!is_dir($restore_dir)) {
+      WP_CLI::error('Could not locate the restore directory.');
+    }
+
+    // Bail when no SQL file is found.
+    $sql_file = $restore_dir . '/civicrm.sql';
+    if (!file_exists($sql_file)) {
+      WP_CLI::error('Could not locate "civicrm.sql" file in the restore directory.');
+    }
+
+    // Bail when no CiviCRM directory is found.
+    $code_dir = $restore_dir . '/civicrm';
+    if (!is_dir($code_dir)) {
+      WP_CLI::error('Could not locate the CiviCRM directory inside "restore-dir".');
+    }
+    elseif (!file_exists("$code_dir/civicrm/civicrm-version.txt") && !file_exists("$code_dir/civicrm/civicrm-version.php")) {
+      WP_CLI::error('The CiviCRM directory inside "restore-dir" does not seem to be a valid CiviCRM codebase.');
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Bail if we can't fetch database credentials.
+    if (!defined('CIVICRM_DSN')) {
+      WP_CLI::error('CIVICRM_DSN is not defined.');
+    }
+
+    // Parse the CiviCRM credentials.
+    $dsn = DB::parseDSN(CIVICRM_DSN);
+
+    // Build backup directory when not specified.
+    if (empty($backup_root_dir)) {
+      $backup_root_dir = trailingslashit(dirname(ABSPATH)) . 'backup';
+    }
+
+    // Issue warning.
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core backup` and `wp civicrm core restore` instead.%n'));
+
+    WP_CLI::log('');
+    WP_CLI::log('Process involves:');
+    WP_CLI::log(sprintf("1. Restoring '{$restore_dir}/civicrm' to '%s'.", $plugin_path));
+    WP_CLI::log(sprintf("2. Dropping and creating the '%s' database.", $dsn['database']));
+    WP_CLI::log("3. Loading the '{$restore_dir}/civicrm.sql' file into the database.");
+    WP_CLI::log('');
+    WP_CLI::log(sprintf("Note: Before restoring, a backup will be taken in the '%s' directory.", "{$backup_root_dir}/plugins/restore"));
+    WP_CLI::log('');
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Repeat the backup procedure from `wp civicrm upgrade`.
+    // ----------------------------------------------------------------------------
+
+    // Maybe create destination directory.
+    $backup_root_dir = untrailingslashit($backup_root_dir);
+    if (!is_dir($backup_root_dir)) {
+      if (!is_writable(dirname($backup_root_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_root_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_root_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_root_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_root_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_root_dir)) {
+      WP_CLI::error("'{$backup_root_dir}' is not writable by current user.");
+    }
+
+    // Build backup filename and path.
+    $date = date('YmdHis');
+    $filename = 'civicrm';
+    $backup_working_dir = trailingslashit($backup_root_dir) . 'plugins/restore/' . $date;
+    $backup_sql_file = trailingslashit($backup_working_dir) . $filename . '.sql';
+    $backup_plugin_path = trailingslashit($backup_working_dir) . $filename;
+
+    // Create working backup directory.
+    if (!@mkdir($backup_working_dir, 0777, TRUE)) {
+      $error = error_get_last();
+      WP_CLI::error("Failed to create directory '{$backup_working_dir}': {$error['message']}.");
+    }
+
+    // Use "wp civicrm sql-dump" to dump database.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up database...%n'));
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand("civicrm sql-dump --result-file={$backup_sql_file}", $options);
+
+    // Move existing CiviCRM plugin directory to backup directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up existing plugin...%n'));
+    if (!@rename($plugin_path, $backup_plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to backup CiviCRM plugin directory %s to %s: %s', $plugin_path, $backup_plugin_path, $error['message']));
+    }
+    WP_CLI::success('Codebase backed up.');
+
+    // ----------------------------------------------------------------------------
+    // Restore procedure.
+    // ----------------------------------------------------------------------------
+
+    // Move backup CiviCRM plugin directory to plugins directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GRestoring codebase...%n'));
+    if (!@rename($code_dir, $plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to restore CiviCRM plugin directory %s to %s: %s', $code_dir, $plugin_path, $error['message']));
+    }
+
+    WP_CLI::success('Codebase restored.');
+
+    // Use "wp civicrm db query" and "wp civicrm db import" to restore database.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GRestoring database...%n'));
+
+    // Use "wp civicrm db query" to drop the CiviCRM database.
+    $command = 'civicrm db query ' . sprintf("'DROP DATABASE IF EXISTS %s'", $dsn['database']);
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database dropped.');
+
+    // Use "run_mysql_command" to re-create the CiviCRM database.
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => sprintf('CREATE DATABASE %s', $dsn['database']),
+    ];
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql --no-defaults', $mysql_args);
+    WP_CLI::success('Database created.');
+
+    // Load restore tables.
+    WP_CLI::log('Loading "civicrm.sql" file from restore directory...');
+    $command = 'civicrm db import --load-file=' . $sql_file;
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database restored.');
+
+    // Clear caches.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GClearing caches...%n'));
+    $command = 'civicrm cache flush';
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    WP_CLI::success('Restore process completed.');
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-cli.php b/wp-cli/commands/legacy/command-sql-cli.php
new file mode 100755
index 0000000000..bd17ab2c10
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-cli.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Quickly enter the MySQL command line.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-cli
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_CLI extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Quickly enter the MySQL command line. Deprecated: use `wp civicrm db cli` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-cli
+   *
+   *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+   *     Your MySQL connection id is 180
+   *     Server version: 5.7.34 MySQL Community Server (GPL)
+   *
+   *     mysql>
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db cli` instead.%n'));
+
+    // Pass on to "wp civicrm db cli".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db cli', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-conf.php b/wp-cli/commands/legacy/command-sql-conf.php
new file mode 100755
index 0000000000..d21fd2e34e
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-conf.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Show the CiviCRM database connection details.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-conf
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Conf extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Show the CiviCRM database connection details. Deprecated: use `wp civicrm db config` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-conf
+   *
+   * @alias conf
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db config` instead.%n'));
+
+    // Pass on to "wp civicrm db config".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db config --format=pretty', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-connect.php b/wp-cli/commands/legacy/command-sql-connect.php
new file mode 100755
index 0000000000..b3f88d8d21
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-connect.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Get a string which connects to the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-connect
+ *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Connect extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Get a string which connects to the CiviCRM database. Deprecated: use `wp civicrm db connect` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-connect
+   *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db connect` instead.%n'));
+
+    // Pass on to "wp civicrm db connect".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db connect', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-dump.php b/wp-cli/commands/legacy/command-sql-dump.php
new file mode 100755
index 0000000000..83163fc9b3
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-dump.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Export the whole CiviCRM database and print to STDOUT or save to a file.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-dump
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Dump extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Dump the whole database that CiviCRM has credentials for and print to STDOUT or save to a file. Deprecated: use `wp civicrm db dump` instead.
+   *
+   * This command is useful on servers where the user may not have direct access to the `mysqldump`
+   * command and the user wants to dump the entire database in which the CiviCRM tables reside.
+   * For more granular exports of the CiviCRM tables, functions, procedures and views, use the
+   * `wp civicrm db export` command instead.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-dump
+   *
+   *     $ wp civicrm sql-dump --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db dump` instead.%n'));
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+
+    // Build command.
+    $command = 'civicrm db dump' .
+      (empty($tables) ? '' : ' --tables=' . $tables) .
+      (empty($result_file) ? '' : ' --result-file=' . $result_file);
+
+    // Pass on to "wp civicrm db dump".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-query.php b/wp-cli/commands/legacy/command-sql-query.php
new file mode 100755
index 0000000000..b3fac4baff
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-query.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Perform a query on the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-query 'select id,name from civicrm_group;'
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Query extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Perform a query on the CiviCRM database. Deprecated: use `wp civicrm db query` instead.
+   *
+   * ## OPTIONS
+   *
+   * <query>
+   * : The SQL query to perform.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-query 'select id,name from civicrm_group;'
+   *     +----+---------------------------+
+   *     | id | name                      |
+   *     +----+---------------------------+
+   *     |  1 | Administrators            |
+   *     |  4 | Advisory Board            |
+   *     |  2 | Newsletter Subscribers    |
+   *     |  3 | Summer Program Volunteers |
+   *     +----+---------------------------+
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db query` instead.%n'));
+
+    // Pass on to "wp civicrm db query".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    $command = 'civicrm db query' . (empty($args[0]) ? '' : " '" . $args[0] . "'");
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-update-cfg.php b/wp-cli/commands/legacy/command-update-cfg.php
new file mode 100755
index 0000000000..0a0c322b26
--- /dev/null
+++ b/wp-cli/commands/legacy/command-update-cfg.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Upgrade the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm update-cfg
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Update_Config extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Reset paths to correct config settings. Deprecated: use `wp civicrm core update-cfg` instead.
+   *
+   * This command can be useful when the CiviCRM site has been cloned or migrated.
+   *
+   * The old version of this command tried to preserve webserver ownership of "templates_c"
+   * and "civicrm/upload" because (when running this command as something other than the
+   * web-user) `doSiteMove` clears and recreates these directories. The check took place
+   * *after* `doSiteMove` had run, however, so would only report back the current user and
+   * group.
+   *
+   * If you run `wp-cli` as something other than the web-user, it's up to you to assign
+   * correct ownership of these directories.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm update-cfg
+   *     Beginning site move process...
+   *     Template cache and upload directory have been cleared.
+   *     Database cache tables cleared.
+   *     Session has been reset.
+   *     Please make sure the following directories have the correct permissions:
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/upload/
+   *     Success: Config successfully updated.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update-cfg` instead.%n'));
+
+    // Pass on to "wp civicrm core update-cfg".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm core update-cfg', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-upgrade-db.php b/wp-cli/commands/legacy/command-upgrade-db.php
new file mode 100755
index 0000000000..f5d4f239a6
--- /dev/null
+++ b/wp-cli/commands/legacy/command-upgrade-db.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Upgrade the CiviCRM database schema.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm upgrade-db
+ *     $ wp civicrm upgrade-db --dry-run
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Upgrade_DB extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Upgrade the CiviCRM database schema. Deprecated: use `wp civicrm core update-db` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--dry-run]
+   * : Preview the list of upgrade tasks.
+   *
+   * [--retry]
+   * : Resume a failed upgrade, retrying the last step.
+   *
+   * [--skip]
+   * : Resume a failed upgrade, skipping the last step.
+   *
+   * [--step]
+   * : Run the upgrade queue in steps, pausing before each step.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--vvv]
+   * : An alias of --vv for old timers more used to cv syntax.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message. Does not apply to step messages.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm upgrade-db --dry-run --v
+   *     Deprecated command: use `wp civicrm core update-db` instead.
+   *     Found CiviCRM code version: 5.57.1
+   *     Found CiviCRM database version: 5.57.0
+   *     Checking pre-upgrade messages.
+   *     (No messages)
+   *     Dropping SQL triggers.
+   *     Preparing upgrade.
+   *     Executing upgrade.
+   *     Cleanup old files
+   *     Cleanup old upgrade snapshots
+   *     Checking extensions
+   *     Finish Upgrade DB to 5.57.1
+   *     Update all reserved message templates
+   *     Finish core DB updates 5.57.1
+   *     Assess extension upgrades
+   *     Generate final messages
+   *     Finishing upgrade.
+   *     Upgrade to 5.57.1 completed.
+   *     Checking post-upgrade messages.
+   *     (No messages)
+   *     Have a nice day.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update-db` instead.%n'));
+
+    // Grab associative arguments.
+    $dry_run = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'dry-run', FALSE);
+    $retry = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'retry', FALSE);
+    $skip = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'skip', FALSE);
+    $step = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'step', FALSE);
+    $v = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $vv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $vvv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vvv', FALSE);
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Build command.
+    $command = 'civicrm core update-db' .
+      (empty($dry_run) ? '' : ' --dry-run') .
+      (empty($retry) ? '' : ' --retry') .
+      (empty($skip) ? '' : ' --skip') .
+      (empty($step) ? '' : ' --step') .
+      (empty($v) ? '' : ' --v') .
+      (empty($vv) ? '' : ' --vv') .
+      (empty($vvv) ? '' : ' --vvv') .
+      (empty($yes) ? '' : ' --yes');
+
+    // Pass on to "wp civicrm core update-db".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-upgrade.php b/wp-cli/commands/legacy/command-upgrade.php
new file mode 100755
index 0000000000..c5a9aba543
--- /dev/null
+++ b/wp-cli/commands/legacy/command-upgrade.php
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Upgrade the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     # Update to the version of CiviCRM in the supplied archive.
+ *     $ wp civicrm upgrade --zipfile=~/civicrm-5.57.1-wordpress.zip
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Upgrade extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Upgrade the CiviCRM plugin files and database. Deprecated: use `wp civicrm core update` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file.
+   *
+   * [--tarfile=<tarfile>]
+   * : Path to your CiviCRM .tar.gz file. Not currently available.
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation messages.
+   *
+   * ## EXAMPLES
+   *
+   *     # Update to the version of CiviCRM in the supplied archive.
+   *     $ wp civicrm upgrade --zipfile=~/civicrm-5.57.1-wordpress.zip
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update` instead.%n'));
+
+    // Grab associative arguments.
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+    $backup_root_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', '');
+    $v = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $vv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Bail when .tar.gz archive is specified.
+    if (!empty($tarfile)) {
+      WP_CLI::error('CiviCRM .tar.gz archives are not supported.');
+    }
+
+    // Bail when no .zip archive is specified.
+    if (empty($zipfile)) {
+      WP_CLI::error('You must supply a CiviCRM zip archive.');
+    }
+
+    // Choose higher verbosity when both are specified.
+    if (!empty($v) && !empty($vv)) {
+      $v = FALSE;
+    }
+
+    // ----------------------------------------------------------------------------
+    // We can't use "wp civicrm core backup" because of its new backup schema.
+    // ----------------------------------------------------------------------------
+
+    // Build backup directory when not specified.
+    if (empty($backup_root_dir)) {
+      $backup_root_dir = trailingslashit(dirname(ABSPATH)) . 'backup';
+    }
+
+    // Maybe create destination directory.
+    $backup_root_dir = untrailingslashit($backup_root_dir);
+    if (!is_dir($backup_root_dir)) {
+      if (!is_writable(dirname($backup_root_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_root_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_root_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_root_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_root_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_root_dir)) {
+      WP_CLI::error("'{$backup_root_dir}' is not writable by current user.");
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Build backup filename and path.
+    $date = date('YmdHis');
+    $filename = 'civicrm';
+    $backup_working_dir = trailingslashit($backup_root_dir) . trailingslashit('plugins') . $date;
+    $backup_sql_file = trailingslashit($backup_working_dir) . $filename . '.sql';
+    $backup_plugin_path = trailingslashit($backup_working_dir) . $filename;
+
+    WP_CLI::log('');
+    WP_CLI::log('The upgrade process involves:');
+    WP_CLI::log(sprintf('1. Backing up database as => %s', $backup_sql_file));
+    WP_CLI::log(sprintf('2. Backing up current CiviCRM code as => %s', $backup_plugin_path));
+    WP_CLI::log(sprintf('3. Unpacking zipfile to => %s', $plugin_path));
+    WP_CLI::log('4. Executing "civicrm/upgrade?reset=1" just as a browser would.');
+    WP_CLI::log('');
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Backup procedure.
+    // ----------------------------------------------------------------------------
+
+    // Create working backup directory.
+    if (!@mkdir($backup_working_dir, 0777, TRUE)) {
+      $error = error_get_last();
+      WP_CLI::error("Failed to create directory '{$backup_working_dir}': {$error['message']}.");
+    }
+
+    // Use "wp civicrm sql-dump" to dump database.
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand("civicrm sql-dump --result-file={$backup_sql_file}", $options);
+    WP_CLI::success('1. Database backed up.');
+
+    // Move existing CiviCRM plugin directory to backup directory.
+    if (!@rename($plugin_path, $backup_plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to backup CiviCRM project directory %s to %s: %s', $project_path, $backup_plugin_path, $error['message']));
+    }
+    WP_CLI::log('');
+    WP_CLI::success('2. Code backed up.');
+
+    // ----------------------------------------------------------------------------
+    // Subsequent commands can remain the same.
+    // ----------------------------------------------------------------------------
+
+    // Use "wp civicrm core update" to upgrade CiviCRM.
+    $command = 'civicrm core update --zipfile=' . $zipfile . (empty($yes) ? '' : ' --yes');
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Use "wp civicrm core update-db" to upgrade the CiviCRM database.
+    $command = 'civicrm core update-db' . (empty($v) ? '' : ' --v') . (empty($vv) ? '' : ' --vv') . (empty($yes) ? '' : ' --yes');
+    $options = ['launch' => TRUE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/utilities/class-backup-restorer.php b/wp-cli/commands/utilities/class-backup-restorer.php
new file mode 100755
index 0000000000..ef7251f1ba
--- /dev/null
+++ b/wp-cli/commands/utilities/class-backup-restorer.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Backup restorer class.
+ *
+ * @since 5.69
+ */
+
+// Make sure WP_Upgrader exists.
+if (!class_exists('WP_Upgrader')) {
+  require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+}
+
+/**
+ * Backup restorer class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_WP_Upgrader extends WP_Upgrader {
+
+  /**
+   * @var bool
+   * Whether a bulk upgrade/installation is being performed.
+   * @since 5.69
+   * @access public
+   */
+  public $bulk = FALSE;
+
+  /**
+   * Initialize the backup strings.
+   *
+   * @since 5.69
+   */
+  public function backup_strings() {
+    $this->strings['unpack_package'] = 'Unpacking the backup...';
+    $this->strings['installing_package'] = 'Restoring the backup...';
+    $this->strings['remove_old'] = 'Removing the existing directory...';
+    $this->strings['remove_old_failed'] = 'Could not remove the existing directory.';
+    $this->strings['process_failed'] = 'Backup failed.';
+    $this->strings['process_success'] = 'Backup restored successfully.';
+  }
+
+  /**
+   * Restore a directory from a backup.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @return array|false|WP_Error The result on success, otherwise a WP_Error, or false if unable to connect to the filesystem.
+   */
+  public function restore($zipfile, $destination) {
+
+    $this->backup_strings();
+
+    $options = [
+      'package' => $zipfile,
+      'destination' => untrailingslashit($destination),
+      'clear_destination' => TRUE,
+      'clear_working' => FALSE,
+      'abort_if_destination_exists' => FALSE,
+    ];
+
+    return $this->run($options);
+
+  }
+
+}
diff --git a/wp-cli/commands/utilities/class-logger-dummy.php b/wp-cli/commands/utilities/class-logger-dummy.php
new file mode 100755
index 0000000000..be6a2645d0
--- /dev/null
+++ b/wp-cli/commands/utilities/class-logger-dummy.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Dummy Task Context logger class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Logger_Dummy {
+
+  /**
+   * Suppresses Task Context logger output.
+   *
+   * @since 5.69
+   *
+   * @param mixed $message The string or object containing the message to log.
+   */
+  public function info($message) {}
+
+}
diff --git a/wp-cli/commands/utilities/class-zip-extractor.php b/wp-cli/commands/utilities/class-zip-extractor.php
new file mode 100755
index 0000000000..002a3fa055
--- /dev/null
+++ b/wp-cli/commands/utilities/class-zip-extractor.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Zip extractor class.
+ *
+ * @since 5.69
+ */
+
+// Make sure WP_Upgrader exists.
+if (!class_exists('WP_Upgrader')) {
+  require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+}
+
+/**
+ * Zip extractor class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Zip_Extractor extends WP_Upgrader {
+
+  /**
+   * @var bool
+   * Whether a bulk upgrade/installation is being performed.
+   * @since 5.69
+   * @access public
+   */
+  public $bulk = FALSE;
+
+  /**
+   * Initializes the extract strings.
+   *
+   * @since 5.69
+   */
+  public function extract_strings() {
+    $this->strings['unpack_package'] = 'Unpacking the archive...';
+    $this->strings['installing_package'] = 'Installing the archive...';
+    $this->strings['remove_old'] = 'Removing the existing directory...';
+    $this->strings['remove_old_failed'] = 'Could not remove the existing directory.';
+    $this->strings['process_failed'] = 'Extraction failed.';
+    $this->strings['process_success'] = 'Extraction completed successfully.';
+  }
+
+  /**
+   * Extracts a zip archive to a directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @param array $settings The array of extraction settings.
+   * @return array|false|WP_Error The result on success, otherwise a WP_Error, or false if unable to connect to the filesystem.
+   */
+  public function extract($zipfile, $destination, $settings) {
+
+    $this->extract_strings();
+
+    $options = [
+      'package' => $zipfile,
+      'destination' => untrailingslashit($destination),
+    ];
+
+    $defaults = [
+      'clear_destination' => TRUE,
+      'clear_working' => TRUE,
+      'abort_if_destination_exists' => FALSE,
+    ];
+
+    $settings = wp_parse_args($settings, $defaults);
+
+    $options = $options + $settings;
+
+    return $this->run($options);
+
+  }
+
+}
diff --git a/wp-cli/wp-cli-civicrm.php b/wp-cli/wp-cli-civicrm.php
new file mode 100755
index 0000000000..a82b505364
--- /dev/null
+++ b/wp-cli/wp-cli-civicrm.php
@@ -0,0 +1,192 @@
+<?php
+/**
+ * WP-CLI integration based on CiviCRM `cv` functionality.
+ *
+ * @see https://github.com/civicrm/cv
+ * @see https://github.com/christianwach/cli-tools-for-civicrm
+ *
+ * @since 5.69
+ */
+
+/*
+ * Check constants here because it is possible to include this file early using
+ * the `--require` flag. The command may also be bundled as a "package" which
+ * loads before WordPress itself.
+ *
+ * @see https://make.wordpress.org/cli/handbook/references/config/#global-parameters
+ * @see https://make.wordpress.org/cli/handbook/guides/commands-cookbook/#overview
+ * @see https://make.wordpress.org/cli/handbook/guides/sharing-wp-cli-packages/
+ */
+
+// Bail if WP-CLI is not present.
+if (!class_exists('WP_CLI')) {
+  return;
+}
+
+// Bail if either legacy or current WP-CLI tools are already loaded.
+if (class_exists('CiviCRM_Command') || class_exists('CLI_Tools_CiviCRM_Command')) {
+  return;
+}
+
+// Bail if identifying constant is already set.
+if (defined('CIVICRM_WPCLI_LOADED')) {
+  return;
+}
+
+// Make this the one true command.
+define('CIVICRM_WPCLI_LOADED', 1);
+
+// Set up commands.
+WP_CLI::add_hook('before_wp_load', function() {
+
+  // Include files.
+  require_once __DIR__ . '/commands/command-base.php';
+  require_once __DIR__ . '/commands/command-civicrm.php';
+  require_once __DIR__ . '/commands/command-core.php';
+  require_once __DIR__ . '/commands/command-api-v3.php';
+  require_once __DIR__ . '/commands/command-cache.php';
+  require_once __DIR__ . '/commands/command-db.php';
+  require_once __DIR__ . '/commands/command-debug.php';
+  require_once __DIR__ . '/commands/command-job.php';
+  require_once __DIR__ . '/commands/command-pipe.php';
+
+  // ----------------------------------------------------------------------------
+  // Add commands.
+  // ----------------------------------------------------------------------------
+
+  // Add top-level commands.
+  WP_CLI::add_command('civicrm', 'CLI_Tools_CiviCRM_Command');
+  WP_CLI::add_command('cv', 'CLI_Tools_CiviCRM_Command');
+
+  // Add default API command.
+  WP_CLI::add_command('civicrm api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+  WP_CLI::add_command('cv api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+
+  // Add API v3 command.
+  WP_CLI::add_command('civicrm api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+  WP_CLI::add_command('cv api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+
+  // Add Cache Clear command.
+  WP_CLI::add_command('civicrm cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
+  WP_CLI::add_command('cv cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
+
+  // Add Core command.
+  WP_CLI::add_command('civicrm core', 'CLI_Tools_CiviCRM_Command_Core');
+  WP_CLI::add_command('cv core', 'CLI_Tools_CiviCRM_Command_Core');
+
+  // Add DB command.
+  WP_CLI::add_command('civicrm db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
+  WP_CLI::add_command('cv db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
+
+   // Add Debug command.
+  WP_CLI::add_command('civicrm debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
+  WP_CLI::add_command('cv debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
+
+  // Add Job command.
+  WP_CLI::add_command('civicrm job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
+  WP_CLI::add_command('cv job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
+
+  // Add Pipe command.
+  WP_CLI::add_command('civicrm pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
+  WP_CLI::add_command('cv pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
+
+  // ----------------------------------------------------------------------------
+  // Add deprecated legacy commands.
+  // ----------------------------------------------------------------------------
+
+  // Include legacy files.
+  require_once __DIR__ . '/commands/legacy/command-cache-clear.php';
+  require_once __DIR__ . '/commands/legacy/command-debug-disable.php';
+  require_once __DIR__ . '/commands/legacy/command-debug-enable.php';
+  require_once __DIR__ . '/commands/legacy/command-install.php';
+  require_once __DIR__ . '/commands/legacy/command-mail-queue.php';
+  require_once __DIR__ . '/commands/legacy/command-member-records.php';
+  require_once __DIR__ . '/commands/legacy/command-restore.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-cli.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-conf.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-connect.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-dump.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-query.php';
+  require_once __DIR__ . '/commands/legacy/command-update-cfg.php';
+  require_once __DIR__ . '/commands/legacy/command-upgrade.php';
+  require_once __DIR__ . '/commands/legacy/command-upgrade-db.php';
+
+  // Deprecated: Add Cache Clear command.
+  WP_CLI::add_command('civicrm cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
+  WP_CLI::add_command('cv cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
+
+  // Deprecated: Add Debug Disable command.
+  WP_CLI::add_command('civicrm disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
+  WP_CLI::add_command('cv disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
+
+  // Deprecated: Add Debug Enable command.
+  WP_CLI::add_command('civicrm enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
+  WP_CLI::add_command('cv enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
+
+  // Deprecated: Add Install command.
+  WP_CLI::add_command('civicrm install', 'CLI_Tools_CiviCRM_Command_Install');
+  WP_CLI::add_command('cv install', 'CLI_Tools_CiviCRM_Command_Install');
+
+  // Deprecated: Add Process Mail Queue command.
+  WP_CLI::add_command('civicrm process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
+  WP_CLI::add_command('cv process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
+
+  // Deprecated: Add Member Records command.
+  WP_CLI::add_command('civicrm member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
+  WP_CLI::add_command('cv member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
+
+  // Deprecated: Add Restore command.
+  WP_CLI::add_command('civicrm restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
+  WP_CLI::add_command('cv restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
+
+  // Deprecated: Add SQL CLI command.
+  WP_CLI::add_command('civicrm sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
+  WP_CLI::add_command('cv sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
+
+  // Deprecated: Add SQL Config command.
+  WP_CLI::add_command('civicrm sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
+  WP_CLI::add_command('cv sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
+
+  // Deprecated: Add SQL Connect command.
+  WP_CLI::add_command('civicrm sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
+  WP_CLI::add_command('cv sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
+
+  // Deprecated: Add SQL Dump command.
+  WP_CLI::add_command('civicrm sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
+  WP_CLI::add_command('cv sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
+
+  // Deprecated: Add SQL Query command.
+  WP_CLI::add_command('civicrm sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
+  WP_CLI::add_command('cv sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
+
+  // Deprecated: Add Update Config command.
+  WP_CLI::add_command('civicrm update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
+  WP_CLI::add_command('cv update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
+
+  // Deprecated: Add Upgrade command.
+  WP_CLI::add_command('civicrm upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
+  WP_CLI::add_command('cv upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
+
+  // Deprecated: Add Upgrade DB command.
+  WP_CLI::add_command('civicrm upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
+  WP_CLI::add_command('cv upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
+
+  // ----------------------------------------------------------------------------
+  // Define CiviCRM paths.
+  // ----------------------------------------------------------------------------
+
+  // Set paths early.
+  global $civicrm_paths;
+  $wp_cli_config = WP_CLI::get_config();
+
+  // If --path is set, save for later use by CiviCRM.
+  if (!empty($wp_cli_config['path'])) {
+    $civicrm_paths['cms.root']['path'] = $wp_cli_config['path'];
+  }
+
+  // If --url is set, save for later use by CiviCRM.
+  if (!empty($wp_cli_config['url'])) {
+    $civicrm_paths['cms.root']['url'] = $wp_cli_config['url'];
+  }
+
+});
-- 
GitLab