fixed simplenews subscribers without account migration

This commit is contained in:
Bachir Soussi Chiadmi 2021-07-26 21:38:40 +02:00
parent 513bce8721
commit fc85755ad1
26 changed files with 242 additions and 31 deletions

View File

@ -1,7 +1,9 @@
uuid: 35406e7f-b9ca-4a27-8730-ffdafc3bd897 uuid: dcb4548c-dc78-4a94-95d3-87bbe043c53b
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: _R1mGCGtQpx6FBB0Ar7k7M5nPIVY1-SMuCtcAd34XuE
id: d7_allpublicfiles id: d7_allpublicfiles
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 07754b1c-1ce9-4395-b445-52484677fd77 uuid: eeca64cb-9c3d-40c4-a9f7-8f32cfb02e0b
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: f85wgi1X5OQcul-MaFHfwTnRX0UGYadvMix99y4rc_s
id: d7_flaglistitems id: d7_flaglistitems
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 7165e9a0-98d6-4655-854e-7597a979d395 uuid: 758a1117-9a7a-42ab-8d6e-df83db7a9646
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: 7tTvUUvJgPn4PJeTmH4OmGkL5mWkCZhIJqAxxVaCHaM
id: d7_flaglists id: d7_flaglists
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 9237cd40-dcf6-4a20-a0ed-2f65ff95779d uuid: f8fd027f-4b95-4f96-81dd-0fb6a933f1d8
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: bbML9CDOadmNncab8Nqeqe8ALVFBUdCAiAoLh5GjDqY
id: d7_node_article id: d7_node_article
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 6612e657-4f64-40e1-8591-293dddb08cd3 uuid: 5a8e274e-b409-46ee-bce1-43f29a6ab72c
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: aDaggGLk8KnIX-YP91umTDS_kJ0j2NDAtztR9nw1Fcw
id: d7_node_article_i18n id: d7_node_article_i18n
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: b9ed8c19-1a6f-49f0-8a50-2ab147911f5b uuid: d28b7866-6f07-4f5f-8c3e-62b57c633565
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: RA4aoUpQgGNUksKkaxv71gcC0VWZP4Z68s5HK2wryMY
id: d7_node_materiau id: d7_node_materiau
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 22ace0c9-c4cb-46d0-9c94-9198430091bb uuid: e9e0341d-d155-456f-a1f0-6a348afef8b1
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: dLH0GM4buVtGtvkuO_4CHo-pqAx-QwMdk60cWsYv8qY
id: d7_node_materiau_i18n id: d7_node_materiau_i18n
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,10 +1,9 @@
uuid: d8149f6f-aeec-46cd-9eb1-79a906e3c42e uuid: bba71567-126c-45dd-87b7-c64cd7cb706e
langcode: en langcode: en
status: true status: true
dependencies: dependencies: { }
module: _core:
- migrate_drupal default_config_hash: sHpTuBlN2_eBjg6NI88UARG8mHYLBZxKQ1iJgW1mdEM
- simplenews
id: d7_simplenews_nodes id: d7_simplenews_nodes
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,10 +1,9 @@
uuid: d55ad36d-4c3e-4b0b-b46e-16ce8c0c9e3a uuid: 106d0615-4fd1-4182-b306-f663e6dad3db
langcode: en langcode: en
status: true status: true
dependencies: dependencies: { }
module: _core:
- migrate_drupal default_config_hash: W8YQ0kBFIChTQEAaLnhWJDf3lzzW7B8_J4qWZXMEOwg
- simplenews
id: d7_simplenews_subscribers id: d7_simplenews_subscribers
class: null class: null
field_plugin_method: null field_plugin_method: null
@ -22,9 +21,10 @@ process:
status: activated status: activated
mail: mail mail: mail
uid: uid:
plugin: migration plugin: migration_lookup
migration: d7_users migration: d7_users
source: uid source: uid
no_stub: true
langcode: language langcode: language
changes: changes changes: changes
created: created created: created

View File

@ -0,0 +1,46 @@
uuid: 14686961-3fa4-4c64-8c0b-eec1a7f8e55c
langcode: en
status: true
dependencies: { }
_core:
default_config_hash: IuyCGWzXRebeOJYvS2Fwij8LGbYufG0FyjkOKZrTZLQ
id: d7_simplenews_subscribers_notuser
class: null
field_plugin_method: null
cck_plugin_method: null
migration_tags:
- 'Drupal 7'
- Content
- Materio
migration_group: d7_materio
label: 'Simplenews subscribers (without user drupal accompte)'
source:
plugin: d7_simplenews_subscribers_notuser
process:
id: snid
status: activated
mail: mail
uid: uid
langcode: language
changes: changes
created: created
subscriptions:
plugin: iterator
source: subscriptions
process:
target_id:
plugin: static_map
source: newsletter_id
map:
6585: test
6374: ze_daily_materio_
6274: materio_newsletter
7881: companies
status: status
timestamp: timestamp
source: source
destination:
plugin: 'entity:simplenews_subscriber'
migration_dependencies:
required:
- d7_users

View File

@ -1,7 +1,9 @@
uuid: 65c9219c-ff6e-48c1-8edf-cefa85ff722c uuid: 9b7337ca-b3ad-42f4-aca4-fe874fe78d87
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: 6zRUA88z28s1EKQh9eQnvj6ftzTg5ADqwr8PNRuQjFI
id: d7_taxonomy_term_company id: d7_taxonomy_term_company
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 8826255f-8105-4e33-ad41-2f012a7f666c uuid: de4730ea-b6c6-4df5-b220-9eb5ffee2f1e
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: Oip5TPNIP8RxEmtUffgwo8AuBwxsYGMdECAxEqmnCiA
id: d7_taxonomy_term_showroom id: d7_taxonomy_term_showroom
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 1b656b5e-984d-417a-b499-93694ba57824 uuid: b732b3c8-8087-4d3f-8b75-ffc3f0103155
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: ANwnCRB6FgqpsP5cu1RdbPcXBem0E0qSi-7q3RZjmp8
id: d7_taxonomy_term_tags id: d7_taxonomy_term_tags
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 8585beee-de2f-455e-a5b7-9f87faabc12f uuid: 4161661a-40f1-4d3a-9b4a-564d8853ca6e
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: IVIXijd3hu4c6IYCkPsT81h334IVvQ1mRLonwSCegVc
id: d7_taxonomy_term_tags_i18n id: d7_taxonomy_term_tags_i18n
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 1ea1ed08-74d8-4c1d-a2a4-e6b66d55a5cb uuid: 0df3858a-60e5-4f8b-afcc-187a06897b29
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: 55XmBttIA63YE74GI20R9E_synOOR7E6yObM-HVGKSw
id: d7_taxonomy_term_thesaurus id: d7_taxonomy_term_thesaurus
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: c173dfca-2339-42e4-9084-b43fc8195601 uuid: 8e649162-a155-40a3-b401-8483e9777e36
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: dEUkhkROYAKjrQDitdMPb_P8qPFSTRVEypMkdvRHkdg
id: d7_taxonomy_term_thesaurus_i18n id: d7_taxonomy_term_thesaurus_i18n
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,4 +1,4 @@
uuid: 639535d6-8438-46f1-b3d1-e418be168295 uuid: eafb7b89-8a87-463e-8358-40a908c646d8
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
@ -6,6 +6,8 @@ dependencies:
module: module:
- commerce_product - commerce_product
- commerce_license - commerce_license
_core:
default_config_hash: Cww-kYUSfiHIC4eVeT_hxEweTOd3JMHR8VhZtlsuBNo
id: d7_uc_roles_license id: d7_uc_roles_license
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,4 +1,4 @@
uuid: 31329805-ff63-4a85-bbc6-71d7ce63b453 uuid: b395329b-ca8f-4ac4-9a1c-2e9402da1606
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
@ -7,6 +7,8 @@ dependencies:
- migrate_plus - migrate_plus
- migrate_tools - migrate_tools
- profile - profile
_core:
default_config_hash: e1Ovv7AKK2jcslO5T8MUMLNWeIQZuRJr_IX21nWvZMY
id: d7_user_profile id: d7_user_profile
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,4 +1,4 @@
uuid: efadb1c8-1ff5-4a7c-9a1f-2b9c269a8362 uuid: add4ae12-6fd2-47fe-8be0-0f4599f491ef
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
@ -7,6 +7,8 @@ dependencies:
- migrate_plus - migrate_plus
- migrate_tools - migrate_tools
- profile - profile
_core:
default_config_hash: Gs2PxO-2VEZGZYcaulvoljvA7t3m9Z_oSh9R8giUO3U
id: d7_user_profile_customer id: d7_user_profile_customer
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,7 +1,9 @@
uuid: 73a8209b-f751-4bcc-90ad-aabbfb463fd8 uuid: 952c90cc-0ab6-4638-82db-a7484cd11917
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }
_core:
default_config_hash: AglNUIV8aPCwgbTf8P3TNC2TmZkCXgPmEZGMG_Ex2Ms
id: d7_users id: d7_users
class: null class: null
field_plugin_method: null field_plugin_method: null

View File

@ -1,4 +1,4 @@
uuid: dd6f01ed-a2ee-4114-bf01-5b8a34f79016 uuid: 1a2e415f-0065-4cf0-b2d4-e218eeb9dec6
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
@ -7,6 +7,8 @@ dependencies:
- migrate_plus - migrate_plus
- migrate_tools - migrate_tools
- materio_migrate - materio_migrate
_core:
default_config_hash: tbcV0glxU9BqeXcSUn9ZKXnOPW-C2v8Q-shvIJ2xNG8
id: d7_materio id: d7_materio
label: 'D7 Materio' label: 'D7 Materio'
description: 'Drupal 7 materio content migration to Drupal 8.' description: 'Drupal 7 materio content migration to Drupal 8.'

View File

@ -24,9 +24,10 @@ process:
mail: mail mail: mail
# uid: uid # uid: uid
uid: uid:
plugin: migration plugin: migration_lookup
migration: d7_users migration: d7_users
source: uid source: uid
no_stub: true
langcode: language langcode: language
changes: changes changes: changes

View File

@ -0,0 +1,55 @@
id: d7_simplenews_subscribers_notuser
migration_group: d7_materio
dependencies:
# config:
# - migrate.migration.d7_simplenews_newsletter
module:
- migrate_drupal
- simplenews
label: Simplenews subscribers (without user drupal accompte)
migration_tags:
- Drupal 7
- Content
- Materio
source:
plugin: d7_simplenews_subscribers_notuser
# high_water_property:
# name: changes
# alias: s
process:
id: snid
status: activated
mail: mail
uid: uid
langcode: language
changes: changes
created: created
subscriptions:
plugin: iterator
source: subscriptions
process:
target_id:
plugin: static_map
source: newsletter_id
map:
6585: "test"
6374: "ze_daily_materio_"
6274: "materio_newsletter"
7881: "companies"
# plugin: migration
# migration: d7_simplenews_newsletter
# source: newsletter_id
status: status
timestamp: timestamp
source: source
destination:
plugin: entity:simplenews_subscriber
migration_dependencies:
required:
- d7_users

View File

@ -43,6 +43,7 @@ class D7SimplenewsSubscribers extends DrupalSqlBase {
public function query() { public function query() {
return $this->select('simplenews_subscriber', 's') return $this->select('simplenews_subscriber', 's')
->fields('s') ->fields('s')
->condition('s.uid', 0, '<>')
->orderBy('snid'); ->orderBy('snid');
} }

View File

@ -0,0 +1,73 @@
<?php
namespace Drupal\materio_migrate\Plugin\migrate\source;
use Drupal\migrate\Row;
use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
/**
* Migration source for Subscriber entries in D7.
*
* @MigrateSource(
* id = "d7_simplenews_subscribers_notuser",
* source_module = "simplenews"
* )
*/
class D7SimplenewsSubscribersNotUser extends DrupalSqlBase {
/**
* {@inheritdoc}
*/
public function fields() {
return [
'snid' => $this->t('Subscriber ID'),
'activated' => $this->t('Activated'),
'mail' => $this->t("Subscriber's e-mail address"),
'uid' => $this->t('Corresponding user'),
'language' => $this->t('Language'),
'changes' => $this->t('Pending unconfirmed subscription changes'),
'created' => $this->t('Time of creation'),
];
}
/**
* {@inheritdoc}
*/
public function getIds() {
return ['snid' => ['type' => 'integer']];
}
/**
* {@inheritdoc}
*/
public function query() {
return $this->select('simplenews_subscriber', 's')
->fields('s')
->condition('s.uid', 0)
->orderBy('snid');
}
/**
* {@inheritdoc}
*/
public function prepareRow(Row $row) {
$result = parent::prepareRow($row);
$version = $this->getModuleSchemaVersion('simplenews');
$newsletter_id_field = 'newsletter_id';
if ($version >= 7000 & $version < 7200) {
$newsletter_id_field = 'tid';
}
// Add associated data from the subscriptions table.
$q = $this->select('simplenews_subscription', 'sub');
$q->addField('sub', $newsletter_id_field, 'newsletter_id');
$q->fields('sub', ['status', 'timestamp', 'source']);
$q->condition('sub.snid', $row->getSourceProperty('snid'));
$subscriptions = $q->execute()->fetchAllAssoc('newsletter_id');
$row->setSourceProperty('subscriptions', $subscriptions);
return $result;
}
}

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>materio.com [19 Jul 2021 at 18:26]</title> <title>materio.com [26 Jul 2021 at 19:37]</title>
<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" /> <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
<script> <script>