From eff8f39801deaab2caec9a6b113cc94620b49b9a Mon Sep 17 00:00:00 2001 From: david hill Date: Tue, 31 May 2016 16:40:30 -0500 Subject: [PATCH] MCOL-3 directory name changes --- ChangeLog | 2 +- INSTALL | 6 +- Makefile.tar | Bin 379576 -> 379696 bytes README | 16 +- build/build_rpms | 26 +- build/columnstore.community.spec.in | 454 +-- build/columnstore.spec.in | 518 +-- build/columnstore.spec.in~ | 518 +-- build/infinidb.spec.in | 526 +-- buildFlags | 1 + config.log | 4 +- dbcon/ddlpackage/ddl-gram.cpp | 3293 +++++++++++++++++ dbcon/ddlpackage/ddl-gram.h | 173 + dbcon/dmlpackage/dml-gram.cpp | 2998 +++++++++++++++ dbcon/dmlpackage/dml-gram.h | 182 + dbcon/execplan/tdriver-sm.cpp | 4 +- dbcon/execplan/tdriver.cpp | 2 +- dbcon/joblist/fdtests.pl | 2 +- dbcon/joblist/largehashjoin.cpp | 4 +- dbcon/joblist/tdriver-agg.cpp | 2 +- dbcon/mysql/dumpcat.pl | 2 +- dbcon/mysql/install_calpont_mysql.sh | 4 +- dbcon/mysql/my.cnf | 28 +- dbcon/mysql/mysql-Columnstore | 10 +- dbcon/mysql/schemaSync.pl | 2 +- ddlproc/Makefile | 2 +- decomsvr/Makefile | 2 +- dmlproc/Makefile | 2 +- exemgr/Makefile | 2 +- libtool | 4 +- net-snmp/net-snmp-5.2.1.2/CalpontConfigure.sh | 2 +- oam/cloud/IDBCloudGetIP.sh | 10 +- oam/cloud/IDBInstanceCmds.sh | 20 +- oam/cloud/IDBVolumeCmds.sh | 32 +- oam/etc/ProcessConfig.xml | 2 +- oam/etc/ProcessConfig.xml.singleserver | 46 +- oam/install_scripts/binary_installer.sh | 2 +- oam/install_scripts/calpontAlias | 10 +- oam/install_scripts/calpontInstall.sh | 2 +- oam/install_scripts/calpontLogRotate | 8 +- oam/install_scripts/calpontSyslog | 12 +- oam/install_scripts/calpontSyslog-ng | 12 +- oam/install_scripts/calpontSyslog7 | 12 +- oam/install_scripts/calpontUninstall.sh | 2 +- oam/install_scripts/columnstore | 6 +- oam/install_scripts/columnstore.conf | 2 +- oam/install_scripts/columnstore.def | 2 +- oam/install_scripts/columnstore.upstart | 2 +- oam/install_scripts/columnstoreAlias | 20 +- oam/install_scripts/columnstoreInstall.sh | 2 +- oam/install_scripts/columnstoreLogRotate | 16 +- oam/install_scripts/columnstoreSyslog | 12 +- oam/install_scripts/columnstoreSyslog-ng | 12 +- oam/install_scripts/columnstoreSyslog7 | 12 +- oam/install_scripts/columnstoreUninstall.sh | 2 +- oam/install_scripts/crontab | 2 +- oam/install_scripts/director_installer.sh | 2 +- .../disable-rep-columnstore.sh | 4 +- oam/install_scripts/disable-rep-infinidb.sh | 4 +- oam/install_scripts/infinidb | 2 +- oam/install_scripts/master-rep-columnstore.sh | 4 +- oam/install_scripts/master-rep-infinidb.sh | 4 +- oam/install_scripts/module_installer.sh | 6 +- oam/install_scripts/performance_installer.sh | 2 +- oam/install_scripts/post-install | 40 +- oam/install_scripts/post-mysql-install | 10 +- oam/install_scripts/post-mysqld-install | 8 +- oam/install_scripts/postInstall.sh | 2 +- oam/install_scripts/pre-uninstall | 14 +- oam/install_scripts/remote_installer.sh | 2 +- oam/install_scripts/slave-rep-columnstore.sh | 4 +- oam/install_scripts/slave-rep-infinidb.sh | 4 +- oam/install_scripts/startupTests.sh | 2 +- oam/install_scripts/syslogSetup.sh | 10 +- oam/install_scripts/system_installer.sh | 4 +- oam/install_scripts/transactionLog | 2 +- oam/install_scripts/transactionLogArchiver.sh | 2 +- oam/install_scripts/upgrade-columnstore.sh | 4 +- oam/install_scripts/upgrade-infinidb.sh | 4 +- oam/install_scripts/user_installer.sh | 2 +- oam/oamcpp/Makefile | 2 +- oam/oamcpp/liboamcpp.cpp | 18 +- oam/oamcpp/liboamcpp.h | 12 +- oam/post/functions | 2 +- oam/post/test-001.sh | 2 +- oam/post/test-002.sh | 2 +- oam/post/test-003.sh | 2 +- oam/post/test-004.sh | 2 +- oam/replaytxnlog/Makefile | 2 +- oam/replaytxnlog/replaytxnlog.cpp | 2 +- oamapps/calpontConsole/Makefile | 6 +- oamapps/calpontConsole/calpontConsole.h | 2 +- oamapps/calpontDB/Makefile | 2 +- oamapps/calpontDB/calpontDB.cpp | 2 +- oamapps/calpontSupport/Makefile | 4 +- oamapps/calpontSupport/alarmReport.sh | 6 +- oamapps/calpontSupport/approximateRowCount.sh | 4 +- oamapps/calpontSupport/bulklogReport.sh | 2 +- oamapps/calpontSupport/configReport.sh | 2 +- oamapps/calpontSupport/configReport.sh~ | 2 +- oamapps/calpontSupport/findStranded.sh | 4 +- oamapps/calpontSupport/getMinMax.sh | 4 +- oamapps/calpontSupport/hadoopReport.sh | 2 +- oamapps/calpontSupport/hardwareReport.sh | 2 +- oamapps/calpontSupport/logReport.sh | 4 +- oamapps/calpontSupport/minMaxCheck.sh | 4 +- oamapps/calpontSupport/resourceReport.sh | 2 +- oamapps/calpontSupport/softwareReport.sh | 2 +- oamapps/calpontSupport/sqlLogs.sh | 4 +- oamapps/columnstoreDB/Makefile | 2 +- oamapps/columnstoreDB/columnstoreDB.cpp | 2 +- oamapps/columnstoreSupport/Makefile | 4 +- oamapps/columnstoreSupport/alarmReport.sh | 6 +- .../columnstoreSupport/approximateRowCount.sh | 4 +- oamapps/columnstoreSupport/bulklogReport.sh | 2 +- oamapps/columnstoreSupport/calpontSupport.cpp | 4 +- oamapps/columnstoreSupport/configReport.sh | 2 +- oamapps/columnstoreSupport/findStranded.sh | 4 +- oamapps/columnstoreSupport/getMinMax.sh | 4 +- oamapps/columnstoreSupport/hadoopReport.sh | 2 +- oamapps/columnstoreSupport/hardwareReport.sh | 2 +- oamapps/columnstoreSupport/logReport.sh | 4 +- oamapps/columnstoreSupport/minMaxCheck.sh | 4 +- oamapps/columnstoreSupport/resourceReport.sh | 2 +- oamapps/columnstoreSupport/softwareReport.sh | 2 +- oamapps/columnstoreSupport/sqlLogs.sh | 4 +- oamapps/hardwareMonitor/Makefile | 2 +- oamapps/mcsadmin/Makefile | 6 +- oamapps/mcsadmin/mcsadmin.h | 2 +- oamapps/postConfigure/Makefile | 4 +- oamapps/postConfigure/amazonInstaller.cpp | 4 +- oamapps/postConfigure/installer.cpp | 12 +- oamapps/postConfigure/patchInstaller.cpp | 2 +- oamapps/postConfigure/postConfigure.cpp | 8 +- oamapps/replayTransactionLog/Makefile | 2 +- oamapps/resourceMonitor/Makefile | 6 +- oamapps/resourceMonitor/resourceMonitor.cpp | 2 +- oamapps/sendtrap/Makefile | 16 +- oamapps/serverMonitor/Makefile | 2 +- oamapps/serverMonitor/cpuMonitor.cpp | 2 +- oamapps/serverMonitor/dbhealthMonitor.cpp | 6 +- oamapps/serverMonitor/diskMonitor.cpp | 2 +- oamapps/serverMonitor/msgProcessor.cpp | 2 +- oamapps/sessionWalker/Makefile | 4 +- oamapps/traphandler/Makefile | 16 +- .../blockcache/blockrequestprocessor.cpp | 2 +- primitives/blockcache/filebuffermgr.cpp | 2 +- primitives/blockcache/iomanager.cpp | 4 +- primitives/blockcache/stats.cpp | 2 +- primitives/primproc/Makefile | 2 +- primitives/primproc/bppseeder.cpp | 2 +- primitives/primproc/primproc.cpp | 4 +- procmgr/Makefile | 2 +- procmgr/processmanager.cpp | 4 +- procmgr/processmanager.h | 2 +- procmon/Makefile | 2 +- procmon/main.cpp | 2 +- procmon/processmonitor.cpp | 18 +- snmpd/etc/snmpdx.conf | 2 +- snmpd/etc/snmpdx.conf.singleserver | 2 +- snmpd/etc/snmptrapd.conf | 10 +- snmpd/etc/snmptrapd.conf.singleserver | 10 +- snmpd/snmpmanager/snmpglobal.h | 6 +- tools/bincvt/Makefile | 2 +- tools/clearShm/Makefile | 2 +- tools/cleartablelock/Makefile | 2 +- tools/configMgt/Makefile | 4 +- tools/configMgt/autoConfigure.cpp | 6 +- tools/configMgt/autoInstaller.cpp | 2 +- tools/configMgt/configure.cpp | 4 +- tools/configMgt/dm_parent_installer_v3.sh | 6 +- tools/configMgt/parent_installer.sh | 4 +- tools/configMgt/pm_parent_installer_v3.sh | 6 +- tools/configMgt/stackReleaseChecker.o | Bin 0 -> 1937024 bytes tools/cplogger/Makefile | 2 +- tools/dbbuilder/Makefile | 2 +- tools/dbloadxml/Makefile | 2 +- tools/ddlcleanup/Makefile | 2 +- tools/ddldriver/Makefile | 2 +- tools/dmldriver/Makefile | 2 +- tools/editem/Makefile | 2 +- tools/evalidx/checkidx.py | 2 +- tools/getConfig/Makefile | 2 +- tools/hdfsCheck/Makefile | 2 +- tools/hdfsCheck/hdfsCheck.cpp | 2 +- tools/idbmeminfo/Makefile | 2 +- tools/notificationTester/Makefile | 2 +- tools/qfe/Makefile | 2 +- tools/reserveStacks/stack | 2 +- tools/setConfig/Makefile | 2 +- tools/setConfig/configxml.sh | 4 +- tools/viewtablelock/Makefile | 2 +- utils/autoconf/INSTALL | 6 +- utils/autoconf/README | 16 +- utils/dataconvert/Makefile | 2 +- utils/funcexp/Makefile | 2 +- utils/idbdatafile/Makefile | 4 +- utils/idbhdfs/hdfs-12/setenv-hdfs-12 | 2 +- utils/idbhdfs/hdfs-20/setenv-hdfs-20 | 2 +- .../infinidb_hadoop_bulkload.sh | 8 +- .../hadoop/example/InfiniDBOutputDriver.java | 2 +- utils/loggingcpp/tdriver.cpp | 2 +- utils/net-snmp/net-snmp-config.h | 12 +- utils/prat/copy2here.sh | 6 +- utils/prat/getlogs.sh | 10 +- utils/prat/getmodules.sh | 4 +- utils/prat/getps.sh | 6 +- utils/prat/getsar.sh | 6 +- utils/prat/getuserinput.sh | 2 +- utils/prat/prat.sh | 2 +- utils/prat/tarfiles.sh | 2 +- utils/scenarios/common/sh/bulkExecResult.sh | 64 +- utils/scenarios/common/sh/execSQLScript_m.sh | 2 +- utils/scenarios/common/sh/restore100gb.sh | 20 +- utils/scenarios/common/sh/testExecEngine.sh | 12 +- utils/scenarios/common/sql/load_TestStats.sql | 2 +- .../scenarios/common/sql/load_TestSummary.sql | 2 +- utils/scenarios/common/sql/load_TestTime.sql | 2 +- .../scenarios/dwweek/test/dwSubmitCpimport.sh | 14 +- utils/scenarios/dwweek/test/dwbackup.sh | 10 +- utils/scenarios/perf/sh/pfExeSQLscript.sh | 2 +- .../perf/source/pf/common/exeStreamTest.sh | 12 +- .../perf/source/pf/common/sendPlanExec.sh | 2 +- .../perf/source/pf/common/setDBRoots.sh | 48 +- .../perf/source/pf/common/setPMConfig.sh | 8 +- .../perf/source/pf/common/setStackConfig.sh | 10 +- .../perf/source/pf/common/setTestEnv.sh | 2 +- .../scenarios/perf/source/pf/common/step1.sh | 2 +- .../scenarios/perf/source/pf/common/step2.sh | 12 +- utils/scenarios/perf/source/pf/fm/getlogs.sh | 2 +- utils/scenarios/perf/source/pf/fm/getsar.sh | 8 +- utils/scenarios/perf/source/pf/fm/getsql.orig | 2 +- utils/scenarios/perf/source/pf/fm/getsql.sh | 6 +- .../perf/source/pf/scripts/1server_all.sh | 2 +- .../perf/source/pf/scripts/1um_1a_100_s17.sh | 2 +- .../perf/source/pf/scripts/1um_2a_100_s17.sh | 2 +- .../pf/scripts/1um_allarrays_allPMs_s0_s17.sh | 2 +- .../source/pf/scripts/2a_100g_1t_s0_s17.sh | 2 +- .../source/pf/scripts/2um_allconfigs_s17.sh | 2 +- .../perf/source/pf/scripts/allconfigs_s17.sh | 2 +- utils/scenarios/perf/test/pfSubmitBulkTest.sh | 20 +- utils/startup/installdir.cpp | 4 +- utils/testbc/stats.cpp | 2 +- utils/thrift/thrift/TApplicationException.d | 117 + utils/thrift/thrift/Thrift.d | 497 +++ utils/thrift/thrift/server/TSimpleServer.d | 123 + .../thrift/transport/TBufferTransports.d | 118 + utils/thrift/thrift/transport/TServerSocket.d | 117 + utils/thrift/thrift/transport/TSocket.d | 166 + utils/udfsdk/README.txt | 6 +- utils/udfsdk/udfsdk.h | 2 +- versioning/BRM/Calpont.xml | 6 +- versioning/BRM/Makefile | 2 +- versioning/BRM/autoinctest | Bin 0 -> 89027 bytes versioning/BRM/copylocktest | Bin 0 -> 89191 bytes versioning/BRM/slavecomm.cpp | 4 +- versioning/BRM/tablelocktest | Bin 0 -> 99528 bytes versioning/BRM/tracer.cpp | 2 +- versioning/BRM/tracer.h | 2 +- writeengine/bulk/Makefile | 2 +- writeengine/bulk/bulkload.py | 2 +- writeengine/bulk/bulkload.sh | 2 +- writeengine/bulk/bulkloadp.sh | 6 +- writeengine/bulk/checkidx.py | 2 +- writeengine/bulk/cleanup.sh | 2 +- writeengine/bulk/cpimport.sh | 2 +- writeengine/bulk/dbbuilder.sh | 2 +- writeengine/bulk/dbload_tmplate.sh | 2 +- writeengine/bulk/dbreset.sh | 2 +- writeengine/bulk/dbstart.sh | 2 +- writeengine/bulk/dbstop.sh | 2 +- writeengine/bulk/qa-bulkload.py | 2 +- .../redistribute/we_redistributecontrol.cpp | 2 +- writeengine/server/Makefile | 2 +- writeengine/splitter/Makefile | 2 +- writeengine/splitter/we_cmdargs.cpp | 2 +- writeengine/wrapper/tdriver.cpp | 4 +- 277 files changed, 9489 insertions(+), 1702 deletions(-) create mode 100644 buildFlags create mode 100644 dbcon/ddlpackage/ddl-gram.cpp create mode 100644 dbcon/ddlpackage/ddl-gram.h create mode 100644 dbcon/dmlpackage/dml-gram.cpp create mode 100644 dbcon/dmlpackage/dml-gram.h create mode 100644 tools/configMgt/stackReleaseChecker.o create mode 100644 utils/thrift/thrift/TApplicationException.d create mode 100644 utils/thrift/thrift/Thrift.d create mode 100644 utils/thrift/thrift/server/TSimpleServer.d create mode 100644 utils/thrift/thrift/transport/TBufferTransports.d create mode 100644 utils/thrift/thrift/transport/TServerSocket.d create mode 100644 utils/thrift/thrift/transport/TSocket.d create mode 100755 versioning/BRM/autoinctest create mode 100755 versioning/BRM/copylocktest create mode 100755 versioning/BRM/tablelocktest diff --git a/ChangeLog b/ChangeLog index 5210b726a..2fd30d5a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -298,7 +298,7 @@ Bug # Short Description 5752 ERROR 138 (HY000) at line 2: Sub-query failed: error code 2003 error for query that exceeded TotalUmMemory 5753 When PrimProc restarts, DML statement didn't reset the connections to PrimProc in connector 5757 addModule for UM failed on Amazon system - remote_command error -5759 Must use -p option for hadoop fs -mkdir when creating /usr/local/MariaDB/Columnstore +5759 Must use -p option for hadoop fs -mkdir when creating /usr/local/mariadb/columnstore 5764 select count(*) from a complex view is returning an incorrect answer. 5765 truncate statement does not show schema in the debug.log 5767 'create table' creates table in front end when spaces are in the table name. diff --git a/INSTALL b/INSTALL index 613949bc4..bac97edb4 100644 --- a/INSTALL +++ b/INSTALL @@ -43,10 +43,10 @@ the entire Calpont directory tree there. After untaring the sofware or installing the RPM's, setup the software to run (this script needs to run with root privileges). Check the Installation Guide for addition details on using postConfigure: -/usr/local/MariaDB/Columnstore/bin/postConfigure +/usr/local/mariadb/columnstore/bin/postConfigure Setup some aliases: -. /usr/local/MariaDB/Columnstore/bin/columnsoreAlias +. /usr/local/mariadb/columnstore/bin/columnsoreAlias Connect to MySQL: idbmysql @@ -70,7 +70,7 @@ To use bulk load: 200|2002| 2. Save/place this file in a directory. 3. From that same directory, import the rows: - /usr/local/MariaDB/Columnstore/bin/cpimport calpont caltest caltest.tbl + /usr/local/mariadb/columnstore/bin/cpimport calpont caltest caltest.tbl And check the import: calpontmysql calpont diff --git a/Makefile.tar b/Makefile.tar index a641451b9aff50a4757057108d53e601520686a2..fbc06b73c3d395c60965995391ca11517955d184 100644 GIT binary patch delta 1388 zcmb7EUr5tY6z1Ihwl-HZ%gy}5v?!EOxoVFx(M%+*hJsMUa-~#=Az@Kqr4v-rEce6x z2pSm@L|_QFIz5aYN_;Uw2@NCE^r=4(f)*;V?xu9lFX^Gj^WAg4`T=&Vv$mQr(g^SgwJj|`uADopns*XV)tAwcFkvEuv}0X+JQm3$jO!dd z!b5%O^p3wR|IfJ;C+5;`dT5m0^39L0(?)dySFK2SdNf-Wge%#D@LRB}GeJMUF+NF# z#{*NhtuhnG+TgPRZDHsDoEcIcL63XC>icEpWFp;7Bg8eEpFbaHZk#AnK5y*f{bm6YgU04U}&oDPqAOdbw3_h|W|1lVIDzz2sm+vGGCCm)C}i4;BvZ%ItO$IBCS;D? z^!Cw{iGm;)JI40INbJ)xg(&Hvq8K>|&W{HAQAc~6bJcz>?6vk;d+i6;*J0^yxA^)@ z!H(j}lH$F#6g%xV&BX9f?KkbBKev5YD?p=ZMLg1SM7W??$RNCo%1#Q+)HP9GIn=>cm<+?AjGuP-b8_jXG8#$(~bmP5q zB$OvC8g$aR(+$BKQ|qfnc(j;dQ*&Gv+E+bGz)pKF^aOF5RY+E!)(vrlHr0nOvt_1T z*DkZSYKtdV^YqFWRmoGwq*^>#Vf^7LW@+o)cjBb7>9_kEMBx9Udt>0rzt`~g$qung z-Dv3fu44(pgPJ_@K$}TYqO^a2hj?)Cb3o*-{k{*x6gVbiV;MjVIiR8(QOashF24%MnGy=L#LeDxKI3*#I zF-jO(52?y3)CfV-b%=;qM*S%sqWUI{xaA?t>wAHqCBo{1+XA7w{o{zwp~uYC^gG1K z*H9eAS!B0Vu6KL`Fn<=pgo6>M5seiFVqL8fKUuPLC5o)@idW;w{AOO2`5eUFJQ537 zaZnxrd}#m`u+<^EL3PGC@MaeIBp5)p{0ZSw@c3cUDDWEN3-Qn?@-dbd!PEwlU&CYV zUW#mM8eSkcydV{96o{R1a-rqlAEmss>P*?$bLEvMQc6pXYLSUjtX4ZfwqhVoekA-? zkm(IZbD71aG}e?E3lGTEpE-eF5|swwxUgiqQYO^LF{fhQ$Mc!c5Ds=IMXA34&MVSF diff --git a/README b/README index e537d7db0..0776daa62 100644 --- a/README +++ b/README @@ -3,8 +3,8 @@ To build the software from source, consult the file INSTALL. Brief Install Instructions: 1. Install the 3 MariaDB Columnstore RPMs. -2. Install and start the software, run: /usr/local/MariaDB/Columnstore/bin/postConfigure -3. Setup some aliases: . /usr/local/MariaDB/Columnstore/bin/MariaDB ColumnstoreAlias +2. Install and start the software, run: /usr/local/mariadb/columnstore/bin/postConfigure +3. Setup some aliases: . /usr/local/mariadb/columnstore/bin/MariaDB ColumnstoreAlias 4. Connect to MySQL: idbmysql 5. Try the test in step 12 below @@ -21,7 +21,7 @@ Detailed Installation Instructions: tar xvf MariaDB Columnstore-2.2.0-2.x86_64.rpm.tar.gz 4. Install the 3 RPMs in this order, the MariaDB Columnstore software will be installed in - /usr/local/MariaDB/Columnstore. + /usr/local/mariadb/columnstore. rpm -ivh infinidb-libs-2.2.0-2.x86_64.rpm rpm -ivh infinidb-platform-2.2.0-2.x86_64.rpm @@ -31,19 +31,19 @@ Detailed Installation Instructions: 5a.To configure and run on a single server system utilizing local disk storage, run install script: - /usr/local/MariaDB/Columnstore/bin/postConfigure + /usr/local/mariadb/columnstore/bin/postConfigure 5b.To configure and run on a multi-server system and/or to utilize a SAN storage system, follow the instructions in the MariaDB Columnstore Installation Guide. - /usr/local/MariaDB/Columnstore/bin/postConfigure + /usr/local/mariadb/columnstore/bin/postConfigure 6. Ports utilized by the MariaDB Columnstore Software The MariaDB Columnstore MySQL daemon utilizes port 3306. To use a different port, update the 2 locations in the following file: - /usr/local/MariaDB/Columnstore/mysql/my.cnf + /usr/local/mariadb/columnstore/mysql/my.cnf port = 3306 port = 3306 @@ -53,7 +53,7 @@ Detailed Installation Instructions: 8600 - 8622, 8700, and 8800 7. Setup some aliases: -. /usr/local/MariaDB/Columnstore/bin/MariaDB ColumnstoreAlias +. /usr/local/mariadb/columnstore/bin/MariaDB ColumnstoreAlias 8. To manually start and stop the MariaDB Columnstore Software as the root user run: @@ -127,7 +127,7 @@ Detailed Installation Instructions: mysql> -12. Run the following upgrade script to create calponsys schema and upgrade the syscolumn table: /usr/local/MariaDB/Columnstore/bin/upgrade-infinidb.sh +12. Run the following upgrade script to create calponsys schema and upgrade the syscolumn table: /usr/local/mariadb/columnstore/bin/upgrade-infinidb.sh 13. As an example to get you started, try this: diff --git a/build/build_rpms b/build/build_rpms index de3fabfd1..d244d3f1d 100755 --- a/build/build_rpms +++ b/build/build_rpms @@ -5,7 +5,9 @@ verbose=0 mysqldir=$HOME/mariadb-columnstore-server/export/mysql -community=false + +# set default as community +community=true usage() { @@ -19,7 +21,7 @@ for arg in "$@"; do if [ `expr -- "$arg" : '--verbose'` -eq 9 ]; then ((verbose++)) elif [ `expr -- "$arg" : '--local-mysql'` -eq 13 ]; then - mysqldir=../MariaDB/Columnstore/mysql + mysqldir=../mariadb/columnstore/mysql elif [ `expr -- "$arg" : '--help'` -eq 6 ]; then usage exit 0 @@ -52,20 +54,20 @@ buildroot=$HOME/rpm/BUILD/mariadb-columnstore-$version.$release rm -rf $buildroot mkdir -p $buildroot -mkdir -p $buildroot/MariaDB +mkdir -p $buildroot/mariadb/columnstore echo -n "Writing binary files to $buildroot..." tar -cf - --exclude 'export/include' --exclude 'export/*.tar' export | tar -C $buildroot -xf - -mv $buildroot/export $buildroot/MariaDB/Columnstore +mv $buildroot/export/* $buildroot/mariadb/columnstore/. #get mysql server files pushd $mysqldir > /dev/null -mkdir -p $buildroot/MariaDB/Columnstore/mysql -cpio -pdmu --quiet $buildroot/MariaDB/Columnstore/mysql < files.lst +mkdir -p $buildroot/mariadb/columnstore/mysql +cpio -pdmu --quiet $buildroot/mariadb/columnstore/mysql < files.lst popd >/dev/null #clean up some files from buildroot -rm -f $buildroot/MariaDB/Columnstore/etc/Doxyfile -for file in $buildroot/MariaDB/Columnstore/lib/*; do +rm -f $buildroot/mariadb/columnstore/etc/Doxyfile +for file in $buildroot/mariadb/columnstore/lib/*; do if [ -h $file ]; then rm -f $file fi @@ -73,16 +75,16 @@ done #temporarily clean up these BRM thingies for file in dbrm script-fcns; do - rm -f $buildroot/MariaDB/Columnstore/bin/$file + rm -f $buildroot/mariadb/columnstore/bin/$file done #clean up these bulkload scripts for file in bulkload.sh cleanup.sh dbbuilder.sh dbload.sh cpimport.sh bulkloadp.sh; do - rm -f $buildroot/MariaDB/Columnstore/bin/$file + rm -f $buildroot/mariadb/columnstore/bin/$file done -rm -f $buildroot/MariaDB/Columnstore/lib/libidbboot.a -rm -f $buildroot/MariaDB/Columnstore/lib/libiberty.a +rm -f $buildroot/mariadb/columnstore/lib/libidbboot.a +rm -f $buildroot/mariadb/columnstore/lib/libiberty.a mkdir -p $HOME/rpm/BUILD $HOME/rpm/RPMS $HOME/rpm/SRPMS $HOME/rpm/SPECS $HOME/rpm/tmp diff --git a/build/columnstore.community.spec.in b/build/columnstore.community.spec.in index b779df18d..1326040e2 100644 --- a/build/columnstore.community.spec.in +++ b/build/columnstore.community.spec.in @@ -59,253 +59,253 @@ rm -rf $RPM_BUILD_ROOT $RPM_BUILD_DIR/%{name}-%{version}.%{release} %files platform %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/DDLProc -/usr/local/MariaDB/Columnstore/bin/ExeMgr -/usr/local/MariaDB/Columnstore/bin/ProcMgr -/usr/local/MariaDB/Columnstore/bin/ProcMon -/usr/local/MariaDB/Columnstore/bin/DMLProc -/usr/local/MariaDB/Columnstore/bin/WriteEngineServer -/usr/local/MariaDB/Columnstore/bin/cpimport -/usr/local/MariaDB/Columnstore/bin/post-install -/usr/local/MariaDB/Columnstore/bin/post-mysql-install -/usr/local/MariaDB/Columnstore/bin/post-mysqld-install -/usr/local/MariaDB/Columnstore/bin/pre-uninstall -/usr/local/MariaDB/Columnstore/bin/PrimProc -/usr/local/MariaDB/Columnstore/bin/DecomSvr -/usr/local/MariaDB/Columnstore/bin/upgrade-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/run.sh -/usr/local/MariaDB/Columnstore/bin/columnstore -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog7 -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog-ng -/usr/local/MariaDB/Columnstore/bin/syslogSetup.sh -/usr/local/MariaDB/Columnstore/bin/cplogger -/usr/local/MariaDB/Columnstore/bin/columnstore.def -/usr/local/MariaDB/Columnstore/bin/dbbuilder -/usr/local/MariaDB/Columnstore/bin/cpimport.bin -/usr/local/MariaDB/Columnstore/bin/load_brm -/usr/local/MariaDB/Columnstore/bin/save_brm -/usr/local/MariaDB/Columnstore/bin/dbrmctl -/usr/local/MariaDB/Columnstore/bin/controllernode -/usr/local/MariaDB/Columnstore/bin/reset_locks -/usr/local/MariaDB/Columnstore/bin/workernode -/usr/local/MariaDB/Columnstore/bin/colxml -/usr/local/MariaDB/Columnstore/bin/clearShm -/usr/local/MariaDB/Columnstore/bin/viewtablelock -/usr/local/MariaDB/Columnstore/bin/cleartablelock -/usr/local/MariaDB/Columnstore/bin/mcsadmin -/usr/local/MariaDB/Columnstore/bin/trapHandler -/usr/local/MariaDB/Columnstore/bin/remote_command.sh -/usr/local/MariaDB/Columnstore/bin/postConfigure -/usr/local/MariaDB/Columnstore/bin/columnstoreLogRotate -/usr/local/MariaDB/Columnstore/bin/transactionLog -/usr/local/MariaDB/Columnstore/bin/columnstoreDBWrite -/usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh -/usr/local/MariaDB/Columnstore/bin/system_installer.sh -/usr/local/MariaDB/Columnstore/bin/installer -/usr/local/MariaDB/Columnstore/bin/module_installer.sh -/usr/local/MariaDB/Columnstore/bin/patchInstaller -/usr/local/MariaDB/Columnstore/bin/user_installer.sh -/usr/local/MariaDB/Columnstore/bin/performance_installer.sh -/usr/local/MariaDB/Columnstore/bin/startupTests.sh -/usr/local/MariaDB/Columnstore/bin/os_check.sh -/usr/local/MariaDB/Columnstore/bin/sendtrap -/usr/local/MariaDB/Columnstore/bin/remote_scp_put.sh -/usr/local/MariaDB/Columnstore/bin/remotessh.exp -/usr/local/MariaDB/Columnstore/bin/ServerMonitor -/usr/local/MariaDB/Columnstore/bin/master-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/slave-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/rsync.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreSupport -/usr/local/MariaDB/Columnstore/bin/hardwareReport.sh -/usr/local/MariaDB/Columnstore/bin/softwareReport.sh -/usr/local/MariaDB/Columnstore/bin/configReport.sh -/usr/local/MariaDB/Columnstore/bin/logReport.sh -/usr/local/MariaDB/Columnstore/bin/bulklogReport.sh -/usr/local/MariaDB/Columnstore/bin/resourceReport.sh -/usr/local/MariaDB/Columnstore/bin/hadoopReport.sh -/usr/local/MariaDB/Columnstore/bin/alarmReport.sh -/usr/local/MariaDB/Columnstore/bin/amazonInstaller -/usr/local/MariaDB/Columnstore/bin/remote_command_verify.sh -/usr/local/MariaDB/Columnstore/bin/disable-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/DDLProc +/usr/local/mariadb/columnstore/bin/ExeMgr +/usr/local/mariadb/columnstore/bin/ProcMgr +/usr/local/mariadb/columnstore/bin/ProcMon +/usr/local/mariadb/columnstore/bin/DMLProc +/usr/local/mariadb/columnstore/bin/WriteEngineServer +/usr/local/mariadb/columnstore/bin/cpimport +/usr/local/mariadb/columnstore/bin/post-install +/usr/local/mariadb/columnstore/bin/post-mysql-install +/usr/local/mariadb/columnstore/bin/post-mysqld-install +/usr/local/mariadb/columnstore/bin/pre-uninstall +/usr/local/mariadb/columnstore/bin/PrimProc +/usr/local/mariadb/columnstore/bin/DecomSvr +/usr/local/mariadb/columnstore/bin/upgrade-columnstore.sh +/usr/local/mariadb/columnstore/bin/run.sh +/usr/local/mariadb/columnstore/bin/columnstore +/usr/local/mariadb/columnstore/bin/columnstoreSyslog +/usr/local/mariadb/columnstore/bin/columnstoreSyslog7 +/usr/local/mariadb/columnstore/bin/columnstoreSyslog-ng +/usr/local/mariadb/columnstore/bin/syslogSetup.sh +/usr/local/mariadb/columnstore/bin/cplogger +/usr/local/mariadb/columnstore/bin/columnstore.def +/usr/local/mariadb/columnstore/bin/dbbuilder +/usr/local/mariadb/columnstore/bin/cpimport.bin +/usr/local/mariadb/columnstore/bin/load_brm +/usr/local/mariadb/columnstore/bin/save_brm +/usr/local/mariadb/columnstore/bin/dbrmctl +/usr/local/mariadb/columnstore/bin/controllernode +/usr/local/mariadb/columnstore/bin/reset_locks +/usr/local/mariadb/columnstore/bin/workernode +/usr/local/mariadb/columnstore/bin/colxml +/usr/local/mariadb/columnstore/bin/clearShm +/usr/local/mariadb/columnstore/bin/viewtablelock +/usr/local/mariadb/columnstore/bin/cleartablelock +/usr/local/mariadb/columnstore/bin/mcsadmin +/usr/local/mariadb/columnstore/bin/trapHandler +/usr/local/mariadb/columnstore/bin/remote_command.sh +/usr/local/mariadb/columnstore/bin/postConfigure +/usr/local/mariadb/columnstore/bin/columnstoreLogRotate +/usr/local/mariadb/columnstore/bin/transactionLog +/usr/local/mariadb/columnstore/bin/columnstoreDBWrite +/usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh +/usr/local/mariadb/columnstore/bin/system_installer.sh +/usr/local/mariadb/columnstore/bin/installer +/usr/local/mariadb/columnstore/bin/module_installer.sh +/usr/local/mariadb/columnstore/bin/patchInstaller +/usr/local/mariadb/columnstore/bin/user_installer.sh +/usr/local/mariadb/columnstore/bin/performance_installer.sh +/usr/local/mariadb/columnstore/bin/startupTests.sh +/usr/local/mariadb/columnstore/bin/os_check.sh +/usr/local/mariadb/columnstore/bin/sendtrap +/usr/local/mariadb/columnstore/bin/remote_scp_put.sh +/usr/local/mariadb/columnstore/bin/remotessh.exp +/usr/local/mariadb/columnstore/bin/ServerMonitor +/usr/local/mariadb/columnstore/bin/master-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/slave-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/rsync.sh +/usr/local/mariadb/columnstore/bin/columnstoreSupport +/usr/local/mariadb/columnstore/bin/hardwareReport.sh +/usr/local/mariadb/columnstore/bin/softwareReport.sh +/usr/local/mariadb/columnstore/bin/configReport.sh +/usr/local/mariadb/columnstore/bin/logReport.sh +/usr/local/mariadb/columnstore/bin/bulklogReport.sh +/usr/local/mariadb/columnstore/bin/resourceReport.sh +/usr/local/mariadb/columnstore/bin/hadoopReport.sh +/usr/local/mariadb/columnstore/bin/alarmReport.sh +/usr/local/mariadb/columnstore/bin/amazonInstaller +/usr/local/mariadb/columnstore/bin/remote_command_verify.sh +/usr/local/mariadb/columnstore/bin/disable-rep-columnstore.sh # -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml -%config /usr/local/MariaDB/Columnstore/etc/ConsoleCmds.xml -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/Calpont.xml +%config /usr/local/mariadb/columnstore/etc/ConsoleCmds.xml +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml +%config /usr/local/mariadb/columnstore/etc/snmpd.conf +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf +%config /usr/local/mariadb/columnstore/etc/Calpont.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/snmpd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf.singleserver # -/usr/local/MariaDB/Columnstore/etc/MessageFile.txt -/usr/local/MariaDB/Columnstore/etc/ErrorMessage.txt +/usr/local/mariadb/columnstore/etc/MessageFile.txt +/usr/local/mariadb/columnstore/etc/ErrorMessage.txt # -%attr(0666, root, root) /usr/local/MariaDB/Columnstore/local/module +%attr(0666, root, root) /usr/local/mariadb/columnstore/local/module # -/usr/local/MariaDB/Columnstore/releasenum +/usr/local/mariadb/columnstore/releasenum # Tools... -/usr/local/MariaDB/Columnstore/bin/rollback -/usr/local/MariaDB/Columnstore/bin/editem -/usr/local/MariaDB/Columnstore/bin/getConfig -/usr/local/MariaDB/Columnstore/bin/setConfig -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-12 -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-20 -/usr/local/MariaDB/Columnstore/bin/hdfsCheck -/usr/local/MariaDB/Columnstore/bin/configxml.sh -/usr/local/MariaDB/Columnstore/bin/remote_scp_get.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreAlias -/usr/local/MariaDB/Columnstore/bin/autoConfigure -/usr/local/MariaDB/Columnstore/bin/ddlcleanup -/usr/local/MariaDB/Columnstore/bin/idbmeminfo -/usr/local/MariaDB/Columnstore/bin/IDBInstanceCmds.sh -/usr/local/MariaDB/Columnstore/bin/IDBVolumeCmds.sh -/usr/local/MariaDB/Columnstore/bin/binary_installer.sh -/usr/local/MariaDB/Columnstore/bin/myCnf-include-args.text -/usr/local/MariaDB/Columnstore/bin/myCnf-exclude-args.text -/usr/local/MariaDB/Columnstore/bin/mycnfUpgrade -/usr/local/MariaDB/Columnstore/bin/getMySQLpw -/usr/local/MariaDB/Columnstore/bin/columnstore.conf +/usr/local/mariadb/columnstore/bin/rollback +/usr/local/mariadb/columnstore/bin/editem +/usr/local/mariadb/columnstore/bin/getConfig +/usr/local/mariadb/columnstore/bin/setConfig +/usr/local/mariadb/columnstore/bin/setenv-hdfs-12 +/usr/local/mariadb/columnstore/bin/setenv-hdfs-20 +/usr/local/mariadb/columnstore/bin/hdfsCheck +/usr/local/mariadb/columnstore/bin/configxml.sh +/usr/local/mariadb/columnstore/bin/remote_scp_get.sh +/usr/local/mariadb/columnstore/bin/columnstoreAlias +/usr/local/mariadb/columnstore/bin/autoConfigure +/usr/local/mariadb/columnstore/bin/ddlcleanup +/usr/local/mariadb/columnstore/bin/idbmeminfo +/usr/local/mariadb/columnstore/bin/IDBInstanceCmds.sh +/usr/local/mariadb/columnstore/bin/IDBVolumeCmds.sh +/usr/local/mariadb/columnstore/bin/binary_installer.sh +/usr/local/mariadb/columnstore/bin/myCnf-include-args.text +/usr/local/mariadb/columnstore/bin/myCnf-exclude-args.text +/usr/local/mariadb/columnstore/bin/mycnfUpgrade +/usr/local/mariadb/columnstore/bin/getMySQLpw +/usr/local/mariadb/columnstore/bin/columnstore.conf -/usr/local/MariaDB/Columnstore/sbin/snmpd -/usr/local/MariaDB/Columnstore/sbin/snmptrapd -%config %attr(0666, root, root) /usr/local/MariaDB/Columnstore/etc/AlarmConfig.xml +/usr/local/mariadb/columnstore/sbin/snmpd +/usr/local/mariadb/columnstore/sbin/snmptrapd +%config %attr(0666, root, root) /usr/local/mariadb/columnstore/etc/AlarmConfig.xml # -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf.singleserver +%config /usr/local/mariadb/columnstore/local/snmpdx.conf +%config /usr/local/mariadb/columnstore/local/snmpdx.conf.singleserver # -/usr/local/MariaDB/Columnstore/share/snmp/mibs/AGENTX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/CALPONT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/EtherLike-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HCNUM-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANAifType-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1155-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1213-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC-1215.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RMON-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SMUX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-CONF.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TM.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/AGENTX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/CALPONT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/EtherLike-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HCNUM-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANAifType-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1155-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1213-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC-1215.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RMON-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SMUX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-CONF.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TM.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UDP-MIB.txt # -/usr/local/MariaDB/Columnstore/post/functions -/usr/local/MariaDB/Columnstore/post/test-001.sh -/usr/local/MariaDB/Columnstore/post/test-002.sh -/usr/local/MariaDB/Columnstore/post/test-003.sh -/usr/local/MariaDB/Columnstore/post/test-004.sh +/usr/local/mariadb/columnstore/post/functions +/usr/local/mariadb/columnstore/post/test-001.sh +/usr/local/mariadb/columnstore/post/test-002.sh +/usr/local/mariadb/columnstore/post/test-003.sh +/usr/local/mariadb/columnstore/post/test-004.sh # Tools... # %files libs %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/lib/libconfigcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libexecplan.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libfuncexp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudfsdk.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoblist.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoiner.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libloggingcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmessageqcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpagent.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmphelpers.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpmibs.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmp.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmptrapd.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/liboamcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libsnmpmanager.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libthreadpool.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwindowfunction.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengine.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineclient.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbrm.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librwlock.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdataconvert.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librowgroup.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcacheutils.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcommon.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libboost_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcompress.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlcleanuputil.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbatchloader.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmysqlcl_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerystats.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineredistribute.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjemalloc.so.3.3.0 -/usr/local/MariaDB/Columnstore/lib/libidbdatafile.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/hdfs-20.so -/usr/local/MariaDB/Columnstore/lib/hdfs-12.so -/usr/local/MariaDB/Columnstore/lib/libgcc_s.so.1 -/usr/local/MariaDB/Columnstore/lib/libstdc++.so.6.0.14 -/usr/local/MariaDB/Columnstore/lib/libthrift.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerytele.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libconfigcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libexecplan.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libfuncexp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudfsdk.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoblist.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoiner.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libloggingcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmessageqcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libnetsnmpagent.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmphelpers.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmpmibs.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmp.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmptrapd.so.5.2.1 +/usr/local/mariadb/columnstore/lib/liboamcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libsnmpmanager.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libthreadpool.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwindowfunction.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengine.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineclient.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbrm.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librwlock.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdataconvert.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librowgroup.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcacheutils.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcommon.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libboost_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcompress.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlcleanuputil.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbatchloader.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmysqlcl_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerystats.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineredistribute.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjemalloc.so.3.3.0 +/usr/local/mariadb/columnstore/lib/libidbdatafile.so.1.0.0 +/usr/local/mariadb/columnstore/lib/hdfs-20.so +/usr/local/mariadb/columnstore/lib/hdfs-12.so +/usr/local/mariadb/columnstore/lib/libgcc_s.so.1 +/usr/local/mariadb/columnstore/lib/libstdc++.so.6.0.14 +/usr/local/mariadb/columnstore/lib/libthrift.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerytele.so.1.0.0 %files storage-engine -/usr/local/MariaDB/Columnstore/lib/libcalmysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudf_mysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcalmysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudf_mysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/mysql/mysql-Columnstore -/usr/local/MariaDB/Columnstore/mysql/install_calpont_mysql.sh -/usr/local/MariaDB/Columnstore/mysql/syscatalog_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat.pl -/usr/local/MariaDB/Columnstore/mysql/calsetuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calremoveuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calshowprocesslist.sql +/usr/local/mariadb/columnstore/mysql/mysql-Columnstore +/usr/local/mariadb/columnstore/mysql/install_calpont_mysql.sh +/usr/local/mariadb/columnstore/mysql/syscatalog_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat.pl +/usr/local/mariadb/columnstore/mysql/calsetuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calremoveuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calshowprocesslist.sql -%config /usr/local/MariaDB/Columnstore/mysql/my.cnf +%config /usr/local/mariadb/columnstore/mysql/my.cnf # # Scriptlets @@ -323,7 +323,7 @@ fi prefix=/usr/local -test -x /usr/local/MariaDB/Columnstore/bin/post-install && /usr/local/MariaDB/Columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode +test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode echo "MariaDB ColumnStore RPM install completed" @@ -363,7 +363,7 @@ else fi if [ $rpmmode = erase ]; then - test -x /usr/local/MariaDB/Columnstore/bin/pre-uninstall && /usr/local/MariaDB/Columnstore/bin/pre-uninstall + test -x /usr/local/mariadb/columnstore/bin/pre-uninstall && /usr/local/mariadb/columnstore/bin/pre-uninstall fi exit 0 diff --git a/build/columnstore.spec.in b/build/columnstore.spec.in index b1d847772..af6d5ce5d 100644 --- a/build/columnstore.spec.in +++ b/build/columnstore.spec.in @@ -68,289 +68,289 @@ rm -rf $RPM_BUILD_ROOT $RPM_BUILD_DIR/%{name}-%{version}.%{release} %files platform %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/DDLProc -/usr/local/MariaDB/Columnstore/bin/ExeMgr -/usr/local/MariaDB/Columnstore/bin/ProcMgr -/usr/local/MariaDB/Columnstore/bin/ProcMon -/usr/local/MariaDB/Columnstore/bin/DMLProc -/usr/local/MariaDB/Columnstore/bin/WriteEngineServer -/usr/local/MariaDB/Columnstore/bin/cpimport -/usr/local/MariaDB/Columnstore/bin/post-install -/usr/local/MariaDB/Columnstore/bin/post-mysql-install -/usr/local/MariaDB/Columnstore/bin/post-mysqld-install -/usr/local/MariaDB/Columnstore/bin/pre-uninstall -/usr/local/MariaDB/Columnstore/bin/PrimProc -/usr/local/MariaDB/Columnstore/bin/DecomSvr -/usr/local/MariaDB/Columnstore/bin/upgrade-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/run.sh -/usr/local/MariaDB/Columnstore/bin/columnstore -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog7 -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog-ng -/usr/local/MariaDB/Columnstore/bin/syslogSetup.sh -/usr/local/MariaDB/Columnstore/bin/cplogger -/usr/local/MariaDB/Columnstore/bin/columnstore.def -/usr/local/MariaDB/Columnstore/bin/dbbuilder -/usr/local/MariaDB/Columnstore/bin/cpimport.bin -/usr/local/MariaDB/Columnstore/bin/load_brm -/usr/local/MariaDB/Columnstore/bin/save_brm -/usr/local/MariaDB/Columnstore/bin/dbrmctl -/usr/local/MariaDB/Columnstore/bin/controllernode -/usr/local/MariaDB/Columnstore/bin/reset_locks -/usr/local/MariaDB/Columnstore/bin/workernode -/usr/local/MariaDB/Columnstore/bin/colxml -/usr/local/MariaDB/Columnstore/bin/clearShm -/usr/local/MariaDB/Columnstore/bin/viewtablelock -/usr/local/MariaDB/Columnstore/bin/cleartablelock -/usr/local/MariaDB/Columnstore/bin/mcsadmin -/usr/local/MariaDB/Columnstore/bin/trapHandler -/usr/local/MariaDB/Columnstore/bin/remote_command.sh -/usr/local/MariaDB/Columnstore/bin/postConfigure -/usr/local/MariaDB/Columnstore/bin/columnstoreLogRotate -/usr/local/MariaDB/Columnstore/bin/transactionLog -/usr/local/MariaDB/Columnstore/bin/columnstoreDBWrite -/usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh -/usr/local/MariaDB/Columnstore/bin/system_installer.sh -/usr/local/MariaDB/Columnstore/bin/installer -/usr/local/MariaDB/Columnstore/bin/module_installer.sh -/usr/local/MariaDB/Columnstore/bin/patchInstaller -/usr/local/MariaDB/Columnstore/bin/user_installer.sh -/usr/local/MariaDB/Columnstore/bin/performance_installer.sh -/usr/local/MariaDB/Columnstore/bin/startupTests.sh -/usr/local/MariaDB/Columnstore/bin/os_check.sh -/usr/local/MariaDB/Columnstore/bin/sendtrap -/usr/local/MariaDB/Columnstore/bin/remote_scp_put.sh -/usr/local/MariaDB/Columnstore/bin/remotessh.exp -/usr/local/MariaDB/Columnstore/bin/ServerMonitor -/usr/local/MariaDB/Columnstore/bin/master-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/slave-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/rsync.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreSupport -/usr/local/MariaDB/Columnstore/bin/hardwareReport.sh -/usr/local/MariaDB/Columnstore/bin/softwareReport.sh -/usr/local/MariaDB/Columnstore/bin/configReport.sh -/usr/local/MariaDB/Columnstore/bin/logReport.sh -/usr/local/MariaDB/Columnstore/bin/bulklogReport.sh -/usr/local/MariaDB/Columnstore/bin/resourceReport.sh -/usr/local/MariaDB/Columnstore/bin/hadoopReport.sh -/usr/local/MariaDB/Columnstore/bin/alarmReport.sh -/usr/local/MariaDB/Columnstore/bin/amazonInstaller -/usr/local/MariaDB/Columnstore/bin/remote_command_verify.sh -/usr/local/MariaDB/Columnstore/bin/disable-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/DDLProc +/usr/local/mariadb/columnstore/bin/ExeMgr +/usr/local/mariadb/columnstore/bin/ProcMgr +/usr/local/mariadb/columnstore/bin/ProcMon +/usr/local/mariadb/columnstore/bin/DMLProc +/usr/local/mariadb/columnstore/bin/WriteEngineServer +/usr/local/mariadb/columnstore/bin/cpimport +/usr/local/mariadb/columnstore/bin/post-install +/usr/local/mariadb/columnstore/bin/post-mysql-install +/usr/local/mariadb/columnstore/bin/post-mysqld-install +/usr/local/mariadb/columnstore/bin/pre-uninstall +/usr/local/mariadb/columnstore/bin/PrimProc +/usr/local/mariadb/columnstore/bin/DecomSvr +/usr/local/mariadb/columnstore/bin/upgrade-columnstore.sh +/usr/local/mariadb/columnstore/bin/run.sh +/usr/local/mariadb/columnstore/bin/columnstore +/usr/local/mariadb/columnstore/bin/columnstoreSyslog +/usr/local/mariadb/columnstore/bin/columnstoreSyslog7 +/usr/local/mariadb/columnstore/bin/columnstoreSyslog-ng +/usr/local/mariadb/columnstore/bin/syslogSetup.sh +/usr/local/mariadb/columnstore/bin/cplogger +/usr/local/mariadb/columnstore/bin/columnstore.def +/usr/local/mariadb/columnstore/bin/dbbuilder +/usr/local/mariadb/columnstore/bin/cpimport.bin +/usr/local/mariadb/columnstore/bin/load_brm +/usr/local/mariadb/columnstore/bin/save_brm +/usr/local/mariadb/columnstore/bin/dbrmctl +/usr/local/mariadb/columnstore/bin/controllernode +/usr/local/mariadb/columnstore/bin/reset_locks +/usr/local/mariadb/columnstore/bin/workernode +/usr/local/mariadb/columnstore/bin/colxml +/usr/local/mariadb/columnstore/bin/clearShm +/usr/local/mariadb/columnstore/bin/viewtablelock +/usr/local/mariadb/columnstore/bin/cleartablelock +/usr/local/mariadb/columnstore/bin/mcsadmin +/usr/local/mariadb/columnstore/bin/trapHandler +/usr/local/mariadb/columnstore/bin/remote_command.sh +/usr/local/mariadb/columnstore/bin/postConfigure +/usr/local/mariadb/columnstore/bin/columnstoreLogRotate +/usr/local/mariadb/columnstore/bin/transactionLog +/usr/local/mariadb/columnstore/bin/columnstoreDBWrite +/usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh +/usr/local/mariadb/columnstore/bin/system_installer.sh +/usr/local/mariadb/columnstore/bin/installer +/usr/local/mariadb/columnstore/bin/module_installer.sh +/usr/local/mariadb/columnstore/bin/patchInstaller +/usr/local/mariadb/columnstore/bin/user_installer.sh +/usr/local/mariadb/columnstore/bin/performance_installer.sh +/usr/local/mariadb/columnstore/bin/startupTests.sh +/usr/local/mariadb/columnstore/bin/os_check.sh +/usr/local/mariadb/columnstore/bin/sendtrap +/usr/local/mariadb/columnstore/bin/remote_scp_put.sh +/usr/local/mariadb/columnstore/bin/remotessh.exp +/usr/local/mariadb/columnstore/bin/ServerMonitor +/usr/local/mariadb/columnstore/bin/master-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/slave-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/rsync.sh +/usr/local/mariadb/columnstore/bin/columnstoreSupport +/usr/local/mariadb/columnstore/bin/hardwareReport.sh +/usr/local/mariadb/columnstore/bin/softwareReport.sh +/usr/local/mariadb/columnstore/bin/configReport.sh +/usr/local/mariadb/columnstore/bin/logReport.sh +/usr/local/mariadb/columnstore/bin/bulklogReport.sh +/usr/local/mariadb/columnstore/bin/resourceReport.sh +/usr/local/mariadb/columnstore/bin/hadoopReport.sh +/usr/local/mariadb/columnstore/bin/alarmReport.sh +/usr/local/mariadb/columnstore/bin/amazonInstaller +/usr/local/mariadb/columnstore/bin/remote_command_verify.sh +/usr/local/mariadb/columnstore/bin/disable-rep-columnstore.sh # -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml -%config /usr/local/MariaDB/Columnstore/etc/ConsoleCmds.xml -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/Calpont.xml +%config /usr/local/mariadb/columnstore/etc/ConsoleCmds.xml +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml +%config /usr/local/mariadb/columnstore/etc/snmpd.conf +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf +%config /usr/local/mariadb/columnstore/etc/Calpont.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/snmpd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf.singleserver # -/usr/local/MariaDB/Columnstore/etc/MessageFile.txt -/usr/local/MariaDB/Columnstore/etc/ErrorMessage.txt +/usr/local/mariadb/columnstore/etc/MessageFile.txt +/usr/local/mariadb/columnstore/etc/ErrorMessage.txt # -%attr(0666, root, root) /usr/local/MariaDB/Columnstore/local/module +%attr(0666, root, root) /usr/local/mariadb/columnstore/local/module # -/usr/local/MariaDB/Columnstore/releasenum +/usr/local/mariadb/columnstore/releasenum # Tools... -/usr/local/MariaDB/Columnstore/bin/rollback -/usr/local/MariaDB/Columnstore/bin/editem -/usr/local/MariaDB/Columnstore/bin/getConfig -/usr/local/MariaDB/Columnstore/bin/setConfig -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-12 -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-20 -/usr/local/MariaDB/Columnstore/bin/hdfsCheck -/usr/local/MariaDB/Columnstore/bin/configxml.sh -/usr/local/MariaDB/Columnstore/bin/remote_scp_get.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreAlias -/usr/local/MariaDB/Columnstore/bin/autoConfigure -/usr/local/MariaDB/Columnstore/bin/ddlcleanup -/usr/local/MariaDB/Columnstore/bin/idbmeminfo -/usr/local/MariaDB/Columnstore/bin/IDBInstanceCmds.sh -/usr/local/MariaDB/Columnstore/bin/IDBVolumeCmds.sh -/usr/local/MariaDB/Columnstore/bin/binary_installer.sh -/usr/local/MariaDB/Columnstore/bin/myCnf-include-args.text -/usr/local/MariaDB/Columnstore/bin/myCnf-exclude-args.text -/usr/local/MariaDB/Columnstore/bin/mycnfUpgrade -/usr/local/MariaDB/Columnstore/bin/getMySQLpw -/usr/local/MariaDB/Columnstore/bin/columnstore.conf +/usr/local/mariadb/columnstore/bin/rollback +/usr/local/mariadb/columnstore/bin/editem +/usr/local/mariadb/columnstore/bin/getConfig +/usr/local/mariadb/columnstore/bin/setConfig +/usr/local/mariadb/columnstore/bin/setenv-hdfs-12 +/usr/local/mariadb/columnstore/bin/setenv-hdfs-20 +/usr/local/mariadb/columnstore/bin/hdfsCheck +/usr/local/mariadb/columnstore/bin/configxml.sh +/usr/local/mariadb/columnstore/bin/remote_scp_get.sh +/usr/local/mariadb/columnstore/bin/columnstoreAlias +/usr/local/mariadb/columnstore/bin/autoConfigure +/usr/local/mariadb/columnstore/bin/ddlcleanup +/usr/local/mariadb/columnstore/bin/idbmeminfo +/usr/local/mariadb/columnstore/bin/IDBInstanceCmds.sh +/usr/local/mariadb/columnstore/bin/IDBVolumeCmds.sh +/usr/local/mariadb/columnstore/bin/binary_installer.sh +/usr/local/mariadb/columnstore/bin/myCnf-include-args.text +/usr/local/mariadb/columnstore/bin/myCnf-exclude-args.text +/usr/local/mariadb/columnstore/bin/mycnfUpgrade +/usr/local/mariadb/columnstore/bin/getMySQLpw +/usr/local/mariadb/columnstore/bin/columnstore.conf -/usr/local/MariaDB/Columnstore/sbin/snmpd -/usr/local/MariaDB/Columnstore/sbin/snmptrapd -%config %attr(0666, root, root) /usr/local/MariaDB/Columnstore/etc/AlarmConfig.xml +/usr/local/mariadb/columnstore/sbin/snmpd +/usr/local/mariadb/columnstore/sbin/snmptrapd +%config %attr(0666, root, root) /usr/local/mariadb/columnstore/etc/AlarmConfig.xml # -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf.singleserver +%config /usr/local/mariadb/columnstore/local/snmpdx.conf +%config /usr/local/mariadb/columnstore/local/snmpdx.conf.singleserver # -/usr/local/MariaDB/Columnstore/share/snmp/mibs/AGENTX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/CALPONT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/EtherLike-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HCNUM-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANAifType-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1155-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1213-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC-1215.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RMON-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SMUX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-CONF.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TM.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/AGENTX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/CALPONT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/EtherLike-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HCNUM-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANAifType-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1155-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1213-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC-1215.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RMON-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SMUX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-CONF.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TM.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UDP-MIB.txt # -/usr/local/MariaDB/Columnstore/post/functions -/usr/local/MariaDB/Columnstore/post/test-001.sh -/usr/local/MariaDB/Columnstore/post/test-002.sh -/usr/local/MariaDB/Columnstore/post/test-003.sh -/usr/local/MariaDB/Columnstore/post/test-004.sh +/usr/local/mariadb/columnstore/post/functions +/usr/local/mariadb/columnstore/post/test-001.sh +/usr/local/mariadb/columnstore/post/test-002.sh +/usr/local/mariadb/columnstore/post/test-003.sh +/usr/local/mariadb/columnstore/post/test-004.sh %files enterprise %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/displayJobGraph.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sql +/usr/local/mariadb/columnstore/bin/displayJobGraph.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sql # Tools... -/usr/local/MariaDB/Columnstore/bin/dumpcol -/usr/local/MariaDB/Columnstore/bin/oid2file -/usr/local/MariaDB/Columnstore/bin/evalcol -/usr/local/MariaDB/Columnstore/bin/SesMgr -/usr/local/MariaDB/Columnstore/bin/dumpVss -/usr/local/MariaDB/Columnstore/bin/editTxn -/usr/local/MariaDB/Columnstore/bin/dbprof.pl -/usr/local/MariaDB/Columnstore/bin/dumpobm -/usr/local/MariaDB/Columnstore/bin/file2oid.pl -/usr/local/MariaDB/Columnstore/bin/print_journal -/usr/local/MariaDB/Columnstore/bin/healthcheck -/usr/local/MariaDB/Columnstore/bin/glusterctl -/usr/local/MariaDB/Columnstore/bin/glusteradd -/usr/local/MariaDB/Columnstore/bin/glusterconf -/usr/local/MariaDB/Columnstore/bin/redistributeDB -/usr/local/MariaDB/Columnstore/bin/databaseSizeReport -/usr/local/MariaDB/Columnstore/bin/gdb +/usr/local/mariadb/columnstore/bin/dumpcol +/usr/local/mariadb/columnstore/bin/oid2file +/usr/local/mariadb/columnstore/bin/evalcol +/usr/local/mariadb/columnstore/bin/SesMgr +/usr/local/mariadb/columnstore/bin/dumpVss +/usr/local/mariadb/columnstore/bin/editTxn +/usr/local/mariadb/columnstore/bin/dbprof.pl +/usr/local/mariadb/columnstore/bin/dumpobm +/usr/local/mariadb/columnstore/bin/file2oid.pl +/usr/local/mariadb/columnstore/bin/print_journal +/usr/local/mariadb/columnstore/bin/healthcheck +/usr/local/mariadb/columnstore/bin/glusterctl +/usr/local/mariadb/columnstore/bin/glusteradd +/usr/local/mariadb/columnstore/bin/glusterconf +/usr/local/mariadb/columnstore/bin/redistributeDB +/usr/local/mariadb/columnstore/bin/databaseSizeReport +/usr/local/mariadb/columnstore/bin/gdb # -/usr/local/MariaDB/Columnstore/tools/copy2here.sh -/usr/local/MariaDB/Columnstore/tools/getlogs.sh -/usr/local/MariaDB/Columnstore/tools/getmodules.sh -/usr/local/MariaDB/Columnstore/tools/getps.sh -/usr/local/MariaDB/Columnstore/tools/getsar.sh -/usr/local/MariaDB/Columnstore/tools/getuserinput.sh -/usr/local/MariaDB/Columnstore/tools/prat -/usr/local/MariaDB/Columnstore/tools/prat.sh -/usr/local/MariaDB/Columnstore/tools/ps -/usr/local/MariaDB/Columnstore/tools/pscollect -/usr/local/MariaDB/Columnstore/tools/README -/usr/local/MariaDB/Columnstore/tools/tarfiles.sh +/usr/local/mariadb/columnstore/tools/copy2here.sh +/usr/local/mariadb/columnstore/tools/getlogs.sh +/usr/local/mariadb/columnstore/tools/getmodules.sh +/usr/local/mariadb/columnstore/tools/getps.sh +/usr/local/mariadb/columnstore/tools/getsar.sh +/usr/local/mariadb/columnstore/tools/getuserinput.sh +/usr/local/mariadb/columnstore/tools/prat +/usr/local/mariadb/columnstore/tools/prat.sh +/usr/local/mariadb/columnstore/tools/ps +/usr/local/mariadb/columnstore/tools/pscollect +/usr/local/mariadb/columnstore/tools/README +/usr/local/mariadb/columnstore/tools/tarfiles.sh # %files libs %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/lib/libconfigcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libexecplan.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libfuncexp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudfsdk.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoblist.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoiner.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libloggingcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmessageqcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpagent.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmphelpers.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpmibs.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmp.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmptrapd.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/liboamcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libsnmpmanager.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libthreadpool.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwindowfunction.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengine.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineclient.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbrm.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librwlock.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdataconvert.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librowgroup.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcacheutils.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcommon.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libboost_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcompress.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlcleanuputil.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbatchloader.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmysqlcl_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerystats.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineredistribute.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjemalloc.so.3.3.0 -/usr/local/MariaDB/Columnstore/lib/libidbdatafile.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/hdfs-20.so -/usr/local/MariaDB/Columnstore/lib/hdfs-12.so -/usr/local/MariaDB/Columnstore/lib/libgcc_s.so.1 -/usr/local/MariaDB/Columnstore/lib/libstdc++.so.6.0.14 -/usr/local/MariaDB/Columnstore/lib/libthrift.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerytele.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libconfigcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libexecplan.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libfuncexp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudfsdk.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoblist.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoiner.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libloggingcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmessageqcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libnetsnmpagent.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmphelpers.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmpmibs.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmp.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmptrapd.so.5.2.1 +/usr/local/mariadb/columnstore/lib/liboamcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libsnmpmanager.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libthreadpool.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwindowfunction.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengine.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineclient.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbrm.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librwlock.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdataconvert.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librowgroup.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcacheutils.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcommon.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libboost_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcompress.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlcleanuputil.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbatchloader.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmysqlcl_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerystats.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineredistribute.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjemalloc.so.3.3.0 +/usr/local/mariadb/columnstore/lib/libidbdatafile.so.1.0.0 +/usr/local/mariadb/columnstore/lib/hdfs-20.so +/usr/local/mariadb/columnstore/lib/hdfs-12.so +/usr/local/mariadb/columnstore/lib/libgcc_s.so.1 +/usr/local/mariadb/columnstore/lib/libstdc++.so.6.0.14 +/usr/local/mariadb/columnstore/lib/libthrift.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerytele.so.1.0.0 %files storage-engine -/usr/local/MariaDB/Columnstore/lib/libcalmysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudf_mysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcalmysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudf_mysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/mysql/mysql-Columnstore -/usr/local/MariaDB/Columnstore/mysql/install_calpont_mysql.sh -/usr/local/MariaDB/Columnstore/mysql/syscatalog_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat.pl -/usr/local/MariaDB/Columnstore/mysql/calsetuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calremoveuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calshowprocesslist.sql +/usr/local/mariadb/columnstore/mysql/mysql-Columnstore +/usr/local/mariadb/columnstore/mysql/install_calpont_mysql.sh +/usr/local/mariadb/columnstore/mysql/syscatalog_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat.pl +/usr/local/mariadb/columnstore/mysql/calsetuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calremoveuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calshowprocesslist.sql -%config /usr/local/MariaDB/Columnstore/mysql/my.cnf +%config /usr/local/mariadb/columnstore/mysql/my.cnf # # Scriptlets @@ -368,7 +368,7 @@ fi prefix=/usr/local -test -x /usr/local/MariaDB/Columnstore/bin/post-install && /usr/local/MariaDB/Columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode +test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode echo "MariaDB ColumnStore RPM install completed" @@ -420,7 +420,7 @@ else fi if [ $rpmmode = erase ]; then - test -x /usr/local/MariaDB/Columnstore/bin/pre-uninstall && /usr/local/MariaDB/Columnstore/bin/pre-uninstall + test -x /usr/local/mariadb/columnstore/bin/pre-uninstall && /usr/local/mariadb/columnstore/bin/pre-uninstall fi exit 0 diff --git a/build/columnstore.spec.in~ b/build/columnstore.spec.in~ index e2776558e..6befb1d1f 100644 --- a/build/columnstore.spec.in~ +++ b/build/columnstore.spec.in~ @@ -69,289 +69,289 @@ rm -rf $RPM_BUILD_ROOT $RPM_BUILD_DIR/%{name}-%{version}-%{release} %files platform %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/DDLProc -/usr/local/MariaDB/Columnstore/bin/ExeMgr -/usr/local/MariaDB/Columnstore/bin/ProcMgr -/usr/local/MariaDB/Columnstore/bin/ProcMon -/usr/local/MariaDB/Columnstore/bin/DMLProc -/usr/local/MariaDB/Columnstore/bin/WriteEngineServer -/usr/local/MariaDB/Columnstore/bin/cpimport -/usr/local/MariaDB/Columnstore/bin/post-install -/usr/local/MariaDB/Columnstore/bin/post-mysql-install -/usr/local/MariaDB/Columnstore/bin/post-mysqld-install -/usr/local/MariaDB/Columnstore/bin/pre-uninstall -/usr/local/MariaDB/Columnstore/bin/PrimProc -/usr/local/MariaDB/Columnstore/bin/DecomSvr -/usr/local/MariaDB/Columnstore/bin/upgrade-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/run.sh -/usr/local/MariaDB/Columnstore/bin/columnstore -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog7 -/usr/local/MariaDB/Columnstore/bin/columnstoreSyslog-ng -/usr/local/MariaDB/Columnstore/bin/syslogSetup.sh -/usr/local/MariaDB/Columnstore/bin/cplogger -/usr/local/MariaDB/Columnstore/bin/columnstore.def -/usr/local/MariaDB/Columnstore/bin/dbbuilder -/usr/local/MariaDB/Columnstore/bin/cpimport.bin -/usr/local/MariaDB/Columnstore/bin/load_brm -/usr/local/MariaDB/Columnstore/bin/save_brm -/usr/local/MariaDB/Columnstore/bin/dbrmctl -/usr/local/MariaDB/Columnstore/bin/controllernode -/usr/local/MariaDB/Columnstore/bin/reset_locks -/usr/local/MariaDB/Columnstore/bin/workernode -/usr/local/MariaDB/Columnstore/bin/colxml -/usr/local/MariaDB/Columnstore/bin/clearShm -/usr/local/MariaDB/Columnstore/bin/viewtablelock -/usr/local/MariaDB/Columnstore/bin/cleartablelock -/usr/local/MariaDB/Columnstore/bin/mcsadmin -/usr/local/MariaDB/Columnstore/bin/trapHandler -/usr/local/MariaDB/Columnstore/bin/remote_command.sh -/usr/local/MariaDB/Columnstore/bin/postConfigure -/usr/local/MariaDB/Columnstore/bin/columnstoreLogRotate -/usr/local/MariaDB/Columnstore/bin/transactionLog -/usr/local/MariaDB/Columnstore/bin/columnstoreDBWrite -/usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh -/usr/local/MariaDB/Columnstore/bin/system_installer.sh -/usr/local/MariaDB/Columnstore/bin/installer -/usr/local/MariaDB/Columnstore/bin/module_installer.sh -/usr/local/MariaDB/Columnstore/bin/patchInstaller -/usr/local/MariaDB/Columnstore/bin/user_installer.sh -/usr/local/MariaDB/Columnstore/bin/performance_installer.sh -/usr/local/MariaDB/Columnstore/bin/startupTests.sh -/usr/local/MariaDB/Columnstore/bin/os_check.sh -/usr/local/MariaDB/Columnstore/bin/sendtrap -/usr/local/MariaDB/Columnstore/bin/remote_scp_put.sh -/usr/local/MariaDB/Columnstore/bin/remotessh.exp -/usr/local/MariaDB/Columnstore/bin/ServerMonitor -/usr/local/MariaDB/Columnstore/bin/master-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/slave-rep-columnstore.sh -/usr/local/MariaDB/Columnstore/bin/rsync.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreSupport -/usr/local/MariaDB/Columnstore/bin/hardwareReport.sh -/usr/local/MariaDB/Columnstore/bin/softwareReport.sh -/usr/local/MariaDB/Columnstore/bin/configReport.sh -/usr/local/MariaDB/Columnstore/bin/logReport.sh -/usr/local/MariaDB/Columnstore/bin/bulklogReport.sh -/usr/local/MariaDB/Columnstore/bin/resourceReport.sh -/usr/local/MariaDB/Columnstore/bin/hadoopReport.sh -/usr/local/MariaDB/Columnstore/bin/alarmReport.sh -/usr/local/MariaDB/Columnstore/bin/amazonInstaller -/usr/local/MariaDB/Columnstore/bin/remote_command_verify.sh -/usr/local/MariaDB/Columnstore/bin/disable-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/DDLProc +/usr/local/mariadb/columnstore/bin/ExeMgr +/usr/local/mariadb/columnstore/bin/ProcMgr +/usr/local/mariadb/columnstore/bin/ProcMon +/usr/local/mariadb/columnstore/bin/DMLProc +/usr/local/mariadb/columnstore/bin/WriteEngineServer +/usr/local/mariadb/columnstore/bin/cpimport +/usr/local/mariadb/columnstore/bin/post-install +/usr/local/mariadb/columnstore/bin/post-mysql-install +/usr/local/mariadb/columnstore/bin/post-mysqld-install +/usr/local/mariadb/columnstore/bin/pre-uninstall +/usr/local/mariadb/columnstore/bin/PrimProc +/usr/local/mariadb/columnstore/bin/DecomSvr +/usr/local/mariadb/columnstore/bin/upgrade-columnstore.sh +/usr/local/mariadb/columnstore/bin/run.sh +/usr/local/mariadb/columnstore/bin/columnstore +/usr/local/mariadb/columnstore/bin/columnstoreSyslog +/usr/local/mariadb/columnstore/bin/columnstoreSyslog7 +/usr/local/mariadb/columnstore/bin/columnstoreSyslog-ng +/usr/local/mariadb/columnstore/bin/syslogSetup.sh +/usr/local/mariadb/columnstore/bin/cplogger +/usr/local/mariadb/columnstore/bin/columnstore.def +/usr/local/mariadb/columnstore/bin/dbbuilder +/usr/local/mariadb/columnstore/bin/cpimport.bin +/usr/local/mariadb/columnstore/bin/load_brm +/usr/local/mariadb/columnstore/bin/save_brm +/usr/local/mariadb/columnstore/bin/dbrmctl +/usr/local/mariadb/columnstore/bin/controllernode +/usr/local/mariadb/columnstore/bin/reset_locks +/usr/local/mariadb/columnstore/bin/workernode +/usr/local/mariadb/columnstore/bin/colxml +/usr/local/mariadb/columnstore/bin/clearShm +/usr/local/mariadb/columnstore/bin/viewtablelock +/usr/local/mariadb/columnstore/bin/cleartablelock +/usr/local/mariadb/columnstore/bin/mcsadmin +/usr/local/mariadb/columnstore/bin/trapHandler +/usr/local/mariadb/columnstore/bin/remote_command.sh +/usr/local/mariadb/columnstore/bin/postConfigure +/usr/local/mariadb/columnstore/bin/columnstoreLogRotate +/usr/local/mariadb/columnstore/bin/transactionLog +/usr/local/mariadb/columnstore/bin/columnstoreDBWrite +/usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh +/usr/local/mariadb/columnstore/bin/system_installer.sh +/usr/local/mariadb/columnstore/bin/installer +/usr/local/mariadb/columnstore/bin/module_installer.sh +/usr/local/mariadb/columnstore/bin/patchInstaller +/usr/local/mariadb/columnstore/bin/user_installer.sh +/usr/local/mariadb/columnstore/bin/performance_installer.sh +/usr/local/mariadb/columnstore/bin/startupTests.sh +/usr/local/mariadb/columnstore/bin/os_check.sh +/usr/local/mariadb/columnstore/bin/sendtrap +/usr/local/mariadb/columnstore/bin/remote_scp_put.sh +/usr/local/mariadb/columnstore/bin/remotessh.exp +/usr/local/mariadb/columnstore/bin/ServerMonitor +/usr/local/mariadb/columnstore/bin/master-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/slave-rep-columnstore.sh +/usr/local/mariadb/columnstore/bin/rsync.sh +/usr/local/mariadb/columnstore/bin/columnstoreSupport +/usr/local/mariadb/columnstore/bin/hardwareReport.sh +/usr/local/mariadb/columnstore/bin/softwareReport.sh +/usr/local/mariadb/columnstore/bin/configReport.sh +/usr/local/mariadb/columnstore/bin/logReport.sh +/usr/local/mariadb/columnstore/bin/bulklogReport.sh +/usr/local/mariadb/columnstore/bin/resourceReport.sh +/usr/local/mariadb/columnstore/bin/hadoopReport.sh +/usr/local/mariadb/columnstore/bin/alarmReport.sh +/usr/local/mariadb/columnstore/bin/amazonInstaller +/usr/local/mariadb/columnstore/bin/remote_command_verify.sh +/usr/local/mariadb/columnstore/bin/disable-rep-columnstore.sh # -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml -%config /usr/local/MariaDB/Columnstore/etc/ConsoleCmds.xml -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/Calpont.xml +%config /usr/local/mariadb/columnstore/etc/ConsoleCmds.xml +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml +%config /usr/local/mariadb/columnstore/etc/snmpd.conf +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf +%config /usr/local/mariadb/columnstore/etc/Calpont.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/snmpd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf.singleserver # -/usr/local/MariaDB/Columnstore/etc/MessageFile.txt -/usr/local/MariaDB/Columnstore/etc/ErrorMessage.txt +/usr/local/mariadb/columnstore/etc/MessageFile.txt +/usr/local/mariadb/columnstore/etc/ErrorMessage.txt # -%attr(0666, root, root) /usr/local/MariaDB/Columnstore/local/module +%attr(0666, root, root) /usr/local/mariadb/columnstore/local/module # -/usr/local/MariaDB/Columnstore/releasenum +/usr/local/mariadb/columnstore/releasenum # Tools... -/usr/local/MariaDB/Columnstore/bin/rollback -/usr/local/MariaDB/Columnstore/bin/editem -/usr/local/MariaDB/Columnstore/bin/getConfig -/usr/local/MariaDB/Columnstore/bin/setConfig -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-12 -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-20 -/usr/local/MariaDB/Columnstore/bin/hdfsCheck -/usr/local/MariaDB/Columnstore/bin/configxml.sh -/usr/local/MariaDB/Columnstore/bin/remote_scp_get.sh -/usr/local/MariaDB/Columnstore/bin/columnstoreAlias -/usr/local/MariaDB/Columnstore/bin/autoConfigure -/usr/local/MariaDB/Columnstore/bin/ddlcleanup -/usr/local/MariaDB/Columnstore/bin/idbmeminfo -/usr/local/MariaDB/Columnstore/bin/IDBInstanceCmds.sh -/usr/local/MariaDB/Columnstore/bin/IDBVolumeCmds.sh -/usr/local/MariaDB/Columnstore/bin/binary_installer.sh -/usr/local/MariaDB/Columnstore/bin/myCnf-include-args.text -/usr/local/MariaDB/Columnstore/bin/myCnf-exclude-args.text -/usr/local/MariaDB/Columnstore/bin/mycnfUpgrade -/usr/local/MariaDB/Columnstore/bin/getMySQLpw -/usr/local/MariaDB/Columnstore/bin/columnstore.conf +/usr/local/mariadb/columnstore/bin/rollback +/usr/local/mariadb/columnstore/bin/editem +/usr/local/mariadb/columnstore/bin/getConfig +/usr/local/mariadb/columnstore/bin/setConfig +/usr/local/mariadb/columnstore/bin/setenv-hdfs-12 +/usr/local/mariadb/columnstore/bin/setenv-hdfs-20 +/usr/local/mariadb/columnstore/bin/hdfsCheck +/usr/local/mariadb/columnstore/bin/configxml.sh +/usr/local/mariadb/columnstore/bin/remote_scp_get.sh +/usr/local/mariadb/columnstore/bin/columnstoreAlias +/usr/local/mariadb/columnstore/bin/autoConfigure +/usr/local/mariadb/columnstore/bin/ddlcleanup +/usr/local/mariadb/columnstore/bin/idbmeminfo +/usr/local/mariadb/columnstore/bin/IDBInstanceCmds.sh +/usr/local/mariadb/columnstore/bin/IDBVolumeCmds.sh +/usr/local/mariadb/columnstore/bin/binary_installer.sh +/usr/local/mariadb/columnstore/bin/myCnf-include-args.text +/usr/local/mariadb/columnstore/bin/myCnf-exclude-args.text +/usr/local/mariadb/columnstore/bin/mycnfUpgrade +/usr/local/mariadb/columnstore/bin/getMySQLpw +/usr/local/mariadb/columnstore/bin/columnstore.conf -/usr/local/MariaDB/Columnstore/sbin/snmpd -/usr/local/MariaDB/Columnstore/sbin/snmptrapd -%config %attr(0666, root, root) /usr/local/MariaDB/Columnstore/etc/AlarmConfig.xml +/usr/local/mariadb/columnstore/sbin/snmpd +/usr/local/mariadb/columnstore/sbin/snmptrapd +%config %attr(0666, root, root) /usr/local/mariadb/columnstore/etc/AlarmConfig.xml # -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf.singleserver +%config /usr/local/mariadb/columnstore/local/snmpdx.conf +%config /usr/local/mariadb/columnstore/local/snmpdx.conf.singleserver # -/usr/local/MariaDB/Columnstore/share/snmp/mibs/AGENTX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/CALPONT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/EtherLike-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HCNUM-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANAifType-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1155-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1213-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC-1215.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RMON-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SMUX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-CONF.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TM.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/AGENTX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/CALPONT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/EtherLike-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HCNUM-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANAifType-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1155-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1213-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC-1215.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RMON-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SMUX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-CONF.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TM.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UDP-MIB.txt # -/usr/local/MariaDB/Columnstore/post/functions -/usr/local/MariaDB/Columnstore/post/test-001.sh -/usr/local/MariaDB/Columnstore/post/test-002.sh -/usr/local/MariaDB/Columnstore/post/test-003.sh -/usr/local/MariaDB/Columnstore/post/test-004.sh +/usr/local/mariadb/columnstore/post/functions +/usr/local/mariadb/columnstore/post/test-001.sh +/usr/local/mariadb/columnstore/post/test-002.sh +/usr/local/mariadb/columnstore/post/test-003.sh +/usr/local/mariadb/columnstore/post/test-004.sh %files enterprise %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/displayJobGraph.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sql +/usr/local/mariadb/columnstore/bin/displayJobGraph.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sql # Tools... -/usr/local/MariaDB/Columnstore/bin/dumpcol -/usr/local/MariaDB/Columnstore/bin/oid2file -/usr/local/MariaDB/Columnstore/bin/evalcol -/usr/local/MariaDB/Columnstore/bin/SesMgr -/usr/local/MariaDB/Columnstore/bin/dumpVss -/usr/local/MariaDB/Columnstore/bin/editTxn -/usr/local/MariaDB/Columnstore/bin/dbprof.pl -/usr/local/MariaDB/Columnstore/bin/dumpobm -/usr/local/MariaDB/Columnstore/bin/file2oid.pl -/usr/local/MariaDB/Columnstore/bin/print_journal -/usr/local/MariaDB/Columnstore/bin/healthcheck -/usr/local/MariaDB/Columnstore/bin/glusterctl -/usr/local/MariaDB/Columnstore/bin/glusteradd -/usr/local/MariaDB/Columnstore/bin/glusterconf -/usr/local/MariaDB/Columnstore/bin/redistributeDB -/usr/local/MariaDB/Columnstore/bin/databaseSizeReport -/usr/local/MariaDB/Columnstore/bin/gdb +/usr/local/mariadb/columnstore/bin/dumpcol +/usr/local/mariadb/columnstore/bin/oid2file +/usr/local/mariadb/columnstore/bin/evalcol +/usr/local/mariadb/columnstore/bin/SesMgr +/usr/local/mariadb/columnstore/bin/dumpVss +/usr/local/mariadb/columnstore/bin/editTxn +/usr/local/mariadb/columnstore/bin/dbprof.pl +/usr/local/mariadb/columnstore/bin/dumpobm +/usr/local/mariadb/columnstore/bin/file2oid.pl +/usr/local/mariadb/columnstore/bin/print_journal +/usr/local/mariadb/columnstore/bin/healthcheck +/usr/local/mariadb/columnstore/bin/glusterctl +/usr/local/mariadb/columnstore/bin/glusteradd +/usr/local/mariadb/columnstore/bin/glusterconf +/usr/local/mariadb/columnstore/bin/redistributeDB +/usr/local/mariadb/columnstore/bin/databaseSizeReport +/usr/local/mariadb/columnstore/bin/gdb # -/usr/local/MariaDB/Columnstore/tools/copy2here.sh -/usr/local/MariaDB/Columnstore/tools/getlogs.sh -/usr/local/MariaDB/Columnstore/tools/getmodules.sh -/usr/local/MariaDB/Columnstore/tools/getps.sh -/usr/local/MariaDB/Columnstore/tools/getsar.sh -/usr/local/MariaDB/Columnstore/tools/getuserinput.sh -/usr/local/MariaDB/Columnstore/tools/prat -/usr/local/MariaDB/Columnstore/tools/prat.sh -/usr/local/MariaDB/Columnstore/tools/ps -/usr/local/MariaDB/Columnstore/tools/pscollect -/usr/local/MariaDB/Columnstore/tools/README -/usr/local/MariaDB/Columnstore/tools/tarfiles.sh +/usr/local/mariadb/columnstore/tools/copy2here.sh +/usr/local/mariadb/columnstore/tools/getlogs.sh +/usr/local/mariadb/columnstore/tools/getmodules.sh +/usr/local/mariadb/columnstore/tools/getps.sh +/usr/local/mariadb/columnstore/tools/getsar.sh +/usr/local/mariadb/columnstore/tools/getuserinput.sh +/usr/local/mariadb/columnstore/tools/prat +/usr/local/mariadb/columnstore/tools/prat.sh +/usr/local/mariadb/columnstore/tools/ps +/usr/local/mariadb/columnstore/tools/pscollect +/usr/local/mariadb/columnstore/tools/README +/usr/local/mariadb/columnstore/tools/tarfiles.sh # %files libs %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/lib/libconfigcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libexecplan.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libfuncexp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudfsdk.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoblist.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoiner.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libloggingcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmessageqcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpagent.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmphelpers.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpmibs.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmp.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmptrapd.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/liboamcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libsnmpmanager.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libthreadpool.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwindowfunction.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengine.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineclient.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbrm.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librwlock.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdataconvert.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librowgroup.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcacheutils.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcommon.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libboost_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcompress.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlcleanuputil.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbatchloader.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmysqlcl_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerystats.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineredistribute.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjemalloc.so.3.3.0 -/usr/local/MariaDB/Columnstore/lib/libidbdatafile.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/hdfs-20.so -/usr/local/MariaDB/Columnstore/lib/hdfs-12.so -/usr/local/MariaDB/Columnstore/lib/libgcc_s.so.1 -/usr/local/MariaDB/Columnstore/lib/libstdc++.so.6.0.14 -/usr/local/MariaDB/Columnstore/lib/libthrift.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerytele.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libconfigcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libexecplan.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libfuncexp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudfsdk.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoblist.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoiner.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libloggingcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmessageqcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libnetsnmpagent.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmphelpers.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmpmibs.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmp.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmptrapd.so.5.2.1 +/usr/local/mariadb/columnstore/lib/liboamcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libsnmpmanager.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libthreadpool.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwindowfunction.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengine.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineclient.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbrm.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librwlock.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdataconvert.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librowgroup.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcacheutils.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcommon.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libboost_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcompress.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlcleanuputil.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbatchloader.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmysqlcl_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerystats.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineredistribute.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjemalloc.so.3.3.0 +/usr/local/mariadb/columnstore/lib/libidbdatafile.so.1.0.0 +/usr/local/mariadb/columnstore/lib/hdfs-20.so +/usr/local/mariadb/columnstore/lib/hdfs-12.so +/usr/local/mariadb/columnstore/lib/libgcc_s.so.1 +/usr/local/mariadb/columnstore/lib/libstdc++.so.6.0.14 +/usr/local/mariadb/columnstore/lib/libthrift.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerytele.so.1.0.0 %files storage-engine -/usr/local/MariaDB/Columnstore/lib/libcalmysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudf_mysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcalmysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudf_mysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/mysql/mysql-Calpont -/usr/local/MariaDB/Columnstore/mysql/install_calpont_mysql.sh -/usr/local/MariaDB/Columnstore/mysql/syscatalog_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat.pl -/usr/local/MariaDB/Columnstore/mysql/calsetuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calremoveuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calshowprocesslist.sql +/usr/local/mariadb/columnstore/mysql/mysql-Calpont +/usr/local/mariadb/columnstore/mysql/install_calpont_mysql.sh +/usr/local/mariadb/columnstore/mysql/syscatalog_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat.pl +/usr/local/mariadb/columnstore/mysql/calsetuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calremoveuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calshowprocesslist.sql -%config /usr/local/MariaDB/Columnstore/mysql/my.cnf +%config /usr/local/mariadb/columnstore/mysql/my.cnf # # Scriptlets @@ -369,7 +369,7 @@ fi prefix=/usr/local -test -x /usr/local/MariaDB/Columnstore/bin/post-install && /usr/local/MariaDB/Columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode +test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode echo "InfinIDB RPM install completed" @@ -421,7 +421,7 @@ else fi if [ $rpmmode = erase ]; then - test -x /usr/local/MariaDB/Columnstore/bin/pre-uninstall && /usr/local/MariaDB/Columnstore/bin/pre-uninstall + test -x /usr/local/mariadb/columnstore/bin/pre-uninstall && /usr/local/mariadb/columnstore/bin/pre-uninstall fi exit 0 diff --git a/build/infinidb.spec.in b/build/infinidb.spec.in index ae423ea09..3e5c73377 100644 --- a/build/infinidb.spec.in +++ b/build/infinidb.spec.in @@ -72,293 +72,293 @@ rm -rf $RPM_BUILD_ROOT $RPM_BUILD_DIR/%{name}-%{version}-%{release} %files platform %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/DDLProc -/usr/local/MariaDB/Columnstore/bin/ExeMgr -/usr/local/MariaDB/Columnstore/bin/ProcMgr -/usr/local/MariaDB/Columnstore/bin/ProcMon -/usr/local/MariaDB/Columnstore/bin/DMLProc -/usr/local/MariaDB/Columnstore/bin/WriteEngineServer -/usr/local/MariaDB/Columnstore/bin/cpimport -/usr/local/MariaDB/Columnstore/bin/post-install -/usr/local/MariaDB/Columnstore/bin/post-mysql-install -/usr/local/MariaDB/Columnstore/bin/post-mysqld-install -/usr/local/MariaDB/Columnstore/bin/pre-uninstall -/usr/local/MariaDB/Columnstore/bin/PrimProc -/usr/local/MariaDB/Columnstore/bin/DecomSvr -/usr/local/MariaDB/Columnstore/bin/upgrade-infinidb.sh -/usr/local/MariaDB/Columnstore/bin/run.sh -/usr/local/MariaDB/Columnstore/bin/infinidb -/usr/local/MariaDB/Columnstore/bin/calpontSyslog -/usr/local/MariaDB/Columnstore/bin/calpontSyslog7 -/usr/local/MariaDB/Columnstore/bin/calpontSyslog-ng -/usr/local/MariaDB/Columnstore/bin/syslogSetup.sh -/usr/local/MariaDB/Columnstore/bin/cplogger -/usr/local/MariaDB/Columnstore/bin/infinidb.def -/usr/local/MariaDB/Columnstore/bin/dbbuilder -/usr/local/MariaDB/Columnstore/bin/cpimport.bin -/usr/local/MariaDB/Columnstore/bin/load_brm -/usr/local/MariaDB/Columnstore/bin/save_brm -/usr/local/MariaDB/Columnstore/bin/dbrmctl -/usr/local/MariaDB/Columnstore/bin/controllernode -/usr/local/MariaDB/Columnstore/bin/reset_locks -/usr/local/MariaDB/Columnstore/bin/workernode -/usr/local/MariaDB/Columnstore/bin/colxml -/usr/local/MariaDB/Columnstore/bin/clearShm -/usr/local/MariaDB/Columnstore/bin/viewtablelock -/usr/local/MariaDB/Columnstore/bin/cleartablelock -/usr/local/MariaDB/Columnstore/bin/mcsadmin -/usr/local/MariaDB/Columnstore/bin/trapHandler -/usr/local/MariaDB/Columnstore/bin/remote_command.sh -/usr/local/MariaDB/Columnstore/bin/postConfigure -/usr/local/MariaDB/Columnstore/bin/calpontLogRotate -/usr/local/MariaDB/Columnstore/bin/transactionLog -/usr/local/MariaDB/Columnstore/bin/calpontDBWrite -/usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh -/usr/local/MariaDB/Columnstore/bin/system_installer.sh -/usr/local/MariaDB/Columnstore/bin/installer -/usr/local/MariaDB/Columnstore/bin/module_installer.sh -/usr/local/MariaDB/Columnstore/bin/patchInstaller -/usr/local/MariaDB/Columnstore/bin/patch_installer.sh -/usr/local/MariaDB/Columnstore/bin/xm_installer.sh -/usr/local/MariaDB/Columnstore/bin/calpontUninstall.sh -/usr/local/MariaDB/Columnstore/bin/director_installer.sh -/usr/local/MariaDB/Columnstore/bin/user_installer.sh -/usr/local/MariaDB/Columnstore/bin/performance_installer.sh -/usr/local/MariaDB/Columnstore/bin/startupTests.sh -/usr/local/MariaDB/Columnstore/bin/os_check.sh -/usr/local/MariaDB/Columnstore/bin/sendtrap -/usr/local/MariaDB/Columnstore/bin/remote_scp_put.sh -/usr/local/MariaDB/Columnstore/bin/remotessh.exp -/usr/local/MariaDB/Columnstore/bin/ServerMonitor -/usr/local/MariaDB/Columnstore/bin/master-rep-infinidb.sh -/usr/local/MariaDB/Columnstore/bin/slave-rep-infinidb.sh -/usr/local/MariaDB/Columnstore/bin/rsync.sh -/usr/local/MariaDB/Columnstore/bin/calpontSupport -/usr/local/MariaDB/Columnstore/bin/hardwareReport.sh -/usr/local/MariaDB/Columnstore/bin/softwareReport.sh -/usr/local/MariaDB/Columnstore/bin/configReport.sh -/usr/local/MariaDB/Columnstore/bin/logReport.sh -/usr/local/MariaDB/Columnstore/bin/bulklogReport.sh -/usr/local/MariaDB/Columnstore/bin/resourceReport.sh -/usr/local/MariaDB/Columnstore/bin/hadoopReport.sh -/usr/local/MariaDB/Columnstore/bin/alarmReport.sh -/usr/local/MariaDB/Columnstore/bin/amazonInstaller -/usr/local/MariaDB/Columnstore/bin/remote_command_verify.sh -/usr/local/MariaDB/Columnstore/bin/disable-rep-infinidb.sh +/usr/local/mariadb/columnstore/bin/DDLProc +/usr/local/mariadb/columnstore/bin/ExeMgr +/usr/local/mariadb/columnstore/bin/ProcMgr +/usr/local/mariadb/columnstore/bin/ProcMon +/usr/local/mariadb/columnstore/bin/DMLProc +/usr/local/mariadb/columnstore/bin/WriteEngineServer +/usr/local/mariadb/columnstore/bin/cpimport +/usr/local/mariadb/columnstore/bin/post-install +/usr/local/mariadb/columnstore/bin/post-mysql-install +/usr/local/mariadb/columnstore/bin/post-mysqld-install +/usr/local/mariadb/columnstore/bin/pre-uninstall +/usr/local/mariadb/columnstore/bin/PrimProc +/usr/local/mariadb/columnstore/bin/DecomSvr +/usr/local/mariadb/columnstore/bin/upgrade-infinidb.sh +/usr/local/mariadb/columnstore/bin/run.sh +/usr/local/mariadb/columnstore/bin/infinidb +/usr/local/mariadb/columnstore/bin/calpontSyslog +/usr/local/mariadb/columnstore/bin/calpontSyslog7 +/usr/local/mariadb/columnstore/bin/calpontSyslog-ng +/usr/local/mariadb/columnstore/bin/syslogSetup.sh +/usr/local/mariadb/columnstore/bin/cplogger +/usr/local/mariadb/columnstore/bin/infinidb.def +/usr/local/mariadb/columnstore/bin/dbbuilder +/usr/local/mariadb/columnstore/bin/cpimport.bin +/usr/local/mariadb/columnstore/bin/load_brm +/usr/local/mariadb/columnstore/bin/save_brm +/usr/local/mariadb/columnstore/bin/dbrmctl +/usr/local/mariadb/columnstore/bin/controllernode +/usr/local/mariadb/columnstore/bin/reset_locks +/usr/local/mariadb/columnstore/bin/workernode +/usr/local/mariadb/columnstore/bin/colxml +/usr/local/mariadb/columnstore/bin/clearShm +/usr/local/mariadb/columnstore/bin/viewtablelock +/usr/local/mariadb/columnstore/bin/cleartablelock +/usr/local/mariadb/columnstore/bin/mcsadmin +/usr/local/mariadb/columnstore/bin/trapHandler +/usr/local/mariadb/columnstore/bin/remote_command.sh +/usr/local/mariadb/columnstore/bin/postConfigure +/usr/local/mariadb/columnstore/bin/calpontLogRotate +/usr/local/mariadb/columnstore/bin/transactionLog +/usr/local/mariadb/columnstore/bin/calpontDBWrite +/usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh +/usr/local/mariadb/columnstore/bin/system_installer.sh +/usr/local/mariadb/columnstore/bin/installer +/usr/local/mariadb/columnstore/bin/module_installer.sh +/usr/local/mariadb/columnstore/bin/patchInstaller +/usr/local/mariadb/columnstore/bin/patch_installer.sh +/usr/local/mariadb/columnstore/bin/xm_installer.sh +/usr/local/mariadb/columnstore/bin/calpontUninstall.sh +/usr/local/mariadb/columnstore/bin/director_installer.sh +/usr/local/mariadb/columnstore/bin/user_installer.sh +/usr/local/mariadb/columnstore/bin/performance_installer.sh +/usr/local/mariadb/columnstore/bin/startupTests.sh +/usr/local/mariadb/columnstore/bin/os_check.sh +/usr/local/mariadb/columnstore/bin/sendtrap +/usr/local/mariadb/columnstore/bin/remote_scp_put.sh +/usr/local/mariadb/columnstore/bin/remotessh.exp +/usr/local/mariadb/columnstore/bin/ServerMonitor +/usr/local/mariadb/columnstore/bin/master-rep-infinidb.sh +/usr/local/mariadb/columnstore/bin/slave-rep-infinidb.sh +/usr/local/mariadb/columnstore/bin/rsync.sh +/usr/local/mariadb/columnstore/bin/calpontSupport +/usr/local/mariadb/columnstore/bin/hardwareReport.sh +/usr/local/mariadb/columnstore/bin/softwareReport.sh +/usr/local/mariadb/columnstore/bin/configReport.sh +/usr/local/mariadb/columnstore/bin/logReport.sh +/usr/local/mariadb/columnstore/bin/bulklogReport.sh +/usr/local/mariadb/columnstore/bin/resourceReport.sh +/usr/local/mariadb/columnstore/bin/hadoopReport.sh +/usr/local/mariadb/columnstore/bin/alarmReport.sh +/usr/local/mariadb/columnstore/bin/amazonInstaller +/usr/local/mariadb/columnstore/bin/remote_command_verify.sh +/usr/local/mariadb/columnstore/bin/disable-rep-infinidb.sh # -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml -%config /usr/local/MariaDB/Columnstore/etc/ConsoleCmds.xml -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf -%config /usr/local/MariaDB/Columnstore/etc/Calpont.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/ProcessConfig.xml.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmpd.conf.singleserver -%config /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/Calpont.xml +%config /usr/local/mariadb/columnstore/etc/ConsoleCmds.xml +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml +%config /usr/local/mariadb/columnstore/etc/snmpd.conf +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf +%config /usr/local/mariadb/columnstore/etc/Calpont.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/ProcessConfig.xml.singleserver +%config /usr/local/mariadb/columnstore/etc/snmpd.conf.singleserver +%config /usr/local/mariadb/columnstore/etc/snmptrapd.conf.singleserver # -/usr/local/MariaDB/Columnstore/etc/MessageFile.txt -/usr/local/MariaDB/Columnstore/etc/ErrorMessage.txt +/usr/local/mariadb/columnstore/etc/MessageFile.txt +/usr/local/mariadb/columnstore/etc/ErrorMessage.txt # -%attr(0666, root, root) /usr/local/MariaDB/Columnstore/local/module +%attr(0666, root, root) /usr/local/mariadb/columnstore/local/module # -/usr/local/MariaDB/Columnstore/releasenum +/usr/local/mariadb/columnstore/releasenum # Tools... -/usr/local/MariaDB/Columnstore/bin/rollback -/usr/local/MariaDB/Columnstore/bin/editem -/usr/local/MariaDB/Columnstore/bin/getConfig -/usr/local/MariaDB/Columnstore/bin/setConfig -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-12 -/usr/local/MariaDB/Columnstore/bin/setenv-hdfs-20 -/usr/local/MariaDB/Columnstore/bin/hdfsCheck -/usr/local/MariaDB/Columnstore/bin/configxml.sh -/usr/local/MariaDB/Columnstore/bin/remote_scp_get.sh -/usr/local/MariaDB/Columnstore/bin/calpontAlias -/usr/local/MariaDB/Columnstore/bin/autoConfigure -/usr/local/MariaDB/Columnstore/bin/ddlcleanup -/usr/local/MariaDB/Columnstore/bin/idbmeminfo -/usr/local/MariaDB/Columnstore/bin/IDBInstanceCmds.sh -/usr/local/MariaDB/Columnstore/bin/IDBVolumeCmds.sh -/usr/local/MariaDB/Columnstore/bin/binary_installer.sh -/usr/local/MariaDB/Columnstore/bin/myCnf-include-args.text -/usr/local/MariaDB/Columnstore/bin/myCnf-exclude-args.text -/usr/local/MariaDB/Columnstore/bin/mycnfUpgrade -/usr/local/MariaDB/Columnstore/bin/getMySQLpw -/usr/local/MariaDB/Columnstore/bin/infinidb.conf +/usr/local/mariadb/columnstore/bin/rollback +/usr/local/mariadb/columnstore/bin/editem +/usr/local/mariadb/columnstore/bin/getConfig +/usr/local/mariadb/columnstore/bin/setConfig +/usr/local/mariadb/columnstore/bin/setenv-hdfs-12 +/usr/local/mariadb/columnstore/bin/setenv-hdfs-20 +/usr/local/mariadb/columnstore/bin/hdfsCheck +/usr/local/mariadb/columnstore/bin/configxml.sh +/usr/local/mariadb/columnstore/bin/remote_scp_get.sh +/usr/local/mariadb/columnstore/bin/calpontAlias +/usr/local/mariadb/columnstore/bin/autoConfigure +/usr/local/mariadb/columnstore/bin/ddlcleanup +/usr/local/mariadb/columnstore/bin/idbmeminfo +/usr/local/mariadb/columnstore/bin/IDBInstanceCmds.sh +/usr/local/mariadb/columnstore/bin/IDBVolumeCmds.sh +/usr/local/mariadb/columnstore/bin/binary_installer.sh +/usr/local/mariadb/columnstore/bin/myCnf-include-args.text +/usr/local/mariadb/columnstore/bin/myCnf-exclude-args.text +/usr/local/mariadb/columnstore/bin/mycnfUpgrade +/usr/local/mariadb/columnstore/bin/getMySQLpw +/usr/local/mariadb/columnstore/bin/infinidb.conf -/usr/local/MariaDB/Columnstore/sbin/snmpd -/usr/local/MariaDB/Columnstore/sbin/snmptrapd -%config %attr(0666, root, root) /usr/local/MariaDB/Columnstore/etc/AlarmConfig.xml +/usr/local/mariadb/columnstore/sbin/snmpd +/usr/local/mariadb/columnstore/sbin/snmptrapd +%config %attr(0666, root, root) /usr/local/mariadb/columnstore/etc/AlarmConfig.xml # -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf -%config /usr/local/MariaDB/Columnstore/local/snmpdx.conf.singleserver +%config /usr/local/mariadb/columnstore/local/snmpdx.conf +%config /usr/local/mariadb/columnstore/local/snmpdx.conf.singleserver # -/usr/local/MariaDB/Columnstore/share/snmp/mibs/AGENTX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/CALPONT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/EtherLike-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HCNUM-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANAifType-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IF-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NET-SNMP-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1155-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC1213-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RFC-1215.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/RMON-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SMUX-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-CONF.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-SMI.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TC.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMPv2-TM.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TCP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt -/usr/local/MariaDB/Columnstore/share/snmp/mibs/UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/AGENTX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/CALPONT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-EVENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/DISMAN-SCRIPT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/EtherLike-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HCNUM-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/HOST-RESOURCES-TYPES.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANAifType-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-LANGUAGE-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IANA-RTPROTO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-INVERTED-STACK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IF-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/INET-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-FORWARD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-ICMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/IPV6-UDP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NET-SNMP-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/NOTIFICATION-LOG-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1155-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC1213-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RFC-1215.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/RMON-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SMUX-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-MPD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-PROXY-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-TARGET-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-AES-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-CONF.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-SMI.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TC.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMPv2-TM.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TCP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DEMO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DISKIO-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-DLMOD-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-IPFWACC-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UCD-SNMP-MIB.txt +/usr/local/mariadb/columnstore/share/snmp/mibs/UDP-MIB.txt # -/usr/local/MariaDB/Columnstore/post/functions -/usr/local/MariaDB/Columnstore/post/test-001.sh -/usr/local/MariaDB/Columnstore/post/test-002.sh -/usr/local/MariaDB/Columnstore/post/test-003.sh -/usr/local/MariaDB/Columnstore/post/test-004.sh +/usr/local/mariadb/columnstore/post/functions +/usr/local/mariadb/columnstore/post/test-001.sh +/usr/local/mariadb/columnstore/post/test-002.sh +/usr/local/mariadb/columnstore/post/test-003.sh +/usr/local/mariadb/columnstore/post/test-004.sh %files enterprise %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/bin/displayJobGraph.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sh -/usr/local/MariaDB/Columnstore/bin/dbhealth.sql +/usr/local/mariadb/columnstore/bin/displayJobGraph.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sh +/usr/local/mariadb/columnstore/bin/dbhealth.sql # Tools... -/usr/local/MariaDB/Columnstore/bin/dumpcol -/usr/local/MariaDB/Columnstore/bin/oid2file -/usr/local/MariaDB/Columnstore/bin/evalcol -/usr/local/MariaDB/Columnstore/bin/SesMgr -/usr/local/MariaDB/Columnstore/bin/dumpVss -/usr/local/MariaDB/Columnstore/bin/editTxn -/usr/local/MariaDB/Columnstore/bin/dbprof.pl -/usr/local/MariaDB/Columnstore/bin/dumpobm -/usr/local/MariaDB/Columnstore/bin/file2oid.pl -/usr/local/MariaDB/Columnstore/bin/print_journal -/usr/local/MariaDB/Columnstore/bin/healthcheck -/usr/local/MariaDB/Columnstore/bin/glusterctl -/usr/local/MariaDB/Columnstore/bin/glusteradd -/usr/local/MariaDB/Columnstore/bin/glusterconf -/usr/local/MariaDB/Columnstore/bin/redistributeDB -/usr/local/MariaDB/Columnstore/bin/databaseSizeReport -/usr/local/MariaDB/Columnstore/bin/gdb +/usr/local/mariadb/columnstore/bin/dumpcol +/usr/local/mariadb/columnstore/bin/oid2file +/usr/local/mariadb/columnstore/bin/evalcol +/usr/local/mariadb/columnstore/bin/SesMgr +/usr/local/mariadb/columnstore/bin/dumpVss +/usr/local/mariadb/columnstore/bin/editTxn +/usr/local/mariadb/columnstore/bin/dbprof.pl +/usr/local/mariadb/columnstore/bin/dumpobm +/usr/local/mariadb/columnstore/bin/file2oid.pl +/usr/local/mariadb/columnstore/bin/print_journal +/usr/local/mariadb/columnstore/bin/healthcheck +/usr/local/mariadb/columnstore/bin/glusterctl +/usr/local/mariadb/columnstore/bin/glusteradd +/usr/local/mariadb/columnstore/bin/glusterconf +/usr/local/mariadb/columnstore/bin/redistributeDB +/usr/local/mariadb/columnstore/bin/databaseSizeReport +/usr/local/mariadb/columnstore/bin/gdb # -/usr/local/MariaDB/Columnstore/tools/copy2here.sh -/usr/local/MariaDB/Columnstore/tools/getlogs.sh -/usr/local/MariaDB/Columnstore/tools/getmodules.sh -/usr/local/MariaDB/Columnstore/tools/getps.sh -/usr/local/MariaDB/Columnstore/tools/getsar.sh -/usr/local/MariaDB/Columnstore/tools/getuserinput.sh -/usr/local/MariaDB/Columnstore/tools/prat -/usr/local/MariaDB/Columnstore/tools/prat.sh -/usr/local/MariaDB/Columnstore/tools/ps -/usr/local/MariaDB/Columnstore/tools/pscollect -/usr/local/MariaDB/Columnstore/tools/README -/usr/local/MariaDB/Columnstore/tools/tarfiles.sh +/usr/local/mariadb/columnstore/tools/copy2here.sh +/usr/local/mariadb/columnstore/tools/getlogs.sh +/usr/local/mariadb/columnstore/tools/getmodules.sh +/usr/local/mariadb/columnstore/tools/getps.sh +/usr/local/mariadb/columnstore/tools/getsar.sh +/usr/local/mariadb/columnstore/tools/getuserinput.sh +/usr/local/mariadb/columnstore/tools/prat +/usr/local/mariadb/columnstore/tools/prat.sh +/usr/local/mariadb/columnstore/tools/ps +/usr/local/mariadb/columnstore/tools/pscollect +/usr/local/mariadb/columnstore/tools/README +/usr/local/mariadb/columnstore/tools/tarfiles.sh # %files libs %defattr(-, root, root) -/usr/local/MariaDB/Columnstore/lib/libconfigcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackageproc.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdmlpackage.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libexecplan.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libfuncexp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudfsdk.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoblist.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjoiner.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libloggingcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmessageqcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpagent.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmphelpers.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmpmibs.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmp.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/libnetsnmptrapd.so.5.2.1 -/usr/local/MariaDB/Columnstore/lib/liboamcpp.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libsnmpmanager.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libthreadpool.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwindowfunction.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengine.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineclient.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbrm.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librwlock.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libdataconvert.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/librowgroup.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcacheutils.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcommon.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libboost_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libcompress.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libddlcleanuputil.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libbatchloader.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libmysqlcl_idb.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerystats.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libwriteengineredistribute.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libjemalloc.so.3.3.0 -/usr/local/MariaDB/Columnstore/lib/libidbdatafile.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/hdfs-20.so -/usr/local/MariaDB/Columnstore/lib/hdfs-12.so -/usr/local/MariaDB/Columnstore/lib/libgcc_s.so.1 -/usr/local/MariaDB/Columnstore/lib/libstdc++.so.6.0.14 -/usr/local/MariaDB/Columnstore/lib/libthrift.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libquerytele.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libconfigcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackageproc.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdmlpackage.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libexecplan.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libfuncexp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudfsdk.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoblist.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjoiner.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libloggingcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmessageqcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libnetsnmpagent.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmphelpers.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmpmibs.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmp.so.5.2.1 +/usr/local/mariadb/columnstore/lib/libnetsnmptrapd.so.5.2.1 +/usr/local/mariadb/columnstore/lib/liboamcpp.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libsnmpmanager.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libthreadpool.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwindowfunction.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengine.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineclient.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbrm.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librwlock.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libdataconvert.so.1.0.0 +/usr/local/mariadb/columnstore/lib/librowgroup.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcacheutils.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcommon.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libboost_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcompress.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libddlcleanuputil.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libbatchloader.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libmysqlcl_idb.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerystats.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libwriteengineredistribute.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libjemalloc.so.3.3.0 +/usr/local/mariadb/columnstore/lib/libidbdatafile.so.1.0.0 +/usr/local/mariadb/columnstore/lib/hdfs-20.so +/usr/local/mariadb/columnstore/lib/hdfs-12.so +/usr/local/mariadb/columnstore/lib/libgcc_s.so.1 +/usr/local/mariadb/columnstore/lib/libstdc++.so.6.0.14 +/usr/local/mariadb/columnstore/lib/libthrift.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libquerytele.so.1.0.0 %files storage-engine -/usr/local/MariaDB/Columnstore/lib/libcalmysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/lib/libudf_mysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libcalmysql.so.1.0.0 +/usr/local/mariadb/columnstore/lib/libudf_mysql.so.1.0.0 -/usr/local/MariaDB/Columnstore/mysql/mysql-Calpont -/usr/local/MariaDB/Columnstore/mysql/install_calpont_mysql.sh -/usr/local/MariaDB/Columnstore/mysql/syscatalog_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat_mysql.sql -/usr/local/MariaDB/Columnstore/mysql/dumpcat.pl -/usr/local/MariaDB/Columnstore/mysql/calsetuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calremoveuserpriority.sql -/usr/local/MariaDB/Columnstore/mysql/calshowprocesslist.sql +/usr/local/mariadb/columnstore/mysql/mysql-Calpont +/usr/local/mariadb/columnstore/mysql/install_calpont_mysql.sh +/usr/local/mariadb/columnstore/mysql/syscatalog_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat_mysql.sql +/usr/local/mariadb/columnstore/mysql/dumpcat.pl +/usr/local/mariadb/columnstore/mysql/calsetuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calremoveuserpriority.sql +/usr/local/mariadb/columnstore/mysql/calshowprocesslist.sql -%config /usr/local/MariaDB/Columnstore/mysql/my.cnf +%config /usr/local/mariadb/columnstore/mysql/my.cnf # # Scriptlets @@ -376,7 +376,7 @@ fi prefix=/usr/local -test -x /usr/local/MariaDB/Columnstore/bin/post-install && /usr/local/MariaDB/Columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode +test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode echo "InfinIDB RPM install completed" @@ -428,7 +428,7 @@ else fi if [ $rpmmode = erase ]; then - test -x /usr/local/MariaDB/Columnstore/bin/pre-uninstall && /usr/local/MariaDB/Columnstore/bin/pre-uninstall + test -x /usr/local/mariadb/columnstore/bin/pre-uninstall && /usr/local/mariadb/columnstore/bin/pre-uninstall fi exit 0 diff --git a/buildFlags b/buildFlags new file mode 100644 index 000000000..2dda82a01 --- /dev/null +++ b/buildFlags @@ -0,0 +1 @@ +-g0 -O3 -fno-strict-aliasing -fno-tree-vectorize -DDBUG_OFF diff --git a/config.log b/config.log index ea81f8654..ff942d2ac 100644 --- a/config.log +++ b/config.log @@ -27,9 +27,9 @@ hostinfo = unknown /usr/bin/oslevel = unknown /bin/universe = unknown -PATH: /usr/local/MariaDB/Columnstore/bin +PATH: /usr/local/mariadb/columnstore/bin PATH: /home/calpont/bin -PATH: /usr/local/MariaDB/Columnstore/bin +PATH: /usr/local/mariadb/columnstore/bin PATH: /home/calpont/bin PATH: /usr/lib64/qt-3.3/bin PATH: /usr/local/bin diff --git a/dbcon/ddlpackage/ddl-gram.cpp b/dbcon/ddlpackage/ddl-gram.cpp new file mode 100644 index 000000000..add27d867 --- /dev/null +++ b/dbcon/ddlpackage/ddl-gram.cpp @@ -0,0 +1,3293 @@ + +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.4.1" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse ddlparse +#define yylex ddllex +#define yyerror ddlerror +#define yylval ddllval +#define yychar ddlchar +#define yydebug ddldebug +#define yynerrs ddlnerrs + + +/* Copy the first part of user declarations. */ + + +#include "sqlparser.h" + +#ifdef _MSC_VER +#include "ddl-gram-win.h" +#else +#include "ddl-gram.h" +#endif + +using namespace std; +using namespace ddlpackage; + +/* The user is expect to pass a ParseTree* to grammar_init */ +static ParseTree* parseTree; +static std::string db_schema; +int ddllex(); +void ddlerror (char const *error); +char* copy_string(const char *str); + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ACTION = 258, + ADD = 259, + ALTER = 260, + AUTO_INCREMENT = 261, + BIGINT = 262, + BIT = 263, + IDB_BLOB = 264, + CASCADE = 265, + IDB_CHAR = 266, + CHARACTER = 267, + CHECK = 268, + CLOB = 269, + COLUMN = 270, + COLUMNS = 271, + COMMENT = 272, + CONSTRAINT = 273, + CONSTRAINTS = 274, + CREATE = 275, + CURRENT_USER = 276, + DATETIME = 277, + DEC = 278, + DECIMAL = 279, + DEFAULT = 280, + DEFERRABLE = 281, + DEFERRED = 282, + IDB_DELETE = 283, + DROP = 284, + ENGINE = 285, + FOREIGN = 286, + FULL = 287, + IMMEDIATE = 288, + INDEX = 289, + INITIALLY = 290, + IDB_INT = 291, + INTEGER = 292, + KEY = 293, + MATCH = 294, + MAX_ROWS = 295, + MIN_ROWS = 296, + MODIFY = 297, + NO = 298, + NOT = 299, + NULL_TOK = 300, + NUMBER = 301, + NUMERIC = 302, + ON = 303, + PARTIAL = 304, + PRECISION = 305, + PRIMARY = 306, + REFERENCES = 307, + RENAME = 308, + RESTRICT = 309, + SET = 310, + SMALLINT = 311, + TABLE = 312, + TIME = 313, + TINYINT = 314, + TO = 315, + UNIQUE = 316, + UNSIGNED = 317, + UPDATE = 318, + USER = 319, + SESSION_USER = 320, + SYSTEM_USER = 321, + VARCHAR = 322, + VARBINARY = 323, + VARYING = 324, + WITH = 325, + ZONE = 326, + DOUBLE = 327, + IDB_FLOAT = 328, + REAL = 329, + CHARSET = 330, + IDB_IF = 331, + EXISTS = 332, + CHANGE = 333, + TRUNCATE = 334, + IDENT = 335, + FCONST = 336, + SCONST = 337, + CP_SEARCH_CONDITION_TEXT = 338, + ICONST = 339, + DATE = 340 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + ddlpackage::AlterTableStatement *alterTableStmt; + ddlpackage::AlterTableAction *ata; + ddlpackage::AlterTableActionList *ataList; + ddlpackage::DDL_CONSTRAINT_ATTRIBUTES cattr; + std::pair *tableOption; + const char *columnOption; + ddlpackage::ColumnConstraintDef *columnConstraintDef; + ddlpackage::ColumnNameList *columnNameList; + ddlpackage::ColumnType* columnType; + ddlpackage::ConstraintAttributes *constraintAttributes; + ddlpackage::ColumnConstraintList *constraintList; + ddlpackage::DDL_CONSTRAINTS constraintType; + double dval; + bool flag; + int ival; + ddlpackage::QualifiedName *qualifiedName; + ddlpackage::SchemaObject *schemaObject; + ddlpackage::SqlStatement *sqlStmt; + ddlpackage::SqlStatementList *sqlStmtList; + const char *str; + ddlpackage::TableConstraintDef *tableConstraint; + ddlpackage::TableElementList *tableElementList; + ddlpackage::TableOptionMap *tableOptionMap; + ddlpackage::ColumnDefaultValue *colDefault; + ddlpackage::DDL_MATCH_TYPE matchType; + ddlpackage::DDL_REFERENTIAL_ACTION refActionCode; + ddlpackage::ReferentialAction *refAction; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + + + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 23 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 387 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 93 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 76 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 229 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 396 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 340 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 92, + 87, 88, 2, 2, 89, 2, 91, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 86, + 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 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, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, + 21, 23, 24, 29, 36, 39, 40, 44, 54, 65, + 67, 68, 77, 85, 89, 90, 94, 97, 99, 103, + 105, 107, 112, 116, 118, 119, 121, 123, 125, 130, + 132, 136, 139, 141, 154, 156, 157, 160, 162, 164, + 166, 167, 170, 173, 175, 176, 178, 179, 183, 187, + 189, 192, 195, 198, 200, 202, 205, 209, 213, 217, + 221, 224, 228, 233, 239, 244, 251, 253, 257, 260, + 262, 264, 266, 268, 270, 272, 274, 276, 280, 285, + 290, 296, 302, 309, 315, 322, 329, 337, 343, 350, + 357, 365, 372, 380, 387, 395, 403, 412, 420, 429, + 434, 437, 440, 444, 446, 450, 452, 455, 459, 464, + 470, 472, 474, 476, 479, 483, 488, 494, 499, 504, + 510, 517, 523, 530, 536, 537, 539, 542, 545, 548, + 551, 554, 557, 559, 561, 563, 565, 567, 569, 571, + 574, 577, 582, 584, 585, 588, 591, 593, 594, 596, + 599, 602, 605, 607, 610, 612, 614, 619, 623, 625, + 627, 632, 637, 643, 649, 654, 659, 661, 663, 666, + 670, 673, 677, 680, 684, 687, 690, 693, 696, 699, + 703, 707, 711, 715, 719, 723, 729, 730, 734, 735, + 738, 742, 745, 749, 752, 756, 760, 766, 767, 769, + 771, 773, 775, 777, 781, 785, 786, 790, 791, 795, + 800, 806, 811, 817, 819, 821, 822, 828, 834, 836 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 94, 0, -1, 95, -1, 95, 86, 96, -1, 96, + -1, 125, -1, 102, -1, 99, -1, 97, -1, 100, + -1, 104, -1, -1, 29, 57, 98, 134, -1, 29, + 57, 98, 134, 10, 19, -1, 76, 77, -1, -1, + 29, 34, 134, -1, 20, 34, 134, 48, 134, 87, + 111, 88, 101, -1, 20, 61, 34, 134, 48, 134, + 87, 111, 88, 101, -1, 123, -1, -1, 20, 57, + 103, 133, 87, 105, 88, 123, -1, 20, 57, 103, + 133, 87, 105, 88, -1, 76, 44, 77, -1, -1, + 79, 57, 134, -1, 79, 134, -1, 106, -1, 105, + 89, 106, -1, 139, -1, 107, -1, 18, 108, 109, + 145, -1, 108, 109, 145, -1, 137, -1, -1, 110, + -1, 113, -1, 151, -1, 112, 87, 111, 88, -1, + 136, -1, 111, 89, 136, -1, 51, 38, -1, 61, + -1, 31, 38, 87, 111, 88, 52, 133, 87, 111, + 88, 114, 116, -1, 115, -1, -1, 39, 115, -1, + 32, -1, 49, -1, 117, -1, -1, 120, 118, -1, + 121, 119, -1, 121, -1, -1, 120, -1, -1, 48, + 63, 122, -1, 48, 28, 122, -1, 10, -1, 55, + 45, -1, 55, 25, -1, 43, 3, -1, 54, -1, + 124, -1, 123, 124, -1, 30, 90, 80, -1, 40, + 90, 84, -1, 41, 90, 84, -1, 17, 90, 152, + -1, 17, 152, -1, 6, 90, 84, -1, 25, 75, + 90, 80, -1, 25, 11, 55, 90, 80, -1, 5, + 57, 133, 126, -1, 5, 57, 133, 126, 17, 152, + -1, 127, -1, 126, 89, 127, -1, 126, 127, -1, + 135, -1, 165, -1, 167, -1, 131, -1, 130, -1, + 132, -1, 128, -1, 129, -1, 42, 136, 142, -1, + 42, 15, 136, 142, -1, 78, 136, 136, 142, -1, + 78, 136, 136, 142, 138, -1, 78, 15, 136, 136, + 142, -1, 78, 15, 136, 136, 142, 138, -1, 78, + 136, 136, 142, 143, -1, 78, 15, 136, 136, 142, + 143, -1, 78, 136, 136, 142, 143, 138, -1, 78, + 15, 136, 136, 142, 143, 138, -1, 78, 136, 136, + 142, 141, -1, 78, 15, 136, 136, 142, 141, -1, + 78, 136, 136, 142, 141, 138, -1, 78, 15, 136, + 136, 142, 141, 138, -1, 78, 136, 136, 142, 143, + 141, -1, 78, 15, 136, 136, 142, 143, 141, -1, + 78, 136, 136, 142, 141, 143, -1, 78, 15, 136, + 136, 142, 141, 143, -1, 78, 136, 136, 142, 143, + 141, 138, -1, 78, 15, 136, 136, 142, 143, 141, + 138, -1, 78, 136, 136, 142, 141, 143, 138, -1, + 78, 15, 136, 136, 142, 141, 143, 138, -1, 29, + 18, 137, 166, -1, 4, 107, -1, 53, 133, -1, + 53, 60, 133, -1, 134, -1, 80, 91, 80, -1, + 80, -1, 4, 139, -1, 4, 15, 139, -1, 4, + 87, 105, 88, -1, 4, 15, 87, 105, 88, -1, + 85, -1, 80, -1, 80, -1, 17, 152, -1, 136, + 142, 140, -1, 136, 142, 140, 143, -1, 136, 142, + 140, 141, 143, -1, 136, 142, 140, 141, -1, 136, + 142, 140, 138, -1, 136, 142, 140, 143, 138, -1, + 136, 142, 140, 141, 143, 138, -1, 136, 142, 140, + 143, 141, -1, 136, 142, 140, 143, 141, 138, -1, + 136, 142, 140, 141, 138, -1, -1, 45, -1, 25, + 161, -1, 25, 45, -1, 25, 64, -1, 25, 21, + -1, 25, 65, -1, 25, 66, -1, 153, -1, 154, + -1, 155, -1, 162, -1, 9, -1, 14, -1, 144, + -1, 143, 144, -1, 150, 145, -1, 18, 137, 150, + 145, -1, 146, -1, -1, 149, 147, -1, 26, 149, + -1, 148, -1, -1, 26, -1, 35, 27, -1, 35, + 33, -1, 44, 45, -1, 61, -1, 51, 38, -1, + 6, -1, 151, -1, 13, 87, 83, 88, -1, 92, + 82, 92, -1, 12, -1, 11, -1, 12, 87, 84, + 88, -1, 11, 87, 84, 88, -1, 12, 69, 87, + 84, 88, -1, 11, 69, 87, 84, 88, -1, 67, + 87, 84, 88, -1, 68, 87, 84, 88, -1, 156, + -1, 159, -1, 47, 157, -1, 47, 157, 62, -1, + 24, 157, -1, 24, 157, 62, -1, 46, 157, -1, + 46, 157, 62, -1, 37, 158, -1, 36, 158, -1, + 56, 158, -1, 59, 158, -1, 7, 158, -1, 37, + 158, 62, -1, 36, 158, 62, -1, 56, 158, 62, + -1, 59, 158, 62, -1, 7, 158, 62, -1, 87, + 84, 88, -1, 87, 84, 89, 84, 88, -1, -1, + 87, 84, 88, -1, -1, 72, 160, -1, 72, 160, + 62, -1, 74, 160, -1, 74, 160, 62, -1, 73, + 160, -1, 73, 160, 62, -1, 87, 84, 88, -1, + 87, 84, 89, 84, 88, -1, -1, 84, -1, 152, + -1, 81, -1, 22, -1, 85, -1, 58, 163, 164, + -1, 87, 84, 88, -1, -1, 70, 58, 71, -1, + -1, 29, 136, 166, -1, 29, 15, 136, 166, -1, + 29, 15, 87, 111, 88, -1, 29, 87, 111, 88, + -1, 29, 16, 87, 111, 88, -1, 10, -1, 54, + -1, -1, 5, 168, 136, 55, 141, -1, 5, 168, + 136, 29, 25, -1, 15, -1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 202, 202, 207, 217, 234, 235, 236, 237, 238, + 239, 240, 244, 245, 252, 253, 257, 263, 268, 276, + 277, 281, 286, 293, 294, 298, 299, 303, 309, 317, + 318, 322, 328, 336, 337, 341, 342, 343, 347, 357, + 362, 370, 371, 375, 382, 383, 387, 391, 392, 396, + 397, 401, 407, 416, 417, 421, 422, 426, 430, 434, + 435, 436, 437, 438, 442, 448, 457, 459, 461, 463, + 465, 467, 472, 474, 478, 482, 489, 501, 506, 514, + 515, 516, 517, 518, 519, 520, 521, 526, 529, 535, + 537, 539, 541, 543, 545, 547, 549, 551, 553, 555, + 557, 559, 561, 563, 565, 567, 569, 571, 573, 578, + 585, 589, 590, 594, 598, 599, 611, 612, 613, 614, + 618, 619, 623, 627, 630, 634, 638, 642, 646, 650, + 654, 658, 662, 666, 672, 675, 679, 683, 684, 685, + 686, 687, 691, 692, 693, 694, 695, 700, 709, 714, + 722, 733, 748, 749, 753, 758, 772, 773, 777, 788, + 789, 793, 794, 795, 796, 797, 801, 805, 809, 814, + 819, 824, 829, 835, 841, 849, 857, 858, 862, 868, + 874, 880, 886, 892, 898, 903, 908, 913, 918, 923, + 928, 933, 938, 943, 951, 952, 953, 957, 958, 962, + 967, 972, 977, 982, 987, 995, 997, 998, 1002, 1003, + 1004, 1008, 1014, 1020, 1029, 1030, 1034, 1035, 1039, 1040, + 1041, 1042, 1043, 1047, 1048, 1049, 1053, 1054, 1058, 1059 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "ACTION", "ADD", "ALTER", + "AUTO_INCREMENT", "BIGINT", "BIT", "IDB_BLOB", "CASCADE", "IDB_CHAR", + "CHARACTER", "CHECK", "CLOB", "COLUMN", "COLUMNS", "COMMENT", + "CONSTRAINT", "CONSTRAINTS", "CREATE", "CURRENT_USER", "DATETIME", "DEC", + "DECIMAL", "DEFAULT", "DEFERRABLE", "DEFERRED", "IDB_DELETE", "DROP", + "ENGINE", "FOREIGN", "FULL", "IMMEDIATE", "INDEX", "INITIALLY", + "IDB_INT", "INTEGER", "KEY", "MATCH", "MAX_ROWS", "MIN_ROWS", "MODIFY", + "NO", "NOT", "NULL_TOK", "NUMBER", "NUMERIC", "ON", "PARTIAL", + "PRECISION", "PRIMARY", "REFERENCES", "RENAME", "RESTRICT", "SET", + "SMALLINT", "TABLE", "TIME", "TINYINT", "TO", "UNIQUE", "UNSIGNED", + "UPDATE", "USER", "SESSION_USER", "SYSTEM_USER", "VARCHAR", "VARBINARY", + "VARYING", "WITH", "ZONE", "DOUBLE", "IDB_FLOAT", "REAL", "CHARSET", + "IDB_IF", "EXISTS", "CHANGE", "TRUNCATE", "IDENT", "FCONST", "SCONST", + "CP_SEARCH_CONDITION_TEXT", "ICONST", "DATE", "';'", "'('", "')'", "','", + "'='", "'.'", "'\\''", "$accept", "stmtblock", "stmtmulti", "stmt", + "drop_table_statement", "opt_if_exists", "drop_index_statement", + "create_index_statement", "opt_table_options", "create_table_statement", + "opt_if_not_exists", "trunc_table_statement", "table_element_list", + "table_element", "table_constraint_def", "opt_constraint_name", + "table_constraint", "unique_constraint_def", "column_name_list", + "unique_specifier", "referential_constraint_def", "opt_match_type", + "match_type", "opt_referential_triggered_action", + "referential_triggered_action", "opt_delete_rule", "opt_update_rule", + "update_rule", "delete_rule", "referential_action", "table_options", + "table_option", "alter_table_statement", "alter_table_actions", + "alter_table_action", "modify_column", "rename_column", + "drop_table_constraint_def", "add_table_constraint_def", + "ata_rename_table", "table_name", "qualified_name", "ata_add_column", + "column_name", "constraint_name", "column_option", "column_def", + "opt_null_tok", "default_clause", "data_type", "column_qualifier_list", + "column_constraint_def", "opt_constraint_attributes", + "constraint_attributes", "opt_deferrability_clause", + "deferrability_clause", "constraint_check_time", "column_constraint", + "check_constraint_def", "string_literal", "character_string_type", + "binary_string_type", "numeric_type", "exact_numeric_type", + "opt_precision_scale", "opt_display_width", "approximate_numeric_type", + "opt_display_precision_scale_null", "literal", "datetime_type", + "opt_time_precision", "opt_with_time_zone", "drop_column_def", + "drop_behavior", "alter_column_def", "opt_column", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 59, 40, 41, 44, + 61, 46, 39 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 93, 94, 95, 95, 96, 96, 96, 96, 96, + 96, 96, 97, 97, 98, 98, 99, 100, 100, 101, + 101, 102, 102, 103, 103, 104, 104, 105, 105, 106, + 106, 107, 107, 108, 108, 109, 109, 109, 110, 111, + 111, 112, 112, 113, 114, 114, 115, 115, 115, 116, + 116, 117, 117, 118, 118, 119, 119, 120, 121, 122, + 122, 122, 122, 122, 123, 123, 124, 124, 124, 124, + 124, 124, 124, 124, 125, 125, 126, 126, 126, 127, + 127, 127, 127, 127, 127, 127, 127, 128, 128, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 130, + 131, 132, 132, 133, 134, 134, 135, 135, 135, 135, + 136, 136, 137, 138, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 140, 140, 141, 141, 141, 141, + 141, 141, 142, 142, 142, 142, 142, 142, 143, 143, + 144, 144, 145, 145, 146, 146, 147, 147, 148, 149, + 149, 150, 150, 150, 150, 150, 151, 152, 153, 153, + 153, 153, 153, 153, 153, 154, 155, 155, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 157, 157, 157, 158, 158, 159, + 159, 159, 159, 159, 159, 160, 160, 160, 161, 161, + 161, 162, 162, 162, 163, 163, 164, 164, 165, 165, + 165, 165, 165, 166, 166, 166, 167, 167, 168, 168 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 6, 2, 0, 3, 9, 10, 1, + 0, 8, 7, 3, 0, 3, 2, 1, 3, 1, + 1, 4, 3, 1, 0, 1, 1, 1, 4, 1, + 3, 2, 1, 12, 1, 0, 2, 1, 1, 1, + 0, 2, 2, 1, 0, 1, 0, 3, 3, 1, + 2, 2, 2, 1, 1, 2, 3, 3, 3, 3, + 2, 3, 4, 5, 4, 6, 1, 3, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, + 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, + 7, 6, 7, 6, 7, 7, 8, 7, 8, 4, + 2, 2, 3, 1, 3, 1, 2, 3, 4, 5, + 1, 1, 1, 2, 3, 4, 5, 4, 4, 5, + 6, 5, 6, 5, 0, 1, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 4, 1, 0, 2, 2, 1, 0, 1, 2, + 2, 2, 1, 2, 1, 1, 4, 3, 1, 1, + 4, 4, 5, 5, 4, 4, 1, 1, 2, 3, + 2, 3, 2, 3, 2, 2, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 5, 0, 3, 0, 2, + 3, 2, 3, 2, 3, 3, 5, 0, 1, 1, + 1, 1, 1, 3, 3, 0, 3, 0, 3, 4, + 5, 4, 5, 1, 1, 0, 5, 5, 1, 0 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 11, 0, 0, 0, 0, 0, 2, 4, 8, 7, + 9, 6, 10, 5, 0, 0, 24, 0, 0, 15, + 0, 115, 26, 1, 11, 0, 113, 0, 0, 0, + 0, 16, 0, 0, 25, 0, 3, 34, 229, 0, + 0, 0, 0, 74, 76, 85, 86, 83, 82, 84, + 79, 80, 81, 0, 0, 0, 0, 14, 12, 114, + 0, 34, 121, 120, 34, 110, 0, 0, 33, 116, + 228, 0, 0, 0, 0, 121, 0, 225, 0, 0, + 0, 111, 0, 0, 0, 0, 78, 0, 23, 34, + 0, 0, 34, 117, 122, 0, 0, 27, 30, 29, + 0, 0, 0, 42, 153, 35, 0, 36, 37, 198, + 146, 169, 168, 147, 211, 196, 198, 198, 196, 196, + 198, 215, 198, 0, 0, 207, 207, 207, 212, 134, + 142, 143, 144, 176, 177, 145, 0, 0, 225, 0, + 225, 0, 39, 223, 224, 218, 0, 87, 112, 0, + 0, 0, 75, 77, 0, 0, 0, 13, 0, 153, + 118, 34, 0, 0, 41, 0, 0, 32, 152, 157, + 0, 0, 188, 0, 0, 0, 0, 0, 180, 185, + 184, 182, 178, 186, 0, 217, 187, 0, 0, 0, + 199, 203, 201, 135, 124, 0, 0, 0, 219, 0, + 109, 221, 0, 88, 0, 89, 0, 0, 22, 0, + 119, 31, 28, 0, 0, 155, 159, 160, 158, 154, + 156, 0, 0, 193, 0, 0, 0, 0, 0, 181, + 190, 189, 183, 179, 191, 0, 0, 213, 192, 0, + 0, 0, 200, 204, 202, 164, 0, 0, 0, 0, + 0, 162, 128, 127, 125, 148, 153, 165, 227, 226, + 220, 222, 40, 91, 90, 97, 93, 167, 20, 0, + 0, 0, 0, 0, 0, 21, 64, 0, 166, 0, + 38, 197, 0, 171, 0, 170, 194, 0, 214, 0, + 174, 175, 205, 0, 123, 0, 139, 137, 138, 140, + 141, 210, 208, 209, 136, 161, 163, 133, 126, 129, + 131, 149, 150, 92, 98, 94, 99, 103, 95, 101, + 17, 19, 0, 0, 70, 0, 0, 0, 0, 0, + 65, 20, 0, 173, 172, 0, 216, 0, 153, 130, + 132, 100, 104, 96, 102, 107, 105, 71, 69, 0, + 0, 66, 67, 68, 18, 0, 195, 206, 151, 108, + 106, 0, 72, 0, 73, 0, 0, 45, 47, 0, + 48, 50, 44, 46, 0, 43, 49, 54, 56, 0, + 0, 0, 51, 53, 0, 52, 55, 59, 0, 63, + 0, 58, 57, 62, 61, 60 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 5, 6, 7, 8, 33, 9, 10, 320, 11, + 29, 12, 96, 97, 98, 66, 104, 105, 141, 106, + 107, 371, 372, 375, 376, 382, 385, 377, 378, 391, + 321, 276, 13, 43, 44, 45, 46, 47, 48, 49, + 25, 26, 50, 142, 68, 252, 99, 194, 253, 129, + 254, 255, 167, 168, 219, 220, 169, 256, 257, 152, + 130, 131, 132, 133, 178, 172, 134, 190, 304, 135, + 185, 237, 51, 145, 52, 71 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -270 +static const yytype_int16 yypact[] = +{ + 34, -44, 107, 30, 53, 40, -21, -270, -270, -270, + -270, -270, -270, -270, 9, 9, 20, 74, 9, 42, + 9, 58, -270, -270, 34, 3, -270, 117, 127, 9, + 9, -270, 97, 9, -270, 104, -270, 35, 172, 82, + 21, 43, 27, 100, -270, -270, -270, -270, -270, -270, + -270, -270, -270, 9, 114, 109, 174, -270, 210, -270, + 168, 145, 115, -270, 29, -270, 124, 136, -270, -270, + -270, -56, 178, 141, 145, -270, -56, 23, -56, 136, + 9, -270, -56, -56, 162, 3, -270, 150, -270, 29, + 9, 237, 29, -270, -270, 124, 123, -270, -270, -270, + 173, 226, 228, -270, 76, -270, 207, -270, -270, 208, + -270, -59, 83, -270, -270, 211, 208, 208, 211, 211, + 208, 212, 208, 213, 214, 215, 215, 215, -270, 244, + -270, -270, -270, -270, -270, -270, 38, -56, 23, -56, + 23, 154, -270, -270, -270, -270, 136, -270, -270, -56, + 136, 221, -270, -270, -56, 179, 217, -270, 181, 76, + -270, 29, 222, 219, -270, 261, 130, -270, -270, 271, + -56, 223, 246, 224, 225, 227, 229, 231, 248, 250, + 254, 255, 256, 257, 236, 251, 260, 239, 240, 241, + 265, 266, 267, -270, 180, 305, 306, 183, -270, 185, + -270, -270, -56, -270, 136, 180, 242, 187, 209, -56, + -270, -270, -270, 245, -56, -270, -270, -270, -270, -270, + -270, 189, 247, -270, 252, 249, 258, 253, 193, -270, + -270, -270, -270, -270, -270, 259, 274, -270, -270, 262, + 263, 195, -270, -270, -270, -270, 162, 145, 135, 293, + 301, -270, -270, 200, 180, -270, 76, -270, -270, -270, + -270, -270, -270, 180, -270, 200, 180, -270, 209, 264, + 98, 0, 268, 269, 270, 209, -270, 197, -270, 199, + -270, -270, 273, -270, 275, -270, -270, 272, -270, 277, + -270, -270, -270, 278, -270, 201, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, 200, -270, + 323, -270, -270, -270, 200, 180, -270, 200, -270, 323, + -270, 209, 280, 162, -270, 288, 276, 285, 283, 284, + -270, 209, 292, -270, -270, 281, -270, 282, 76, -270, + -270, -270, 200, -270, 323, -270, -270, -270, -270, 286, + 291, -270, -270, -270, -270, 9, -270, -270, -270, -270, + -270, 294, -270, 290, -270, -56, 202, 191, -270, 191, + -270, 297, -270, -270, -1, -270, -270, 298, 304, 192, + 192, 321, -270, -270, 309, -270, -270, -270, 350, -270, + 99, -270, -270, -270, -270, -270 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -270, -270, -270, 331, -270, -270, -270, -270, 26, -270, + -270, -270, 62, 218, 336, 314, 287, -270, -136, -270, + -270, -270, 11, -270, -270, -270, -270, 6, 1, 7, + 175, -269, -270, -270, -28, -270, -270, -270, -270, -270, + -29, 5, -270, -23, -70, -183, 79, -270, -175, -74, + -179, -223, -157, -270, -270, -270, 216, 90, -5, -202, + -270, -270, -270, -270, 161, 116, -270, 166, -270, -270, + -270, -270, -270, 119, -270, -270 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -123 +static const yytype_int16 yytable[] = +{ + 55, 197, 211, 199, 140, 147, 330, 37, 38, 22, + 173, 325, 81, 14, 67, 86, 77, 79, 207, 83, + 27, 259, 264, 31, 75, 34, 266, 379, 174, 63, + 265, 311, 39, 143, 221, 56, 78, 67, 58, 1, + 23, 67, 82, 311, 294, 40, 303, 61, 136, 138, + 60, 148, 330, 61, 2, 146, 41, 153, 87, 149, + 150, 108, 380, 3, 18, 24, 67, 195, 324, 67, + 307, 309, 203, 277, 308, 326, 205, 144, 279, 310, + 313, 42, 316, 318, 315, 311, 317, 19, 314, 21, + 108, 319, 311, 196, 311, 156, 28, 72, 73, 312, + 74, 75, 165, 80, 37, 38, 63, 75, 30, 62, + 20, 166, 63, 4, 63, 62, 69, 84, 32, 311, + 63, 348, 64, 21, 394, 339, 204, 340, -122, 39, + 263, 341, 343, 21, 345, 342, 346, 100, 67, 93, + 344, 15, 40, 109, 395, 110, -122, 111, 112, 35, + 113, 155, 175, 41, 158, 101, 296, 216, 114, 359, + 115, 360, 75, 217, 16, 53, -122, 63, 17, 76, + 176, 54, 116, 117, 57, 102, -122, 295, 42, 262, + 297, 358, 118, 119, 59, 103, 245, 70, 323, 85, + 151, 88, 120, 100, 121, 122, 89, 246, 247, 298, + 299, 300, 387, 123, 124, 248, 245, 245, 125, 126, + 127, 160, 161, 100, 100, 269, 301, 246, 247, 302, + 91, 128, 90, 368, 249, 94, 270, 151, 139, 366, + 369, 250, 179, 180, 271, 388, 183, 154, 186, 272, + 370, 251, 201, 202, 249, 249, 389, 390, 75, 273, + 274, 250, 250, 63, 151, 92, 157, 198, 75, 200, + 162, 251, 251, 63, 163, 137, 164, 208, 161, 210, + 161, 260, 202, 261, 202, 268, 202, 280, 202, 181, + 182, 286, 287, 292, 293, 331, 202, 332, 202, 193, + 367, 202, 191, 192, 170, 171, 166, 218, 177, 184, + 187, 188, 189, 206, 209, 213, 214, 222, 223, 225, + 229, 224, 230, 227, 226, 228, 231, 232, 233, 234, + 235, 236, 238, 239, 240, 241, 363, 242, 243, 244, + 258, 248, 289, 278, 267, 281, 282, 283, 305, 306, + 246, 285, 284, 349, 355, 374, 381, 288, 336, 379, + 290, 291, 384, 393, 322, 36, 335, 354, 327, 328, + 329, 333, 337, 334, 347, 351, 350, 352, 353, 356, + 357, 362, 380, 65, 364, 95, 361, 365, 383, 212, + 373, 215, 159, 275, 386, 338, 0, 392 +}; + +static const yytype_int16 yycheck[] = +{ + 29, 137, 159, 139, 74, 79, 275, 4, 5, 4, + 69, 11, 41, 57, 37, 43, 39, 40, 154, 42, + 15, 196, 205, 18, 80, 20, 205, 28, 87, 85, + 205, 254, 29, 10, 170, 30, 15, 60, 33, 5, + 0, 64, 15, 266, 246, 42, 248, 18, 71, 72, + 15, 80, 321, 18, 20, 78, 53, 85, 53, 82, + 83, 66, 63, 29, 34, 86, 89, 29, 270, 92, + 253, 254, 146, 209, 253, 75, 150, 54, 214, 254, + 263, 78, 265, 266, 263, 308, 265, 57, 263, 80, + 95, 266, 315, 55, 317, 90, 76, 15, 16, 256, + 18, 80, 26, 60, 4, 5, 85, 80, 34, 80, + 57, 35, 85, 79, 85, 80, 37, 17, 76, 342, + 85, 323, 87, 80, 25, 308, 149, 310, 13, 29, + 204, 314, 315, 80, 317, 314, 319, 13, 161, 60, + 315, 34, 42, 7, 45, 9, 31, 11, 12, 91, + 14, 89, 69, 53, 92, 31, 21, 27, 22, 342, + 24, 344, 80, 33, 57, 48, 51, 85, 61, 87, + 87, 44, 36, 37, 77, 51, 61, 247, 78, 202, + 45, 338, 46, 47, 80, 61, 6, 15, 90, 89, + 92, 77, 56, 13, 58, 59, 87, 17, 18, 64, + 65, 66, 10, 67, 68, 25, 6, 6, 72, 73, + 74, 88, 89, 13, 13, 6, 81, 17, 18, 84, + 10, 85, 48, 32, 44, 80, 17, 92, 87, 365, + 39, 51, 116, 117, 25, 43, 120, 87, 122, 30, + 49, 61, 88, 89, 44, 44, 54, 55, 80, 40, + 41, 51, 51, 85, 92, 87, 19, 138, 80, 140, + 87, 61, 61, 85, 38, 87, 38, 88, 89, 88, + 89, 88, 89, 88, 89, 88, 89, 88, 89, 118, + 119, 88, 89, 88, 89, 88, 89, 88, 89, 45, + 88, 89, 126, 127, 87, 87, 35, 26, 87, 87, + 87, 87, 87, 82, 87, 83, 87, 84, 62, 84, + 62, 87, 62, 84, 87, 84, 62, 62, 62, 62, + 84, 70, 62, 84, 84, 84, 355, 62, 62, 62, + 25, 25, 58, 88, 92, 88, 84, 88, 45, 38, + 17, 88, 84, 55, 52, 48, 48, 88, 71, 28, + 88, 88, 48, 3, 90, 24, 84, 331, 90, 90, + 90, 88, 84, 88, 84, 80, 90, 84, 84, 88, + 88, 80, 63, 37, 80, 61, 90, 87, 377, 161, + 369, 165, 95, 208, 378, 295, -1, 380 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 5, 20, 29, 79, 94, 95, 96, 97, 99, + 100, 102, 104, 125, 57, 34, 57, 61, 34, 57, + 57, 80, 134, 0, 86, 133, 134, 134, 76, 103, + 34, 134, 76, 98, 134, 91, 96, 4, 5, 29, + 42, 53, 78, 126, 127, 128, 129, 130, 131, 132, + 135, 165, 167, 48, 44, 133, 134, 77, 134, 80, + 15, 18, 80, 85, 87, 107, 108, 136, 137, 139, + 15, 168, 15, 16, 18, 80, 87, 136, 15, 136, + 60, 133, 15, 136, 17, 89, 127, 134, 77, 87, + 48, 10, 87, 139, 80, 108, 105, 106, 107, 139, + 13, 31, 51, 61, 109, 110, 112, 113, 151, 7, + 9, 11, 12, 14, 22, 24, 36, 37, 46, 47, + 56, 58, 59, 67, 68, 72, 73, 74, 85, 142, + 153, 154, 155, 156, 159, 162, 136, 87, 136, 87, + 137, 111, 136, 10, 54, 166, 136, 142, 133, 136, + 136, 92, 152, 127, 87, 105, 134, 19, 105, 109, + 88, 89, 87, 38, 38, 26, 35, 145, 146, 149, + 87, 87, 158, 69, 87, 69, 87, 87, 157, 158, + 158, 157, 157, 158, 87, 163, 158, 87, 87, 87, + 160, 160, 160, 45, 140, 29, 55, 111, 166, 111, + 166, 88, 89, 142, 136, 142, 82, 111, 88, 87, + 88, 145, 106, 83, 87, 149, 27, 33, 26, 147, + 148, 111, 84, 62, 87, 84, 87, 84, 84, 62, + 62, 62, 62, 62, 62, 84, 70, 164, 62, 84, + 84, 84, 62, 62, 62, 6, 17, 18, 25, 44, + 51, 61, 138, 141, 143, 144, 150, 151, 25, 141, + 88, 88, 136, 142, 138, 141, 143, 92, 88, 6, + 17, 25, 30, 40, 41, 123, 124, 111, 88, 111, + 88, 88, 84, 88, 84, 88, 88, 89, 88, 58, + 88, 88, 88, 89, 152, 137, 21, 45, 64, 65, + 66, 81, 84, 152, 161, 45, 38, 138, 143, 138, + 141, 144, 145, 138, 141, 143, 138, 143, 138, 141, + 101, 123, 90, 90, 152, 11, 75, 90, 90, 90, + 124, 88, 88, 88, 88, 84, 71, 84, 150, 138, + 138, 138, 143, 138, 141, 138, 138, 84, 152, 55, + 90, 80, 84, 84, 101, 52, 88, 88, 145, 138, + 138, 90, 80, 133, 80, 87, 111, 88, 32, 39, + 49, 114, 115, 115, 48, 116, 117, 120, 121, 28, + 63, 48, 118, 121, 48, 119, 120, 10, 43, 54, + 55, 122, 122, 3, 25, 45 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: + + { parseTree = (yyvsp[(1) - (1)].sqlStmtList); ;} + break; + + case 3: + + { + if ((yyvsp[(3) - (3)].sqlStmt) != NULL) { + (yyvsp[(1) - (3)].sqlStmtList)->push_back((yyvsp[(3) - (3)].sqlStmt)); + (yyval.sqlStmtList) = (yyvsp[(1) - (3)].sqlStmtList); + } + else { + (yyval.sqlStmtList) = (yyvsp[(1) - (3)].sqlStmtList); + } + ;} + break; + + case 4: + + { + /* The user is supposed to supply a ParseTree* via grammar_init. + So, it is already there. */ + if ((yyvsp[(1) - (1)].sqlStmt) != NULL) + { + (yyval.sqlStmtList) = parseTree; + (yyval.sqlStmtList)->push_back((yyvsp[(1) - (1)].sqlStmt)); + } + else + { + (yyval.sqlStmtList) = NULL; + } + ;} + break; + + case 11: + + { (yyval.sqlStmt) = NULL; ;} + break; + + case 12: + + {(yyval.sqlStmt) = new DropTableStatement((yyvsp[(4) - (4)].qualifiedName), false);;} + break; + + case 13: + + { + {(yyval.sqlStmt) = new DropTableStatement((yyvsp[(4) - (6)].qualifiedName), true);} + ;} + break; + + case 14: + + {(yyval.str) = NULL;;} + break; + + case 15: + + {(yyval.str) = NULL;;} + break; + + case 16: + + {(yyval.sqlStmt) = new DropIndexStatement((yyvsp[(3) - (3)].qualifiedName));;} + break; + + case 17: + + { + (yyval.sqlStmt) = new CreateIndexStatement((yyvsp[(3) - (9)].qualifiedName), (yyvsp[(5) - (9)].qualifiedName), (yyvsp[(7) - (9)].columnNameList), false); + delete (yyvsp[(9) - (9)].tableOptionMap); + ;} + break; + + case 18: + + { + (yyval.sqlStmt) = new CreateIndexStatement((yyvsp[(4) - (10)].qualifiedName), (yyvsp[(6) - (10)].qualifiedName), (yyvsp[(8) - (10)].columnNameList), true); + delete (yyvsp[(10) - (10)].tableOptionMap); + ;} + break; + + case 20: + + {(yyval.tableOptionMap) = NULL;;} + break; + + case 21: + + { + (yyval.sqlStmt) = new CreateTableStatement(new TableDef((yyvsp[(4) - (8)].qualifiedName), (yyvsp[(6) - (8)].tableElementList), (yyvsp[(8) - (8)].tableOptionMap))); + ;} + break; + + case 22: + + { + (yyval.sqlStmt) = new CreateTableStatement(new TableDef((yyvsp[(4) - (7)].qualifiedName), (yyvsp[(6) - (7)].tableElementList), NULL)); + ;} + break; + + case 23: + + {(yyval.str) = NULL;;} + break; + + case 24: + + {(yyval.str) = NULL;;} + break; + + case 25: + + {(yyval.sqlStmt) = new TruncTableStatement((yyvsp[(3) - (3)].qualifiedName));;} + break; + + case 26: + + { {(yyval.sqlStmt) = new TruncTableStatement((yyvsp[(2) - (2)].qualifiedName));} ;} + break; + + case 27: + + { + (yyval.tableElementList) = new TableElementList(); + (yyval.tableElementList)->push_back((yyvsp[(1) - (1)].schemaObject)); + ;} + break; + + case 28: + + { + (yyval.tableElementList) = (yyvsp[(1) - (3)].tableElementList); + (yyval.tableElementList)->push_back((yyvsp[(3) - (3)].schemaObject)); + ;} + break; + + case 31: + + { + (yyval.schemaObject) = (yyvsp[(3) - (4)].schemaObject); + (yyvsp[(3) - (4)].schemaObject)->fName = (yyvsp[(2) - (4)].str); + ;} + break; + + case 32: + + { + (yyval.schemaObject) = (yyvsp[(2) - (3)].schemaObject); + (yyvsp[(2) - (3)].schemaObject)->fName = (yyvsp[(1) - (3)].str); + ;} + break; + + case 33: + + {(yyval.str) = (yyvsp[(1) - (1)].str);;} + break; + + case 34: + + {(yyval.str) = "noname";;} + break; + + case 37: + + {(yyval.schemaObject) = new TableCheckConstraintDef((yyvsp[(1) - (1)].str));;} + break; + + case 38: + + { + if ((yyvsp[(1) - (4)].constraintType) == DDL_UNIQUE) + (yyval.schemaObject) = new TableUniqueConstraintDef((yyvsp[(3) - (4)].columnNameList)); + else if ((yyvsp[(1) - (4)].constraintType) == DDL_PRIMARY_KEY) + (yyval.schemaObject) = new TablePrimaryKeyConstraintDef((yyvsp[(3) - (4)].columnNameList)); + ;} + break; + + case 39: + + { + (yyval.columnNameList) = new vector; + (yyval.columnNameList)->push_back((yyvsp[(1) - (1)].str)); + ;} + break; + + case 40: + + { + (yyval.columnNameList) = (yyvsp[(1) - (3)].columnNameList); + (yyval.columnNameList)->push_back((yyvsp[(3) - (3)].str)); + ;} + break; + + case 41: + + {(yyval.constraintType) = DDL_PRIMARY_KEY;;} + break; + + case 42: + + {(yyval.constraintType) = DDL_UNIQUE;;} + break; + + case 43: + + { + (yyval.schemaObject) = new TableReferencesConstraintDef((yyvsp[(4) - (12)].columnNameList), (yyvsp[(7) - (12)].qualifiedName), (yyvsp[(9) - (12)].columnNameList), (yyvsp[(11) - (12)].matchType), (yyvsp[(12) - (12)].refAction)); + ;} + break; + + case 45: + + {(yyval.matchType) = DDL_FULL;;} + break; + + case 46: + + {(yyval.matchType) = (yyvsp[(2) - (2)].matchType);;} + break; + + case 47: + + {(yyval.matchType) = DDL_FULL;;} + break; + + case 48: + + {(yyval.matchType) = DDL_PARTIAL;;} + break; + + case 50: + + {(yyval.refAction) = NULL;;} + break; + + case 51: + + { + (yyval.refAction) = new ReferentialAction(); + (yyval.refAction)->fOnUpdate = (yyvsp[(1) - (2)].refActionCode); + (yyval.refAction)->fOnDelete = (yyvsp[(2) - (2)].refActionCode); + ;} + break; + + case 52: + + { + (yyval.refAction) = new ReferentialAction(); + (yyval.refAction)->fOnUpdate = (yyvsp[(2) - (2)].refActionCode); + (yyval.refAction)->fOnDelete = (yyvsp[(1) - (2)].refActionCode); + ;} + break; + + case 54: + + {(yyval.refActionCode) = DDL_NO_ACTION;;} + break; + + case 56: + + {(yyval.refActionCode) = DDL_NO_ACTION;;} + break; + + case 57: + + {(yyval.refActionCode) = (yyvsp[(3) - (3)].refActionCode);;} + break; + + case 58: + + {(yyval.refActionCode) = (yyvsp[(3) - (3)].refActionCode);;} + break; + + case 59: + + {(yyval.refActionCode) = DDL_CASCADE;;} + break; + + case 60: + + {(yyval.refActionCode) = DDL_SET_NULL;;} + break; + + case 61: + + {(yyval.refActionCode) = DDL_SET_DEFAULT;;} + break; + + case 62: + + {(yyval.refActionCode) = DDL_NO_ACTION;;} + break; + + case 63: + + {(yyval.refActionCode) = DDL_RESTRICT;;} + break; + + case 64: + + { + (yyval.tableOptionMap) = new TableOptionMap(); + (*(yyval.tableOptionMap))[(yyvsp[(1) - (1)].tableOption)->first] = (yyvsp[(1) - (1)].tableOption)->second; + delete (yyvsp[(1) - (1)].tableOption); + ;} + break; + + case 65: + + { + (yyval.tableOptionMap) = (yyvsp[(1) - (2)].tableOptionMap); + (*(yyval.tableOptionMap))[(yyvsp[(2) - (2)].tableOption)->first] = (yyvsp[(2) - (2)].tableOption)->second; + delete (yyvsp[(2) - (2)].tableOption); + ;} + break; + + case 66: + + {(yyval.tableOption) = new pair("engine", (yyvsp[(3) - (3)].str));;} + break; + + case 67: + + {(yyval.tableOption) = new pair("max_rows", (yyvsp[(3) - (3)].str));;} + break; + + case 68: + + {(yyval.tableOption) = new pair("min_rows", (yyvsp[(3) - (3)].str));;} + break; + + case 69: + + {(yyval.tableOption) = new pair("comment", (yyvsp[(3) - (3)].str));;} + break; + + case 70: + + {(yyval.tableOption) = new pair("comment", (yyvsp[(2) - (2)].str));;} + break; + + case 71: + + { + (yyval.tableOption) = new pair("auto_increment", (yyvsp[(3) - (3)].str)); + ;} + break; + + case 72: + + {(yyval.tableOption) = new pair("default charset", (yyvsp[(4) - (4)].str));;} + break; + + case 73: + + {(yyval.tableOption) = new pair("default charset", (yyvsp[(5) - (5)].str));;} + break; + + case 74: + + { + (yyval.sqlStmt) = new AlterTableStatement((yyvsp[(3) - (4)].qualifiedName), (yyvsp[(4) - (4)].ataList)); + ;} + break; + + case 75: + + { + (yyval.sqlStmt) = new AlterTableStatement((yyvsp[(3) - (6)].qualifiedName), (yyvsp[(4) - (6)].ataList)); + ;} + break; + + case 76: + + { + if ((yyvsp[(1) - (1)].ata) != NULL) { + (yyval.ataList) = new AlterTableActionList(); + (yyval.ataList)->push_back((yyvsp[(1) - (1)].ata)); + } + else { + /* An alter_table_statement requires at least one action. + So, this shouldn't happen. */ + (yyval.ataList) = NULL; + } + ;} + break; + + case 77: + + { + (yyval.ataList) = (yyvsp[(1) - (3)].ataList); + (yyval.ataList)->push_back((yyvsp[(3) - (3)].ata)); + ;} + break; + + case 78: + + { + (yyval.ataList) = (yyvsp[(1) - (2)].ataList); + (yyval.ataList)->push_back((yyvsp[(2) - (2)].ata)); + ;} + break; + + case 87: + + {(yyval.ata) = new AtaModifyColumnType((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].columnType));;} + break; + + case 88: + + {(yyval.ata) = new AtaModifyColumnType((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].columnType));;} + break; + + case 89: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].columnType), NULL);;} + break; + + case 90: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].columnType), (yyvsp[(5) - (5)].columnOption));;} + break; + + case 91: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].str), (yyvsp[(5) - (5)].columnType), NULL);;} + break; + + case 92: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].str), (yyvsp[(5) - (6)].columnType), (yyvsp[(6) - (6)].columnOption));;} + break; + + case 93: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].columnType), (yyvsp[(5) - (5)].constraintList), NULL);;} + break; + + case 94: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].str), (yyvsp[(5) - (6)].columnType), (yyvsp[(6) - (6)].constraintList), NULL);;} + break; + + case 95: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].columnType), (yyvsp[(5) - (6)].constraintList), NULL, (yyvsp[(6) - (6)].columnOption));;} + break; + + case 96: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].str), (yyvsp[(5) - (7)].columnType), (yyvsp[(6) - (7)].constraintList), NULL, (yyvsp[(7) - (7)].columnOption));;} + break; + + case 97: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].columnType), NULL, (yyvsp[(5) - (5)].colDefault));;} + break; + + case 98: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].str), (yyvsp[(5) - (6)].columnType), NULL, (yyvsp[(6) - (6)].colDefault));;} + break; + + case 99: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].columnType), NULL, (yyvsp[(5) - (6)].colDefault), (yyvsp[(6) - (6)].columnOption));;} + break; + + case 100: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].str), (yyvsp[(5) - (7)].columnType), NULL, (yyvsp[(6) - (7)].colDefault), (yyvsp[(7) - (7)].columnOption));;} + break; + + case 101: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].columnType), (yyvsp[(5) - (6)].constraintList), (yyvsp[(6) - (6)].colDefault));;} + break; + + case 102: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].str), (yyvsp[(5) - (7)].columnType), (yyvsp[(6) - (7)].constraintList), (yyvsp[(7) - (7)].colDefault));;} + break; + + case 103: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].columnType), (yyvsp[(6) - (6)].constraintList), (yyvsp[(5) - (6)].colDefault));;} + break; + + case 104: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].str), (yyvsp[(5) - (7)].columnType), (yyvsp[(7) - (7)].constraintList), (yyvsp[(6) - (7)].colDefault));;} + break; + + case 105: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].columnType), (yyvsp[(5) - (7)].constraintList), (yyvsp[(6) - (7)].colDefault), (yyvsp[(7) - (7)].columnOption));;} + break; + + case 106: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (8)].str), (yyvsp[(4) - (8)].str), (yyvsp[(5) - (8)].columnType), (yyvsp[(6) - (8)].constraintList), (yyvsp[(7) - (8)].colDefault), (yyvsp[(8) - (8)].columnOption));;} + break; + + case 107: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].str), (yyvsp[(4) - (7)].columnType), (yyvsp[(6) - (7)].constraintList), (yyvsp[(5) - (7)].colDefault), (yyvsp[(7) - (7)].columnOption));;} + break; + + case 108: + + {(yyval.ata) = new AtaRenameColumn((yyvsp[(3) - (8)].str), (yyvsp[(4) - (8)].str), (yyvsp[(5) - (8)].columnType), (yyvsp[(7) - (8)].constraintList), (yyvsp[(6) - (8)].colDefault), (yyvsp[(8) - (8)].columnOption));;} + break; + + case 109: + + { + (yyval.ata) = new AtaDropTableConstraint((yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].refActionCode)); + ;} + break; + + case 110: + + {(yyval.ata) = new AtaAddTableConstraint(dynamic_cast((yyvsp[(2) - (2)].schemaObject)));;} + break; + + case 111: + + {(yyval.ata) = new AtaRenameTable((yyvsp[(2) - (2)].qualifiedName));;} + break; + + case 112: + + {(yyval.ata) = new AtaRenameTable((yyvsp[(3) - (3)].qualifiedName));;} + break; + + case 114: + + {(yyval.qualifiedName) = new QualifiedName((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));;} + break; + + case 115: + + { + if (db_schema.size()) + (yyval.qualifiedName) = new QualifiedName((char*)db_schema.c_str(), (yyvsp[(1) - (1)].str)); + else + (yyval.qualifiedName) = new QualifiedName((yyvsp[(1) - (1)].str)); + ;} + break; + + case 116: + + {(yyval.ata) = new AtaAddColumn(dynamic_cast((yyvsp[(2) - (2)].schemaObject)));;} + break; + + case 117: + + {(yyval.ata) = new AtaAddColumn(dynamic_cast((yyvsp[(3) - (3)].schemaObject)));;} + break; + + case 118: + + {(yyval.ata) = new AtaAddColumns((yyvsp[(3) - (4)].tableElementList));;} + break; + + case 119: + + {(yyval.ata) = new AtaAddColumns((yyvsp[(4) - (5)].tableElementList));;} + break; + + case 123: + + {(yyval.columnOption) = (yyvsp[(2) - (2)].str);;} + break; + + case 124: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].columnType), NULL, NULL ); + ;} + break; + + case 125: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].columnType), (yyvsp[(4) - (4)].constraintList), NULL); + ;} + break; + + case 126: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].columnType), (yyvsp[(5) - (5)].constraintList), (yyvsp[(4) - (5)].colDefault)); + ;} + break; + + case 127: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].columnType), NULL, (yyvsp[(4) - (4)].colDefault), NULL); + ;} + break; + + case 128: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].columnType), NULL, NULL, (yyvsp[(4) - (4)].columnOption) ); + ;} + break; + + case 129: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].columnType), (yyvsp[(4) - (5)].constraintList), NULL, (yyvsp[(5) - (5)].columnOption)); + ;} + break; + + case 130: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (6)].str), (yyvsp[(2) - (6)].columnType), (yyvsp[(5) - (6)].constraintList), (yyvsp[(4) - (6)].colDefault), (yyvsp[(6) - (6)].columnOption)); + ;} + break; + + case 131: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].columnType), (yyvsp[(4) - (5)].constraintList), (yyvsp[(5) - (5)].colDefault)); + ;} + break; + + case 132: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (6)].str), (yyvsp[(2) - (6)].columnType), (yyvsp[(4) - (6)].constraintList), (yyvsp[(5) - (6)].colDefault), (yyvsp[(6) - (6)].columnOption)); + ;} + break; + + case 133: + + { + (yyval.schemaObject) = new ColumnDef((yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].columnType), NULL, (yyvsp[(4) - (5)].colDefault), (yyvsp[(5) - (5)].columnOption)); + ;} + break; + + case 136: + + { + (yyval.colDefault) = new ColumnDefaultValue((yyvsp[(2) - (2)].str)); + ;} + break; + + case 137: + + {(yyval.colDefault) = new ColumnDefaultValue(NULL);;} + break; + + case 138: + + {(yyval.colDefault) = new ColumnDefaultValue("$USER");;} + break; + + case 139: + + {(yyval.colDefault) = new ColumnDefaultValue("$CURRENT_USER");;} + break; + + case 140: + + {(yyval.colDefault) = new ColumnDefaultValue("$SESSION_USER");;} + break; + + case 141: + + {(yyval.colDefault) = new ColumnDefaultValue("$SYSTEM_USER");;} + break; + + case 146: + + { + (yyval.columnType) = new ColumnType(DDL_BLOB); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_BLOB]; + ;} + break; + + case 147: + + { + (yyval.columnType) = new ColumnType(DDL_CLOB); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_CLOB]; + ;} + break; + + case 148: + + { + (yyval.constraintList) = new ColumnConstraintList(); + (yyval.constraintList)->push_back((yyvsp[(1) - (1)].columnConstraintDef)); + ;} + break; + + case 149: + + { + (yyval.constraintList) = (yyvsp[(1) - (2)].constraintList); + (yyval.constraintList)->push_back((yyvsp[(2) - (2)].columnConstraintDef)); + ;} + break; + + case 150: + + { + (yyval.columnConstraintDef) = (yyvsp[(1) - (2)].columnConstraintDef); + + if((yyvsp[(2) - (2)].constraintAttributes) != NULL) + { + (yyvsp[(1) - (2)].columnConstraintDef)->fDeferrable = (yyvsp[(2) - (2)].constraintAttributes)->fDeferrable; + (yyvsp[(1) - (2)].columnConstraintDef)->fCheckTime = (yyvsp[(2) - (2)].constraintAttributes)->fCheckTime; + } + + ;} + break; + + case 151: + + { + (yyval.columnConstraintDef) = (yyvsp[(3) - (4)].columnConstraintDef); + (yyvsp[(3) - (4)].columnConstraintDef)->fName = (yyvsp[(2) - (4)].str); + + if((yyvsp[(4) - (4)].constraintAttributes) != NULL) + { + (yyvsp[(3) - (4)].columnConstraintDef)->fDeferrable = (yyvsp[(4) - (4)].constraintAttributes)->fDeferrable; + (yyvsp[(3) - (4)].columnConstraintDef)->fCheckTime = (yyvsp[(4) - (4)].constraintAttributes)->fCheckTime; + } + + ;} + break; + + case 152: + + {(yyval.constraintAttributes) = (yyvsp[(1) - (1)].constraintAttributes);;} + break; + + case 153: + + {(yyval.constraintAttributes) = NULL;;} + break; + + case 154: + + { + (yyval.constraintAttributes) = new ConstraintAttributes((yyvsp[(1) - (2)].cattr), ((yyvsp[(2) - (2)].cattr) != 0)); + ;} + break; + + case 155: + + { + (yyval.constraintAttributes) = new ConstraintAttributes((yyvsp[(2) - (2)].cattr), true); + ;} + break; + + case 157: + + {(yyval.cattr) = DDL_NON_DEFERRABLE;;} + break; + + case 158: + + {(yyval.cattr) = DDL_DEFERRABLE;;} + break; + + case 159: + + {(yyval.cattr) = DDL_INITIALLY_DEFERRED;;} + break; + + case 160: + + {(yyval.cattr) = DDL_INITIALLY_IMMEDIATE;;} + break; + + case 161: + + {(yyval.columnConstraintDef) = new ColumnConstraintDef(DDL_NOT_NULL);;} + break; + + case 162: + + {(yyval.columnConstraintDef) = new ColumnConstraintDef(DDL_UNIQUE);;} + break; + + case 163: + + {(yyval.columnConstraintDef) = new ColumnConstraintDef(DDL_PRIMARY_KEY);;} + break; + + case 164: + + {(yyval.columnConstraintDef) = new ColumnConstraintDef(DDL_AUTO_INCREMENT);;} + break; + + case 165: + + {(yyval.columnConstraintDef) = new ColumnConstraintDef((yyvsp[(1) - (1)].str));;} + break; + + case 166: + + {(yyval.str) = (yyvsp[(3) - (4)].str);;} + break; + + case 167: + + {(yyval.str) = (yyvsp[(2) - (3)].str);;} + break; + + case 168: + + { + (yyval.columnType) = new ColumnType(DDL_CHAR); + (yyval.columnType)->fLength = 1; + ;} + break; + + case 169: + + { + (yyval.columnType) = new ColumnType(DDL_CHAR); + (yyval.columnType)->fLength = 1; + ;} + break; + + case 170: + + { + (yyval.columnType) = new ColumnType(DDL_CHAR); + (yyval.columnType)->fLength = atoi((yyvsp[(3) - (4)].str)); + ;} + break; + + case 171: + + { + (yyval.columnType) = new ColumnType(DDL_CHAR); + (yyval.columnType)->fLength = atoi((yyvsp[(3) - (4)].str)); + ;} + break; + + case 172: + + { + (yyval.columnType) = new ColumnType(DDL_VARCHAR); + (yyval.columnType)->fLength = atoi((yyvsp[(4) - (5)].str)); + ;} + break; + + case 173: + + { + (yyval.columnType) = new ColumnType(DDL_VARCHAR); + (yyval.columnType)->fLength = atoi((yyvsp[(4) - (5)].str)); + ;} + break; + + case 174: + + { + (yyval.columnType) = new ColumnType(DDL_VARCHAR); + (yyval.columnType)->fLength = atoi((yyvsp[(3) - (4)].str)); + ;} + break; + + case 175: + + { + (yyval.columnType) = new ColumnType(DDL_VARBINARY); + (yyval.columnType)->fLength = atoi((yyvsp[(3) - (4)].str)); + ;} + break; + + case 178: + + { + (yyvsp[(2) - (2)].columnType)->fType = DDL_NUMERIC; + (yyvsp[(2) - (2)].columnType)->fLength = DDLDatatypeLength[DDL_NUMERIC]; + (yyval.columnType) = (yyvsp[(2) - (2)].columnType); + ;} + break; + + case 179: + + { + (yyvsp[(2) - (3)].columnType)->fType = DDL_UNSIGNED_NUMERIC; + (yyvsp[(2) - (3)].columnType)->fLength = DDLDatatypeLength[DDL_UNSIGNED_NUMERIC]; + (yyval.columnType) = (yyvsp[(2) - (3)].columnType); + ;} + break; + + case 180: + + { + (yyvsp[(2) - (2)].columnType)->fType = DDL_DECIMAL; +/* $2->fLength = DDLDatatypeLength[DDL_DECIMAL]; */ + (yyval.columnType) = (yyvsp[(2) - (2)].columnType); + ;} + break; + + case 181: + + { + (yyvsp[(2) - (3)].columnType)->fType = DDL_UNSIGNED_DECIMAL; +/* $3->fLength = DDLDatatypeLength[DDL_DECIMAL]; */ + (yyval.columnType) = (yyvsp[(2) - (3)].columnType); + ;} + break; + + case 182: + + { + (yyvsp[(2) - (2)].columnType)->fType = DDL_DECIMAL; + (yyvsp[(2) - (2)].columnType)->fLength = DDLDatatypeLength[DDL_DECIMAL]; + (yyval.columnType) = (yyvsp[(2) - (2)].columnType); + ;} + break; + + case 183: + + { + (yyvsp[(2) - (3)].columnType)->fType = DDL_UNSIGNED_DECIMAL; + (yyvsp[(2) - (3)].columnType)->fLength = DDLDatatypeLength[DDL_UNSIGNED_DECIMAL]; + (yyval.columnType) = (yyvsp[(2) - (3)].columnType); + ;} + break; + + case 184: + + { + (yyval.columnType) = new ColumnType(DDL_INT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_INT]; + ;} + break; + + case 185: + + { + (yyval.columnType) = new ColumnType(DDL_INT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_INT]; + ;} + break; + + case 186: + + { + (yyval.columnType) = new ColumnType(DDL_SMALLINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_SMALLINT]; + ;} + break; + + case 187: + + { + (yyval.columnType) = new ColumnType(DDL_TINYINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_TINYINT]; + ;} + break; + + case 188: + + { + (yyval.columnType) = new ColumnType(DDL_BIGINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_BIGINT]; + ;} + break; + + case 189: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_INT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_INT]; + ;} + break; + + case 190: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_INT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_INT]; + ;} + break; + + case 191: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_SMALLINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_SMALLINT]; + ;} + break; + + case 192: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_TINYINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_TINYINT]; + ;} + break; + + case 193: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_BIGINT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_BIGINT]; + ;} + break; + + case 194: + + {(yyval.columnType) = new ColumnType(atoi((yyvsp[(2) - (3)].str)), 0);;} + break; + + case 195: + + {(yyval.columnType) = new ColumnType(atoi((yyvsp[(2) - (5)].str)), atoi((yyvsp[(4) - (5)].str)));;} + break; + + case 196: + + {(yyval.columnType) = new ColumnType(10,0);;} + break; + + case 197: + + {(yyval.str) = NULL;;} + break; + + case 198: + + {(yyval.str) = NULL;;} + break; + + case 199: + + { + (yyval.columnType) = new ColumnType(DDL_DOUBLE); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DOUBLE]; + ;} + break; + + case 200: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_DOUBLE); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DOUBLE]; + ;} + break; + + case 201: + + { + (yyval.columnType) = new ColumnType(DDL_DOUBLE); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DOUBLE]; + ;} + break; + + case 202: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_DOUBLE); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DOUBLE]; + ;} + break; + + case 203: + + { + (yyval.columnType) = new ColumnType(DDL_FLOAT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_FLOAT]; + ;} + break; + + case 204: + + { + (yyval.columnType) = new ColumnType(DDL_UNSIGNED_FLOAT); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_FLOAT]; + ;} + break; + + case 205: + + {(yyval.str) = NULL;;} + break; + + case 206: + + {(yyval.str) = NULL;;} + break; + + case 207: + + {(yyval.str) = NULL;;} + break; + + case 211: + + { + (yyval.columnType) = new ColumnType(DDL_DATETIME); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DATETIME]; + ;} + break; + + case 212: + + { + (yyval.columnType) = new ColumnType(DDL_DATE); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DATE]; + ;} + break; + + case 213: + + { + (yyval.columnType) = new ColumnType(DDL_DATETIME); + (yyval.columnType)->fLength = DDLDatatypeLength[DDL_DATETIME]; + (yyval.columnType)->fPrecision = (yyvsp[(2) - (3)].ival); + (yyval.columnType)->fWithTimezone = (yyvsp[(3) - (3)].flag); + ;} + break; + + case 214: + + {(yyval.ival) = atoi((yyvsp[(2) - (3)].str));;} + break; + + case 215: + + {(yyval.ival) = -1;;} + break; + + case 216: + + {(yyval.flag) = true;;} + break; + + case 217: + + {(yyval.flag) = false;;} + break; + + case 218: + + {(yyval.ata) = new AtaDropColumn((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].refActionCode));;} + break; + + case 219: + + {(yyval.ata) = new AtaDropColumn((yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].refActionCode));;} + break; + + case 220: + + {(yyval.ata) = new AtaDropColumns((yyvsp[(4) - (5)].columnNameList));;} + break; + + case 221: + + {(yyval.ata) = new AtaDropColumns((yyvsp[(3) - (4)].columnNameList));;} + break; + + case 222: + + {(yyval.ata) = new AtaDropColumns((yyvsp[(4) - (5)].columnNameList));;} + break; + + case 223: + + {(yyval.refActionCode) = DDL_CASCADE;;} + break; + + case 224: + + {(yyval.refActionCode) = DDL_RESTRICT;;} + break; + + case 225: + + {(yyval.refActionCode) = DDL_NO_ACTION;;} + break; + + case 226: + + {(yyval.ata) = new AtaSetColumnDefault((yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].colDefault));;} + break; + + case 227: + + {(yyval.ata) = new AtaDropColumnDefault((yyvsp[(3) - (5)].str));;} + break; + + + + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void grammar_init(ParseTree *_parseTree, bool debug) +{ + parseTree = _parseTree; + + if(debug) + yydebug = 1; +} + +void set_schema(std::string schema) +{ + db_schema = schema; +} + diff --git a/dbcon/ddlpackage/ddl-gram.h b/dbcon/ddlpackage/ddl-gram.h new file mode 100644 index 000000000..95a654842 --- /dev/null +++ b/dbcon/ddlpackage/ddl-gram.h @@ -0,0 +1,173 @@ + +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ACTION = 258, + ADD = 259, + ALTER = 260, + AUTO_INCREMENT = 261, + BIGINT = 262, + BIT = 263, + IDB_BLOB = 264, + CASCADE = 265, + IDB_CHAR = 266, + CHARACTER = 267, + CHECK = 268, + CLOB = 269, + COLUMN = 270, + COLUMNS = 271, + COMMENT = 272, + CONSTRAINT = 273, + CONSTRAINTS = 274, + CREATE = 275, + CURRENT_USER = 276, + DATETIME = 277, + DEC = 278, + DECIMAL = 279, + DEFAULT = 280, + DEFERRABLE = 281, + DEFERRED = 282, + IDB_DELETE = 283, + DROP = 284, + ENGINE = 285, + FOREIGN = 286, + FULL = 287, + IMMEDIATE = 288, + INDEX = 289, + INITIALLY = 290, + IDB_INT = 291, + INTEGER = 292, + KEY = 293, + MATCH = 294, + MAX_ROWS = 295, + MIN_ROWS = 296, + MODIFY = 297, + NO = 298, + NOT = 299, + NULL_TOK = 300, + NUMBER = 301, + NUMERIC = 302, + ON = 303, + PARTIAL = 304, + PRECISION = 305, + PRIMARY = 306, + REFERENCES = 307, + RENAME = 308, + RESTRICT = 309, + SET = 310, + SMALLINT = 311, + TABLE = 312, + TIME = 313, + TINYINT = 314, + TO = 315, + UNIQUE = 316, + UNSIGNED = 317, + UPDATE = 318, + USER = 319, + SESSION_USER = 320, + SYSTEM_USER = 321, + VARCHAR = 322, + VARBINARY = 323, + VARYING = 324, + WITH = 325, + ZONE = 326, + DOUBLE = 327, + IDB_FLOAT = 328, + REAL = 329, + CHARSET = 330, + IDB_IF = 331, + EXISTS = 332, + CHANGE = 333, + TRUNCATE = 334, + IDENT = 335, + FCONST = 336, + SCONST = 337, + CP_SEARCH_CONDITION_TEXT = 338, + ICONST = 339, + DATE = 340 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + ddlpackage::AlterTableStatement *alterTableStmt; + ddlpackage::AlterTableAction *ata; + ddlpackage::AlterTableActionList *ataList; + ddlpackage::DDL_CONSTRAINT_ATTRIBUTES cattr; + std::pair *tableOption; + const char *columnOption; + ddlpackage::ColumnConstraintDef *columnConstraintDef; + ddlpackage::ColumnNameList *columnNameList; + ddlpackage::ColumnType* columnType; + ddlpackage::ConstraintAttributes *constraintAttributes; + ddlpackage::ColumnConstraintList *constraintList; + ddlpackage::DDL_CONSTRAINTS constraintType; + double dval; + bool flag; + int ival; + ddlpackage::QualifiedName *qualifiedName; + ddlpackage::SchemaObject *schemaObject; + ddlpackage::SqlStatement *sqlStmt; + ddlpackage::SqlStatementList *sqlStmtList; + const char *str; + ddlpackage::TableConstraintDef *tableConstraint; + ddlpackage::TableElementList *tableElementList; + ddlpackage::TableOptionMap *tableOptionMap; + ddlpackage::ColumnDefaultValue *colDefault; + ddlpackage::DDL_MATCH_TYPE matchType; + ddlpackage::DDL_REFERENTIAL_ACTION refActionCode; + ddlpackage::ReferentialAction *refAction; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + +extern YYSTYPE ddllval; + + diff --git a/dbcon/dmlpackage/dml-gram.cpp b/dbcon/dmlpackage/dml-gram.cpp new file mode 100644 index 000000000..722c7e1fe --- /dev/null +++ b/dbcon/dmlpackage/dml-gram.cpp @@ -0,0 +1,2998 @@ + +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.4.1" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse dmlparse +#define yylex dmllex +#define yyerror dmlerror +#define yylval dmllval +#define yychar dmlchar +#define yydebug dmldebug +#define yynerrs dmlnerrs + + +/* Copy the first part of user declarations. */ + + +#include +#include "dmlparser.h" + +#undef DECIMAL +#undef DELETE +#undef IN +#ifdef _MSC_VER +#include "dml-gram-win.h" +#else +#include "dml-gram.h" +#endif + +using namespace std; +using namespace dmlpackage; + +int dmllex(); + +void dmlerror (char const *error); + +namespace dmlpackage { + +/* The user is expect to pass a ParseTree* to grammar_init */ +static ParseTree* parseTree; +typedef std::vector copybuf_t; +static copybuf_t copy_buffer; +static std::string default_schema; +char* copy_string(const char *str); + +} + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NAME = 258, + STRING = 259, + INTNUM = 260, + APPROXNUM = 261, + SELECT = 262, + ALL = 263, + DISTINCT = 264, + NULLX = 265, + USER = 266, + INDICATOR = 267, + AMMSC = 268, + PARAMETER = 269, + ANY = 270, + SOME = 271, + OR = 272, + AND = 273, + NOT = 274, + COMPARISON = 275, + UMINUS = 276, + AS = 277, + ASC = 278, + AUTHORIZATION = 279, + BETWEEN = 280, + BY = 281, + CHARACTER = 282, + CHECK = 283, + CLOSE = 284, + COMMIT = 285, + CONTINUE = 286, + CREATE = 287, + CURRENT = 288, + CURSOR = 289, + IDB_DECIMAL = 290, + DECLARE = 291, + DEFAULT = 292, + DELETE = 293, + DESC = 294, + IDB_DOUBLE = 295, + ESCAPE = 296, + EXISTS = 297, + FETCH = 298, + IDB_FLOAT = 299, + FOR = 300, + FOREIGN = 301, + FOUND = 302, + FROM = 303, + GOTO = 304, + GRANT = 305, + IDB_GROUP = 306, + HAVING = 307, + IN = 308, + INSERT = 309, + INTEGER = 310, + INTO = 311, + IS = 312, + KEY = 313, + LANGUAGE = 314, + LIKE = 315, + NUMERIC = 316, + OF = 317, + ON = 318, + OPEN = 319, + OPTION = 320, + ORDER = 321, + PRECISION = 322, + PRIMARY = 323, + PRIVILEGES = 324, + PROCEDURE = 325, + PUBLIC = 326, + REAL = 327, + REFERENCES = 328, + ROLLBACK = 329, + SCHEMA = 330, + SET = 331, + SMALLINT = 332, + SQLCODE = 333, + SQLERROR = 334, + TABLE = 335, + TO = 336, + UNION = 337, + UNIQUE = 338, + UPDATE = 339, + VALUES = 340, + VIEW = 341, + WHENEVER = 342, + WHERE = 343, + WITH = 344, + WORK = 345 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + int intval; + double floatval; + char *strval; + int subtok; + dmlpackage::SqlStatementList *sqlStmtList; + dmlpackage::SqlStatement *sqlStmt; + dmlpackage::TableName* tblName; + dmlpackage::ColumnNameList* colNameList; + dmlpackage::ValuesOrQuery* valsOrQuery; + dmlpackage::ValuesList* valsList; + dmlpackage::QuerySpec* querySpec; + dmlpackage::TableNameList* tableNameList; + dmlpackage::TableExpression* tableExpression; + dmlpackage::WhereClause* whereClause; + dmlpackage::SearchCondition* searchCondition; + dmlpackage::ExistanceTestPredicate* existPredicate; + dmlpackage::AllOrAnyPredicate* allOrAnyPredicate; + dmlpackage::InPredicate* inPredicate; + dmlpackage::NullTestPredicate* nullTestPredicate; + dmlpackage::LikePredicate* likePredicate; + dmlpackage::BetweenPredicate* betweenPredicate; + dmlpackage::ComparisonPredicate* comparisonPredicate; + dmlpackage::Predicate* predicate; + dmlpackage::FromClause* fromClause; + dmlpackage::SelectFilter* selectFilter; + dmlpackage::GroupByClause* groupByClause; + dmlpackage::HavingClause* havingClause; + dmlpackage::Escape* escape; + dmlpackage::AtomList* atomList; + dmlpackage::ColumnAssignment* colAssignment; + dmlpackage::ColumnAssignmentList* colAssignmentList; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + + + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 47 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 523 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 100 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 92 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 221 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 415 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 345 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 96, 97, 23, 21, 98, 22, 99, 24, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 95, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 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, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 10, 12, 18, 19, 21, 23, + 26, 28, 30, 32, 39, 41, 45, 47, 49, 53, + 54, 57, 60, 64, 69, 72, 75, 78, 83, 86, + 92, 97, 103, 111, 122, 127, 129, 133, 141, 142, + 146, 147, 151, 159, 160, 164, 167, 169, 171, 173, + 177, 179, 181, 183, 186, 189, 191, 195, 197, 199, + 201, 208, 209, 213, 215, 219, 222, 225, 226, 228, + 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, + 250, 252, 254, 257, 260, 262, 270, 275, 280, 286, + 291, 293, 295, 299, 301, 303, 306, 309, 311, 318, + 319, 321, 323, 332, 334, 338, 342, 346, 352, 354, + 358, 360, 361, 363, 365, 369, 374, 376, 380, 385, + 387, 389, 394, 397, 399, 403, 405, 408, 411, 412, + 416, 418, 422, 423, 426, 430, 434, 437, 441, 443, + 445, 447, 449, 451, 453, 455, 457, 461, 465, 472, + 478, 484, 489, 490, 493, 498, 502, 509, 515, 522, + 528, 530, 534, 539, 541, 543, 545, 548, 555, 559, + 563, 567, 571, 574, 577, 579, 581, 583, 587, 589, + 593, 595, 597, 599, 601, 604, 608, 613, 619, 625, + 630, 632, 634, 636, 638, 642, 644, 646, 650, 656, + 658, 663, 665, 670, 677, 679, 684, 691, 693, 695, + 697, 702, 704, 707, 709, 711, 713, 715, 717, 722, + 726, 729 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 101, 0, -1, 102, 95, -1, 101, 102, 95, -1, + 103, -1, 36, 79, 28, 190, 104, -1, -1, 105, + -1, 106, -1, 105, 106, -1, 107, -1, 115, -1, + 118, -1, 36, 84, 182, 96, 108, 97, -1, 109, + -1, 108, 98, 109, -1, 110, -1, 113, -1, 186, + 185, 111, -1, -1, 111, 112, -1, 19, 10, -1, + 19, 10, 87, -1, 19, 10, 72, 62, -1, 41, + 181, -1, 41, 10, -1, 41, 11, -1, 32, 96, + 163, 97, -1, 77, 182, -1, 77, 182, 96, 114, + 97, -1, 87, 96, 114, 97, -1, 72, 62, 96, + 114, 97, -1, 50, 62, 96, 114, 97, 77, 182, + -1, 50, 62, 96, 114, 97, 77, 182, 96, 114, + 97, -1, 32, 96, 163, 97, -1, 186, -1, 114, + 98, 186, -1, 36, 90, 182, 117, 26, 153, 116, + -1, -1, 93, 32, 69, -1, -1, 96, 114, 97, + -1, 54, 120, 67, 182, 85, 123, 119, -1, -1, + 93, 54, 69, -1, 8, 73, -1, 8, -1, 121, + -1, 122, -1, 121, 98, 122, -1, 7, -1, 58, + -1, 42, -1, 88, 117, -1, 77, 117, -1, 124, + -1, 123, 98, 124, -1, 75, -1, 190, -1, 125, + -1, 40, 187, 38, 49, 151, 126, -1, -1, 70, + 30, 127, -1, 128, -1, 127, 98, 128, -1, 5, + 129, -1, 184, 129, -1, -1, 27, -1, 43, -1, + 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, + 135, -1, 136, -1, 140, -1, 141, -1, 142, -1, + 144, -1, 147, -1, 33, 187, -1, 34, 94, -1, + 34, -1, 42, 52, 182, 92, 37, 66, 187, -1, + 42, 52, 182, 150, -1, 47, 187, 60, 148, -1, + 58, 60, 183, 117, 137, -1, 89, 96, 138, 97, + -1, 153, -1, 139, -1, 138, 98, 139, -1, 178, + -1, 10, -1, 68, 187, -1, 78, 94, -1, 78, + -1, 7, 143, 154, 60, 148, 155, -1, -1, 8, + -1, 9, -1, 88, 182, 80, 145, 92, 37, 66, + 187, -1, 146, -1, 145, 98, 146, -1, 186, 20, + 176, -1, 186, 20, 10, -1, 88, 182, 80, 145, + 150, -1, 149, -1, 148, 98, 149, -1, 179, -1, + -1, 159, -1, 152, -1, 151, 86, 152, -1, 151, + 86, 8, 152, -1, 153, -1, 96, 151, 97, -1, + 7, 143, 154, 155, -1, 177, -1, 23, -1, 156, + 150, 160, 162, -1, 52, 157, -1, 158, -1, 157, + 98, 158, -1, 182, -1, 182, 189, -1, 92, 163, + -1, -1, 55, 30, 161, -1, 184, -1, 161, 98, + 184, -1, -1, 56, 163, -1, 163, 17, 163, -1, + 163, 18, 163, -1, 19, 163, -1, 96, 163, 97, + -1, 164, -1, 165, -1, 166, -1, 167, -1, 169, + -1, 170, -1, 172, -1, 174, -1, 176, 20, 176, + -1, 176, 20, 175, -1, 176, 19, 29, 176, 18, + 176, -1, 176, 29, 176, 18, 176, -1, 176, 19, + 64, 178, 168, -1, 176, 64, 178, 168, -1, -1, + 45, 178, -1, 184, 61, 19, 10, -1, 184, 61, + 10, -1, 176, 19, 57, 96, 175, 97, -1, 176, + 57, 96, 175, 97, -1, 176, 19, 57, 96, 171, + 97, -1, 176, 57, 96, 171, 97, -1, 178, -1, + 171, 98, 178, -1, 176, 20, 173, 175, -1, 15, + -1, 8, -1, 16, -1, 46, 175, -1, 96, 7, + 143, 154, 155, 97, -1, 176, 21, 176, -1, 176, + 22, 176, -1, 176, 23, 176, -1, 176, 24, 176, + -1, 21, 176, -1, 22, 176, -1, 178, -1, 184, + -1, 180, -1, 96, 176, 97, -1, 176, -1, 177, + 98, 176, -1, 179, -1, 181, -1, 11, -1, 188, + -1, 188, 188, -1, 188, 12, 188, -1, 13, 96, + 23, 97, -1, 13, 96, 9, 184, 97, -1, 13, + 96, 8, 176, 97, -1, 13, 96, 176, 97, -1, + 4, -1, 5, -1, 6, -1, 183, -1, 3, 99, + 3, -1, 3, -1, 3, -1, 3, 99, 3, -1, + 3, 99, 3, 99, 3, -1, 31, -1, 31, 96, + 5, 97, -1, 65, -1, 65, 96, 5, 97, -1, + 65, 96, 5, 98, 5, 97, -1, 39, -1, 39, + 96, 5, 97, -1, 39, 96, 5, 98, 5, 97, + -1, 59, -1, 81, -1, 48, -1, 48, 96, 5, + 97, -1, 76, -1, 44, 71, -1, 3, -1, 3, + -1, 14, -1, 3, -1, 3, -1, 91, 19, 51, + 191, -1, 91, 83, 191, -1, 53, 3, -1, 35, + -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 229, 229, 241, 252, 256, 259, 261, 265, 266, + 270, 271, 272, 276, 280, 281, 285, 286, 290, 293, + 295, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 311, 312, 313, 315, 317, 321, 326, 334, 338, 340, + 344, 345, 349, 353, 355, 359, 360, 361, 365, 366, + 370, 371, 372, 373, 374, 379, 380, 384, 385, 390, + 395, 398, 400, 404, 405, 409, 410, 413, 415, 416, + 421, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 439, 443, 447, 455, 463, 470, 474, 484, + 488, 495, 500, 508, 509, 513, 517, 521, 528, 534, + 535, 536, 540, 548, 553, 561, 568, 578, 585, 586, + 590, 594, 595, 601, 602, 603, 607, 608, 612, 624, + 625, 629, 643, 651, 656, 664, 665, 669, 677, 678, + 686, 691, 699, 700, 710, 717, 724, 730, 734, 743, + 747, 751, 755, 759, 763, 767, 774, 781, 791, 800, + 812, 820, 831, 832, 840, 846, 855, 862, 869, 877, + 888, 893, 901, 913, 914, 915, 919, 927, 941, 948, + 955, 962, 969, 975, 981, 982, 983, 984, 988, 994, + 1002, 1003, 1004, 1008, 1009, 1016, 1028, 1036, 1047, 1057, + 1068, 1069, 1070, 1076, 1080, 1081, 1092, 1093, 1100, 1114, + 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, + 1125, 1126, 1127, 1134, 1137, 1141, 1144, 1147, 1151, 1152, + 1155, 1156 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "NAME", "STRING", "INTNUM", "APPROXNUM", + "SELECT", "ALL", "DISTINCT", "NULLX", "USER", "INDICATOR", "AMMSC", + "PARAMETER", "ANY", "SOME", "OR", "AND", "NOT", "COMPARISON", "'+'", + "'-'", "'*'", "'/'", "UMINUS", "AS", "ASC", "AUTHORIZATION", "BETWEEN", + "BY", "CHARACTER", "CHECK", "CLOSE", "COMMIT", "CONTINUE", "CREATE", + "CURRENT", "CURSOR", "IDB_DECIMAL", "DECLARE", "DEFAULT", "DELETE", + "DESC", "IDB_DOUBLE", "ESCAPE", "EXISTS", "FETCH", "IDB_FLOAT", "FOR", + "FOREIGN", "FOUND", "FROM", "GOTO", "GRANT", "IDB_GROUP", "HAVING", "IN", + "INSERT", "INTEGER", "INTO", "IS", "KEY", "LANGUAGE", "LIKE", "NUMERIC", + "OF", "ON", "OPEN", "OPTION", "ORDER", "PRECISION", "PRIMARY", + "PRIVILEGES", "PROCEDURE", "PUBLIC", "REAL", "REFERENCES", "ROLLBACK", + "SCHEMA", "SET", "SMALLINT", "SQLCODE", "SQLERROR", "TABLE", "TO", + "UNION", "UNIQUE", "UPDATE", "VALUES", "VIEW", "WHENEVER", "WHERE", + "WITH", "WORK", "';'", "'('", "')'", "','", "'.'", "$accept", "sql_list", + "sql", "schema", "opt_schema_element_list", "schema_element_list", + "schema_element", "base_table_def", "base_table_element_commalist", + "base_table_element", "column_def", "column_def_opt_list", + "column_def_opt", "table_constraint_def", "column_commalist", "view_def", + "opt_with_check_option", "opt_column_commalist", "privilege_def", + "opt_with_grant_option", "privileges", "operation_commalist", + "operation", "grantee_commalist", "grantee", "cursor_def", + "opt_order_by_clause", "ordering_spec_commalist", "ordering_spec", + "opt_asc_desc", "manipulative_statement", "close_statement", + "commit_statement", "delete_statement_positioned", + "delete_statement_searched", "fetch_statement", "insert_statement", + "values_or_query_spec", "insert_atom_commalist", "insert_atom", + "open_statement", "rollback_statement", "select_statement", + "opt_all_distinct", "update_statement_positioned", + "assignment_commalist", "assignment", "update_statement_searched", + "target_commalist", "target", "opt_where_clause", "query_exp", + "query_term", "query_spec", "selection", "table_exp", "from_clause", + "table_ref_commalist", "table_ref", "where_clause", + "opt_group_by_clause", "column_ref_commalist", "opt_having_clause", + "search_condition", "predicate", "comparison_predicate", + "between_predicate", "like_predicate", "opt_escape", "test_for_null", + "in_predicate", "atom_commalist", "all_or_any_predicate", "any_all_some", + "existence_test", "subquery", "scalar_exp", "scalar_exp_commalist", + "atom", "parameter_ref", "function_ref", "literal", "table", + "table_name", "column_ref", "data_type", "column", "cursor", "parameter", + "range_variable", "user", "when_action", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 43, 45, 42, 47, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 59, 40, 41, 44, 46 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 100, 101, 101, 102, 103, 104, 104, 105, 105, + 106, 106, 106, 107, 108, 108, 109, 109, 110, 111, + 111, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 113, 113, 113, 113, 113, 114, 114, 115, 116, 116, + 117, 117, 118, 119, 119, 120, 120, 120, 121, 121, + 122, 122, 122, 122, 122, 123, 123, 124, 124, 102, + 125, 126, 126, 127, 127, 128, 128, 129, 129, 129, + 102, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 131, 132, 132, 133, 134, 135, 136, 137, + 137, 138, 138, 139, 139, 140, 141, 141, 142, 143, + 143, 143, 144, 145, 145, 146, 146, 147, 148, 148, + 149, 150, 150, 151, 151, 151, 152, 152, 153, 154, + 154, 155, 156, 157, 157, 158, 158, 159, 160, 160, + 161, 161, 162, 162, 163, 163, 163, 163, 163, 164, + 164, 164, 164, 164, 164, 164, 165, 165, 166, 166, + 167, 167, 168, 168, 169, 169, 170, 170, 170, 170, + 171, 171, 172, 173, 173, 173, 174, 175, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 177, + 178, 178, 178, 179, 179, 179, 180, 180, 180, 180, + 181, 181, 181, 182, 183, 183, 184, 184, 184, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 186, 187, 188, 189, 190, 102, 102, + 191, 191 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 3, 1, 5, 0, 1, 1, 2, + 1, 1, 1, 6, 1, 3, 1, 1, 3, 0, + 2, 2, 3, 4, 2, 2, 2, 4, 2, 5, + 4, 5, 7, 10, 4, 1, 3, 7, 0, 3, + 0, 3, 7, 0, 3, 2, 1, 1, 1, 3, + 1, 1, 1, 2, 2, 1, 3, 1, 1, 1, + 6, 0, 3, 1, 3, 2, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 7, 4, 4, 5, 4, + 1, 1, 3, 1, 1, 2, 2, 1, 6, 0, + 1, 1, 8, 1, 3, 3, 3, 5, 1, 3, + 1, 0, 1, 1, 3, 4, 1, 3, 4, 1, + 1, 4, 2, 1, 3, 1, 2, 2, 0, 3, + 1, 3, 0, 2, 3, 3, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 3, 6, 5, + 5, 4, 0, 2, 4, 3, 6, 5, 6, 5, + 1, 3, 4, 1, 1, 1, 2, 6, 3, 3, + 3, 3, 2, 2, 1, 1, 1, 3, 1, 3, + 1, 1, 1, 1, 2, 3, 4, 5, 5, 4, + 1, 1, 1, 1, 3, 1, 1, 3, 5, 1, + 4, 1, 4, 6, 1, 4, 6, 1, 1, 1, + 4, 1, 2, 1, 1, 1, 1, 1, 4, 3, + 2, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 99, 0, 84, 0, 0, 0, 0, 0, 0, + 97, 0, 0, 0, 0, 4, 59, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 100, + 101, 0, 214, 82, 83, 0, 0, 0, 0, 0, + 95, 96, 195, 0, 193, 0, 0, 1, 0, 2, + 196, 190, 191, 192, 182, 0, 215, 0, 0, 120, + 0, 0, 178, 119, 174, 180, 176, 181, 175, 183, + 0, 0, 111, 0, 40, 0, 0, 0, 221, 0, + 219, 3, 0, 0, 172, 173, 0, 0, 0, 0, + 0, 0, 0, 0, 184, 217, 6, 0, 0, 86, + 112, 87, 108, 110, 0, 0, 194, 213, 111, 103, + 0, 218, 220, 197, 0, 0, 0, 0, 177, 0, + 168, 169, 170, 171, 179, 185, 0, 0, 5, 7, + 8, 10, 11, 12, 99, 0, 61, 113, 116, 0, + 0, 0, 0, 127, 138, 139, 140, 141, 142, 143, + 144, 145, 0, 175, 0, 0, 35, 0, 88, 90, + 0, 0, 107, 0, 0, 0, 0, 186, 189, 0, + 98, 111, 0, 0, 50, 46, 52, 51, 40, 40, + 0, 47, 48, 9, 0, 0, 0, 0, 60, 136, + 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 41, 0, 0, 0, 104, 106, + 105, 198, 188, 187, 122, 123, 125, 0, 128, 0, + 40, 45, 54, 53, 0, 0, 0, 117, 0, 0, + 114, 85, 99, 137, 134, 135, 0, 0, 0, 164, + 163, 165, 0, 0, 147, 146, 0, 0, 152, 155, + 0, 36, 94, 0, 91, 93, 0, 0, 216, 126, + 0, 132, 0, 0, 0, 49, 118, 67, 62, 63, + 67, 115, 0, 0, 0, 152, 162, 0, 0, 0, + 160, 0, 151, 154, 89, 0, 102, 124, 0, 0, + 121, 0, 0, 0, 0, 0, 14, 16, 17, 0, + 0, 0, 68, 69, 65, 0, 66, 0, 0, 0, + 0, 150, 149, 159, 0, 157, 153, 92, 129, 130, + 133, 0, 0, 0, 0, 13, 0, 199, 204, 0, + 209, 207, 201, 211, 208, 19, 38, 57, 43, 55, + 58, 64, 0, 148, 158, 156, 161, 0, 0, 0, + 0, 0, 15, 0, 0, 212, 0, 0, 18, 0, + 37, 0, 0, 42, 167, 131, 34, 0, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 56, 0, 31, 200, 205, 0, 210, 202, 0, + 21, 0, 25, 26, 24, 28, 39, 44, 0, 0, + 0, 0, 22, 0, 0, 32, 206, 203, 23, 27, + 0, 0, 29, 0, 33 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 13, 14, 15, 128, 129, 130, 131, 295, 296, + 297, 358, 378, 298, 155, 132, 360, 105, 133, 363, + 180, 181, 182, 338, 339, 16, 188, 268, 269, 304, + 17, 18, 19, 20, 21, 22, 23, 158, 253, 254, + 24, 25, 26, 31, 27, 108, 109, 28, 101, 102, + 99, 136, 137, 138, 61, 170, 171, 214, 215, 100, + 261, 318, 290, 143, 144, 145, 146, 147, 282, 148, + 149, 278, 150, 243, 151, 192, 152, 63, 64, 65, + 66, 67, 216, 44, 68, 335, 156, 33, 69, 259, + 340, 80 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -270 +static const yytype_int16 yypact[] = +{ + 352, 101, 20, -63, -25, 20, 30, 20, 90, 20, + 59, 185, 81, 337, 104, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, 286, -270, -270, -270, 191, 202, 185, 156, 185, + -270, -270, 138, 162, -270, 196, -3, -270, 154, -270, + 168, -270, -270, -270, -270, 160, -270, 320, 320, -270, + 320, 192, 341, 172, -270, -270, -270, -270, -270, 153, + 274, 232, 206, 269, 214, 299, 317, -3, -270, 324, + -270, -270, 340, 16, -270, -270, 135, 269, 320, 320, + 320, 320, 320, 269, -270, -270, 91, 21, 100, -270, + -270, 234, -270, -270, 317, -1, -270, -270, 97, -270, + 336, -270, -270, 261, 320, 366, 243, 149, -270, 78, + 199, 199, -270, -270, 341, -270, 127, 66, -270, 91, + -270, -270, -270, -270, 101, 21, 82, -270, -270, 282, + 306, 295, 282, 213, -270, -270, -270, -270, -270, -270, + -270, -270, 326, 332, 269, 178, -270, 300, -270, -270, + 222, 317, -270, 73, 395, 161, 312, -270, -270, 185, + -270, 311, 185, 185, -270, 346, -270, -270, 214, 214, + 357, 316, -270, -270, 286, 50, 392, 33, -270, -270, + 20, 422, -270, 26, 181, 282, 282, 157, 258, 320, + 335, 407, 122, -270, -270, 317, 347, 367, -270, -270, + 341, -270, -270, -270, 344, -270, 451, 282, 400, 360, + 214, -270, -270, -270, 185, 121, 405, -270, 175, 21, + -270, -270, 101, -270, 440, -270, 320, 363, 407, -270, + -270, -270, 308, 295, -270, 341, 414, 42, 415, -270, + 452, -270, -270, 208, -270, -270, 20, 185, -270, -270, + 431, 408, 94, 437, 380, -270, -270, 150, 368, -270, + 150, -270, 286, 423, 42, 415, -270, 320, 219, 371, + -270, 407, -270, -270, -270, 347, -270, -270, 366, 282, + -270, 373, 409, 410, 374, 238, -270, -270, -270, 358, + 460, 32, -270, -270, -270, 175, -270, 405, 320, 241, + 376, -270, 341, -270, 407, -270, -270, -270, 377, -270, + 213, 282, 378, 381, 317, -270, 94, 382, 383, 411, + 384, -270, 385, -270, -270, -270, 390, -270, 141, -270, + -270, -270, 379, 341, -270, -270, -270, 366, 52, 317, + 317, 270, -270, 479, 480, -270, 481, 482, 188, 456, + -270, 435, 32, -270, -270, -270, -270, 303, 310, -270, + 393, 329, 394, 351, 483, 396, 370, 185, -270, 425, + 426, -270, 419, -270, -270, -270, 492, -270, -270, 493, + -12, 282, -270, -270, -270, 403, -270, -270, 185, 404, + 406, 438, -270, 54, 317, 412, -270, -270, -270, -270, + 353, 317, -270, 355, -270 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -270, -270, 489, -270, -270, -270, 375, -270, -270, 179, + -270, -270, -270, -270, -269, -270, -270, -163, -270, -270, + -270, -270, 281, -270, 145, -270, -270, -270, 204, 240, + -270, -270, -270, -270, -270, -270, -270, -270, -270, 226, + -270, -270, -270, -131, -270, -270, 354, -270, 427, 359, + -56, 386, -136, -103, -170, -216, -270, -270, 255, -270, + -270, -270, -270, -134, -270, -270, -270, -270, 242, -270, + -270, 244, -270, -270, -270, 8, -24, -270, -189, 61, + -270, 140, -11, 484, -97, -270, -72, 4, 47, -270, + 449, 443 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 43, 153, 159, 184, 110, 189, 134, 62, 193, 36, + 266, 38, 248, 40, 226, 222, 223, 255, 166, 50, + 51, 52, 53, 32, 114, 115, 72, 54, 134, 55, + 56, 34, 78, 84, 85, 95, 86, 57, 58, 116, + 134, 229, 153, 195, 196, 153, 51, 52, 53, 275, + 79, 230, 162, 54, 35, 351, 56, 263, 280, 117, + 401, 234, 235, 153, 120, 121, 122, 123, 124, 195, + 196, 195, 196, 174, 175, 402, 50, 51, 52, 53, + 367, 368, 37, 209, 54, 280, 55, 56, 157, 110, + 165, 342, 316, 271, 57, 58, 255, 107, 153, 153, + 45, 272, 307, 50, 51, 52, 53, 337, 176, 29, + 30, 54, 60, 55, 56, 218, 94, 135, 194, 139, + 153, 57, 58, 233, 177, 346, 291, 126, 174, 135, + 169, 270, 249, 251, 103, 410, 187, 140, 191, 210, + 125, 250, 413, 178, 292, 127, 141, 227, 103, 366, + 39, 409, 186, 41, 179, 320, 88, 89, 90, 91, + 62, 219, 220, 176, 46, 93, 293, 56, 187, 60, + 88, 89, 90, 91, 245, 246, 154, 302, 50, 177, + 267, 294, 88, 89, 90, 91, 236, 348, 42, 160, + 299, 319, 153, 303, 231, 161, 142, 336, 178, 49, + 197, 198, 88, 89, 90, 91, 244, 374, 270, 179, + 199, 172, 273, 264, 237, 103, 73, 173, 86, 70, + 375, 238, 90, 91, 153, 50, 51, 52, 53, 376, + 195, 196, 118, 54, 361, 55, 56, 75, 200, 362, + 71, 139, 76, 57, 58, 201, 168, 77, 62, 81, + 365, 276, 87, 312, 299, 279, 83, 403, 212, 207, + 286, 50, 51, 52, 53, 377, 239, 82, 141, 54, + 92, 55, 56, 240, 241, 204, 205, 95, 118, 57, + 58, 97, 310, 56, 343, 50, 51, 52, 53, 50, + 51, 52, 53, 54, 153, 55, 56, 54, 98, 55, + 56, 139, 106, 57, 58, 284, 285, 57, 58, 59, + 104, 50, 51, 52, 53, 232, 313, 314, 142, 54, + 107, 55, 56, 50, 51, 52, 53, 112, 141, 57, + 58, 54, 154, 55, 56, 325, 326, 47, 344, 314, + 167, 57, 58, 113, 1, 197, 198, 88, 89, 90, + 91, 51, 52, 53, 242, 199, 163, 252, 54, 1, + 164, 56, 88, 89, 90, 91, 395, 369, 205, 50, + 2, 3, 190, 4, 51, 52, 53, 5, 142, 6, + 392, 393, 60, 200, 7, 2, 3, 405, 4, 327, + 201, 191, 5, 202, 6, 8, 206, 328, 211, 7, + 382, 205, 329, 217, 60, 9, 330, 383, 205, 213, + 8, 51, 52, 53, 225, 10, 60, 331, 54, 221, + 9, 56, 228, 332, 224, 11, 385, 386, 12, 232, + 10, 247, 277, 256, 333, 88, 89, 90, 91, 334, + 11, 308, 257, 12, 88, 89, 90, 91, 388, 389, + 412, 205, 414, 205, 258, 260, 262, 169, 196, 274, + 281, 288, 283, 300, 289, 301, 305, 134, 315, 321, + 324, 322, 323, 345, 349, 347, 364, 350, 353, 354, + 356, 357, 355, 359, 370, 371, 372, 373, 379, 380, + 384, 387, 391, 390, 396, 397, 398, 399, 400, 404, + 408, 406, 48, 407, 183, 352, 265, 381, 411, 341, + 306, 317, 287, 203, 119, 208, 394, 311, 309, 96, + 111, 185, 0, 74 +}; + +static const yytype_int16 yycheck[] = +{ + 11, 98, 105, 134, 76, 139, 7, 31, 142, 5, + 226, 7, 201, 9, 184, 178, 179, 206, 115, 3, + 4, 5, 6, 3, 8, 9, 37, 11, 7, 13, + 14, 94, 35, 57, 58, 3, 60, 21, 22, 23, + 7, 8, 139, 17, 18, 142, 4, 5, 6, 238, + 53, 187, 108, 11, 79, 324, 14, 220, 247, 83, + 72, 195, 196, 160, 88, 89, 90, 91, 92, 17, + 18, 17, 18, 7, 8, 87, 3, 4, 5, 6, + 349, 350, 52, 10, 11, 274, 13, 14, 89, 161, + 114, 307, 281, 229, 21, 22, 285, 3, 195, 196, + 19, 232, 272, 3, 4, 5, 6, 75, 42, 8, + 9, 11, 96, 13, 14, 171, 69, 96, 142, 19, + 217, 21, 22, 97, 58, 314, 32, 36, 7, 96, + 52, 228, 10, 205, 73, 404, 86, 37, 96, 163, + 93, 19, 411, 77, 50, 54, 46, 97, 87, 97, + 60, 97, 70, 94, 88, 289, 21, 22, 23, 24, + 184, 172, 173, 42, 83, 12, 72, 14, 86, 96, + 21, 22, 23, 24, 198, 199, 98, 27, 3, 58, + 5, 87, 21, 22, 23, 24, 29, 321, 3, 92, + 262, 288, 289, 43, 190, 98, 96, 300, 77, 95, + 19, 20, 21, 22, 23, 24, 198, 19, 305, 88, + 29, 84, 236, 224, 57, 154, 60, 90, 242, 28, + 32, 64, 23, 24, 321, 3, 4, 5, 6, 41, + 17, 18, 97, 11, 93, 13, 14, 99, 57, 98, + 38, 19, 80, 21, 22, 64, 97, 51, 272, 95, + 347, 243, 60, 277, 326, 247, 96, 391, 97, 37, + 256, 3, 4, 5, 6, 77, 8, 99, 46, 11, + 98, 13, 14, 15, 16, 97, 98, 3, 97, 21, + 22, 49, 274, 14, 308, 3, 4, 5, 6, 3, + 4, 5, 6, 11, 391, 13, 14, 11, 92, 13, + 14, 19, 3, 21, 22, 97, 98, 21, 22, 23, + 96, 3, 4, 5, 6, 7, 97, 98, 96, 11, + 3, 13, 14, 3, 4, 5, 6, 3, 46, 21, + 22, 11, 98, 13, 14, 97, 98, 0, 97, 98, + 97, 21, 22, 3, 7, 19, 20, 21, 22, 23, + 24, 4, 5, 6, 96, 29, 20, 10, 11, 7, + 99, 14, 21, 22, 23, 24, 377, 97, 98, 3, + 33, 34, 66, 36, 4, 5, 6, 40, 96, 42, + 10, 11, 96, 57, 47, 33, 34, 398, 36, 31, + 64, 96, 40, 61, 42, 58, 96, 39, 3, 47, + 97, 98, 44, 92, 96, 68, 48, 97, 98, 97, + 58, 4, 5, 6, 98, 78, 96, 59, 11, 73, + 68, 14, 30, 65, 67, 88, 97, 98, 91, 7, + 78, 96, 18, 66, 76, 21, 22, 23, 24, 81, + 88, 18, 98, 91, 21, 22, 23, 24, 97, 98, + 97, 98, 97, 98, 3, 55, 96, 52, 18, 96, + 45, 30, 10, 26, 56, 85, 98, 7, 97, 96, + 96, 62, 62, 97, 96, 98, 97, 96, 96, 96, + 96, 96, 71, 93, 5, 5, 5, 5, 32, 54, + 97, 97, 96, 10, 69, 69, 77, 5, 5, 96, + 62, 97, 13, 97, 129, 326, 225, 362, 96, 305, + 270, 285, 257, 154, 87, 161, 376, 275, 274, 70, + 77, 135, -1, 39 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 7, 33, 34, 36, 40, 42, 47, 58, 68, + 78, 88, 91, 101, 102, 103, 125, 130, 131, 132, + 133, 134, 135, 136, 140, 141, 142, 144, 147, 8, + 9, 143, 3, 187, 94, 79, 187, 52, 187, 60, + 187, 94, 3, 182, 183, 19, 83, 0, 102, 95, + 3, 4, 5, 6, 11, 13, 14, 21, 22, 23, + 96, 154, 176, 177, 178, 179, 180, 181, 184, 188, + 28, 38, 182, 60, 183, 99, 80, 51, 35, 53, + 191, 95, 99, 96, 176, 176, 176, 60, 21, 22, + 23, 24, 98, 12, 188, 3, 190, 49, 92, 150, + 159, 148, 149, 179, 96, 117, 3, 3, 145, 146, + 186, 191, 3, 3, 8, 9, 23, 176, 97, 148, + 176, 176, 176, 176, 176, 188, 36, 54, 104, 105, + 106, 107, 115, 118, 7, 96, 151, 152, 153, 19, + 37, 46, 96, 163, 164, 165, 166, 167, 169, 170, + 172, 174, 176, 184, 98, 114, 186, 89, 137, 153, + 92, 98, 150, 20, 99, 176, 184, 97, 97, 52, + 155, 156, 84, 90, 7, 8, 42, 58, 77, 88, + 120, 121, 122, 106, 143, 151, 70, 86, 126, 163, + 66, 96, 175, 163, 176, 17, 18, 19, 20, 29, + 57, 64, 61, 149, 97, 98, 96, 37, 146, 10, + 176, 3, 97, 97, 157, 158, 182, 92, 150, 182, + 182, 73, 117, 117, 67, 98, 154, 97, 30, 8, + 152, 187, 7, 97, 163, 163, 29, 57, 64, 8, + 15, 16, 96, 173, 175, 176, 176, 96, 178, 10, + 19, 186, 10, 138, 139, 178, 66, 98, 3, 189, + 55, 160, 96, 117, 182, 122, 155, 5, 127, 128, + 184, 152, 143, 176, 96, 178, 175, 18, 171, 175, + 178, 45, 168, 10, 97, 98, 187, 158, 30, 56, + 162, 32, 50, 72, 87, 108, 109, 110, 113, 186, + 26, 85, 27, 43, 129, 98, 129, 154, 18, 171, + 175, 168, 176, 97, 98, 97, 178, 139, 161, 184, + 163, 96, 62, 62, 96, 97, 98, 31, 39, 44, + 48, 59, 65, 76, 81, 185, 153, 75, 123, 124, + 190, 128, 155, 176, 97, 97, 178, 98, 163, 96, + 96, 114, 109, 96, 96, 71, 96, 96, 111, 93, + 116, 93, 98, 119, 97, 184, 97, 114, 114, 97, + 5, 5, 5, 5, 19, 32, 41, 77, 112, 32, + 54, 124, 97, 97, 97, 97, 98, 97, 97, 98, + 10, 96, 10, 11, 181, 182, 69, 69, 77, 5, + 5, 72, 87, 163, 96, 182, 97, 97, 62, 97, + 114, 96, 97, 114, 97 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: + + { + if ((yyvsp[(1) - (2)].sqlStmt) != NULL) + { + (yyval.sqlStmtList) = parseTree; + (yyval.sqlStmtList)->push_back((yyvsp[(1) - (2)].sqlStmt)); + } + else + { + (yyval.sqlStmtList) = NULL; + } + + ;} + break; + + case 3: + + { + + if ((yyvsp[(1) - (3)].sqlStmtList) != NULL) + { + parseTree = (yyvsp[(1) - (3)].sqlStmtList); + } + + ;} + break; + + case 4: + + { (yyval.sqlStmt) = NULL; ;} + break; + + case 35: + + { + (yyval.colNameList) = new ColumnNameList; + (yyval.colNameList)->push_back((yyvsp[(1) - (1)].strval)); + ;} + break; + + case 36: + + { + (yyval.colNameList) = (yyvsp[(1) - (3)].colNameList); + (yyval.colNameList)->push_back((yyvsp[(3) - (3)].strval)); + ;} + break; + + case 40: + + { (yyval.colNameList) = NULL; ;} + break; + + case 41: + + {(yyval.colNameList) = (yyvsp[(2) - (3)].colNameList);;} + break; + + case 59: + + { (yyval.sqlStmt) = NULL; ;} + break; + + case 82: + + { ;} + break; + + case 83: + + { + (yyval.sqlStmt) = new CommandSqlStatement("COMMIT"); + ;} + break; + + case 84: + + { + (yyval.sqlStmt) = new CommandSqlStatement("COMMIT"); + ;} + break; + + case 85: + + { + (yyval.sqlStmt) = new DeleteSqlStatement((yyvsp[(3) - (7)].tblName)); + + ;} + break; + + case 86: + + { + (yyval.sqlStmt) = new DeleteSqlStatement((yyvsp[(3) - (4)].tblName),(yyvsp[(4) - (4)].whereClause)); + ;} + break; + + case 87: + + { ;} + break; + + case 88: + + { + if (NULL == (yyvsp[(4) - (5)].colNameList)) + (yyval.sqlStmt) = new InsertSqlStatement((yyvsp[(3) - (5)].tblName), (yyvsp[(5) - (5)].valsOrQuery)); + else + (yyval.sqlStmt) = new InsertSqlStatement((yyvsp[(3) - (5)].tblName), (yyvsp[(4) - (5)].colNameList), (yyvsp[(5) - (5)].valsOrQuery)); + ;} + break; + + case 89: + + { + (yyval.valsOrQuery) = new ValuesOrQuery((yyvsp[(3) - (4)].valsList)); + ;} + break; + + case 90: + + { + (yyval.valsOrQuery) = new ValuesOrQuery((yyvsp[(1) - (1)].querySpec)); + ;} + break; + + case 91: + + { + (yyval.valsList) = new ValuesList; + (yyval.valsList)->push_back((yyvsp[(1) - (1)].strval)); + ;} + break; + + case 92: + + { + (yyval.valsList) = (yyvsp[(1) - (3)].valsList); + (yyval.valsList)->push_back((yyvsp[(3) - (3)].strval)); + ;} + break; + + case 95: + + { ;} + break; + + case 96: + + { + (yyval.sqlStmt) = new CommandSqlStatement("ROLLBACK"); + ;} + break; + + case 97: + + { + (yyval.sqlStmt) = new CommandSqlStatement("ROLLBACK"); + ;} + break; + + case 98: + + { ;} + break; + + case 99: + + { (yyval.strval) = NULL; ;} + break; + + case 100: + + { (yyval.strval) = (yyvsp[(1) - (1)].strval); ;} + break; + + case 101: + + { (yyval.strval) = (yyvsp[(1) - (1)].strval); ;} + break; + + case 102: + + { + (yyval.sqlStmt) = new UpdateSqlStatement((yyvsp[(2) - (8)].tblName),(yyvsp[(4) - (8)].colAssignmentList)); + ;} + break; + + case 103: + + { + (yyval.colAssignmentList) = new ColumnAssignmentList(); + (yyval.colAssignmentList)->push_back((yyvsp[(1) - (1)].colAssignment)); + ;} + break; + + case 104: + + { + (yyval.colAssignmentList) = (yyvsp[(1) - (3)].colAssignmentList); + (yyval.colAssignmentList)->push_back((yyvsp[(3) - (3)].colAssignment)); + ;} + break; + + case 105: + + { + (yyval.colAssignment) = new ColumnAssignment(); + (yyval.colAssignment)->fColumn = (yyvsp[(1) - (3)].strval); + (yyval.colAssignment)->fOperator = (yyvsp[(2) - (3)].strval); + (yyval.colAssignment)->fScalarExpression = (yyvsp[(3) - (3)].strval); + ;} + break; + + case 106: + + { + (yyval.colAssignment) = new ColumnAssignment(); + (yyval.colAssignment)->fColumn = (yyvsp[(1) - (3)].strval); + (yyval.colAssignment)->fOperator = (yyvsp[(2) - (3)].strval); + (yyval.colAssignment)->fScalarExpression = (yyvsp[(3) - (3)].strval); + ;} + break; + + case 107: + + { + (yyval.sqlStmt) = new UpdateSqlStatement((yyvsp[(2) - (5)].tblName), (yyvsp[(4) - (5)].colAssignmentList), (yyvsp[(5) - (5)].whereClause)); + ;} + break; + + case 111: + + { (yyval.whereClause) = NULL; ;} + break; + + case 112: + + { (yyval.whereClause) = (yyvsp[(1) - (1)].whereClause); ;} + break; + + case 118: + + { + (yyval.querySpec) = new QuerySpec(); + if (NULL != (yyvsp[(2) - (4)].strval)) + (yyval.querySpec)->fOptionAllOrDistinct = (yyvsp[(2) - (4)].strval); + (yyval.querySpec)->fSelectFilterPtr = (yyvsp[(3) - (4)].selectFilter); + (yyval.querySpec)->fTableExpressionPtr = (yyvsp[(4) - (4)].tableExpression); + + ;} + break; + + case 119: + + { (yyval.selectFilter) = new SelectFilter((yyvsp[(1) - (1)].colNameList)); ;} + break; + + case 120: + + { (yyval.selectFilter) = new SelectFilter(); ;} + break; + + case 121: + + { + (yyval.tableExpression) = new TableExpression(); + (yyval.tableExpression)->fFromClausePtr = (yyvsp[(1) - (4)].fromClause); + (yyval.tableExpression)->fWhereClausePtr = (yyvsp[(2) - (4)].whereClause); + (yyval.tableExpression)->fGroupByPtr = (yyvsp[(3) - (4)].groupByClause); + (yyval.tableExpression)->fHavingPtr = (yyvsp[(4) - (4)].havingClause); + ;} + break; + + case 122: + + { + (yyval.fromClause) = new FromClause(); + (yyval.fromClause)->fTableListPtr = (yyvsp[(2) - (2)].tableNameList); + ;} + break; + + case 123: + + { + (yyval.tableNameList) = new TableNameList(); + (yyval.tableNameList)->push_back((yyvsp[(1) - (1)].tblName)); + ;} + break; + + case 124: + + { + (yyval.tableNameList) = (yyvsp[(1) - (3)].tableNameList); + (yyval.tableNameList)->push_back((yyvsp[(3) - (3)].tblName)); + ;} + break; + + case 127: + + { + (yyval.whereClause) = new WhereClause(); + (yyval.whereClause)->fSearchConditionPtr = (yyvsp[(2) - (2)].searchCondition); + ;} + break; + + case 128: + + { (yyval.groupByClause) = NULL; ;} + break; + + case 129: + + { + (yyval.groupByClause) = new GroupByClause(); + (yyval.groupByClause)->fColumnNamesListPtr = (yyvsp[(3) - (3)].colNameList); + ;} + break; + + case 130: + + { + (yyval.colNameList) = new ColumnNameList(); + (yyval.colNameList)->push_back((yyvsp[(1) - (1)].strval)); + ;} + break; + + case 131: + + { + (yyval.colNameList) = (yyvsp[(1) - (3)].colNameList); + (yyval.colNameList)->push_back((yyvsp[(3) - (3)].strval)); + ;} + break; + + case 132: + + { (yyval.havingClause) = NULL; ;} + break; + + case 133: + + { + (yyval.havingClause) = new HavingClause(); + (yyval.havingClause)->fSearchConditionPtr = (yyvsp[(2) - (2)].searchCondition); + ;} + break; + + case 134: + + { + (yyval.searchCondition) = new SearchCondition; + (yyval.searchCondition)->fLHSearchConditionPtr = (yyvsp[(1) - (3)].searchCondition); + (yyval.searchCondition)->fOperator = "OR"; + (yyval.searchCondition)->fRHSearchConditionPtr = (yyvsp[(3) - (3)].searchCondition); + ;} + break; + + case 135: + + { + (yyval.searchCondition) = new SearchCondition; + (yyval.searchCondition)->fLHSearchConditionPtr = (yyvsp[(1) - (3)].searchCondition); + (yyval.searchCondition)->fOperator = "AND"; + (yyval.searchCondition)->fRHSearchConditionPtr = (yyvsp[(3) - (3)].searchCondition); + ;} + break; + + case 136: + + { + (yyval.searchCondition) = new SearchCondition; + (yyval.searchCondition)->fOperator = "NOT"; + (yyval.searchCondition)->fRHSearchConditionPtr = (yyvsp[(2) - (2)].searchCondition); + ;} + break; + + case 137: + + { + (yyval.searchCondition) = new SearchCondition; + ;} + break; + + case 138: + + { + + (yyval.searchCondition) = new SearchCondition; + (yyval.searchCondition)->fPredicatePtr = (yyvsp[(1) - (1)].predicate); + ;} + break; + + case 139: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].comparisonPredicate); + ;} + break; + + case 140: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].betweenPredicate); + ;} + break; + + case 141: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].likePredicate); + ;} + break; + + case 142: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].nullTestPredicate); + ;} + break; + + case 143: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].inPredicate); + ;} + break; + + case 144: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].allOrAnyPredicate); + ;} + break; + + case 145: + + { + (yyval.predicate) = (yyvsp[(1) - (1)].existPredicate); + ;} + break; + + case 146: + + { + (yyval.comparisonPredicate) = new ComparisonPredicate(); + (yyval.comparisonPredicate)->fLHScalarExpression = (yyvsp[(1) - (3)].strval); + (yyval.comparisonPredicate)->fOperator = (yyvsp[(2) - (3)].strval); + (yyval.comparisonPredicate)->fRHScalarExpression = (yyvsp[(3) - (3)].strval); + ;} + break; + + case 147: + + { + (yyval.comparisonPredicate) = new ComparisonPredicate(); + (yyval.comparisonPredicate)->fLHScalarExpression = (yyvsp[(1) - (3)].strval); + (yyval.comparisonPredicate)->fOperator = (yyvsp[(2) - (3)].strval); + (yyval.comparisonPredicate)->fSubQuerySpec = (yyvsp[(3) - (3)].querySpec); + ;} + break; + + case 148: + + { + (yyval.betweenPredicate) = new BetweenPredicate(); + (yyval.betweenPredicate)->fLHScalarExpression = (yyvsp[(1) - (6)].strval); + (yyval.betweenPredicate)->fOperator1 = "NOT BETWEEN"; + (yyval.betweenPredicate)->fRH1ScalarExpression = (yyvsp[(4) - (6)].strval); + (yyval.betweenPredicate)->fOperator2 = "AND"; + (yyval.betweenPredicate)->fRH2ScalarExpression = (yyvsp[(6) - (6)].strval); + ;} + break; + + case 149: + + { + (yyval.betweenPredicate) = new BetweenPredicate(); + (yyval.betweenPredicate)->fLHScalarExpression = (yyvsp[(1) - (5)].strval); + (yyval.betweenPredicate)->fOperator1 = "BETWEEN"; + (yyval.betweenPredicate)->fRH1ScalarExpression = (yyvsp[(3) - (5)].strval); + (yyval.betweenPredicate)->fOperator2 = "AND"; + (yyval.betweenPredicate)->fRH2ScalarExpression = (yyvsp[(5) - (5)].strval); + ;} + break; + + case 150: + + { + (yyval.likePredicate) = new LikePredicate(); + (yyval.likePredicate)->fLHScalarExpression = (yyvsp[(1) - (5)].strval); + (yyval.likePredicate)->fOperator = "NOT LIKE"; + (yyval.likePredicate)->fAtom = (yyvsp[(4) - (5)].strval); + (yyval.likePredicate)->fOptionalEscapePtr = (yyvsp[(5) - (5)].escape); + ;} + break; + + case 151: + + { + (yyval.likePredicate) = new LikePredicate(); + (yyval.likePredicate)->fLHScalarExpression = (yyvsp[(1) - (4)].strval); + (yyval.likePredicate)->fOperator = "LIKE"; + (yyval.likePredicate)->fAtom = (yyvsp[(3) - (4)].strval); + (yyval.likePredicate)->fOptionalEscapePtr = (yyvsp[(4) - (4)].escape); + ;} + break; + + case 152: + + { (yyval.escape) = NULL; ;} + break; + + case 153: + + { + (yyval.escape) = new Escape(); + (yyval.escape)->fEscapeChar = (yyvsp[(2) - (2)].strval); + ;} + break; + + case 154: + + { + (yyval.nullTestPredicate) = new NullTestPredicate(); + (yyval.nullTestPredicate)->fOperator = "IS NOT NULL"; + (yyval.nullTestPredicate)->fColumnRef = (yyvsp[(1) - (4)].strval); + ;} + break; + + case 155: + + { + (yyval.nullTestPredicate) = new NullTestPredicate(); + (yyval.nullTestPredicate)->fOperator = "IS NULL"; + (yyval.nullTestPredicate)->fColumnRef = (yyvsp[(1) - (3)].strval); + ;} + break; + + case 156: + + { + (yyval.inPredicate) = new InPredicate(); + (yyval.inPredicate)->fScalarExpression = (yyvsp[(1) - (6)].strval); + (yyval.inPredicate)->fOperator = "NOT IN"; + (yyval.inPredicate)->fSubQuerySpecPtr = (yyvsp[(5) - (6)].querySpec); + ;} + break; + + case 157: + + { + (yyval.inPredicate) = new InPredicate(); + (yyval.inPredicate)->fScalarExpression = (yyvsp[(1) - (5)].strval); + (yyval.inPredicate)->fOperator = "IN"; + (yyval.inPredicate)->fSubQuerySpecPtr = (yyvsp[(4) - (5)].querySpec); + ;} + break; + + case 158: + + { + (yyval.inPredicate) = new InPredicate(); + (yyval.inPredicate)->fScalarExpression = (yyvsp[(1) - (6)].strval); + (yyval.inPredicate)->fOperator = "NOT IN"; + (yyval.inPredicate)->fAtomList = *(yyvsp[(5) - (6)].atomList); + delete (yyvsp[(5) - (6)].atomList); + ;} + break; + + case 159: + + { + (yyval.inPredicate) = new InPredicate(); + (yyval.inPredicate)->fScalarExpression = (yyvsp[(1) - (5)].strval); + (yyval.inPredicate)->fOperator = "IN"; + (yyval.inPredicate)->fAtomList = *(yyvsp[(4) - (5)].atomList); + delete (yyvsp[(4) - (5)].atomList); + ;} + break; + + case 160: + + { + (yyval.atomList) = new AtomList(); + (yyval.atomList)->push_back((yyvsp[(1) - (1)].strval)); + ;} + break; + + case 161: + + { + (yyval.atomList) = (yyvsp[(1) - (3)].atomList); + (yyval.atomList)->push_back((yyvsp[(3) - (3)].strval)); + ;} + break; + + case 162: + + { + (yyval.allOrAnyPredicate) = new AllOrAnyPredicate(); + (yyval.allOrAnyPredicate)->fScalarExpression = (yyvsp[(1) - (4)].strval); + (yyval.allOrAnyPredicate)->fOperator = (yyvsp[(2) - (4)].strval); + (yyval.allOrAnyPredicate)->fAnyAllSome = (yyvsp[(3) - (4)].strval); + (yyval.allOrAnyPredicate)->fSubQuerySpecPtr = (yyvsp[(4) - (4)].querySpec); + + ;} + break; + + case 166: + + { + (yyval.existPredicate) = new ExistanceTestPredicate(); + (yyval.existPredicate)->fSubQuerySpecPtr = (yyvsp[(2) - (2)].querySpec); + ;} + break; + + case 167: + + { + (yyval.querySpec) = new QuerySpec(); + if (NULL != (yyvsp[(3) - (6)].strval)) + (yyval.querySpec)->fOptionAllOrDistinct = (yyvsp[(3) - (6)].strval); + (yyval.querySpec)->fSelectFilterPtr = (yyvsp[(4) - (6)].selectFilter); + (yyval.querySpec)->fTableExpressionPtr = (yyvsp[(5) - (6)].tableExpression); + ;} + break; + + case 168: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += " + "; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 169: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += " - "; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 170: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += " * "; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 171: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += " / "; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 172: + + { + std::string str = "+ "; + str += (yyvsp[(2) - (2)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 173: + + { + std::string str = "- "; + str += (yyvsp[(2) - (2)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 177: + + { (yyval.strval) = (yyvsp[(2) - (3)].strval); ;} + break; + + case 178: + + { + (yyval.colNameList) = new ColumnNameList; + (yyval.colNameList)->push_back((yyvsp[(1) - (1)].strval)); + + ;} + break; + + case 179: + + { + (yyval.colNameList) = (yyvsp[(1) - (3)].colNameList); + (yyval.colNameList)->push_back((yyvsp[(3) - (3)].strval)); + ;} + break; + + case 184: + + { + std::string str = (yyvsp[(1) - (2)].strval); + str += " "; + str += (yyvsp[(2) - (2)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 185: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += " "; + str += (yyvsp[(2) - (3)].strval); + str += " "; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 186: + + { + std::string str = (yyvsp[(1) - (4)].strval); + str += "("; + str += "*"; + str += ")"; + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 187: + + { + std::string str = (yyvsp[(1) - (5)].strval); + str += "("; + str += (yyvsp[(3) - (5)].strval); + str += " "; + str += (yyvsp[(4) - (5)].strval); + str += ")"; + (yyval.strval) = copy_string(str.c_str()); + + ;} + break; + + case 188: + + { + std::string str = (yyvsp[(1) - (5)].strval); + str += "("; + str += (yyvsp[(3) - (5)].strval); + str += " "; + str += (yyvsp[(4) - (5)].strval); + str += ")"; + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 189: + + { + std::string str = (yyvsp[(1) - (4)].strval); + str += "("; + str += (yyvsp[(3) - (4)].strval); + str += ")"; + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 194: + + {(yyval.tblName) = new TableName((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval));;} + break; + + case 195: + + { + if (default_schema.size()) + (yyval.tblName) = new TableName((char*)default_schema.c_str(), (yyvsp[(1) - (1)].strval)); + else + (yyval.tblName) = new TableName((yyvsp[(1) - (1)].strval)); + ;} + break; + + case 197: + + { + std::string str = (yyvsp[(1) - (3)].strval); + str += "."; + str += (yyvsp[(3) - (3)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 198: + + { + std::string str = (yyvsp[(1) - (5)].strval); + str += "."; + str += (yyvsp[(3) - (5)].strval); + str += "."; + str += (yyvsp[(5) - (5)].strval); + (yyval.strval) = copy_string(str.c_str()); + ;} + break; + + case 218: + + { (yyval.sqlStmt) = NULL; ;} + break; + + case 219: + + { (yyval.sqlStmt) = NULL; ;} + break; + + + + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +using namespace dmlpackage; + +namespace dmlpackage +{ + +void grammar_init(ParseTree *_parseTree, bool debug) +{ + parseTree = _parseTree; + + if(debug) + yydebug = 1; +} + +void free_copybuffer() +{ + + unsigned int i; + for(i = 0; i < copy_buffer.size(); i++) + { + if (copy_buffer[i]) + free(copy_buffer[i]); + } + copy_buffer.clear(); +} + +char* copy_string(const char *str) +{ + char* nv = strdup(str); + if (nv) + copy_buffer.push_back(nv); + + return nv; +} + +void set_defaultSchema(std::string schema) +{ + default_schema = schema; +} + +} + diff --git a/dbcon/dmlpackage/dml-gram.h b/dbcon/dmlpackage/dml-gram.h new file mode 100644 index 000000000..4f5110954 --- /dev/null +++ b/dbcon/dmlpackage/dml-gram.h @@ -0,0 +1,182 @@ + +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NAME = 258, + STRING = 259, + INTNUM = 260, + APPROXNUM = 261, + SELECT = 262, + ALL = 263, + DISTINCT = 264, + NULLX = 265, + USER = 266, + INDICATOR = 267, + AMMSC = 268, + PARAMETER = 269, + ANY = 270, + SOME = 271, + OR = 272, + AND = 273, + NOT = 274, + COMPARISON = 275, + UMINUS = 276, + AS = 277, + ASC = 278, + AUTHORIZATION = 279, + BETWEEN = 280, + BY = 281, + CHARACTER = 282, + CHECK = 283, + CLOSE = 284, + COMMIT = 285, + CONTINUE = 286, + CREATE = 287, + CURRENT = 288, + CURSOR = 289, + IDB_DECIMAL = 290, + DECLARE = 291, + DEFAULT = 292, + DELETE = 293, + DESC = 294, + IDB_DOUBLE = 295, + ESCAPE = 296, + EXISTS = 297, + FETCH = 298, + IDB_FLOAT = 299, + FOR = 300, + FOREIGN = 301, + FOUND = 302, + FROM = 303, + GOTO = 304, + GRANT = 305, + IDB_GROUP = 306, + HAVING = 307, + IN = 308, + INSERT = 309, + INTEGER = 310, + INTO = 311, + IS = 312, + KEY = 313, + LANGUAGE = 314, + LIKE = 315, + NUMERIC = 316, + OF = 317, + ON = 318, + OPEN = 319, + OPTION = 320, + ORDER = 321, + PRECISION = 322, + PRIMARY = 323, + PRIVILEGES = 324, + PROCEDURE = 325, + PUBLIC = 326, + REAL = 327, + REFERENCES = 328, + ROLLBACK = 329, + SCHEMA = 330, + SET = 331, + SMALLINT = 332, + SQLCODE = 333, + SQLERROR = 334, + TABLE = 335, + TO = 336, + UNION = 337, + UNIQUE = 338, + UPDATE = 339, + VALUES = 340, + VIEW = 341, + WHENEVER = 342, + WHERE = 343, + WITH = 344, + WORK = 345 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + int intval; + double floatval; + char *strval; + int subtok; + dmlpackage::SqlStatementList *sqlStmtList; + dmlpackage::SqlStatement *sqlStmt; + dmlpackage::TableName* tblName; + dmlpackage::ColumnNameList* colNameList; + dmlpackage::ValuesOrQuery* valsOrQuery; + dmlpackage::ValuesList* valsList; + dmlpackage::QuerySpec* querySpec; + dmlpackage::TableNameList* tableNameList; + dmlpackage::TableExpression* tableExpression; + dmlpackage::WhereClause* whereClause; + dmlpackage::SearchCondition* searchCondition; + dmlpackage::ExistanceTestPredicate* existPredicate; + dmlpackage::AllOrAnyPredicate* allOrAnyPredicate; + dmlpackage::InPredicate* inPredicate; + dmlpackage::NullTestPredicate* nullTestPredicate; + dmlpackage::LikePredicate* likePredicate; + dmlpackage::BetweenPredicate* betweenPredicate; + dmlpackage::ComparisonPredicate* comparisonPredicate; + dmlpackage::Predicate* predicate; + dmlpackage::FromClause* fromClause; + dmlpackage::SelectFilter* selectFilter; + dmlpackage::GroupByClause* groupByClause; + dmlpackage::HavingClause* havingClause; + dmlpackage::Escape* escape; + dmlpackage::AtomList* atomList; + dmlpackage::ColumnAssignment* colAssignment; + dmlpackage::ColumnAssignmentList* colAssignmentList; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + +extern YYSTYPE dmllval; + + diff --git a/dbcon/execplan/tdriver-sm.cpp b/dbcon/execplan/tdriver-sm.cpp index 817d41a77..14307f3ee 100644 --- a/dbcon/execplan/tdriver-sm.cpp +++ b/dbcon/execplan/tdriver-sm.cpp @@ -148,7 +148,7 @@ public: void destroySemaphores() { key_t semkey; - char* semseed = "/usr/local/MariaDB/Columnstore/etc/Calpont.xml"; + char* semseed = "/usr/local/mariadb/columnstore/etc/Calpont.xml"; int sems, err; // semkey = ftok(semseed, 0x2149bdd2); // these things must match in the SM constructor @@ -166,7 +166,7 @@ public: void destroyShmseg() { key_t shmkey; - char* shmseed = "/usr/local/MariaDB/Columnstore/etc/Calpont.xml"; + char* shmseed = "/usr/local/mariadb/columnstore/etc/Calpont.xml"; int shms, err; // shmkey = ftok(shmseed, 0x2149bdd2); // these things much match in the SM constructor diff --git a/dbcon/execplan/tdriver.cpp b/dbcon/execplan/tdriver.cpp index b9da4e6ff..a0d4481d4 100644 --- a/dbcon/execplan/tdriver.cpp +++ b/dbcon/execplan/tdriver.cpp @@ -1082,7 +1082,7 @@ public: int oid, oidBase; // fake out the objmgr... - setenv("CALPONT_CONFIG_FILE", "/usr/local/MariaDB/Columnstore/etc/Calpont.xml", 1); + setenv("CALPONT_CONFIG_FILE", "/usr/local/mariadb/columnstore/etc/Calpont.xml", 1); Config* cf = Config::makeConfig(); cf->setConfig("OIDManager", "OIDBitmapFile", "./oidbitmap"); diff --git a/dbcon/joblist/fdtests.pl b/dbcon/joblist/fdtests.pl index 8455718b4..382d4caa7 100755 --- a/dbcon/joblist/fdtests.pl +++ b/dbcon/joblist/fdtests.pl @@ -6,7 +6,7 @@ use DBI; use DBD::mysql; $databasename='calpont'; -$cnffile='/usr/local/MariaDB/Columnstore/mysql/my.cnf'; +$cnffile='/usr/local/mariadb/columnstore/mysql/my.cnf'; $data_source = 'DBI:mysql:database=' . $databasename . ':mysql_read_default_file=' . $cnffile . ''; $username = 'root'; diff --git a/dbcon/joblist/largehashjoin.cpp b/dbcon/joblist/largehashjoin.cpp index ddab57450..0129d6600 100644 --- a/dbcon/joblist/largehashjoin.cpp +++ b/dbcon/joblist/largehashjoin.cpp @@ -42,7 +42,7 @@ namespace void logDiskIoInfo(uint64_t stepId, const AnyDataListSPtr& spdl) { boost::mutex::scoped_lock lk(fileLock_g); - ofstream umDiskIoFile("/var/log/Columnstore/trace/umdiskio.log", ios_base::app); + ofstream umDiskIoFile("/var/log/mariadb/columnstore/trace/umdiskio.log", ios_base::app); CalpontSystemCatalog::OID oid; uint64_t maxBuckets = 0; @@ -106,7 +106,7 @@ void logDiskIoInfo(uint64_t stepId, const AnyDataListSPtr& spdl) // move the current file to bak when size above .5 G, so total log is 1 G if (curPos > 0x20000000) { - (void)system("/bin/mv /var/log/Columnstore/trace/umdiskio.log /var/log/Columnstore/trace/umdiskio.bak"); + (void)system("/bin/mv /var/log/mariadb/columnstore/trace/umdiskio.log /var/log/mariadb/columnstore/trace/umdiskio.bak"); } } diff --git a/dbcon/joblist/tdriver-agg.cpp b/dbcon/joblist/tdriver-agg.cpp index 7b3778b9f..59f8890c1 100644 --- a/dbcon/joblist/tdriver-agg.cpp +++ b/dbcon/joblist/tdriver-agg.cpp @@ -65,7 +65,7 @@ const uint32_t MAX_SIZE = 0x100000; const uint32_t MAX_ELEMENTS = 0x20000; const uint32_t NUM_THREADS = 4; const string datapath="/home/zzhu/genii/tools/dbbuilder/lineitem.tbl"; -//const string datapath="/usr/local/MariaDB/Columnstore/bin/lineitem.tbl"; +//const string datapath="/usr/local/mariadb/columnstore/bin/lineitem.tbl"; int numConsumers = 1; int numRuns = 1; int printInterval = numRuns * 100000; diff --git a/dbcon/mysql/dumpcat.pl b/dbcon/mysql/dumpcat.pl index 1a4641102..9e63bc1c6 100755 --- a/dbcon/mysql/dumpcat.pl +++ b/dbcon/mysql/dumpcat.pl @@ -5,7 +5,7 @@ use DBI; use DBD::mysql; -$data_source = 'DBI:mysql:database=calpontsys:mysql_read_default_file=/usr/local/MariaDB/Columnstore/mysql/my.cnf'; +$data_source = 'DBI:mysql:database=calpontsys:mysql_read_default_file=/usr/local/mariadb/columnstore/mysql/my.cnf'; $username = 'root'; $auth = ''; %attr = (); diff --git a/dbcon/mysql/install_calpont_mysql.sh b/dbcon/mysql/install_calpont_mysql.sh index 44b3a6d9e..b8e152654 100755 --- a/dbcon/mysql/install_calpont_mysql.sh +++ b/dbcon/mysql/install_calpont_mysql.sh @@ -4,14 +4,14 @@ # prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore rpmmode=install pwprompt=" " for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--rpmmode='` -eq 10 ]; then rpmmode="`echo $arg | awk -F= '{print $2}'`" elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then diff --git a/dbcon/mysql/my.cnf b/dbcon/mysql/my.cnf index 243c774cc..ed9f5fe19 100644 --- a/dbcon/mysql/my.cnf +++ b/dbcon/mysql/my.cnf @@ -20,15 +20,15 @@ [client] #password = your_password port = 3306 -socket = /usr/local/MariaDB/Columnstore/mysql/lib/mysql/mysql.sock +socket = /usr/local/mariadb/columnstore/mysql/lib/mysql/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 -socket = /usr/local/MariaDB/Columnstore/mysql/lib/mysql/mysql.sock -datadir = /usr/local/MariaDB/Columnstore/mysql/db +socket = /usr/local/mariadb/columnstore/mysql/lib/mysql/mysql.sock +datadir = /usr/local/mariadb/columnstore/mysql/db skip-external-locking key_buffer_size = 512M max_allowed_packet = 1M @@ -62,10 +62,10 @@ infinidb_um_mem_limit=0 infinidb_use_import_for_batchinsert=1 infinidb_import_for_batchinsert_delimiter=7 -basedir = /usr/local/MariaDB/Columnstore/mysql/ -character-sets-dir = /usr/local/MariaDB/Columnstore/mysql/share/mysql/charsets/ -language = /usr/local/MariaDB/Columnstore/mysql/share/mysql/english/ -plugin_dir = /usr/local/MariaDB/Columnstore/mysql/lib64/mysql/plugin +basedir = /usr/local/mariadb/columnstore/mysql/ +character-sets-dir = /usr/local/mariadb/columnstore/mysql/share/mysql/charsets/ +language = /usr/local/mariadb/columnstore/mysql/share/mysql/english/ +plugin_dir = /usr/local/mariadb/columnstore/mysql/lib64/mysql/plugin # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. @@ -134,20 +134,20 @@ slave-skip-errors=all #master-port = # # binary logging - not required for slaves, but recommended -log-bin=/usr/local/MariaDB/Columnstore/mysql/db/mysql-bin -relay-log=/usr/local/MariaDB/Columnstore/mysql/db/relay-bin -relay-log-index = /usr/local/MariaDB/Columnstore/mysql/db/relay-bin.index -relay-log-info-file = /usr/local/MariaDB/Columnstore/mysql/db/relay-bin.info +log-bin=/usr/local/mariadb/columnstore/mysql/db/mysql-bin +relay-log=/usr/local/mariadb/columnstore/mysql/db/relay-bin +relay-log-index = /usr/local/mariadb/columnstore/mysql/db/relay-bin.index +relay-log-info-file = /usr/local/mariadb/columnstore/mysql/db/relay-bin.info # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname # Uncomment the following if you are using InnoDB tables -#innodb_data_home_dir = /usr/local/MariaDB/Columnstore/mysql/lib/mysql/ +#innodb_data_home_dir = /usr/local/mariadb/columnstore/mysql/lib/mysql/ #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend -#innodb_log_group_home_dir = /usr/local/MariaDB/Columnstore/mysql/lib/mysql/ -#innodb_log_arch_dir = /usr/local/MariaDB/Columnstore/mysql/lib/mysql/ +#innodb_log_group_home_dir = /usr/local/mariadb/columnstore/mysql/lib/mysql/ +#innodb_log_arch_dir = /usr/local/mariadb/columnstore/mysql/lib/mysql/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 384M diff --git a/dbcon/mysql/mysql-Columnstore b/dbcon/mysql/mysql-Columnstore index fda4f41aa..0fa46869c 100755 --- a/dbcon/mysql/mysql-Columnstore +++ b/dbcon/mysql/mysql-Columnstore @@ -25,7 +25,7 @@ # Description: MySQL is a very fast and reliable SQL database engine. ### END INIT INFO -# If you install MySQL on some other places than /usr/local/MariaDB/Columnstore/mysql, then you +# If you install MySQL on some other places than /usr/local/mariadb/columnstore/mysql, then you # have to do one of the following things for this script to work: # # - Run this script from within the MySQL installation directory @@ -43,8 +43,8 @@ # If you change base dir, you must also change datadir. These may get # overwritten by settings in the MySQL configuration files. -basedir=/usr/local/MariaDB/Columnstore/mysql -datadir=/usr/local/MariaDB/Columnstore/mysql/db +basedir=/usr/local/mariadb/columnstore/mysql +datadir=/usr/local/mariadb/columnstore/mysql/db # Default value, in seconds, afterwhich the script should timeout waiting # for server start. @@ -63,7 +63,7 @@ lock_file_path="$lockdir/mysql-Columnstore" mysqld_pid_file_path= if test -z "$basedir" then - basedir=/usr/local/MariaDB/Columnstore/mysql + basedir=/usr/local/mariadb/columnstore/mysql bindir=/usr/local/bin if test -z "$datadir" then @@ -260,7 +260,7 @@ wait_for_ready () { i=0 while test $i -ne $service_startup_timeout ; do - if $bindir/mysqladmin ping --socket=/usr/local/MariaDB/Columnstore/mysql/lib/mysql/mysql.sock >/dev/null 2>&1; then + if $bindir/mysqladmin ping --socket=/usr/local/mariadb/columnstore/mysql/lib/mysql/mysql.sock >/dev/null 2>&1; then log_success_msg return 0 elif kill -0 $! 2>/dev/null ; then diff --git a/dbcon/mysql/schemaSync.pl b/dbcon/mysql/schemaSync.pl index f10705a4b..29b4d8ef4 100755 --- a/dbcon/mysql/schemaSync.pl +++ b/dbcon/mysql/schemaSync.pl @@ -7,7 +7,7 @@ use DBD::mysql; $| = 1; -$cfgfile='/usr/local/MariaDB/Columnstore/mysql/my.cnf'; +$cfgfile='/usr/local/mariadb/columnstore/mysql/my.cnf'; $username = 'root'; $auth = ''; diff --git a/ddlproc/Makefile b/ddlproc/Makefile index f28803fb5..42af3e828 100755 --- a/ddlproc/Makefile +++ b/ddlproc/Makefile @@ -21,7 +21,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lthreadpool $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lthreadpool $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/decomsvr/Makefile b/decomsvr/Makefile index bf33b51e1..78b78a074 100755 --- a/decomsvr/Makefile +++ b/decomsvr/Makefile @@ -23,7 +23,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) -lboost_idb -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib -lrt +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) -lboost_idb -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib -lrt .PHONY: install clean test docs coverage leakcheck diff --git a/dmlproc/Makefile b/dmlproc/Makefile index c061b757a..318d18f05 100755 --- a/dmlproc/Makefile +++ b/dmlproc/Makefile @@ -24,7 +24,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lthreadpool -lddlcleanuputil -lbatchloader $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lthreadpool -lddlcleanuputil -lbatchloader $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/exemgr/Makefile b/exemgr/Makefile index 92682c5a4..a18d9c546 100755 --- a/exemgr/Makefile +++ b/exemgr/Makefile @@ -23,7 +23,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) -lcacheutils -lthreadpool $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) -lcacheutils -lthreadpool $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib .PHONY: install clean test docs FORCE coverage leakcheck diff --git a/libtool b/libtool index e25377724..fcbad1a09 100755 --- a/libtool +++ b/libtool @@ -331,7 +331,7 @@ link_all_deplibs=unknown sys_lib_search_path_spec=`echo "/lib64 /usr/lib64 /usr/local/lib64" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` # Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib64/ctapi /usr/local/MariaDB/Columnstore/lib /usr/local/MariaDB/Columnstore/mysql/lib/mysql hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib/vmware-tools/lib32/libvmGuestLib.so /usr/lib/vmware-tools/lib64/libvmGuestLib.so /usr/lib/vmware-tools/lib32/libvmGuestLibJava.so /usr/lib/vmware-tools/lib64/libvmGuestLibJava.so /usr/lib/vmware-tools/lib32/libDeployPkg.so /usr/lib/vmware-tools/lib64/libDeployPkg.so /usr/lib64/xulrunner " +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib64/ctapi /usr/local/mariadb/columnstore/lib /usr/local/mariadb/columnstore/mysql/lib/mysql hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib/vmware-tools/lib32/libvmGuestLib.so /usr/lib/vmware-tools/lib64/libvmGuestLib.so /usr/lib/vmware-tools/lib32/libvmGuestLibJava.so /usr/lib/vmware-tools/lib64/libvmGuestLibJava.so /usr/lib/vmware-tools/lib32/libDeployPkg.so /usr/lib/vmware-tools/lib64/libDeployPkg.so /usr/lib64/xulrunner " # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" @@ -7550,7 +7550,7 @@ link_all_deplibs=unknown sys_lib_search_path_spec=`echo "/lib64 /usr/lib64 /usr/local/lib64" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` # Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib64/ctapi /usr/local/MariaDB/Columnstore/lib /usr/local/MariaDB/Columnstore/mysql/lib/mysql hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib/vmware-tools/lib32/libvmGuestLib.so /usr/lib/vmware-tools/lib64/libvmGuestLib.so /usr/lib/vmware-tools/lib32/libvmGuestLibJava.so /usr/lib/vmware-tools/lib64/libvmGuestLibJava.so /usr/lib/vmware-tools/lib32/libDeployPkg.so /usr/lib/vmware-tools/lib64/libDeployPkg.so /usr/lib64/xulrunner " +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib64/ctapi /usr/local/mariadb/columnstore/lib /usr/local/mariadb/columnstore/mysql/lib/mysql hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg hwcap 1 nosegneg /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib/vmware-tools/lib32/libvmGuestLib.so /usr/lib/vmware-tools/lib64/libvmGuestLib.so /usr/lib/vmware-tools/lib32/libvmGuestLibJava.so /usr/lib/vmware-tools/lib64/libvmGuestLibJava.so /usr/lib/vmware-tools/lib32/libDeployPkg.so /usr/lib/vmware-tools/lib64/libDeployPkg.so /usr/lib64/xulrunner " # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" diff --git a/net-snmp/net-snmp-5.2.1.2/CalpontConfigure.sh b/net-snmp/net-snmp-5.2.1.2/CalpontConfigure.sh index 2f27d474d..efbeb1625 100755 --- a/net-snmp/net-snmp-5.2.1.2/CalpontConfigure.sh +++ b/net-snmp/net-snmp-5.2.1.2/CalpontConfigure.sh @@ -4,7 +4,7 @@ # # configures and installs net-snmp modules that we need -prefix=/usr/local/MariaDB/Columnstore +prefix=/usr/local/mariadb/columnstore for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" diff --git a/oam/cloud/IDBCloudGetIP.sh b/oam/cloud/IDBCloudGetIP.sh index 9d9003d31..bca6d41f0 100644 --- a/oam/cloud/IDBCloudGetIP.sh +++ b/oam/cloud/IDBCloudGetIP.sh @@ -9,23 +9,23 @@ prefix=/usr/local #get instance name from called instanceName="$1" -ec2=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_HOME` +ec2=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_HOME` if [ $ec2 == "unassigned" ]; then echo "stopped" exit 1 fi -java=`$prefix/MariaDB/Columnstore/bin/getConfig Installation JAVA_HOME` -path=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_PATH` +java=`$prefix/mariadb/columnstore/bin/getConfig Installation JAVA_HOME` +path=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_PATH` export PATH=$path export EC2_HOME=$ec2 export JAVA_HOME=$java # get x509 Certification and Private Key -x509Cert=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonX509Certificate` -x509PriKey=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonX509PrivateKey` +x509Cert=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonX509Certificate` +x509PriKey=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonX509PrivateKey` #get instance info ec2-describe-instances -C $x509Cert -K $x509PriKey $instanceName > /tmp/instanceInfo 2> /dev/null diff --git a/oam/cloud/IDBInstanceCmds.sh b/oam/cloud/IDBInstanceCmds.sh index 47a75295a..51e446092 100644 --- a/oam/cloud/IDBInstanceCmds.sh +++ b/oam/cloud/IDBInstanceCmds.sh @@ -88,9 +88,9 @@ if [ "$1" = "deassignElasticIP" ]; then fi -test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions +test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions -ec2=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_HOME` +ec2=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_HOME` if [ $ec2 == "unassigned" ]; then if [ "$1" = "getPrivateIP" ]; then @@ -102,21 +102,21 @@ if [ $ec2 == "unassigned" ]; then fi fi -java=`$prefix/MariaDB/Columnstore/bin/getConfig Installation JAVA_HOME` -path=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_PATH` +java=`$prefix/mariadb/columnstore/bin/getConfig Installation JAVA_HOME` +path=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_PATH` export PATH=$path export EC2_HOME=$ec2 export JAVA_HOME=$java # get Keys and region -AmazonAccessKeyFile=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonAccessKey` +AmazonAccessKeyFile=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonAccessKey` if [ $AmazonAccessKeyFile == "unassigned" ]; then echo "FAILED: missing Config Setting AmazonAccessKey : $AmazonAccessKeyfile" exit 1 fi -AmazonSecretKeyFile=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonSecretKey` +AmazonSecretKeyFile=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonSecretKey` if [ $AmazonSecretKeyFile == "unassigned" ]; then echo "FAILED: missing Config Setting AmazonSecretKeyFile : $AmazonSecretKeyFile" exit 1 @@ -125,8 +125,8 @@ fi AmazonAccessKey=`cat $AmazonAccessKeyFile` AmazonSecretKey=`cat $AmazonSecretKeyFile` -Region=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonRegion` -subnet=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonSubNetID` +Region=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonRegion` +subnet=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonSubNetID` if test ! -f $AmazonAccessKeyfile ; then echo "FAILED: missing AmazonAccessKeyfile : $AmazonAccessKeyfile" @@ -193,7 +193,7 @@ getInstancePrivate() { getZone() { #get from Calpont.xml if it's there, if not, get from instance then store - zone=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonZone` + zone=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonZone` if [ "$zone" = "unassigned" ] || [ "$zone" = "" ]; then #get local Instance ID @@ -213,7 +213,7 @@ getZone() { fi zone=`cat $describeInstanceFile | grep -m 1 $instance | awk '{gsub(/^[ \t]+|[ \t]+$/,"");print $11}'` fi - $prefix/MariaDB/Columnstore/bin/setConfig Installation AmazonZone $zone + $prefix/mariadb/columnstore/bin/setConfig Installation AmazonZone $zone fi echo $zone diff --git a/oam/cloud/IDBVolumeCmds.sh b/oam/cloud/IDBVolumeCmds.sh index ff7bf1a3f..3d64007b1 100644 --- a/oam/cloud/IDBVolumeCmds.sh +++ b/oam/cloud/IDBVolumeCmds.sh @@ -93,30 +93,30 @@ if [ "$1" = "createTag" ]; then fi -test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions +test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions -ec2=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_HOME` +ec2=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_HOME` if [ $ec2 == "unassigned" ]; then STATUS="unknown" RETVAL=1 fi -java=`$prefix/MariaDB/Columnstore/bin/getConfig Installation JAVA_HOME` -path=`$prefix/MariaDB/Columnstore/bin/getConfig Installation EC2_PATH` +java=`$prefix/mariadb/columnstore/bin/getConfig Installation JAVA_HOME` +path=`$prefix/mariadb/columnstore/bin/getConfig Installation EC2_PATH` export PATH=$path export EC2_HOME=$ec2 export JAVA_HOME=$java # get Keys and region -AmazonAccessKeyFile=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonAccessKey` +AmazonAccessKeyFile=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonAccessKey` if [ $AmazonAccessKeyFile == "unassigned" ]; then echo "FAILED: missing Config Setting AmazonAccessKey : $AmazonAccessKeyfile" exit 1 fi -AmazonSecretKeyFile=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonSecretKey` +AmazonSecretKeyFile=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonSecretKey` if [ $AmazonSecretKeyFile == "unassigned" ]; then echo "FAILED: missing Config Setting AmazonSecretKeyFile : $AmazonSecretKeyFile" exit 1 @@ -135,7 +135,7 @@ if test ! -f $AmazonSecretKeyfile ; then exit 1 fi -Region=`$prefix/MariaDB/Columnstore/bin/getConfig Installation AmazonRegion` +Region=`$prefix/mariadb/columnstore/bin/getConfig Installation AmazonRegion` checkInfostatus() { @@ -189,21 +189,21 @@ checkInfostatus() { createvolume() { # get zone - zone=`$prefix/MariaDB/Columnstore/bin/IDBInstanceCmds.sh getZone` + zone=`$prefix/mariadb/columnstore/bin/IDBInstanceCmds.sh getZone` if [ $moduleType == "um" ]; then # get type - volumeType=`$prefix/MariaDB/Columnstore/bin/getConfig Installation UMVolumeType` + volumeType=`$prefix/mariadb/columnstore/bin/getConfig Installation UMVolumeType` if [ $volumeType == "io1" ]; then # get IOPS - volumeIOPS=`$prefix/MariaDB/Columnstore/bin/getConfig Installation UMVolumeIOPS` + volumeIOPS=`$prefix/mariadb/columnstore/bin/getConfig Installation UMVolumeIOPS` fi else # pm # get type - volumeType=`$prefix/MariaDB/Columnstore/bin/getConfig Installation PMVolumeType` + volumeType=`$prefix/mariadb/columnstore/bin/getConfig Installation PMVolumeType` if [ $volumeType == "io1" ]; then # get IOPS - volumeIOPS=`$prefix/MariaDB/Columnstore/bin/getConfig Installation PMVolumeIOPS` + volumeIOPS=`$prefix/mariadb/columnstore/bin/getConfig Installation PMVolumeIOPS` fi fi @@ -246,7 +246,7 @@ detachvolume() { ((retries++)) sleep 1 done - test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions + test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions cplogger -w 100 "detachvolume failed: $STATUS" echo "failed" exit 1 @@ -257,7 +257,7 @@ detachvolume() { exit 0 fi - test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions + test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions cplogger -w 100 "detachvolume failed status: $STATUS" echo $STATUS exit 1 @@ -281,7 +281,7 @@ attachvolume() { ((retries++)) sleep 1 done - test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions + test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions cplogger -w 100 "attachvolume failed: $STATUS" echo "failed" exit 1 @@ -292,7 +292,7 @@ attachvolume() { exit 0 fi - test -f /usr/local/MariaDB/Columnstore/post/functions && . /usr/local/MariaDB/Columnstore/post/functions + test -f /usr/local/mariadb/columnstore/post/functions && . /usr/local/mariadb/columnstore/post/functions cplogger -w 100 "attachvolume failed: $STATUS" echo $STATUS exit 1 diff --git a/oam/etc/ProcessConfig.xml b/oam/etc/ProcessConfig.xml index 9557db4b2..1a83d6910 100644 --- a/oam/etc/ProcessConfig.xml +++ b/oam/etc/ProcessConfig.xml @@ -34,7 +34,7 @@ $INSTALLDIR/etc/snmptrapd.conf -C -Lf - /var/log/Columnstore/snmptrapd.log + /var/log/mariadb/columnstore/snmptrapd.log -p /var/run/snmptrapd.pid 1 diff --git a/oam/etc/ProcessConfig.xml.singleserver b/oam/etc/ProcessConfig.xml.singleserver index e9a36bd10..92d8048e4 100644 --- a/oam/etc/ProcessConfig.xml.singleserver +++ b/oam/etc/ProcessConfig.xml.singleserver @@ -4,7 +4,7 @@ ProcessMonitor ChildExtOAMModule - /usr/local/MariaDB/Columnstore/bin/ProcMon + /usr/local/mariadb/columnstore/bin/ProcMon 0 1 @@ -14,7 +14,7 @@ ProcessManager ParentOAMModule - /usr/local/MariaDB/Columnstore/bin/ProcMgr + /usr/local/mariadb/columnstore/bin/ProcMgr 1 2 @@ -24,17 +24,17 @@ SNMPTrapDaemon ParentOAMModule - /usr/local/MariaDB/Columnstore/sbin/snmptrapd - /usr/local/MariaDB/Columnstore/sbin/snmptrapd + /usr/local/mariadb/columnstore/sbin/snmptrapd + /usr/local/mariadb/columnstore/sbin/snmptrapd -M - /usr/local/MariaDB/Columnstore/share/snmp/mibs + /usr/local/mariadb/columnstore/share/snmp/mibs -m - /usr/local/MariaDB/Columnstore/share/snmp/mibs/CALPONT-MIB.txt + /usr/local/mariadb/columnstore/share/snmp/mibs/CALPONT-MIB.txt -c - /usr/local/MariaDB/Columnstore/etc/snmptrapd.conf + /usr/local/mariadb/columnstore/etc/snmptrapd.conf -C -Lf - /usr/local/MariaDB/Columnstore/snmptrapd.log + /usr/local/mariadb/columnstore/snmptrapd.log -p /var/run/snmptrapd.pid 1 @@ -47,8 +47,8 @@ DBRMControllerNode ParentOAMModule - /usr/local/MariaDB/Columnstore/bin/controllernode - /usr/local/MariaDB/Columnstore/bin/controllernode + /usr/local/mariadb/columnstore/bin/controllernode + /usr/local/mariadb/columnstore/bin/controllernode fg 2 4 @@ -60,13 +60,13 @@ SNMPAgent ChildOAMModule - /usr/local/MariaDB/Columnstore/sbin/snmpd - /usr/local/MariaDB/Columnstore/sbin/snmpd + /usr/local/mariadb/columnstore/sbin/snmpd + /usr/local/mariadb/columnstore/sbin/snmpd -c - /usr/local/MariaDB/Columnstore/etc/snmpd.conf + /usr/local/mariadb/columnstore/etc/snmpd.conf -C -Lf - /usr/local/MariaDB/Columnstore/snmpd.log + /usr/local/mariadb/columnstore/snmpd.log -p /var/run/snmpd.pid 0 @@ -78,8 +78,8 @@ ServerMonitor ChildOAMModule - /usr/local/MariaDB/Columnstore/bin/ServerMonitor - /usr/local/MariaDB/Columnstore/bin/ServerMonitor + /usr/local/mariadb/columnstore/bin/ServerMonitor + /usr/local/mariadb/columnstore/bin/ServerMonitor 2 6 @@ -89,8 +89,8 @@ DBRMWorkerNode ChildExtOAMModule - /usr/local/MariaDB/Columnstore/bin/workernode - /usr/local/MariaDB/Columnstore/bin/workernode + /usr/local/mariadb/columnstore/bin/workernode + /usr/local/mariadb/columnstore/bin/workernode DBRM_Worker fg 2 @@ -102,7 +102,7 @@ DecomSvr pm - /usr/local/MariaDB/Columnstore/bin/DecomSvr + /usr/local/mariadb/columnstore/bin/DecomSvr 2 15 @@ -112,7 +112,7 @@ PrimProc pm - /usr/local/MariaDB/Columnstore/bin/PrimProc + /usr/local/mariadb/columnstore/bin/PrimProc 2 20 @@ -122,7 +122,7 @@ ExeMgr pm - /usr/local/MariaDB/Columnstore/bin/ExeMgr + /usr/local/mariadb/columnstore/bin/ExeMgr 2 30 PrimProc @@ -133,7 +133,7 @@ WriteEngineServer pm - /usr/local/MariaDB/Columnstore/bin/WriteEngineServer + /usr/local/mariadb/columnstore/bin/WriteEngineServer 2 40 LOADSHARE @@ -172,7 +172,7 @@ mysqld pm - /usr/local/MariaDB/Columnstore/mysql/libexe/mysqld + /usr/local/mariadb/columnstore/mysql/libexe/mysqld 0 100 diff --git a/oam/install_scripts/binary_installer.sh b/oam/install_scripts/binary_installer.sh index e7155a74a..51c1f116d 100644 --- a/oam/install_scripts/binary_installer.sh +++ b/oam/install_scripts/binary_installer.sh @@ -24,7 +24,7 @@ set PKGTYPE "binary" set SERVERTYPE [lindex $argv 6] set MYSQLPORT [lindex $argv 7] set DEBUG [lindex $argv 8] -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" set IDIR [lindex $argv 9] if { $IDIR != "" } { set INSTALLDIR $IDIR diff --git a/oam/install_scripts/calpontAlias b/oam/install_scripts/calpontAlias index 61a9afe77..ffc4a4756 100644 --- a/oam/install_scripts/calpontAlias +++ b/oam/install_scripts/calpontAlias @@ -3,11 +3,11 @@ alias mcsmysql='/usr/local/Calpont/mysql/bin/mysql --defaults-file=/usr/local/Calpont/mysql/my.cnf -u root' alias ma=/usr/local/Calpont/bin/mcsadmin alias mcsadmin=/usr/local/Calpont/bin/mcsadmin -alias home='cd /usr/local/MariaDB/Columnstore' -alias log='cd /var/log/Columnstore/' -alias core='cd /var/log/Columnstore/corefiles' +alias home='cd /usr/local/mariadb/columnstore' +alias log='cd /var/log/mariadb/columnstore/' +alias core='cd /var/log/mariadb/columnstore/corefiles' alias tmsg='tail -f /var/log/messages' -alias tdebug='tail -f /var/log/Columnstore/debug.log' -alias tinfo='tail -f /var/log/Columnstore/info.log' +alias tdebug='tail -f /var/log/mariadb/columnstore/debug.log' +alias tinfo='tail -f /var/log/mariadb/columnstore/info.log' alias dbrm='cd /usr/local/Calpont/data1/systemFiles/dbrm' alias module='cat /usr/local/Calpont/local/module' diff --git a/oam/install_scripts/calpontInstall.sh b/oam/install_scripts/calpontInstall.sh index 60474f042..487866519 100755 --- a/oam/install_scripts/calpontInstall.sh +++ b/oam/install_scripts/calpontInstall.sh @@ -13,7 +13,7 @@ set PACKAGE " " set CONFIGFILE " " set DEBUG 0 set NODEPS "-h" -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" spawn -noecho /bin/bash diff --git a/oam/install_scripts/calpontLogRotate b/oam/install_scripts/calpontLogRotate index 780d9743d..193d8f6b6 100644 --- a/oam/install_scripts/calpontLogRotate +++ b/oam/install_scripts/calpontLogRotate @@ -3,21 +3,21 @@ # as part of the RPM installation # -/var/log/Columnstore/*.log { +/var/log/mariadb/columnstore/*.log { missingok rotate 7 daily dateext copytruncate - olddir /var/log/Columnstore/archive + olddir /var/log/mariadb/columnstore/archive } -/var/log/Columnstore/*.log1 { +/var/log/mariadb/columnstore/*.log1 { missingok rotate 7 daily nocreate compress - olddir /var/log/Columnstore/archive + olddir /var/log/mariadb/columnstore/archive } /usr/local/Calpont/etc/Calpont.xml { daily diff --git a/oam/install_scripts/calpontSyslog b/oam/install_scripts/calpontSyslog index dab3c966b..3efd0c101 100644 --- a/oam/install_scripts/calpontSyslog +++ b/oam/install_scripts/calpontSyslog @@ -1,7 +1,7 @@ # Calpont Database Platform Logging -local1.=crit -/var/log/Columnstore/crit.log -local1.=err -/var/log/Columnstore/err.log -local1.=warning -/var/log/Columnstore/warning.log -local1.=info -/var/log/Columnstore/info.log -local1.=debug -/var/log/Columnstore/debug.log -local2.=crit -/var/log/Columnstore/data/data_mods.log +local1.=crit -/var/log/mariadb/columnstore/crit.log +local1.=err -/var/log/mariadb/columnstore/err.log +local1.=warning -/var/log/mariadb/columnstore/warning.log +local1.=info -/var/log/mariadb/columnstore/info.log +local1.=debug -/var/log/mariadb/columnstore/debug.log +local2.=crit -/var/log/mariadb/columnstore/data/data_mods.log diff --git a/oam/install_scripts/calpontSyslog-ng b/oam/install_scripts/calpontSyslog-ng index 8dead4b04..b4b80e1c5 100755 --- a/oam/install_scripts/calpontSyslog-ng +++ b/oam/install_scripts/calpontSyslog-ng @@ -21,27 +21,27 @@ filter f_local1debug { facility(local1) and level(debug); }; filter f_local2crit { facility(local2) and level(crit); }; destination d_crit{ - file("/var/log/Columnstore/crit.log"); + file("/var/log/mariadb/columnstore/crit.log"); }; destination d_err{ - file("/var/log/Columnstore/err.log"); + file("/var/log/mariadb/columnstore/err.log"); }; destination d_warning{ - file("/var/log/Columnstore/warning.log"); + file("/var/log/mariadb/columnstore/warning.log"); }; destination d_info{ - file("/var/log/Columnstore/info.log"); + file("/var/log/mariadb/columnstore/info.log"); }; destination d_debug{ - file("/var/log/Columnstore/debug.log"); + file("/var/log/mariadb/columnstore/debug.log"); }; destination d_data_mods{ - file("/var/log/Columnstore/data/data_mods.log"); + file("/var/log/mariadb/columnstore/data/data_mods.log"); }; log{ diff --git a/oam/install_scripts/calpontSyslog7 b/oam/install_scripts/calpontSyslog7 index 70938eaa8..5274b5b42 100644 --- a/oam/install_scripts/calpontSyslog7 +++ b/oam/install_scripts/calpontSyslog7 @@ -1,8 +1,8 @@ # MariaDB Columnstore Database Platform Logging -local1.crit -/var/log/Columnstore/crit.log -local1.err -/var/log/Columnstore/err.log -local1.warning -/var/log/Columnstore/warning.log -local1.info -/var/log/Columnstore/info.log -local1.debug -/var/log/Columnstore/debug.log -local2.crit -/var/log/Columnstore/data/data_mods.log +local1.crit -/var/log/mariadb/columnstore/crit.log +local1.err -/var/log/mariadb/columnstore/err.log +local1.warning -/var/log/mariadb/columnstore/warning.log +local1.info -/var/log/mariadb/columnstore/info.log +local1.debug -/var/log/mariadb/columnstore/debug.log +local2.crit -/var/log/mariadb/columnstore/data/data_mods.log diff --git a/oam/install_scripts/calpontUninstall.sh b/oam/install_scripts/calpontUninstall.sh index 59c285a72..c7f3b7054 100755 --- a/oam/install_scripts/calpontUninstall.sh +++ b/oam/install_scripts/calpontUninstall.sh @@ -4,7 +4,7 @@ # # Uninstall Package from system -set INFINIDB_INSTALL_DIR "/usr/local/MariaDB/Columnstore" +set INFINIDB_INSTALL_DIR "/usr/local/mariadb/columnstore" set env(INFINIDB_INSTALL_DIR) $INFINIDB_INSTALL_DIR set USERNAME $env(USER) diff --git a/oam/install_scripts/columnstore b/oam/install_scripts/columnstore index 5de5b6d3d..6f45dac2b 100644 --- a/oam/install_scripts/columnstore +++ b/oam/install_scripts/columnstore @@ -27,14 +27,14 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR InstallDir=$INFINIDB_INSTALL_DIR -if [ $InstallDir != "/usr/local/MariaDB/Columnstore" ]; then +if [ $InstallDir != "/usr/local/mariadb/columnstore" ]; then export PATH=$InstallDir/bin:$InstallDir/mysql/bin:/bin:/usr/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$InstallDir/lib:$InstallDir/mysql/lib/mysql fi @@ -107,7 +107,7 @@ start() { #columnstore core files $SUDO ulimit -c unlimited > /dev/null 2>&1 $SUDO sysctl -q -w kernel.core_uses_pid=1 > /dev/null 2>&1 - $SUDO sysctl -q -w kernel.core_pattern=/var/log/Columnstore/corefiles/core.%e.%p > /dev/null 2>&1 + $SUDO sysctl -q -w kernel.core_pattern=/var/log/mariadb/columnstore/corefiles/core.%e.%p > /dev/null 2>&1 fi RETVAL=0 diff --git a/oam/install_scripts/columnstore.conf b/oam/install_scripts/columnstore.conf index 38a817015..fb47efa80 100644 --- a/oam/install_scripts/columnstore.conf +++ b/oam/install_scripts/columnstore.conf @@ -1,2 +1,2 @@ -/usr/local/MariaDB/Columnstore/lib +/usr/local/mariadb/columnstore/lib diff --git a/oam/install_scripts/columnstore.def b/oam/install_scripts/columnstore.def index 28ec0512a..6e073b76d 100644 --- a/oam/install_scripts/columnstore.def +++ b/oam/install_scripts/columnstore.def @@ -2,7 +2,7 @@ # Copy this file to /etc/default and rename it to 'columnstore'. # Change this line to your InfiniDB installation directory -INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore +INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore LD_LIBRARY_PATH=$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/install_scripts/columnstore.upstart b/oam/install_scripts/columnstore.upstart index 1a0767584..b3068395c 100644 --- a/oam/install_scripts/columnstore.upstart +++ b/oam/install_scripts/columnstore.upstart @@ -12,5 +12,5 @@ stop on runlevel 5 stop on runlevel 6 respawn -exec /usr/local/MariaDB/Columnstore/bin/ProcMon +exec /usr/local/mariadb/columnstore/bin/ProcMon diff --git a/oam/install_scripts/columnstoreAlias b/oam/install_scripts/columnstoreAlias index b794b6d26..2cf611819 100644 --- a/oam/install_scripts/columnstoreAlias +++ b/oam/install_scripts/columnstoreAlias @@ -1,13 +1,13 @@ # MariaDB Columnstore Alias Commands # -alias mcsmysql='/usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -u root' -alias ma=/usr/local/MariaDB/Columnstore/bin/mcsadmin -alias mcsadmin=/usr/local/MariaDB/Columnstore/bin/mcsadmin -alias home='cd /usr/local/MariaDB/Columnstore' -alias log='cd /var/log/Columnstore/' -alias core='cd /var/log/Columnstore/corefiles' +alias mcsmysql='/usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -u root' +alias ma=/usr/local/mariadb/columnstore/bin/mcsadmin +alias mcsadmin=/usr/local/mariadb/columnstore/bin/mcsadmin +alias home='cd /usr/local/mariadb/columnstore' +alias log='cd /var/log/mariadb/columnstore/' +alias core='cd /var/log/mariadb/columnstore/corefiles' alias tmsg='tail -f /var/log/messages' -alias tdebug='tail -f /var/log/Columnstore/debug.log' -alias tinfo='tail -f /var/log/Columnstore/info.log' -alias dbrm='cd /usr/local/MariaDB/Columnstore/data1/systemFiles/dbrm' -alias module='cat /usr/local/MariaDB/Columnstore/local/module' +alias tdebug='tail -f /var/log/mariadb/columnstore/debug.log' +alias tinfo='tail -f /var/log/mariadb/columnstore/info.log' +alias dbrm='cd /usr/local/mariadb/columnstore/data1/systemFiles/dbrm' +alias module='cat /usr/local/mariadb/columnstore/local/module' diff --git a/oam/install_scripts/columnstoreInstall.sh b/oam/install_scripts/columnstoreInstall.sh index 60474f042..487866519 100755 --- a/oam/install_scripts/columnstoreInstall.sh +++ b/oam/install_scripts/columnstoreInstall.sh @@ -13,7 +13,7 @@ set PACKAGE " " set CONFIGFILE " " set DEBUG 0 set NODEPS "-h" -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" spawn -noecho /bin/bash diff --git a/oam/install_scripts/columnstoreLogRotate b/oam/install_scripts/columnstoreLogRotate index 781b2da6c..dbce1f98b 100644 --- a/oam/install_scripts/columnstoreLogRotate +++ b/oam/install_scripts/columnstoreLogRotate @@ -3,33 +3,33 @@ # as part of the RPM installation # -/var/log/Columnstore/*.log { +/var/log/mariadb/columnstore/*.log { missingok rotate 7 daily dateext copytruncate - olddir /var/log/Columnstore/archive + olddir /var/log/mariadb/columnstore/archive } -/var/log/Columnstore/*.log1 { +/var/log/mariadb/columnstore/*.log1 { missingok rotate 7 daily nocreate compress - olddir /var/log/Columnstore/archive + olddir /var/log/mariadb/columnstore/archive } -/usr/local/MariaDB/Columnstore/etc/Calpont.xml { +/usr/local/mariadb/columnstore/etc/Calpont.xml { daily dateext copy - olddir /usr/local/MariaDB/Columnstore/etc/ + olddir /usr/local/mariadb/columnstore/etc/ } -/usr/local/MariaDB/Columnstore/mysql/db/*.err { +/usr/local/mariadb/columnstore/mysql/db/*.err { missingok rotate 7 daily dateext copytruncate - olddir /usr/local/MariaDB/Columnstore/mysql/db + olddir /usr/local/mariadb/columnstore/mysql/db } diff --git a/oam/install_scripts/columnstoreSyslog b/oam/install_scripts/columnstoreSyslog index c618c7e76..e9adb7706 100644 --- a/oam/install_scripts/columnstoreSyslog +++ b/oam/install_scripts/columnstoreSyslog @@ -1,7 +1,7 @@ # MariaDB Columnstore Database Platform Logging -local1.=crit -/var/log/Columnstore/crit.log -local1.=err -/var/log/Columnstore/err.log -local1.=warning -/var/log/Columnstore/warning.log -local1.=info -/var/log/Columnstore/info.log -local1.=debug -/var/log/Columnstore/debug.log -local2.=crit -/var/log/Columnstore/data/data_mods.log +local1.=crit -/var/log/mariadb/columnstore/crit.log +local1.=err -/var/log/mariadb/columnstore/err.log +local1.=warning -/var/log/mariadb/columnstore/warning.log +local1.=info -/var/log/mariadb/columnstore/info.log +local1.=debug -/var/log/mariadb/columnstore/debug.log +local2.=crit -/var/log/mariadb/columnstore/data/data_mods.log diff --git a/oam/install_scripts/columnstoreSyslog-ng b/oam/install_scripts/columnstoreSyslog-ng index 8dead4b04..b4b80e1c5 100755 --- a/oam/install_scripts/columnstoreSyslog-ng +++ b/oam/install_scripts/columnstoreSyslog-ng @@ -21,27 +21,27 @@ filter f_local1debug { facility(local1) and level(debug); }; filter f_local2crit { facility(local2) and level(crit); }; destination d_crit{ - file("/var/log/Columnstore/crit.log"); + file("/var/log/mariadb/columnstore/crit.log"); }; destination d_err{ - file("/var/log/Columnstore/err.log"); + file("/var/log/mariadb/columnstore/err.log"); }; destination d_warning{ - file("/var/log/Columnstore/warning.log"); + file("/var/log/mariadb/columnstore/warning.log"); }; destination d_info{ - file("/var/log/Columnstore/info.log"); + file("/var/log/mariadb/columnstore/info.log"); }; destination d_debug{ - file("/var/log/Columnstore/debug.log"); + file("/var/log/mariadb/columnstore/debug.log"); }; destination d_data_mods{ - file("/var/log/Columnstore/data/data_mods.log"); + file("/var/log/mariadb/columnstore/data/data_mods.log"); }; log{ diff --git a/oam/install_scripts/columnstoreSyslog7 b/oam/install_scripts/columnstoreSyslog7 index b17a40fe2..05551200e 100644 --- a/oam/install_scripts/columnstoreSyslog7 +++ b/oam/install_scripts/columnstoreSyslog7 @@ -1,8 +1,8 @@ # MariaDb Columnstore Database Platform Logging -local1.crit -/var/log/Columnstore/crit.log -local1.err -/var/log/Columnstore/err.log -local1.warning -/var/log/Columnstore/warning.log -local1.info -/var/log/Columnstore/info.log -local1.debug -/var/log/Columnstore/debug.log -local2.crit -/var/log/Columnstore/data/data_mods.log +local1.crit -/var/log/mariadb/columnstore/crit.log +local1.err -/var/log/mariadb/columnstore/err.log +local1.warning -/var/log/mariadb/columnstore/warning.log +local1.info -/var/log/mariadb/columnstore/info.log +local1.debug -/var/log/mariadb/columnstore/debug.log +local2.crit -/var/log/mariadb/columnstore/data/data_mods.log diff --git a/oam/install_scripts/columnstoreUninstall.sh b/oam/install_scripts/columnstoreUninstall.sh index 59c285a72..c7f3b7054 100755 --- a/oam/install_scripts/columnstoreUninstall.sh +++ b/oam/install_scripts/columnstoreUninstall.sh @@ -4,7 +4,7 @@ # # Uninstall Package from system -set INFINIDB_INSTALL_DIR "/usr/local/MariaDB/Columnstore" +set INFINIDB_INSTALL_DIR "/usr/local/mariadb/columnstore" set env(INFINIDB_INSTALL_DIR) $INFINIDB_INSTALL_DIR set USERNAME $env(USER) diff --git a/oam/install_scripts/crontab b/oam/install_scripts/crontab index 2da8e662e..a840b1b2b 100644 --- a/oam/install_scripts/crontab +++ b/oam/install_scripts/crontab @@ -14,5 +14,5 @@ HOME=/ 42 4 1 * * root run-parts /etc/cron.monthly # Translation Log Archiver, default to every 10 minutes -00,10,20,30,40,50 * * * * root /usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh +00,10,20,30,40,50 * * * * root /usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh diff --git a/oam/install_scripts/director_installer.sh b/oam/install_scripts/director_installer.sh index d10bd1cbe..76e7d28f3 100755 --- a/oam/install_scripts/director_installer.sh +++ b/oam/install_scripts/director_installer.sh @@ -20,7 +20,7 @@ set CALPONTMYSQLRPM [lindex $argv 6] set CALPONTMYSQLDRPM [lindex $argv 7] set INSTALLTYPE [lindex $argv 8] set DEBUG [lindex $argv 9] -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" set IDIR [lindex $argv 10] if { $IDIR != "" } { set INSTALLDIR $IDIR diff --git a/oam/install_scripts/disable-rep-columnstore.sh b/oam/install_scripts/disable-rep-columnstore.sh index edd3fc19a..7da2c202e 100644 --- a/oam/install_scripts/disable-rep-columnstore.sh +++ b/oam/install_scripts/disable-rep-columnstore.sh @@ -18,12 +18,12 @@ checkForError() { } prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/disable-rep-infinidb.sh b/oam/install_scripts/disable-rep-infinidb.sh index edd3fc19a..7da2c202e 100644 --- a/oam/install_scripts/disable-rep-infinidb.sh +++ b/oam/install_scripts/disable-rep-infinidb.sh @@ -18,12 +18,12 @@ checkForError() { } prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/infinidb b/oam/install_scripts/infinidb index f30c4fdc6..0ac0152a8 100644 --- a/oam/install_scripts/infinidb +++ b/oam/install_scripts/infinidb @@ -107,7 +107,7 @@ start() { #infinidb core files $SUDO ulimit -c unlimited > /dev/null 2>&1 $SUDO sysctl -q -w kernel.core_uses_pid=1 > /dev/null 2>&1 - $SUDO sysctl -q -w kernel.core_pattern=/var/log/Columnstore/corefiles/core.%e.%p > /dev/null 2>&1 + $SUDO sysctl -q -w kernel.core_pattern=/var/log/mariadb/columnstore/corefiles/core.%e.%p > /dev/null 2>&1 fi RETVAL=0 diff --git a/oam/install_scripts/master-rep-columnstore.sh b/oam/install_scripts/master-rep-columnstore.sh index f6a4a5d0f..3420ac39e 100644 --- a/oam/install_scripts/master-rep-columnstore.sh +++ b/oam/install_scripts/master-rep-columnstore.sh @@ -18,12 +18,12 @@ checkForError() { } prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/master-rep-infinidb.sh b/oam/install_scripts/master-rep-infinidb.sh index f6a4a5d0f..3420ac39e 100644 --- a/oam/install_scripts/master-rep-infinidb.sh +++ b/oam/install_scripts/master-rep-infinidb.sh @@ -18,12 +18,12 @@ checkForError() { } prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/module_installer.sh b/oam/install_scripts/module_installer.sh index 001ccbe30..6ef7020c3 100755 --- a/oam/install_scripts/module_installer.sh +++ b/oam/install_scripts/module_installer.sh @@ -10,7 +10,7 @@ # prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore rpmmode=install user=$USER if [ -z "$user" ]; then @@ -22,7 +22,7 @@ shiftcnt=0 for arg in "$@"; do if [ $(expr -- "$arg" : '--prefix=') -eq 9 ]; then prefix="$(echo $arg | awk -F= '{print $2}')" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore ((shiftcnt++)) elif [ $(expr -- "$arg" : '--rpmmode=') -eq 10 ]; then rpmmode="$(echo $arg | awk -F= '{print $2}')" @@ -47,7 +47,7 @@ for arg in "$@"; do done shift $shiftcnt -if [ $installdir != "/usr/local/MariaDB/Columnstore" ]; then +if [ $installdir != "/usr/local/mariadb/columnstore" ]; then export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql fi diff --git a/oam/install_scripts/performance_installer.sh b/oam/install_scripts/performance_installer.sh index 4b0ddd089..bb968494e 100644 --- a/oam/install_scripts/performance_installer.sh +++ b/oam/install_scripts/performance_installer.sh @@ -19,7 +19,7 @@ set INSTALLTYPE [lindex $argv 4] set PKGTYPE [lindex $argv 5] set NODEPS [lindex $argv 6] set DEBUG [lindex $argv 7] -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" set IDIR [lindex $argv 8] if { $IDIR != "" } { set INSTALLDIR $IDIR diff --git a/oam/install_scripts/post-install b/oam/install_scripts/post-install index b83afea69..c7dbd537d 100755 --- a/oam/install_scripts/post-install +++ b/oam/install_scripts/post-install @@ -5,7 +5,7 @@ # Post-install steps for columnstore install prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore rpmmode=install user=$USER if [ -z "$user" ]; then @@ -16,7 +16,7 @@ quiet=0 for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--rpmmode='` -eq 10 ]; then rpmmode="`echo $arg | awk -F= '{print $2}'`" elif [ `expr -- "$arg" : '--installdir='` -eq 13 ]; then @@ -33,7 +33,7 @@ for arg in "$@"; do fi done -if [ $installdir != "/usr/local/MariaDB/Columnstore" ]; then +if [ $installdir != "/usr/local/mariadb/columnstore" ]; then export INFINIDB_INSTALL_DIR=$installdir export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib else @@ -101,14 +101,14 @@ chown -h $user.$user libjemalloc.so >/dev/null 2>&1 cd / -test -d /var/log/Columnstore || mkdir /var/log/Columnstore >/dev/null 2>&1 -test -d /var/log/Columnstore/archive || mkdir /var/log/Columnstore/archive >/dev/null 2>&1 -test -d /var/log/Columnstore/corefiles || mkdir /var/log/Columnstore/corefiles >/dev/null 2>&1 -test -d /var/log/Columnstore/trace || mkdir /var/log/Columnstore/trace >/dev/null 2>&1 -test -h /var/log/Columnstore/data && rm -f /var/log/Columnstore/data -test -d /var/log/Columnstore/data || mkdir /var/log/Columnstore/data >/dev/null 2>&1 +test -d /var/log/mariadb/columnstore || mkdir /var/log/mariadb/columnstore >/dev/null 2>&1 +test -d /var/log/mariadb/columnstore/archive || mkdir /var/log/mariadb/columnstore/archive >/dev/null 2>&1 +test -d /var/log/mariadb/columnstore/corefiles || mkdir /var/log/mariadb/columnstore/corefiles >/dev/null 2>&1 +test -d /var/log/mariadb/columnstore/trace || mkdir /var/log/mariadb/columnstore/trace >/dev/null 2>&1 +test -h /var/log/mariadb/columnstore/data && rm -f /var/log/mariadb/columnstore/data +test -d /var/log/mariadb/columnstore/data || mkdir /var/log/mariadb/columnstore/data >/dev/null 2>&1 # make sure trace dir is world-writable and sticky -chmod 1755 /var/log/Columnstore/trace >/dev/null 2>&1 +chmod 1755 /var/log/mariadb/columnstore/trace >/dev/null 2>&1 test -d $installdir/data || mkdir $installdir/data test -d $installdir/data1 || mkdir $installdir/data1 test -d $installdir/data1/systemFiles || mkdir $installdir/data1/systemFiles @@ -132,12 +132,12 @@ chmod -R 755 $installdir/data/bulk >/dev/null 2>&1 mkdir -p /tmp/columnstore_tmp_files >/dev/null 2>&1 #setup core file directory and link -mkdir /var/log/Columnstore/corefiles > /dev/null 2>&1 -chmod 755 /var/log/Columnstore/corefiles > /dev/null 2>&1 +mkdir /var/log/mariadb/columnstore/corefiles > /dev/null 2>&1 +chmod 755 /var/log/mariadb/columnstore/corefiles > /dev/null 2>&1 #create mount directories mkdir /mnt/tmp > /dev/null 2>&1 -mkdir /var/log/Columnstore/data/archive > /dev/null 2>&1 +mkdir /var/log/mariadb/columnstore/data/archive > /dev/null 2>&1 # install Calpont Log Rotate File test -d $installdir/mysql/db || mkdir -p $installdir/mysql/db @@ -169,12 +169,12 @@ else sudo $installdir/bin/syslogSetup.sh --installdir=$installdir install > /tmp/syslog_install.log 2>&1 sudo chown $user:$user $installdir/etc/Calpont.xml sudo chmod 755 /var/log - sudo chmod -R 755 /var/log/Columnstore + sudo chmod -R 755 /var/log/mariadb/columnstore sudo chmod -R 777 /dev/shm sudo rm -f /var/lock/subsys/mysql-Columnstore sudo rm -f /tmp/StopColumnstore - sed -i -e s@/usr/local/MariaDB/Columnstore@$installdir@g $installdir/bin/columnstore.def + sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstore.def sudo cp $installdir/bin/columnstore.def /etc/default/columnstore fi @@ -188,8 +188,8 @@ fi eval userhome=~$user bashFile=$userhome/.bashrc touch ${bashFile} -if [ $installdir != "/usr/local/MariaDB/Columnstore" ]; then - sed -i -e s@/usr/local/MariaDB/Columnstore@$installdir@g $installdir/bin/columnstoreAlias +if [ $installdir != "/usr/local/mariadb/columnstore" ]; then + sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstoreAlias fi egrep -qs 'MariaDB Columnstore Database Platform Alias Commands' ${bashFile} rc1=$? @@ -221,7 +221,7 @@ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 hadoop=`which hadoop 2>/dev/null` if [ -z $hadoop ]; then #check for non-root user - if [ $installdir != "/usr/local/MariaDB/Columnstore" -a $quiet -eq 0 ]; then + if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then cat <> ${syslog_conf} - chown syslog:adm /var/log/Columnstore + chown syslog:adm /var/log/mariadb/columnstore else cat ${columnstoreSyslogFile} >> ${syslog_conf} fi @@ -228,7 +228,7 @@ test -f $installdir/post/functions && . $installdir/post/functions number=$RANDOM cplogger -i 100 "InfiniDB Log Test: $number" sleep 3 -egrep -qs "InfiniDB Log Test: $number" /var/log/Columnstore/info.log +egrep -qs "InfiniDB Log Test: $number" /var/log/mariadb/columnstore/info.log if [ $? -eq 0 ]; then echo "InfiniDB System Logging working" exit 0 diff --git a/oam/install_scripts/system_installer.sh b/oam/install_scripts/system_installer.sh index aa21998ca..52186e4b1 100755 --- a/oam/install_scripts/system_installer.sh +++ b/oam/install_scripts/system_installer.sh @@ -129,7 +129,7 @@ if { $INSTALLTYPE == "initial"} { # copy over InfiniDB OS files # send_user "Copy InfiniDB OS files to Module " - send "scp /usr/local/MariaDB/Columnstore/local/etc/$MODULE/* $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/local/.\n" + send "scp /usr/local/mariadb/columnstore/local/etc/$MODULE/* $USERNAME@$SERVER:/usr/local/mariadb/columnstore/local/.\n" expect "word: " # send the password send "$PASSWORD\n" @@ -144,7 +144,7 @@ if { $INSTALLTYPE == "initial"} { # Start module installer to setup Customer OS files # send_user "Run Module Installer " - send "ssh $USERNAME@$SERVER '/usr/local/MariaDB/Columnstore/bin/module_installer.sh'\n" + send "ssh $USERNAME@$SERVER '/usr/local/mariadb/columnstore/bin/module_installer.sh'\n" expect "word: " # send the password send "$PASSWORD\n" diff --git a/oam/install_scripts/transactionLog b/oam/install_scripts/transactionLog index f1cbbf6bc..414948e94 100644 --- a/oam/install_scripts/transactionLog +++ b/oam/install_scripts/transactionLog @@ -8,5 +8,5 @@ MAILTO=root HOME=/ # Translation Log Archiver, default to every 10 minutes -*/10 * * * * root /usr/local/MariaDB/Columnstore/bin/transactionLogArchiver.sh +*/10 * * * * root /usr/local/mariadb/columnstore/bin/transactionLogArchiver.sh diff --git a/oam/install_scripts/transactionLogArchiver.sh b/oam/install_scripts/transactionLogArchiver.sh index b5f74d234..a6b534187 100755 --- a/oam/install_scripts/transactionLogArchiver.sh +++ b/oam/install_scripts/transactionLogArchiver.sh @@ -3,7 +3,7 @@ # $Id: transactionLogArchiver.sh 1375 2009-04-30 13:53:06Z rdempsey $ DATE=`date +'%s'` -CDATA=/var/log/Columnstore/data +CDATA=/var/log/mariadb/columnstore/data if [ ! -d $CDATA/archive ]; then echo "Installation error: $CDATA/archive is not a directory." 1>&2 diff --git a/oam/install_scripts/upgrade-columnstore.sh b/oam/install_scripts/upgrade-columnstore.sh index f56539873..9e54e78a5 100755 --- a/oam/install_scripts/upgrade-columnstore.sh +++ b/oam/install_scripts/upgrade-columnstore.sh @@ -25,12 +25,12 @@ if [ "x$1" != xdoupgrade ]; then fi prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/upgrade-infinidb.sh b/oam/install_scripts/upgrade-infinidb.sh index f56539873..9e54e78a5 100755 --- a/oam/install_scripts/upgrade-infinidb.sh +++ b/oam/install_scripts/upgrade-infinidb.sh @@ -25,12 +25,12 @@ if [ "x$1" != xdoupgrade ]; then fi prefix=/usr/local -installdir=$prefix/MariaDB/Columnstore +installdir=$prefix/mariadb/columnstore pwprompt= for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" - installdir=$prefix/MariaDB/Columnstore + installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--password='` -eq 11 ]; then password="`echo $arg | awk -F= '{print $2}'`" pwprompt="--password=$password" diff --git a/oam/install_scripts/user_installer.sh b/oam/install_scripts/user_installer.sh index 41841d4ec..d52499e2a 100644 --- a/oam/install_scripts/user_installer.sh +++ b/oam/install_scripts/user_installer.sh @@ -21,7 +21,7 @@ set NODEPS [lindex $argv 6] set MYSQLPW [lindex $argv 7] set MYSQLPORT [lindex $argv 8] set DEBUG [lindex $argv 9] -set INSTALLDIR "/usr/local/MariaDB/Columnstore" +set INSTALLDIR "/usr/local/mariadb/columnstore" set IDIR [lindex $argv 10] if { $IDIR != "" } { set INSTALLDIR $IDIR diff --git a/oam/oamcpp/Makefile b/oam/oamcpp/Makefile index bc730ad2a..c36f9cf00 100755 --- a/oam/oamcpp/Makefile +++ b/oam/oamcpp/Makefile @@ -14,7 +14,7 @@ LIBRARY=$(PROGRAM).$(VERSION) CPPFLAGS=-I. -I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -fpic -CLIBS=-L$(EXPORT_ROOT)/lib -loamcpp -lmessageqcpp -lloggingcpp -lconfigcpp -lxml2 -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -L/usr/local/MariaDB/Columnstore/lib -lnetsnmp -lnetsnmphelpers -lcppunit -ldl -lrpm -lrwlock -lbrm +CLIBS=-L$(EXPORT_ROOT)/lib -loamcpp -lmessageqcpp -lloggingcpp -lconfigcpp -lxml2 -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -L/usr/local/mariadb/columnstore/lib -lnetsnmp -lnetsnmphelpers -lcppunit -ldl -lrpm -lrwlock -lbrm TLIBS=-L. -loamcpp $(CLIBS) GLIBS=$(CLIBS) diff --git a/oam/oamcpp/liboamcpp.cpp b/oam/oamcpp/liboamcpp.cpp index 7f15c6c68..72456844b 100644 --- a/oam/oamcpp/liboamcpp.cpp +++ b/oam/oamcpp/liboamcpp.cpp @@ -2320,7 +2320,7 @@ namespace oam moduleName = boost::get<0>(st); } catch (...) { - //system("touch /var/log/Columnstore/test2"); + //system("touch /var/log/mariadb/columnstore/test2"); } for ( int i = 0 ; i < 5 ; i++) @@ -2342,7 +2342,7 @@ namespace oam } catch(...) { - //system("touch /var/log/Columnstore/test3"); + //system("touch /var/log/mariadb/columnstore/test3"); } sleep(1); @@ -2724,7 +2724,7 @@ namespace oam if (localModule.empty() ) { // not found - //system("touch /var/log/Columnstore/test8"); + //system("touch /var/log/mariadb/columnstore/test8"); exceptionControl("getModuleInfo", API_FAILURE); } @@ -2785,7 +2785,7 @@ namespace oam moduleName = boost::get<0>(st); } catch (...) { - //system("touch /var/log/Columnstore/test4"); + //system("touch /var/log/mariadb/columnstore/test4"); exceptionControl("getMyProcessStatus", API_FAILURE); } @@ -2826,7 +2826,7 @@ namespace oam { // shutdown connection processor.shutdown(); - //system("touch /var/log/Columnstore/test5"); + //system("touch /var/log/mariadb/columnstore/test5"); exceptionControl("getMyProcessStatus", API_FAILURE); } @@ -2838,14 +2838,14 @@ namespace oam } catch(...) { - //system("touch /var/log/Columnstore/test6"); + //system("touch /var/log/mariadb/columnstore/test6"); processor.shutdown(); exceptionControl("getMyProcessStatus", API_INVALID_PARAMETER); } } catch(...) { - //system("touch /var/log/Columnstore/test7"); + //system("touch /var/log/mariadb/columnstore/test7"); processor.shutdown(); exceptionControl("getMyProcessStatus", API_INVALID_PARAMETER); } @@ -2857,7 +2857,7 @@ namespace oam catch(...) {} } - //system("touch /var/log/Columnstore/test9"); + //system("touch /var/log/mariadb/columnstore/test9"); exceptionControl("getMyProcessStatus", API_FAILURE); return boost::make_tuple(-1, "", -1); @@ -3390,7 +3390,7 @@ namespace oam //make 1 log file made up of archive and current *.log (void)system("touch /tmp/logs"); - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = "ls " + path + logdir + "/archive | grep '" + logFileName + "' > /tmp/logfiles"; (void)system(cmd.c_str()); diff --git a/oam/oamcpp/liboamcpp.h b/oam/oamcpp/liboamcpp.h index 462f9ad07..7626dd06c 100644 --- a/oam/oamcpp/liboamcpp.h +++ b/oam/oamcpp/liboamcpp.h @@ -358,12 +358,12 @@ namespace oam */ const std::string LogFile[] = { - "local1.=crit -/var/log/Columnstore/crit.log", - "local1.=err -/var/log/Columnstore/err.log", - "local1.=warning -/var/log/Columnstore/warning.log", - "local1.=info -/var/log/Columnstore/info.log", - "local1.=debug -/var/log/Columnstore/debug.log", - "local2.=crit -/var/log/Columnstore/data/data_mods.log", + "local1.=crit -/var/log/mariadb/columnstore/crit.log", + "local1.=err -/var/log/mariadb/columnstore/err.log", + "local1.=warning -/var/log/mariadb/columnstore/warning.log", + "local1.=info -/var/log/mariadb/columnstore/info.log", + "local1.=debug -/var/log/mariadb/columnstore/debug.log", + "local2.=crit -/var/log/mariadb/columnstore/data/data_mods.log", "" }; diff --git a/oam/post/functions b/oam/post/functions index 6667e4658..2a0f88302 100755 --- a/oam/post/functions +++ b/oam/post/functions @@ -7,7 +7,7 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/post/test-001.sh b/oam/post/test-001.sh index 2e25db3ea..23ef49927 100755 --- a/oam/post/test-001.sh +++ b/oam/post/test-001.sh @@ -7,7 +7,7 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/post/test-002.sh b/oam/post/test-002.sh index 80fee3a06..bb9800a3e 100755 --- a/oam/post/test-002.sh +++ b/oam/post/test-002.sh @@ -7,7 +7,7 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/post/test-003.sh b/oam/post/test-003.sh index 8b9a986ed..32e21e8e6 100755 --- a/oam/post/test-003.sh +++ b/oam/post/test-003.sh @@ -7,7 +7,7 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/post/test-004.sh b/oam/post/test-004.sh index 048ab2cb1..ec13d5bf3 100644 --- a/oam/post/test-004.sh +++ b/oam/post/test-004.sh @@ -11,7 +11,7 @@ if [ -z "$INFINIDB_INSTALL_DIR" ]; then fi if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/oam/replaytxnlog/Makefile b/oam/replaytxnlog/Makefile index d7ae88e2f..cc757e95e 100644 --- a/oam/replaytxnlog/Makefile +++ b/oam/replaytxnlog/Makefile @@ -14,7 +14,7 @@ LIBRARY=$(PROGRAM).$(VERSION) CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -fpic -CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -loamcpp -lmessageqcpp -lloggingcpp -loamcpp -lconfigcpp -lxml2 -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -L/usr/local/MariaDB/Columnstore/lib -lnetsnmp -lnetsnmphelpers -lcppunit -ldl -lrwlock -lbrm +CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -loamcpp -lmessageqcpp -lloggingcpp -loamcpp -lconfigcpp -lxml2 -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -L/usr/local/mariadb/columnstore/lib -lnetsnmp -lnetsnmphelpers -lcppunit -ldl -lrwlock -lbrm TLIBS=-L. -loamcpp $(CLIBS) GLIBS=$(CLIBS) diff --git a/oam/replaytxnlog/replaytxnlog.cpp b/oam/replaytxnlog/replaytxnlog.cpp index 936764934..032f2eda0 100644 --- a/oam/replaytxnlog/replaytxnlog.cpp +++ b/oam/replaytxnlog/replaytxnlog.cpp @@ -349,7 +349,7 @@ list ReplayTxnLog::getLogFileNames() oam.getLogFile("pm1", "data", fullLogFileName); #else */ - fullLogFileName = "/var/log/Columnstore/data/data_mods.log"; + fullLogFileName = "/var/log/mariadb/columnstore/data/data_mods.log"; /* #endif */ diff --git a/oamapps/calpontConsole/Makefile b/oamapps/calpontConsole/Makefile index 693cf51cb..6b78730d1 100755 --- a/oamapps/calpontConsole/Makefile +++ b/oamapps/calpontConsole/Makefile @@ -27,7 +27,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-L/usr/local/lib -lcppunit -ldl GLIBS=$(CLIBS) @@ -57,7 +57,7 @@ tdriver: tdriver.o $(LINK.cpp) -o $@ $^ $(TLIBS) test: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/uiCommands.log + rm -f /var/log/mariadb/columnstore/uiCommands.log LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib ./tdriver %-gcov.o: %.cpp @@ -69,7 +69,7 @@ tdriver-gcov: calpontConsole-gcov.o $(subst .o,-gcov.o,$(OBJS)) leakcheck: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/uiCommands.log + rm -f /var/log/mariadb/columnstore/uiCommands.log LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib valgrind --tool=memcheck --leak-check=yes ./tdriver %.d: %.cpp diff --git a/oamapps/calpontConsole/calpontConsole.h b/oamapps/calpontConsole/calpontConsole.h index e313d54c0..8ea337156 100644 --- a/oamapps/calpontConsole/calpontConsole.h +++ b/oamapps/calpontConsole/calpontConsole.h @@ -57,7 +57,7 @@ const int ArgNum = 10; const int DescNumMax = 10; const int cmdNum = 68; -const std::string DEFAULT_LOG_FILE = "/var/log/Columnstore/uiCommands.log"; +const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/uiCommands.log"; std::ofstream logFile; /** diff --git a/oamapps/calpontDB/Makefile b/oamapps/calpontDB/Makefile index 7acae2b5a..14c07e097 100755 --- a/oamapps/calpontDB/Makefile +++ b/oamapps/calpontDB/Makefile @@ -17,7 +17,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall -D_DEBUG # we need to add some search paths here because on a bootstrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl diff --git a/oamapps/calpontDB/calpontDB.cpp b/oamapps/calpontDB/calpontDB.cpp index 7369f12f4..82a866d6d 100644 --- a/oamapps/calpontDB/calpontDB.cpp +++ b/oamapps/calpontDB/calpontDB.cpp @@ -103,7 +103,7 @@ int main(int argc, char **argv) { dbrm.setSystemSuspended(true); sleep(5); - string cmd = startup::StartUp::installDir() + "/bin/save_brm > /var/log/Columnstore/save_brm.log1 2>&1"; + string cmd = startup::StartUp::installDir() + "/bin/save_brm > /var/log/mariadb/columnstore/save_brm.log1 2>&1"; int rtnCode = system(cmd.c_str()); if (rtnCode == 0) { diff --git a/oamapps/calpontSupport/Makefile b/oamapps/calpontSupport/Makefile index ca5f11177..9ea351d6d 100755 --- a/oamapps/calpontSupport/Makefile +++ b/oamapps/calpontSupport/Makefile @@ -16,8 +16,8 @@ VERSION=1.0.0 CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib SRCS=calpontSupport.cpp diff --git a/oamapps/calpontSupport/alarmReport.sh b/oamapps/calpontSupport/alarmReport.sh index eabd7fe10..865ea95a4 100755 --- a/oamapps/calpontSupport/alarmReport.sh +++ b/oamapps/calpontSupport/alarmReport.sh @@ -23,12 +23,12 @@ echo " " echo "-- Today's Alarms --" echo " " -cat /var/log/Columnstore/alarm.log 2>/dev/null +cat /var/log/mariadb/columnstore/alarm.log 2>/dev/null -if test -f /var/log/Columnstore/archive/alarm.log-$DATE ; then +if test -f /var/log/mariadb/columnstore/archive/alarm.log-$DATE ; then echo "-- Archived Alarms --" echo " " - cat /var/log/Columnstore/archive/alarm.log-$DATE 2>/dev/null + cat /var/log/mariadb/columnstore/archive/alarm.log-$DATE 2>/dev/null fi } > /tmp/logReport.log diff --git a/oamapps/calpontSupport/approximateRowCount.sh b/oamapps/calpontSupport/approximateRowCount.sh index 09652fded..a1a2bfc62 100755 --- a/oamapps/calpontSupport/approximateRowCount.sh +++ b/oamapps/calpontSupport/approximateRowCount.sh @@ -9,7 +9,7 @@ # if [ -z "$MYSQLCMD" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" MYSQLCNF=$INSTALLDIR/mysql/my.cnf MYSQLCMD="$INSTALLDIR/mysql/bin/mysql --defaults-file=$MYSQLCNF -u root" fi @@ -51,7 +51,7 @@ colWidth=`$MYSQLCMD calpontsys --skip-column-names -e "$sql"` # # Use editem to count the extents. # -extentCount=`/usr/local/MariaDB/Columnstore/bin/editem -o $objectid | wc -l` +extentCount=`/usr/local/mariadb/columnstore/bin/editem -o $objectid | wc -l` let extentCount-=2 # Take out the 2 extra rows for header and blank line at end. let approximateRowCount=$extentCount*8192*1024; diff --git a/oamapps/calpontSupport/bulklogReport.sh b/oamapps/calpontSupport/bulklogReport.sh index 631c3a83c..755aa29d2 100755 --- a/oamapps/calpontSupport/bulklogReport.sh +++ b/oamapps/calpontSupport/bulklogReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/configReport.sh b/oamapps/calpontSupport/configReport.sh index 62f16e724..6b7cf3499 100755 --- a/oamapps/calpontSupport/configReport.sh +++ b/oamapps/calpontSupport/configReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/configReport.sh~ b/oamapps/calpontSupport/configReport.sh~ index 14d72a4b2..0edc77f58 100755 --- a/oamapps/calpontSupport/configReport.sh~ +++ b/oamapps/calpontSupport/configReport.sh~ @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/findStranded.sh b/oamapps/calpontSupport/findStranded.sh index 8f7314333..7f861f5a6 100755 --- a/oamapps/calpontSupport/findStranded.sh +++ b/oamapps/calpontSupport/findStranded.sh @@ -11,12 +11,12 @@ # Close enough for hand grenades. if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR -if [ $INFINIDB_INSTALL_DIR != "/usr/local/MariaDB/Columnstore" ]; then +if [ $INFINIDB_INSTALL_DIR != "/usr/local/mariadb/columnstore" ]; then export PATH=$INFINIDB_INSTALL_DIR/bin:$INFINIDB_INSTALL_DIR/mysql/bin:/bin:/usr/bin export LD_LIBRARY_PATH=$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql fi diff --git a/oamapps/calpontSupport/getMinMax.sh b/oamapps/calpontSupport/getMinMax.sh index 7c69c5fad..aab502da1 100755 --- a/oamapps/calpontSupport/getMinMax.sh +++ b/oamapps/calpontSupport/getMinMax.sh @@ -9,7 +9,7 @@ # if [ -z "$MYSQLCMD" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" MYSQLCNF=$INSTALLDIR/mysql/my.cnf MYSQLCMD="$INSTALLDIR/mysql/bin/mysql --defaults-file=$MYSQLCNF -u root" fi @@ -77,7 +77,7 @@ fi # # Use the editem utility to get the min and max value. # -/usr/local/MariaDB/Columnstore/bin/editem -o $objectid $parm | grep max | awk -v dataType=$dataType ' +/usr/local/mariadb/columnstore/bin/editem -o $objectid $parm | grep max | awk -v dataType=$dataType ' BEGIN { allValid=1; foundValidExtent=0; diff --git a/oamapps/calpontSupport/hadoopReport.sh b/oamapps/calpontSupport/hadoopReport.sh index 983ee19ef..644e696d9 100755 --- a/oamapps/calpontSupport/hadoopReport.sh +++ b/oamapps/calpontSupport/hadoopReport.sh @@ -10,7 +10,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "hdfs" ]; then diff --git a/oamapps/calpontSupport/hardwareReport.sh b/oamapps/calpontSupport/hardwareReport.sh index f2865f327..1fedeffaa 100755 --- a/oamapps/calpontSupport/hardwareReport.sh +++ b/oamapps/calpontSupport/hardwareReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/logReport.sh b/oamapps/calpontSupport/logReport.sh index f03ade048..18da759a2 100755 --- a/oamapps/calpontSupport/logReport.sh +++ b/oamapps/calpontSupport/logReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then @@ -22,6 +22,6 @@ fi $SUDO rm -f /tmp/${MODULE}_logReport.tar.gz -tar -zcf /tmp/${MODULE}_logReport.tar.gz /var/log/Columnstore > /dev/null 2>&1 +tar -zcf /tmp/${MODULE}_logReport.tar.gz /var/log/mariadb/columnstore > /dev/null 2>&1 exit 0 diff --git a/oamapps/calpontSupport/minMaxCheck.sh b/oamapps/calpontSupport/minMaxCheck.sh index e1afd9669..4aab0f31e 100755 --- a/oamapps/calpontSupport/minMaxCheck.sh +++ b/oamapps/calpontSupport/minMaxCheck.sh @@ -45,11 +45,11 @@ # if [ -z "$MYSQLCMD" ]; then - MYSQLCMD="/usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -u root" + MYSQLCMD="/usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -u root" fi if [ -z "$INSTALLDIR" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ -z "$PGMPATH" ]; then diff --git a/oamapps/calpontSupport/resourceReport.sh b/oamapps/calpontSupport/resourceReport.sh index 5bd0e0c06..5beda4a76 100755 --- a/oamapps/calpontSupport/resourceReport.sh +++ b/oamapps/calpontSupport/resourceReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/softwareReport.sh b/oamapps/calpontSupport/softwareReport.sh index 880a4e11a..81c57c715 100755 --- a/oamapps/calpontSupport/softwareReport.sh +++ b/oamapps/calpontSupport/softwareReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/calpontSupport/sqlLogs.sh b/oamapps/calpontSupport/sqlLogs.sh index 958d9cc09..67c26a951 100755 --- a/oamapps/calpontSupport/sqlLogs.sh +++ b/oamapps/calpontSupport/sqlLogs.sh @@ -7,12 +7,12 @@ DB=idb_idb_sqllogs TABLE=statements if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR -if [ $INFINIDB_INSTALL_DIR != "/usr/local/MariaDB/Columnstore" ]; then +if [ $INFINIDB_INSTALL_DIR != "/usr/local/mariadb/columnstore" ]; then export PATH=$INFINIDB_INSTALL_DIR/bin:$INFINIDB_INSTALL_DIR/mysql/bin:/bin:/usr/bin export LD_LIBRARY_PATH=$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql fi diff --git a/oamapps/columnstoreDB/Makefile b/oamapps/columnstoreDB/Makefile index 215bd6325..52bef12eb 100755 --- a/oamapps/columnstoreDB/Makefile +++ b/oamapps/columnstoreDB/Makefile @@ -17,7 +17,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall -D_DEBUG # we need to add some search paths here because on a bootstrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl diff --git a/oamapps/columnstoreDB/columnstoreDB.cpp b/oamapps/columnstoreDB/columnstoreDB.cpp index 1cb05018b..4faab87f8 100644 --- a/oamapps/columnstoreDB/columnstoreDB.cpp +++ b/oamapps/columnstoreDB/columnstoreDB.cpp @@ -103,7 +103,7 @@ int main(int argc, char **argv) { dbrm.setSystemSuspended(true); sleep(5); - string cmd = startup::StartUp::installDir() + "/bin/save_brm > /var/log/MariaDB/Columnstore/save_brm.log1 2>&1"; + string cmd = startup::StartUp::installDir() + "/bin/save_brm > /var/log/mariadb/columnstore/save_brm.log1 2>&1"; int rtnCode = system(cmd.c_str()); if (rtnCode == 0) { diff --git a/oamapps/columnstoreSupport/Makefile b/oamapps/columnstoreSupport/Makefile index e95f81ee8..fc606cd64 100755 --- a/oamapps/columnstoreSupport/Makefile +++ b/oamapps/columnstoreSupport/Makefile @@ -16,8 +16,8 @@ VERSION=1.0.0 CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib SRCS=columnstoreSupport.cpp diff --git a/oamapps/columnstoreSupport/alarmReport.sh b/oamapps/columnstoreSupport/alarmReport.sh index 66763c31b..865ea95a4 100755 --- a/oamapps/columnstoreSupport/alarmReport.sh +++ b/oamapps/columnstoreSupport/alarmReport.sh @@ -23,12 +23,12 @@ echo " " echo "-- Today's Alarms --" echo " " -cat /var/log/MariaDB/Columnstore/alarm.log 2>/dev/null +cat /var/log/mariadb/columnstore/alarm.log 2>/dev/null -if test -f /var/log/MariaDB/Columnstore/archive/alarm.log-$DATE ; then +if test -f /var/log/mariadb/columnstore/archive/alarm.log-$DATE ; then echo "-- Archived Alarms --" echo " " - cat /var/log/MariaDB/Columnstore/archive/alarm.log-$DATE 2>/dev/null + cat /var/log/mariadb/columnstore/archive/alarm.log-$DATE 2>/dev/null fi } > /tmp/logReport.log diff --git a/oamapps/columnstoreSupport/approximateRowCount.sh b/oamapps/columnstoreSupport/approximateRowCount.sh index eeb8e4414..9b5a356be 100755 --- a/oamapps/columnstoreSupport/approximateRowCount.sh +++ b/oamapps/columnstoreSupport/approximateRowCount.sh @@ -9,7 +9,7 @@ # if [ -z "$MYSQLCMD" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" MYSQLCNF=$INSTALLDIR/mysql/my.cnf MYSQLCMD="$INSTALLDIR/mysql/bin/mysql --defaults-file=$MYSQLCNF -u root" fi @@ -51,7 +51,7 @@ colWidth=`$MYSQLCMD calpontsys --skip-column-names -e "$sql"` # # Use editem to count the extents. # -extentCount=`/usr/local/MariaDB/Columnstore/bin/editem -o $objectid | wc -l` +extentCount=`/usr/local/mariadb/columnstore/bin/editem -o $objectid | wc -l` let extentCount-=2 # Take out the 2 extra rows for header and blank line at end. let approximateRowCount=$extentCount*8192*1024; diff --git a/oamapps/columnstoreSupport/bulklogReport.sh b/oamapps/columnstoreSupport/bulklogReport.sh index 631c3a83c..755aa29d2 100755 --- a/oamapps/columnstoreSupport/bulklogReport.sh +++ b/oamapps/columnstoreSupport/bulklogReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/columnstoreSupport/calpontSupport.cpp b/oamapps/columnstoreSupport/calpontSupport.cpp index 3e3559b04..c88f2c99d 100644 --- a/oamapps/columnstoreSupport/calpontSupport.cpp +++ b/oamapps/columnstoreSupport/calpontSupport.cpp @@ -301,11 +301,11 @@ void reportThread(string reporttype) system(cmd.c_str()); cmd = "echo ' ' >> " + outputFile; system(cmd.c_str()); - cmd = "echo '################# cat /etc/MariaDB/Columnstore.xml ################# ' >> " + outputFile; + cmd = "echo '################# cat /etc/mariadb/columnstore.xml ################# ' >> " + outputFile; system(cmd.c_str()); cmd = "echo ' ' >> " + outputFile; system(cmd.c_str()); - cmd = "cat " + installDir + "/etc/MariaDB/Columnstore.xml >> " + outputFile; + cmd = "cat " + installDir + "/etc/mariadb/columnstore.xml >> " + outputFile; system(cmd.c_str()); } diff --git a/oamapps/columnstoreSupport/configReport.sh b/oamapps/columnstoreSupport/configReport.sh index 93d5a409a..7acbd9ea8 100755 --- a/oamapps/columnstoreSupport/configReport.sh +++ b/oamapps/columnstoreSupport/configReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/columnstoreSupport/findStranded.sh b/oamapps/columnstoreSupport/findStranded.sh index 6bb7f1dd5..8577e06e3 100755 --- a/oamapps/columnstoreSupport/findStranded.sh +++ b/oamapps/columnstoreSupport/findStranded.sh @@ -11,12 +11,12 @@ # Close enough for hand grenades. if [ -z "$COLUMNSTORE_INSTALL_DIR" ]; then - COLUMNSTORE_INSTALL_DIR=/usr/local/MariaDB/Columnstore + COLUMNSTORE_INSTALL_DIR=/usr/local/mariadb/columnstore fi export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR -if [ $COLUMNSTORE_INSTALL_DIR != "/usr/local/MariaDB/Columnstore" ]; then +if [ $COLUMNSTORE_INSTALL_DIR != "/usr/local/mariadb/columnstore" ]; then export PATH=$COLUMNSTORE_INSTALL_DIR/bin:$COLUMNSTORE_INSTALL_DIR/mysql/bin:/bin:/usr/bin export LD_LIBRARY_PATH=$COLUMNSTORE_INSTALL_DIR/lib:$COLUMNSTORE_INSTALL_DIR/mysql/lib/mysql fi diff --git a/oamapps/columnstoreSupport/getMinMax.sh b/oamapps/columnstoreSupport/getMinMax.sh index efa149736..58faeeb3c 100755 --- a/oamapps/columnstoreSupport/getMinMax.sh +++ b/oamapps/columnstoreSupport/getMinMax.sh @@ -9,7 +9,7 @@ # if [ -z "$MYSQLCMD" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" MYSQLCNF=$INSTALLDIR/mysql/my.cnf MYSQLCMD="$INSTALLDIR/mysql/bin/mysql --defaults-file=$MYSQLCNF -u root" fi @@ -77,7 +77,7 @@ fi # # Use the editem utility to get the min and max value. # -/usr/local/MariaDB/Columnstore/bin/editem -o $objectid $parm | grep max | awk -v dataType=$dataType ' +/usr/local/mariadb/columnstore/bin/editem -o $objectid $parm | grep max | awk -v dataType=$dataType ' BEGIN { allValid=1; foundValidExtent=0; diff --git a/oamapps/columnstoreSupport/hadoopReport.sh b/oamapps/columnstoreSupport/hadoopReport.sh index 983ee19ef..644e696d9 100755 --- a/oamapps/columnstoreSupport/hadoopReport.sh +++ b/oamapps/columnstoreSupport/hadoopReport.sh @@ -10,7 +10,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "hdfs" ]; then diff --git a/oamapps/columnstoreSupport/hardwareReport.sh b/oamapps/columnstoreSupport/hardwareReport.sh index 7e3200c5b..7499687eb 100755 --- a/oamapps/columnstoreSupport/hardwareReport.sh +++ b/oamapps/columnstoreSupport/hardwareReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/columnstoreSupport/logReport.sh b/oamapps/columnstoreSupport/logReport.sh index 13a44c041..18da759a2 100755 --- a/oamapps/columnstoreSupport/logReport.sh +++ b/oamapps/columnstoreSupport/logReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then @@ -22,6 +22,6 @@ fi $SUDO rm -f /tmp/${MODULE}_logReport.tar.gz -tar -zcf /tmp/${MODULE}_logReport.tar.gz /var/log/MariaDB/Columnstore > /dev/null 2>&1 +tar -zcf /tmp/${MODULE}_logReport.tar.gz /var/log/mariadb/columnstore > /dev/null 2>&1 exit 0 diff --git a/oamapps/columnstoreSupport/minMaxCheck.sh b/oamapps/columnstoreSupport/minMaxCheck.sh index e1afd9669..4aab0f31e 100755 --- a/oamapps/columnstoreSupport/minMaxCheck.sh +++ b/oamapps/columnstoreSupport/minMaxCheck.sh @@ -45,11 +45,11 @@ # if [ -z "$MYSQLCMD" ]; then - MYSQLCMD="/usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -u root" + MYSQLCMD="/usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -u root" fi if [ -z "$INSTALLDIR" ]; then - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ -z "$PGMPATH" ]; then diff --git a/oamapps/columnstoreSupport/resourceReport.sh b/oamapps/columnstoreSupport/resourceReport.sh index 5bd0e0c06..5beda4a76 100755 --- a/oamapps/columnstoreSupport/resourceReport.sh +++ b/oamapps/columnstoreSupport/resourceReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/columnstoreSupport/softwareReport.sh b/oamapps/columnstoreSupport/softwareReport.sh index f29e05d2a..d263c514b 100755 --- a/oamapps/columnstoreSupport/softwareReport.sh +++ b/oamapps/columnstoreSupport/softwareReport.sh @@ -11,7 +11,7 @@ fi if [ $2 ] ; then INSTALLDIR=$2 else - INSTALLDIR="/usr/local/MariaDB/Columnstore" + INSTALLDIR="/usr/local/mariadb/columnstore" fi if [ $USER = "root" ]; then diff --git a/oamapps/columnstoreSupport/sqlLogs.sh b/oamapps/columnstoreSupport/sqlLogs.sh index 5cf607c04..5a06a76ea 100755 --- a/oamapps/columnstoreSupport/sqlLogs.sh +++ b/oamapps/columnstoreSupport/sqlLogs.sh @@ -7,12 +7,12 @@ DB=idb_idb_sqllogs TABLE=statements if [ -z "$COLUMNSTORE_INSTALL_DIR" ]; then - COLUMNSTORE_INSTALL_DIR=/usr/local/MariaDB/Columnstore + COLUMNSTORE_INSTALL_DIR=/usr/local/mariadb/columnstore fi export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR -if [ $COLUMNSTORE_INSTALL_DIR != "/usr/local/MariaDB/Columnstore" ]; then +if [ $COLUMNSTORE_INSTALL_DIR != "/usr/local/mariadb/columnstore" ]; then export PATH=$COLUMNSTORE_INSTALL_DIR/bin:$COLUMNSTORE_INSTALL_DIR/mysql/bin:/bin:/usr/bin export LD_LIBRARY_PATH=$COLUMNSTORE_INSTALL_DIR/lib:$COLUMNSTORE_INSTALL_DIR/mysql/lib/mysql fi diff --git a/oamapps/hardwareMonitor/Makefile b/oamapps/hardwareMonitor/Makefile index dedcd6bb7..b62d89c72 100644 --- a/oamapps/hardwareMonitor/Makefile +++ b/oamapps/hardwareMonitor/Makefile @@ -18,7 +18,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # anywhere except in ../oamcpp CLIBS=-L$(EXPORT_ROOT)/lib -lloggingcpp -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -lnetsnmp \ -lnetsnmpmibs -lnetsnmphelpers -loamcpp -lmessageqcpp -lconfigcpp -lboost_filesystem -lssl -lxml2 -ldl -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl LD_LIBRARY_PATH= diff --git a/oamapps/mcsadmin/Makefile b/oamapps/mcsadmin/Makefile index 5ffafdc64..247cd06c4 100755 --- a/oamapps/mcsadmin/Makefile +++ b/oamapps/mcsadmin/Makefile @@ -27,7 +27,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-L/usr/local/lib -lcppunit -ldl GLIBS=$(CLIBS) @@ -57,7 +57,7 @@ tdriver: tdriver.o $(LINK.cpp) -o $@ $^ $(TLIBS) test: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/uiCommands.log + rm -f /var/log/mariadb/columnstore/uiCommands.log LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib ./tdriver %-gcov.o: %.cpp @@ -69,7 +69,7 @@ tdriver-gcov: mcsadmin-gcov.o $(subst .o,-gcov.o,$(OBJS)) leakcheck: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/uiCommands.log + rm -f /var/log/mariadb/columnstore/uiCommands.log LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib valgrind --tool=memcheck --leak-check=yes ./tdriver %.d: %.cpp diff --git a/oamapps/mcsadmin/mcsadmin.h b/oamapps/mcsadmin/mcsadmin.h index 53c178da1..b5801d7f3 100644 --- a/oamapps/mcsadmin/mcsadmin.h +++ b/oamapps/mcsadmin/mcsadmin.h @@ -57,7 +57,7 @@ const int ArgNum = 10; const int DescNumMax = 10; const int cmdNum = 68; -const std::string DEFAULT_LOG_FILE = "/var/log/Columnstore/uiCommands.log"; +const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/uiCommands.log"; std::ofstream logFile; /** diff --git a/oamapps/postConfigure/Makefile b/oamapps/postConfigure/Makefile index 4276d39cf..ddc12658a 100755 --- a/oamapps/postConfigure/Makefile +++ b/oamapps/postConfigure/Makefile @@ -19,8 +19,8 @@ VERSION=1.0.0 CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl diff --git a/oamapps/postConfigure/amazonInstaller.cpp b/oamapps/postConfigure/amazonInstaller.cpp index 13391b950..ad13cfda9 100644 --- a/oamapps/postConfigure/amazonInstaller.cpp +++ b/oamapps/postConfigure/amazonInstaller.cpp @@ -113,7 +113,7 @@ string SystemSection = "SystemConfig"; string InstallSection = "Installation"; string ModuleSection = "SystemModuleConfig"; -string installDir = "/usr/local/MariaDB/Columnstore"; +string installDir = "/usr/local/mariadb/columnstore"; InstanceList uminstancelist; InstanceList pminstancelist; @@ -2750,7 +2750,7 @@ void cleanupSystem(bool terminate) if ( terminate ) { cout << endl << "***** Performing System Cleanup *****" << endl << endl; - system("umount /usr/local/MariaDB/Columnstore/data* > /dev/null 2>&1"); + system("umount /usr/local/mariadb/columnstore/data* > /dev/null 2>&1"); //run pre-uninstall string cmd = installDir + "/bin/pre-uninstall > /dev/null 2>&1"; diff --git a/oamapps/postConfigure/installer.cpp b/oamapps/postConfigure/installer.cpp index 72716e870..56600cd59 100644 --- a/oamapps/postConfigure/installer.cpp +++ b/oamapps/postConfigure/installer.cpp @@ -123,7 +123,7 @@ int main(int argc, char *argv[]) if (argc >= 13) installDir = argv[12]; else - installDir = "/usr/local/MariaDB/Columnstore"; + installDir = "/usr/local/mariadb/columnstore"; ofstream file("/dev/null"); @@ -870,7 +870,7 @@ int main(int argc, char *argv[]) else { cout << " FAILED" << endl; - cout << endl << "ERROR: MariaDB Columnstore Process failed to start, check log files in /var/log/Columnstore" << endl; + cout << endl << "ERROR: MariaDB Columnstore Process failed to start, check log files in /var/log/mariadb/columnstore" << endl; } } @@ -1112,7 +1112,7 @@ bool makeRClocal(string moduleName, int IserverTypeInstall) mount1 = "/mnt\\/tmp/"; else if ( moduleType == "pm" ) - mount1 = "/MariaDB/Columnstore\\/data/"; + mount1 = "/mariadb/columnstore\\/data/"; else return true; break; @@ -1121,7 +1121,7 @@ bool makeRClocal(string moduleName, int IserverTypeInstall) { if ( moduleType == "pm" ) { mount1 = "/mnt\\/tmp/"; - mount2 = "/MariaDB/Columnstore\\/data/"; + mount2 = "/mariadb/columnstore\\/data/"; } else return true; @@ -1133,7 +1133,7 @@ bool makeRClocal(string moduleName, int IserverTypeInstall) mount1 = "/mnt\\/tmp/"; else if ( moduleType == "pm" ) - mount1 = "/MariaDB/Columnstore\\/data/"; + mount1 = "/mariadb/columnstore\\/data/"; else return true; break; @@ -1142,7 +1142,7 @@ bool makeRClocal(string moduleName, int IserverTypeInstall) { if ( moduleType == "pm" ) { mount1 = "/mnt\\/tmp/"; - mount2 = "/MariaDB/Columnstore\\/data/"; + mount2 = "/mariadb/columnstore\\/data/"; } else return true; diff --git a/oamapps/postConfigure/patchInstaller.cpp b/oamapps/postConfigure/patchInstaller.cpp index 27956a05e..e4302b37a 100644 --- a/oamapps/postConfigure/patchInstaller.cpp +++ b/oamapps/postConfigure/patchInstaller.cpp @@ -140,7 +140,7 @@ int main(int argc, char *argv[]) if ( moduleName != parentOAMModuleName ) { //run remote patch installer script cout << endl << "----- Performing Patch installation of Module '" + moduleName + "' -----" << endl << endl; - string cmd = "/usr/local/MariaDB/Columnstore/bin/patch_installer.sh " + moduleName + " " + moduleIPAddr + " " + password + " " + patchLocation + " " + installLocation + " " + softwareFile + " " + installer_debug; + string cmd = "/usr/local/mariadb/columnstore/bin/patch_installer.sh " + moduleName + " " + moduleIPAddr + " " + password + " " + patchLocation + " " + installLocation + " " + softwareFile + " " + installer_debug; int rtnCode = system(cmd.c_str()); if (rtnCode != 0) diff --git a/oamapps/postConfigure/postConfigure.cpp b/oamapps/postConfigure/postConfigure.cpp index 00be97eea..e1023ef21 100644 --- a/oamapps/postConfigure/postConfigure.cpp +++ b/oamapps/postConfigure/postConfigure.cpp @@ -233,7 +233,7 @@ int main(int argc, char *argv[]) if (rlrc > 0) { thisexepath[rlrc] = 0; - //should look something like '/usr/local/MariaDB/Columnstore/bin/postConfigure' + //should look something like '/usr/local/mariadb/columnstore/bin/postConfigure' char* ptr; ptr = strrchr(thisexepath, '/'); if (ptr) @@ -3542,7 +3542,7 @@ int main(int argc, char *argv[]) else { cout << " FAILED" << endl; - cout << endl << "MariaDB Columnstore System failed to start, check log files in /var/log/Columnstore" << endl; + cout << endl << "MariaDB Columnstore System failed to start, check log files in /var/log/mariadb/columnstore" << endl; exit(1); } @@ -4241,7 +4241,7 @@ bool storageSetup(bool amazonInstall) { cout << " Running HDFS Sanity Test (please wait): "; cout.flush(); - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string hdfslog = logdir + "/hdfsCheck.log1"; @@ -4899,7 +4899,7 @@ bool storageSetup(bool amazonInstall) { cout << endl << " Running HDFS Sanity Test (please wait): "; cout.flush(); - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string hdfslog = logdir + "/hdfsCheck.log1"; diff --git a/oamapps/replayTransactionLog/Makefile b/oamapps/replayTransactionLog/Makefile index 4ff47ea12..d734014cd 100644 --- a/oamapps/replayTransactionLog/Makefile +++ b/oamapps/replayTransactionLog/Makefile @@ -17,7 +17,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall -D_DEBUG # we need to add some search paths here because on a bootstrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) -lreplaytxnlog $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl diff --git a/oamapps/resourceMonitor/Makefile b/oamapps/resourceMonitor/Makefile index 59b41b549..7110937ca 100644 --- a/oamapps/resourceMonitor/Makefile +++ b/oamapps/resourceMonitor/Makefile @@ -16,10 +16,10 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp -CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib -loamcpp -lmessageqcpp -lconfigcpp \ +CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib -loamcpp -lmessageqcpp -lconfigcpp \ -lxml2 -lsnmpmanager -lnetsnmpmibs -lnetsnmpagent -lnetsnmp -lnetsnmpmibs -lnetsnmphelpers \ -lboost_filesystem -lloggingcpp -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl LD_LIBRARY_PATH= @@ -60,7 +60,7 @@ tdriver-gcov: resourceMonitor-gcov.o $(subst .o,-gcov.o,$(OBJS)) coverage: tdriver-gcov # rm -f *.gcda -# rm -f /var/log/Columnstore/cpu*.log +# rm -f /var/log/mariadb/columnstore/cpu*.log # LD_LIBRARY_PATH=$(EXPORT_ROOT)/lib:/usr/local/lib ./tdriver-gcov # for file in $(SRCS); do \ # bfile=`basename $$file .cpp`; \ diff --git a/oamapps/resourceMonitor/resourceMonitor.cpp b/oamapps/resourceMonitor/resourceMonitor.cpp index 8dcc2ef2e..dbeed7c99 100644 --- a/oamapps/resourceMonitor/resourceMonitor.cpp +++ b/oamapps/resourceMonitor/resourceMonitor.cpp @@ -43,7 +43,7 @@ enum HOST_INFO IDLE }; -const string FE_MOUNT_DIR = "/var/log/Columnstore/"; // FE mount dir +const string FE_MOUNT_DIR = "/var/log/mariadb/columnstore/"; // FE mount dir const int MONITOR_FREQ = 15; // monitor frequency in sec const int LOG_FREQ = 900; // log frequency in sec const int DEBUG = false; diff --git a/oamapps/sendtrap/Makefile b/oamapps/sendtrap/Makefile index bd95f6cf1..ee2e3e38a 100755 --- a/oamapps/sendtrap/Makefile +++ b/oamapps/sendtrap/Makefile @@ -16,8 +16,8 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp -CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl @@ -46,8 +46,8 @@ tdriver: tdriver.o $(LINK.cpp) -o $@ $^ $(TLIBS) test: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib ./sendtrap processAlarm < ./test.txt %-gcov.o: %.cpp @@ -59,8 +59,8 @@ tdriver-gcov: sendtrap-gcov.o $(subst .o,-gcov.o,$(OBJS)) coverage: tdriver-gcov rm -f *.gcda - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=$(EXPORT_ROOT)/lib:/usr/local/lib ./tdriver-gcov processAlarm < ./test.txt for file in $(SRCS); do \ bfile=`basename $$file .cpp`; \ @@ -69,8 +69,8 @@ coverage: tdriver-gcov /usr/local/bin/genCoverage.pl $(SRCS) leakcheck: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib valgrind --tool=memcheck --leak-check=yes ./tdriver %.d: %.cpp diff --git a/oamapps/serverMonitor/Makefile b/oamapps/serverMonitor/Makefile index 181161f68..154df0d56 100755 --- a/oamapps/serverMonitor/Makefile +++ b/oamapps/serverMonitor/Makefile @@ -17,7 +17,7 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp CLIBS=-L$(EXPORT_ROOT)/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl diff --git a/oamapps/serverMonitor/cpuMonitor.cpp b/oamapps/serverMonitor/cpuMonitor.cpp index 95d17e19e..627111cb9 100644 --- a/oamapps/serverMonitor/cpuMonitor.cpp +++ b/oamapps/serverMonitor/cpuMonitor.cpp @@ -39,7 +39,7 @@ pthread_mutex_t CPU_LOCK; * constants define */ -const std::string FE_MOUNT_DIR = "/var/log/Columnstore/"; // FE mount dir +const std::string FE_MOUNT_DIR = "/var/log/mariadb/columnstore/"; // FE mount dir const int MONITOR_FREQ = 5; // monitor frequency in sec const int LOG_FREQ = 900; // log frequency in sec const int RESOURCE_DEBUG = false; diff --git a/oamapps/serverMonitor/dbhealthMonitor.cpp b/oamapps/serverMonitor/dbhealthMonitor.cpp index e78d8dcbf..0bbc2d81c 100644 --- a/oamapps/serverMonitor/dbhealthMonitor.cpp +++ b/oamapps/serverMonitor/dbhealthMonitor.cpp @@ -160,11 +160,11 @@ int ServerMonitor::healthCheck(bool action) ACK_FLAG ackTemp = ACK_YES; //run Health script - string cmd = startup::StartUp::installDir() + "/bin/dbhealth.sh > /var/log/Columnstore/dbfunctional.log1 2>&1"; + string cmd = startup::StartUp::installDir() + "/bin/dbhealth.sh > /var/log/mariadb/columnstore/dbfunctional.log1 2>&1"; system(cmd.c_str()); - if (!oam.checkLogStatus("/var/log/Columnstore/dbfunctional.log1", "OK")) { - if (oam.checkLogStatus("/var/log/Columnstore/dbfunctional.log1", "ERROR 1045") ) { + if (!oam.checkLogStatus("/var/log/mariadb/columnstore/dbfunctional.log1", "OK")) { + if (oam.checkLogStatus("/var/log/mariadb/columnstore/dbfunctional.log1", "ERROR 1045") ) { LoggingID lid(SERVER_MONITOR_LOG_ID); MessageLog ml(lid); Message msg; diff --git a/oamapps/serverMonitor/diskMonitor.cpp b/oamapps/serverMonitor/diskMonitor.cpp index 2a751aa87..c51d79236 100644 --- a/oamapps/serverMonitor/diskMonitor.cpp +++ b/oamapps/serverMonitor/diskMonitor.cpp @@ -222,7 +222,7 @@ void diskMonitor() string fileName; // check local if ( deviceName == "/") { - fileName = deviceName + "usr/local/MariaDB/Columnstore/releasenum"; + fileName = deviceName + "usr/local/mariadb/columnstore/releasenum"; } else { diff --git a/oamapps/serverMonitor/msgProcessor.cpp b/oamapps/serverMonitor/msgProcessor.cpp index 61c16bc8e..b5267628a 100644 --- a/oamapps/serverMonitor/msgProcessor.cpp +++ b/oamapps/serverMonitor/msgProcessor.cpp @@ -348,7 +348,7 @@ void msgProcessor() time_t moduleStartTime = 0; time_t queryStartTime = 0; - string fileName = "/var/log/Columnstore/debug.log"; + string fileName = "/var/log/mariadb/columnstore/debug.log"; try { // Get ServerMonitor start time. We don't report any SQL that started before then. diff --git a/oamapps/sessionWalker/Makefile b/oamapps/sessionWalker/Makefile index a58f819ed..42c692995 100755 --- a/oamapps/sessionWalker/Makefile +++ b/oamapps/sessionWalker/Makefile @@ -16,12 +16,12 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp -CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_WRITE_LIBS) +CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_WRITE_LIBS) TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl OAMLIBS=-loamcpp -lsnmpmanager -lnetsnmp \ -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -LDFLAGS+=$(CLIBS) $(OAMLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=$(CLIBS) $(OAMLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib SRCS=sessionwalker.cpp LINCLUDES= diff --git a/oamapps/traphandler/Makefile b/oamapps/traphandler/Makefile index b52991d6a..1a0876754 100755 --- a/oamapps/traphandler/Makefile +++ b/oamapps/traphandler/Makefile @@ -16,8 +16,8 @@ CXXFLAGS+=$(DEBUG_FLAGS) -Wall # we need to add some search paths here because on a boostrap build we won't find liboamcpp # anywhere except in ../oamcpp -CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L../oamcpp -L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS=-lcppunit -ldl GLIBS=$(CLIBS) -lcppunit -ldl @@ -46,8 +46,8 @@ tdriver: tdriver.o $(LINK.cpp) -o $@ $^ $(TLIBS) test: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib ./trapHandler processAlarm < ./test.txt %-gcov.o: %.cpp @@ -59,8 +59,8 @@ tdriver-gcov: trapHandler-gcov.o $(subst .o,-gcov.o,$(OBJS)) coverage: tdriver-gcov rm -f *.gcda - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=$(EXPORT_ROOT)/lib:/usr/local/lib ./tdriver-gcov processAlarm < ./test.txt for file in $(SRCS); do \ bfile=`basename $$file .cpp`; \ @@ -69,8 +69,8 @@ coverage: tdriver-gcov /usr/local/bin/genCoverage.pl $(SRCS) leakcheck: $(LIBRARY) tdriver - rm -f /var/log/Columnstore/activeAlarms - rm -f /var/log/Columnstore/alarm.log + rm -f /var/log/mariadb/columnstore/activeAlarms + rm -f /var/log/mariadb/columnstore/alarm.log # LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib:/usr/local/lib valgrind --tool=memcheck --leak-check=yes ./tdriver %.d: %.cpp diff --git a/primitives/blockcache/blockrequestprocessor.cpp b/primitives/blockcache/blockrequestprocessor.cpp index c06d1752e..e4abffca0 100644 --- a/primitives/blockcache/blockrequestprocessor.cpp +++ b/primitives/blockcache/blockrequestprocessor.cpp @@ -67,7 +67,7 @@ BlockRequestProcessor::BlockRequestProcessor(uint32_t numBlcks, #ifdef _MSC_VER brpLogFileName << "C:/Calpont/log/trace/brp." << tid; #else - brpLogFileName << "/var/log/Columnstore/trace/brp." << tid; + brpLogFileName << "/var/log/mariadb/columnstore/trace/brp." << tid; #endif fLogFile.open(brpLogFileName.str().c_str(), ios_base::app | ios_base::ate); } diff --git a/primitives/blockcache/filebuffermgr.cpp b/primitives/blockcache/filebuffermgr.cpp index df2698672..15d3fa185 100644 --- a/primitives/blockcache/filebuffermgr.cpp +++ b/primitives/blockcache/filebuffermgr.cpp @@ -71,7 +71,7 @@ FileBufferMgr::FileBufferMgr(const uint32_t numBlcks, const uint32_t blkSz, cons #ifdef _MSC_VER fLog.open("C:/Calpont/log/trace/bc", ios_base::app | ios_base::ate); #else - fLog.open("/var/log/Columnstore/trace/bc", ios_base::app | ios_base::ate); + fLog.open("/var/log/mariadb/columnstore/trace/bc", ios_base::app | ios_base::ate); #endif } diff --git a/primitives/blockcache/iomanager.cpp b/primitives/blockcache/iomanager.cpp index 3a200fda5..dc0a9a267 100644 --- a/primitives/blockcache/iomanager.cpp +++ b/primitives/blockcache/iomanager.cpp @@ -489,7 +489,7 @@ void* thr_popper(ioManager *arg) { iomLogFileName << "C:/Calpont/log/trace/iom." << threadId; #else threadId=pthread_self(); - iomLogFileName << "/var/log/Columnstore/trace/iom." << threadId; + iomLogFileName << "/var/log/mariadb/columnstore/trace/iom." << threadId; #endif lFile.open(iomLogFileName.str().c_str(), ios_base::app | ios_base::ate); } @@ -1293,7 +1293,7 @@ ioManager::ioManager(FileBufferMgr& fbm, #ifdef _MSC_VER FDTraceFile().open("C:/Calpont/log/trace/fdcache", ios_base::ate | ios_base::app); #else - FDTraceFile().open("/var/log/Columnstore/trace/fdcache", ios_base::ate | ios_base::app); + FDTraceFile().open("/var/log/mariadb/columnstore/trace/fdcache", ios_base::ate | ios_base::app); #endif } diff --git a/primitives/blockcache/stats.cpp b/primitives/blockcache/stats.cpp index 25385d9a8..e2a291345 100644 --- a/primitives/blockcache/stats.cpp +++ b/primitives/blockcache/stats.cpp @@ -104,7 +104,7 @@ public: #ifdef _MSC_VER oss << "C:/Calpont/log/trace/" << outName << '.' << sessionID; #else - oss << "/var/log/Columnstore/trace/" << outName << '.' << sessionID; + oss << "/var/log/mariadb/columnstore/trace/" << outName << '.' << sessionID; #endif oFile.reset(new ofstream()); oFile->open(oss.str().c_str(), ios_base::out | ios_base::ate | ios_base::app); diff --git a/primitives/primproc/Makefile b/primitives/primproc/Makefile index e7077e8be..ce84022cb 100755 --- a/primitives/primproc/Makefile +++ b/primitives/primproc/Makefile @@ -41,7 +41,7 @@ OAMLIBS=-loamcpp -lsnmpmanager -lnetsnmp -lnetsnmpagent -lnetsnmphelpers -lnetsn # Linker flags LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) -lthreadpool -lwriteengine \ - -lidbdatafile -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib + -lidbdatafile -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/primitives/primproc/bppseeder.cpp b/primitives/primproc/bppseeder.cpp index aae0a277b..64ed9b136 100644 --- a/primitives/primproc/bppseeder.cpp +++ b/primitives/primproc/bppseeder.cpp @@ -221,7 +221,7 @@ int BPPSeeder::operator()() #ifdef _MSC_VER LogFileName << "C:/Calpont/log/trace/pt." << tid; #else - LogFileName << "/var/log/Columnstore/trace/pt." << tid; + LogFileName << "/var/log/mariadb/columnstore/trace/pt." << tid; #endif spof.reset(new PTLogs_t(gThdCnt, LogFileName.str().c_str())); gThdCnt++; diff --git a/primitives/primproc/primproc.cpp b/primitives/primproc/primproc.cpp index 2a657c65f..cd7c7d3b3 100644 --- a/primitives/primproc/primproc.cpp +++ b/primitives/primproc/primproc.cpp @@ -252,7 +252,7 @@ void* waitForSIGUSR1(void* p) #ifdef _MSC_VER ofstream out("C:/Calpont/log/trace/pplru.dat"); #else - ofstream out("/var/log/Columnstore/trace/pplru.dat"); + ofstream out("/var/log/mariadb/columnstore/trace/pplru.dat"); #endif for (int i = 0; i < cacheCount; i++) { @@ -602,7 +602,7 @@ int main(int argc, char* argv[]) #ifdef _MSC_VER ofstream* qszLog = new ofstream("C:/Calpont/log/trace/ppqsz.dat"); #else - ofstream* qszLog = new ofstream("/var/log/Columnstore/trace/ppqsz.dat"); + ofstream* qszLog = new ofstream("/var/log/mariadb/columnstore/trace/ppqsz.dat"); #endif if (!qszLog->good()) { diff --git a/procmgr/Makefile b/procmgr/Makefile index 18a3477a4..ab663bf02 100755 --- a/procmgr/Makefile +++ b/procmgr/Makefile @@ -24,7 +24,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L../oamcpp -L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -lcacheutils -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L../oamcpp -L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -lcacheutils -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib .PHONY: install clean test docs FORCE coverage leakcheck diff --git a/procmgr/processmanager.cpp b/procmgr/processmanager.cpp index 97f83fd43..96d5584cd 100644 --- a/procmgr/processmanager.cpp +++ b/procmgr/processmanager.cpp @@ -2455,7 +2455,7 @@ void processMSG(messageqcpp::IOSocket* cfIos) // Wait for everything to settle down sleep(5); // Save the BRM. This command presages a system backup. Best to have a current BRM on disk - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = startup::StartUp::installDir() + "/bin/save_brm > " + logdir + "/save_brm.log1 2>&1"; int rtnCode = system(cmd.c_str()); @@ -6172,7 +6172,7 @@ std::string ProcessManager::sendMsgProcMon1( std::string module, ByteStream msg, void ProcessManager::saveBRM(bool skipSession, bool clearshm) { Oam oam; - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; log.writeLog(__LINE__, "Running reset_locks", LOG_TYPE_DEBUG); diff --git a/procmgr/processmanager.h b/procmgr/processmanager.h index 9f61f627b..a25873253 100644 --- a/procmgr/processmanager.h +++ b/procmgr/processmanager.h @@ -97,7 +97,7 @@ namespace processmanager{ typedef std::map srvStateList; const int MAX_ARGUMENTS = 10; - const std::string DEFAULT_LOG_FILE = "/var/log/Columnstore/ProcessManager.log"; + const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/ProcessManager.log"; /** diff --git a/procmon/Makefile b/procmon/Makefile index 1b9702a7d..f4c997b14 100755 --- a/procmon/Makefile +++ b/procmon/Makefile @@ -22,7 +22,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib .PHONY: install clean test docs FORCE coverage leakcheck diff --git a/procmon/main.cpp b/procmon/main.cpp index e6b3120e7..3bc449e95 100644 --- a/procmon/main.cpp +++ b/procmon/main.cpp @@ -424,7 +424,7 @@ int main(int argc, char **argv) if ( !gOAMParentModuleFlag ) { runStandby = true; // delete any old active alarm log file - unlink ("/var/log/Columnstore/activeAlarms"); + unlink ("/var/log/mariadb/columnstore/activeAlarms"); } //launch Status table control thread on 'pm' modules diff --git a/procmon/processmonitor.cpp b/procmon/processmonitor.cpp index eb911fbfd..5d36ba885 100644 --- a/procmon/processmonitor.cpp +++ b/procmon/processmonitor.cpp @@ -540,7 +540,7 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO log.writeLog(__LINE__, "ProcMon Running Hot-Standby"); // delete any old active alarm log file - unlink ("/var/log/Columnstore/activeAlarms"); + unlink ("/var/log/mariadb/columnstore/activeAlarms"); } //Check for SIMPLEX runtype processes @@ -823,7 +823,7 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO //reset BRM locks and clearShm if ( requestStatus == oam::API_SUCCESS ) { - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = startup::StartUp::installDir() + "/bin/reset_locks > " + logdir + "/reset_locks.log1 2>&1"; system(cmd.c_str()); @@ -1528,7 +1528,7 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO runStandby = true; // delete any old active alarm log file - unlink ("/var/log/Columnstore/activeAlarms"); + unlink ("/var/log/mariadb/columnstore/activeAlarms"); log.writeLog(__LINE__, "Running Standby", LOG_TYPE_INFO); //give time for Status Control thread to start reading incoming messages @@ -2396,7 +2396,7 @@ pid_t ProcessMonitor::startProcess(string processModuleType, string processName, // dbrmFile = tempDBRMDir + dbrmFile.substr(pos,80);; // } - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = startup::StartUp::installDir() + "/bin/reset_locks > " + logdir + "/reset_locks.log1 2>&1"; @@ -2470,7 +2470,7 @@ pid_t ProcessMonitor::startProcess(string processModuleType, string processName, char timestamp[200]; strftime (timestamp, 200, "%m:%d:%y-%H:%M:%S", &tm); - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string outFileName = logdir + "/" + processName + ".out"; string errFileName = logdir + "/" + processName + ".err"; @@ -3552,7 +3552,7 @@ int ProcessMonitor::buildSystemTables() string fileName = DBdir + "/000.dir"; if (!IDBPolicy::exists(fileName.c_str())) { - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = startup::StartUp::installDir() + "/bin/dbbuilder 7 > " + logdir + "/dbbuilder.log &"; system(cmd.c_str()); @@ -4335,7 +4335,7 @@ int ProcessMonitor::runStartupTest() return oam::API_SUCCESS; //run startup test script - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string cmd = startup::StartUp::installDir() + "/bin/startupTests.sh > " + logdir + "/startupTests.log1 2>&1"; system(cmd.c_str()); @@ -4399,7 +4399,7 @@ int ProcessMonitor::runHDFSTest() Oam oam; bool fail = false; - string logdir("/var/log/Columnstore"); + string logdir("/var/log/mariadb/columnstore"); if (access(logdir.c_str(), W_OK) != 0) logdir = "/tmp"; string hdfslog = logdir + "/hdfsCheck.log1"; @@ -5472,7 +5472,7 @@ bool ProcessMonitor::amazonIPCheck() log.writeLog(__LINE__, "Module is Running: '" + moduleName + "' / Instance '" + instanceID + "' current IP being reconfigured in Calpont.xml. old = " + IPAddr + ", new = " + currentIPAddr, LOG_TYPE_DEBUG); // update the Calpont.xml with the new IP Address - string cmd = "sed -i s/" + IPAddr + "/" + currentIPAddr + "/g /usr/local/MariaDB/Columnstore/etc/Calpont.xml"; + string cmd = "sed -i s/" + IPAddr + "/" + currentIPAddr + "/g /usr/local/mariadb/columnstore/etc/Calpont.xml"; system(cmd.c_str()); } else diff --git a/snmpd/etc/snmpdx.conf b/snmpd/etc/snmpdx.conf index d5bd57da8..c37c06ead 100644 --- a/snmpd/etc/snmpdx.conf +++ b/snmpd/etc/snmpdx.conf @@ -482,7 +482,7 @@ rwuser myuser # # External process to retrieve cpu usage info -#exec cpuLoad /usr/local/MariaDB/Columnstore/bin/resourceMonitor +#exec cpuLoad /usr/local/mariadb/columnstore/bin/resourceMonitor # For snmpget and snmpwalk to work. # The above lines won't set info to extTable (to be investigated) diff --git a/snmpd/etc/snmpdx.conf.singleserver b/snmpd/etc/snmpdx.conf.singleserver index 9eeab396c..952322fd4 100644 --- a/snmpd/etc/snmpdx.conf.singleserver +++ b/snmpd/etc/snmpdx.conf.singleserver @@ -482,7 +482,7 @@ rwuser myuser # # External process to retrieve cpu usage info -#exec cpuLoad /usr/local/MariaDB/Columnstore/bin/resourceMonitor +#exec cpuLoad /usr/local/mariadb/columnstore/bin/resourceMonitor # For snmpget and snmpwalk to work. # The above lines won't set info to extTable (to be investigated) diff --git a/snmpd/etc/snmptrapd.conf b/snmpd/etc/snmptrapd.conf index 9c594cd01..458938d88 100644 --- a/snmpd/etc/snmptrapd.conf +++ b/snmpd/etc/snmptrapd.conf @@ -6,9 +6,9 @@ disableAuthorization yes #forward .1.3.6.1.4.1.2021 0.0.0.0 #CALPONT_NMSADDR #forward default 0.0.0.0 -#traphandle default /usr/local/MariaDB/Columnstore/bin/trapHandler default -traphandle .1.3.6.1.2.1.88 /usr/local/MariaDB/Columnstore/bin/trapHandler agentTrap -#traphandle .1.3.6.1.4.1.2021 /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm -#traphandle .1.3.6.1.4.1.8072 /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm -traphandle UCD-SNMP-MIB::ucdavis /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm +#traphandle default /usr/local/mariadb/columnstore/bin/trapHandler default +traphandle .1.3.6.1.2.1.88 /usr/local/mariadb/columnstore/bin/trapHandler agentTrap +#traphandle .1.3.6.1.4.1.2021 /usr/local/mariadb/columnstore/bin/trapHandler processAlarm +#traphandle .1.3.6.1.4.1.8072 /usr/local/mariadb/columnstore/bin/trapHandler processAlarm +traphandle UCD-SNMP-MIB::ucdavis /usr/local/mariadb/columnstore/bin/trapHandler processAlarm diff --git a/snmpd/etc/snmptrapd.conf.singleserver b/snmpd/etc/snmptrapd.conf.singleserver index 9c594cd01..458938d88 100644 --- a/snmpd/etc/snmptrapd.conf.singleserver +++ b/snmpd/etc/snmptrapd.conf.singleserver @@ -6,9 +6,9 @@ disableAuthorization yes #forward .1.3.6.1.4.1.2021 0.0.0.0 #CALPONT_NMSADDR #forward default 0.0.0.0 -#traphandle default /usr/local/MariaDB/Columnstore/bin/trapHandler default -traphandle .1.3.6.1.2.1.88 /usr/local/MariaDB/Columnstore/bin/trapHandler agentTrap -#traphandle .1.3.6.1.4.1.2021 /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm -#traphandle .1.3.6.1.4.1.8072 /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm -traphandle UCD-SNMP-MIB::ucdavis /usr/local/MariaDB/Columnstore/bin/trapHandler processAlarm +#traphandle default /usr/local/mariadb/columnstore/bin/trapHandler default +traphandle .1.3.6.1.2.1.88 /usr/local/mariadb/columnstore/bin/trapHandler agentTrap +#traphandle .1.3.6.1.4.1.2021 /usr/local/mariadb/columnstore/bin/trapHandler processAlarm +#traphandle .1.3.6.1.4.1.8072 /usr/local/mariadb/columnstore/bin/trapHandler processAlarm +traphandle UCD-SNMP-MIB::ucdavis /usr/local/mariadb/columnstore/bin/trapHandler processAlarm diff --git a/snmpd/snmpmanager/snmpglobal.h b/snmpd/snmpmanager/snmpglobal.h index 318d56973..6d1c8d441 100644 --- a/snmpd/snmpmanager/snmpglobal.h +++ b/snmpd/snmpmanager/snmpglobal.h @@ -46,9 +46,9 @@ typedef oid CALPONT_OID; const int SET = 1; const int CLEAR = 0; -const std::string ACTIVE_ALARM_FILE = "/var/log/Columnstore/activeAlarms"; -const std::string ALARM_FILE = "/var/log/Columnstore/alarm.log"; -const std::string ALARM_ARCHIVE_FILE = "/var/log/Columnstore/archive"; +const std::string ACTIVE_ALARM_FILE = "/var/log/mariadb/columnstore/activeAlarms"; +const std::string ALARM_FILE = "/var/log/mariadb/columnstore/alarm.log"; +const std::string ALARM_ARCHIVE_FILE = "/var/log/mariadb/columnstore/archive"; const CALPONT_OID SNMPTRAP_OID [] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }; const CALPONT_OID CALPONT_TRAP_OID [] = { 1, 3, 6, 1, 4, 1, 2021, 991 }; diff --git a/tools/bincvt/Makefile b/tools/bincvt/Makefile index aabed4263..32060f96c 100644 --- a/tools/bincvt/Makefile +++ b/tools/bincvt/Makefile @@ -22,7 +22,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/tools/clearShm/Makefile b/tools/clearShm/Makefile index b1fbdbe7d..8683ba2c4 100755 --- a/tools/clearShm/Makefile +++ b/tools/clearShm/Makefile @@ -23,7 +23,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/tools/cleartablelock/Makefile b/tools/cleartablelock/Makefile index 42ccf5257..dfcabfb29 100755 --- a/tools/cleartablelock/Makefile +++ b/tools/cleartablelock/Makefile @@ -23,7 +23,7 @@ CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall # Linker flags -LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +LDFLAGS+=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib # install dir (set CALPONT_INSTALL_ROOT in env to override) CALPONT_INSTALL_ROOT?=$(EXPORT_ROOT) diff --git a/tools/configMgt/Makefile b/tools/configMgt/Makefile index 0d7c6ebc4..52c6d6e4f 100755 --- a/tools/configMgt/Makefile +++ b/tools/configMgt/Makefile @@ -17,8 +17,8 @@ VERSION=1.0.0 CPPFLAGS=-I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/MariaDB/Columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) -LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib +CLIBS=-L$(EXPORT_ROOT)/lib -L/usr/local/mariadb/columnstore/lib $(IDB_COMMON_LIBS) $(IDB_SNMP_LIBS) +LDFLAGS+=$(CLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib SRCS=autoInstaller.cpp autoConfigure.cpp svnQuery.cpp OBJS=$(SRCS:.cpp=.o) diff --git a/tools/configMgt/autoConfigure.cpp b/tools/configMgt/autoConfigure.cpp index db79a79ef..f1920d282 100644 --- a/tools/configMgt/autoConfigure.cpp +++ b/tools/configMgt/autoConfigure.cpp @@ -1456,7 +1456,7 @@ int main(int argc, char *argv[]) { int id = *pt; string DBrootID = "DBRoot" + oam.itoa(id);; - string pathID = "/usr/local/MariaDB/Columnstore/data" + oam.itoa(id); + string pathID = "/usr/local/mariadb/columnstore/data" + oam.itoa(id); try { sysConfigNew->setConfig(SystemSection, DBrootID, pathID); @@ -1528,7 +1528,7 @@ int main(int argc, char *argv[]) { int id = *pt; string DBrootID = "DBRoot" + oam.itoa(id);; - string pathID = "/usr/local/MariaDB/Columnstore/data" + oam.itoa(id); + string pathID = "/usr/local/mariadb/columnstore/data" + oam.itoa(id); try { sysConfigNew->setConfig(SystemSection, DBrootID, pathID); @@ -1596,7 +1596,7 @@ int main(int argc, char *argv[]) } string DBrootID = "DBRoot" + oam.itoa(i); - string pathID = "/usr/local/MariaDB/Columnstore/data" + oam.itoa(i); + string pathID = "/usr/local/mariadb/columnstore/data" + oam.itoa(i); try { sysConfigNew->setConfig(SystemSection, DBrootID, pathID); diff --git a/tools/configMgt/autoInstaller.cpp b/tools/configMgt/autoInstaller.cpp index ed22d6e31..5a94f218f 100644 --- a/tools/configMgt/autoInstaller.cpp +++ b/tools/configMgt/autoInstaller.cpp @@ -197,7 +197,7 @@ int main(int argc, char *argv[]) if ( product == "columnstore" ) { company = "MariaDB-Columnstore"; calpontPackagename = "mariadb-columnstore"; - installLocation = "/MariaDB/Columnstore"; + installLocation = "/mariadb/columnstore"; adminCommand = "mcsadmin"; } else if ( product != "infinidb" ) diff --git a/tools/configMgt/configure.cpp b/tools/configMgt/configure.cpp index e3c31cf21..3da3c403f 100644 --- a/tools/configMgt/configure.cpp +++ b/tools/configMgt/configure.cpp @@ -213,7 +213,7 @@ int main(int argc, char *argv[]) exit (-1); } - cmd = "./remote_scp_get.sh " + parentOAMModuleIPAddr + " " + password + " /usr/local/MariaDB/Columnstore/etc/Calpont.xml 0 "; + cmd = "./remote_scp_get.sh " + parentOAMModuleIPAddr + " " + password + " /usr/local/mariadb/columnstore/etc/Calpont.xml 0 "; rtnCode = system(cmd.c_str()); if (rtnCode == 0) { cmd = "mv Calpont.xml systems/" + systemName + "/."; @@ -507,7 +507,7 @@ int main(int argc, char *argv[]) } string DBrootID = "DBRoot" + oam.itoa(i); - string pathID = "/usr/local/MariaDB/Columnstore/data" + oam.itoa(i); + string pathID = "/usr/local/mariadb/columnstore/data" + oam.itoa(i); try { sysConfig->setConfig(SystemSection, DBrootID, pathID); diff --git a/tools/configMgt/dm_parent_installer_v3.sh b/tools/configMgt/dm_parent_installer_v3.sh index f5d908959..fc4e2cdf7 100755 --- a/tools/configMgt/dm_parent_installer_v3.sh +++ b/tools/configMgt/dm_parent_installer_v3.sh @@ -143,7 +143,7 @@ if { $CONFIGFILE != "NULL"} { # copy over Calpont.xml file # send_user "Copy Calpont Configuration File " - send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/etc/Calpont.xml.rpmsave\n" + send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/mariadb/columnstore/etc/Calpont.xml.rpmsave\n" expect -re "word: " # send the password send "$PASSWORD\n" @@ -153,7 +153,7 @@ if { $CONFIGFILE != "NULL"} { -re "Permission denied, please try again" { send_user "FAILED: Invalid password\n" ; exit -1 } -re "No such file or directory" { send_user "FAILED: Invalid package\n" ; exit -1 } } - send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/etc/Calpont.xml\n" + send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/mariadb/columnstore/etc/Calpont.xml\n" expect -re "word: " # send the password send "$PASSWORD\n" @@ -175,7 +175,7 @@ if { $CONFIGFILE != "NULL"} { # rename previous installed config file # send_user "Copy RPM-saved Calpont Configuration File " - send "ssh $USERNAME@$SERVER 'cd /usr/local/MariaDB/Columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" + send "ssh $USERNAME@$SERVER 'cd /usr/local/mariadb/columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" expect -re "word: " # password for ssh send "$PASSWORD\n" diff --git a/tools/configMgt/parent_installer.sh b/tools/configMgt/parent_installer.sh index 3cf5365ba..464ffca93 100755 --- a/tools/configMgt/parent_installer.sh +++ b/tools/configMgt/parent_installer.sh @@ -189,7 +189,7 @@ if { $CONFIGFILE != "NULL"} { # copy over Calpont.xml file # send_user "Copy Calpont Configuration File " - send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/etc/Calpont.xml\n" + send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/mariadb/columnstore/etc/Calpont.xml\n" expect -re "word: " # send the password send "$PASSWORD\n" @@ -206,7 +206,7 @@ if { $CONFIGFILE != "NULL"} { # rename previous installed config file # send_user "Copy RPM-saved Calpont Configuration File " - send "ssh $USERNAME@$SERVER 'cd /usr/local/MariaDB/Columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" + send "ssh $USERNAME@$SERVER 'cd /usr/local/mariadb/columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" expect -re "word: " # password for ssh send "$PASSWORD\n" diff --git a/tools/configMgt/pm_parent_installer_v3.sh b/tools/configMgt/pm_parent_installer_v3.sh index 5b2506a5b..b1b0428c4 100755 --- a/tools/configMgt/pm_parent_installer_v3.sh +++ b/tools/configMgt/pm_parent_installer_v3.sh @@ -130,7 +130,7 @@ if { $CONFIGFILE != "NULL"} { # copy over Calpont.xml file # send_user "Copy Calpont Configuration File " - send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/etc/Calpont.xml.rpmsave\n" + send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/mariadb/columnstore/etc/Calpont.xml.rpmsave\n" expect -re "word: " # send the password send "$PASSWORD\n" @@ -140,7 +140,7 @@ if { $CONFIGFILE != "NULL"} { -re "Permission denied, please try again" { send_user "FAILED: Invalid password\n" ; exit -1 } -re "No such file or directory" { send_user "FAILED: Invalid package\n" ; exit -1 } } - send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/MariaDB/Columnstore/etc/Calpont.xml\n" + send "scp $CONFIGFILE $USERNAME@$SERVER:/usr/local/mariadb/columnstore/etc/Calpont.xml\n" expect -re "word: " # send the password send "$PASSWORD\n" @@ -162,7 +162,7 @@ if { $CONFIGFILE != "NULL"} { # rename previous installed config file # send_user "Copy RPM-saved Calpont Configuration File " - send "ssh $USERNAME@$SERVER 'cd /usr/local/MariaDB/Columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" + send "ssh $USERNAME@$SERVER 'cd /usr/local/mariadb/columnstore/etc/;mv -f Calpont.xml Calpont.xml.install;cp -v Calpont.xml.rpmsave Calpont.xml'\n" expect -re "word: " # password for ssh send "$PASSWORD\n" diff --git a/tools/configMgt/stackReleaseChecker.o b/tools/configMgt/stackReleaseChecker.o new file mode 100644 index 0000000000000000000000000000000000000000..bd0c1641b323dcb59218ccd17665ef1cfa85ab62 GIT binary patch literal 1937024 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

E_Ce#w31!q>EX(yTSm*R_tb2FgNE{F*0k zpPqs8agJYQzjmDbHzJ~(u(;#PTVc1}n-Vij>EF`M%ny;cUA1Srxd$}CZrT z?r9DMka{aUksPgh*c4F0z0abby*DXk_ z+BKj`>ltp<#Hzglsx@f@s+Cx^Z$OovF?Q=ERvj2nl}pRSs)GZn%_#vb604pXP^E{0 z+_s5TPYVdv+PJB;KRN3!qTh94FrMwR#a>AIn6vV58I3<8Edibs~_xVmgZsD~uaOEG0$U=SbVI62{U8zd~UuZYZ z_)>?m%tUt%n#S)OWFGlV{5+!4JJQ;c4{Ch!$c|l;P z{8ooboCH+;PA3m3soaX(+$<3?zgNGEtJUc$X=-p@{=xI@#ckQm{81)xaJsDv#5?u*4j^C1K zuqW~#ANc>pKp*r94D3O#z(5}K3JlyqufRYZ^a>2jL9f6-9P|ndyg{$PKpXT546Fe! zZy;^_yVhO$A1cLbF;AO&DOG3lKlLo_w)#t^9^nWL$?p9bf5W``(Tu4{VfUjqE1XWU|s|7Nn^09L024iPSlzn|*^iSDT&`<|kNSk~UXeGvN8kuUtgRcrz<)wG;*n6l>I6@3j&B>egVh zN{#MUsmTK>HG5E{<`1dV;^8DNx3Jst5p`_)s6-cb+dZZ+XFu*a<~*T}Df?Zi1u32O zPbSGY>UMa_6FWXFqMPyMu8MPXA`#!5?D?g|HRko_XTkU!EPJcnXHR&~9 z^t9@1)1a-kYy4ri-%FlC{~c;3zg$%dcZw8tPu%5c4tUwq+^w1guc%b{RZp?X9(Am` z*E2NmH81q*p5saT)Uon@4O8U}m8!m}Qnj~Ks(wJFI&XUs);*ZyhTahm9EfVX>lN^O zsvmowCHI^U)al$0RXXn@k)+;IKUSYgpCs`b6Rt~pF=l?I36FlRnkk1=iXB!d^^2rP zgeS6TU#erJBc7e~uRJm1YfsGlMpd)ERVn*B&pYRPPt5(n6Z3xbqRKz2p(_8RQk9=o zs``sc)qYi}`fn=L`CTL!9sf|r+&|S(2OhWSUrG9q%iod)H*2c?UqO*KJ*cH8mfeQV zEcG@R9gn>Ao!aXS|BnfbX48^+vCysGSn8s|^kk75&Pe8e>T>Hgfm&`fGdUcN)Thy; zS7kY^G`vgyBg<`cx1NsNCPnh38e0;3^=Bo^C|RW*T*_XrRByIQ;1093If_+-SJ%}c zRO1`OQ%7V?>qa^Ax%GpA8q7_W^Huu1WLepBGj8-bvL$$2Wj^H3&AcwI9(MbaTh>jg zo;@!aP9~Ej8#Ry`cncM7!(v#sV>7q%A$vixtS#r_Q!@Drll>3PY~%-J3Ks=j7qV*+ zJw%f;MUq1?d((zhE+s5)s_~~b>t;=7E~ac6ryQnd*HujJg2ql!1QBrvRq+wT_R0}D#Jah|4jnb1trp?F06}2D82bhHGxnWVfP_U zp!aBL&D$i>%5qM38!Z#d@-GzbCeC=n41d0Jmums$q1h_8C(Du~6+YZM*%A0O9VlQ0&>SVpcbtj~4k6DAQYy|DA zQ_5VVTU&P-5rbpbFko$t{76rw;??oxBv zsFioO6swzmk4lA`RH}AwvP}N6z4ckQ#(i2+`EkcunpUKJIh% z|6=bw;Oi)^_J12?7Spi}#?;uxkV3$L5K>4nH3{hrLP#QCN!PZ5T2x$8={8`B>8AH) zdhfmW-h1!8*Z-O4dv@=xB{>2K-rxKFuRiuXb7p2|XJ^iwIdkUh-hS=-=lVNpHEYlH zmkba9+;yw|85QPV`3|3D<+DD^%1;}7N@1M#Um&Gx4u?NhNSBQn(5qxJ<8CI(GGOI?)__7+=OWXWsN*wAa!<}ZF-+AmA)G}yOuOQ(&l8FBrB>G|9ZX>ZHYYxad3 z7j*0QA~&V6C2meD`}!>&Go|a+1<{~t7QAgibm^K!vVuczPt!);k;ay}bHUULe%ZS` zTC>dEX>7%N(z~qeJVtN3f>5*Ey=ngP_j$}u#a5|!-yD>_nd&33S|w{!lB^rg8(eve zWwItO_Y3cnq4%eYUytvT{4rbmzEE>juBIin8|*!|SXSrnDmNPaK=$-w9!$Gr#6vuZ zjb`RR^sq~DYv?kMqy?9GH0`EgkEQjP?0-CsySZ*mrJ5%y)r`E|B>A#WW;HyO)%tWA zTlSf(CO$bZs#4Rl^ValSTGP2$X7D*)vS``UQ44vpDnFfy;9Zdm8zDz!zx(u4e!w0z`vQ539Csb{aWSvx3au1 zxbzrX$$UG@tXU-;QYQ8@No8PHcqg57!?sVAtYPnZchro0FU=kPei|FOgRe-rH#3*| zAkEF**0io1J~ORx~Nt8{%T{i?cnkX8#2$`6K6~ z4_&kD{zKfCjhoq<1P6F8m{V?LG!D$V_@Fd4;^3^i4oPEQ@hg(ew4=4hKQz15@}^g> zSonO*h@CU8S>~{`+F`S@#Nmghi9?S_V@n>HR%o`jqq4Y-eF*l1YbAm@}7C&)_A9F8uQW{$^Q$|+u zE~y!1&mZ?7Up?8oyk?QKkTXrqzJtx%pyuGgrwnli)32r%e=S=vS3lJ`+dgx0+7K&# z$lyKwV?Z^dPfrJ8u`{yRnQ3h3>~#GddKPR^GyH6iEPu|Bnx)T8nPr3t%bJnrr4Km# z{Pd|!E?$tP4vU3`Us%an@uD0lB`@=sJ=pNe zv(zgpsY_j%rY><+C3Wem)6}8YWUaV1eah>GxCM4Od(8N7?r~a^Tcxg_r&adKmUo9w z!(lh3)#W>l+VmZj{4?G(Pi;}wEWU^LzwOv>&YF8m8e8nv>~XB{nA?Wm3^5OxJ8j4<`>4Tpd23etWzVm8JUKW!Q1J&idhp$!_?lw|-;=gu$-Vq5OL9XU zmhx`R@Oy{UtahLGRqE(G@_xU}wV%TmcwmT|5jJ{oh}&<*J~YI49u&4BP z4}D~a>*>oqnogZX9~*+HIxV!q-f8O=dOT%-VNay3;?RBUlUdGFS?uXFHuRY+_N>Rg zPv%F>f4pnW#7qC->sxB_gye%poob22M!w~&uY4|&^Xd8(jhjfz~@A+ct(2HVKdXa)(qb< zO&q#YC2{98>fEx_thChdUDDXFUDMbyyLrRY@my;6G;8SWEVf4)TYS$nHuOQ08YZct zYBzkZGJ? z>L8EBiu#AkCc9UR-=Pu>hjz}*Uc4QVi zDvKTMF>BTEV{-9hvl7Q;vE#FR>$kaC@(EcoevDSt;wNUgC;7;^ZFua-SMx2u-S|^{I#%q>7FN=;iKP@}-f;7?eoeQ(n ziz=xjFHTd3U6RH|T$;v)Uq)kUhWBNix;!11jDxTEB$r<~@8wHhmA12H#MN1JgrWClx4bWl-JiyWJ&?whelU$` zPL9%?9DQ}RtA40bYt8V7y{vZFb{AvPN7BoOJ(><|9~6$q(podNc>EJw{lvUiFa6{v zxcaGiuO9LAC%F2Vd9F6mlqtK*#aD$^SUX+hS9+FuQ+n8Q3;Bm4mNDhJa-y`HsZ7g1 zzmQu|7J4Cl{dPRIM$!S65R zo8O@yIA0q(9Y1*6bgxr$;^5r&%Nw`&hYR_!#L$n@>$5GhU7hWgYes(TB_o$EvDLzU z$Zs=l>oi`o>^2L#wy@N;X>7^uvh1PTd!n&BuMwJ}yMt%fEH)#JEirT9bl1J(!mfi= zm|~fo7EZU_Blq!dIM%EZKmPdTjB&m;CQc^%s~Ng;TI=vxX>8ao9*YHr@0uo?%d^p6 z+%2V-+&z7U#bWK17A!k^VLC0AAG1eRS$<$@*4WeEfvx%aUJLs{=&0gBpIL-cCi&{# zy_EUNiSzi!thP_jC4E4@wr`p}x_GlymPqfl#(rs$FU?sPrOmSn53u&u=6Nv4yxN1# zWvXGd2dX_#?SX0!{6EnHQLP*##~}|Tsr3#LtE1>y`p{q44cHGj5I7V#5jX`nAGj2_ z0k{#k2e=ow4|o`O0XRY*ISMxbHv$LgJ2c@i;3(iY;6&h5L2?$0i-+?wTeXF+lR)PYb3K^+Wr2-Klad{j6b4s`^1 zM?xJ1bu`p5P{%?Y2X#EuT&NSEPJ}uMxCFQgxF2{JcpP{d;N|M%1*jJV$xBc#1Fw_# z2GpCtyTJRv2ZH27sE>fH7f>&418fIuFGzNPngKNvYDZvCU|--6;0WLtU@mYna5-=_ za1C(1Ah{jt4&WZ(Uf_PS$CrKhloQuJ-v@GHfCt?+jW z^{LeGN5!{LD1Hj!ryza`;-?^f3gRc{q<^dYe-v&qRuVZosho=*EXk2|b=3}$LMgvnbS~2ehb9SJ5_t59m!yMp9V6I?+ zla_35Y#Fq`$xAkurVR>bk#{a|0dO&J8E_?V4RAeh6L1G`H*g>DAn*wAIPetkEbs#G zGVmJkCh!jMKJXE+wcc_I+W|9xoq%0{-GM!UeSkT@fxsca;lNSAvA|s5B;Zuw4B%|w zJm5m$65w*+D&Sh+2HdKq3E*kqIp9U$b>J=F1K?v|8+{l$Y!A!?b_R9@ zW&?Wx`vUs|2LXoyM*v3y#{nk*Cj+MeX9DK{=K~i3R|D4pHv+c+w*&VA4*(AXPXf;X z&jT+3uL5rXZv*cE9|Btq*ZkQQ*a6rPm<8+x>;dcz><1hG91I)=90kk;P6Eyb&I2w4 zE&(nFt^%$FZUAlr?gZ`u?gt(M9tEBNo(7%+UIbnNUI*R+-UU7Y&Xqt97Xp_9R{_@o zHvl&Sw*gN8&jGIjZvbxt9|JS>25HzC*cF%!>lv*A=d*a4m)3h+(eW9;_gH3Y7ky zKJ6IZ7brz%b{uKo5TjJRJesVlS~rMcvQZ3UUNR;|!k1#GvUIK5$T_1@SC848Q_|jK z-Zq|3>xwJkMI`b;`QVz-r6gVk@WV9W3aBdqSDvnhx(2uwxDL2kkf1|_q876g3*ydz zudcg5?F#G$><-KZ_5fT7^5uAM688}#=t7ArGY^vZ1mFwo?pjilIhB?5XX?FQ$1o`= z-mb7ip_CDg#nv(8OMTzc_{9Nh3Q20xQzf#D( zf1~(s6-seRey{kZ3O7^u2Zfs}lq!|{S@BwhYJF0#_~*F+km{fOUHAQm!hb5%W+0IY zmq>+6wt_F%A0&83Cw#a+LA^^*?-Eq(RiI8E9joSRVt6FsxTZY)oK-&6r!NE5 zOP2?76YY~zA&SFa`XVt%Y9*T`n@gIt#adIBy^t`lcB)DnCL+gbzt&cm04GzIxzXZ;+plUS92}o)_oG@ z?a>kOGCbPjWxh1#*P&4=q3cv)1JUZ6gjJz7rX*V`U27ClRn6$mk$GNRMc4FwK1*Q! z7Y(`bG5G4C$&Wyskp#_)lV7B|?ng^@*iQsY@$$ltOg_zFO>wc<+Q?I>Two zH4~bqPUuzLQYZWuMeC=!@6Q$fLSbGeNYV!6Kwbj;Q6;xf2;)wOaXk<7apg$%+WIdm z_bUqfE{C;5#e1+c!4$qCqPEg5q|RSeJF=%qaU>87*s2ty(KN-UEBw2{e<)-E{!8(H zEBuc_pOS9ZcbSad9?;tZ+Hyc!4rt2(Z8_{XShef~%mUnUI~!_Wz-PPLarYg8GXw?#6q~S(SE4>dLkY)FX`J zjF)c|s2JK4%f~0wk`l?!WPGeLSx@2m3O7)=p~8O1twhr|`IYKXZzfvOU1`!Z`7c{( zO`=4TJJIC!Z8f}^VB1O1@e;b)e@RxIvqHQz9^iQA#ne>8!x+)~MvNg^e%>m=D5Z>6 zxU#~WxYcbLR?1OA!|Izi)EyK9RD$oQmhUQDSK;>*HYhABoTxCjRnna_;$ghJA3X!Ve89CNFfD-(BA8b^1J(QWeG_x+fn8b&Bj+#s3(%S(F=O3X_(RN0MVC|bjk zU+(>(HF>=2wXOyP25ZxwRm)!#)+(G3!(3|^E={_{{Gd8vok>_{5)P{M)X3D)v7U6f^93%)!_4PVDwLmUQHYv?Qo@jzl-{6_^@3%erCz$GpR7(*nZGOimqMR~zHa+U-P5!PzTKji z)CD}z6c_+_R!9|q2sKUh*F0OD1g-a?N7DKVtYB7?? z%#*19k~Nhg3E?|;^`aZmnKCdweW_`NoehJm+tZLAd1Y^lSaV=P<@#99$HI!R|Dwtv z44CFfEu?OKl)tT#;}s&oa;ZqHMT^&sd3aC%_P?+ukwbCcJE0TIzF%}lVT$f9O z7d@|>AFK9>LETy=1`V=NhINz+8+=dkJR2~ zP}r%kOJQz|`(%avx32n+!U5fpAihI!V^UPGcOR_V`fjCg+ULr5DlOe^(c^~Z6WhtL zZHeoc^0_5Nsc!W;hvuCNTn!XWAe_mC+sH$)33oxcLF7KD2Y`owM}WtGCjeIuT5RU;ErT}1H>dD@$C{hh`@<;JHd-Oe!m5gYNg+!Fa$Wv&OC>v)w}U*U!dH;SS9_C1`mxe~qHv%jW?o9N?ANOP2?|RJ>l7jZyUV_!S)=bl z#H9xt$-an<0kwl1%`80zK*02T^yb!p6DfHTa58WTa2jwr;0|{^$|T=jxffp1_rNz> z?rm@tl@)}T_%uIfy3ZEoNuJl>GWcsfjU=3*mUZ zUsw}a4bfv*0a^Q4^`y=8<+$?`clH@{)0sfA&(9;#-9EgtFCo!8`%0*5fE$1tftvtd zF&>0+FIis>o+h!l06b6PU5M}J1sb{iYt(Ir0!IVK0w(~c0A~W{1J?sL1GfWr1NRG5 zJ)&0PRrE@_+YFlF{wD5dax96*0q!SzDwMl%o+U~Z^+om}S=ZMsH&B@8ukM;18XVlz ztn#;iL2w6f4{$GVA8mR8*N` z7_FTXrR@sr2J8v!1?&y%2kZ|V02~M$1RM+;0vrk)1{@9?0UQY&1sn|=0~`w+2OJN~ z1x^4?1Wp1@22KG^1x^Rf1kM7^7N|$yO*lxsrBn$Kw|A_lo*AWZWrc7Zy@-&Z=Os*Z z{g_tgE!Bo{nODR%Qu@ynvMl~WaTZ55qzE#W$locq z`zEwe>F{og;_xnuAqi~zSg5qJ*3=(GovjAst-?#aOZGK7?hQ8pl z07Kt=50q}_M!t8t6Uw(xcSHH!$=6KZLKTJ=FZGpIAq&j1H zg>ZsaJ(q#qH}yRpo%N`~x$fpW$f5!Bk!_H`YFg5Jlo6tr$msQV1g)lg) zIc%P1aM!VV>J&ZkFx4?4hN71ey@ojG0lU6Pk{FbJ&C_f1#9a+4gU+xFp% zE*xAF$3cx)Tq816p~ftxCYq9oln#|zRQXFNR3nwj#6|e8qdd42&V(D`LwN5GDuYUp zAM3m_0KXwbJ7am>X=z=V7Zj+&qm@2ZAd}u`aGwi`XH1_D#Me&uUjgmNnw7@bSNdi986OR%FVwOcNM3{BMe^#T>iVl(HaL@i9Rx_UV{>e-xJkfCB-4>+NEwOMpuSY7h#}7xjpv6~gJOC=R!=P~|7@IOQVI z;XITm_>T^wtLDFx?=H*pQXHwte1aqCX83Y~+EAykK_LOff1U?3~)@mHK1-1uf06PNydab`#TYRB*Pm1gf>bQJODfdJOa3rntP``MdCBSbHEG0OTa6@8^Bw@yTJRvhrq|cHns#sM+v}v zZFhv)8Q2w=4eSZ*4;%y>3>*fyV;Vn98;&9IcwjDY5^xG|8gK@17H|%59&iD0F>onx zIe-^%xEktO;CcY>xNtMnt$>^I?u5Dt^AC*6P#lH9?afrK(nmA?~~Q4yIl;sH&=!+bkMO zil!}Ji)28vXVRd@k5~Fe3enn`2I%Mr0`&5Fl|c(fC@}e_DxInByFk~bU4Qm{pPNBk zRrZ~pYsIbyy8`T+I@fhw$@N+1`s|H}4BvLSvg#&2S5MuV_bes1(QH+RFmFf4W{XBD zXuF-u*Sr@!Di-v&M1K+Exl*fU^ujUbAM;o#OC70H-7BCl>0;MVTsd%2@E|h4wSuCT z`g`R0vc4~Kc|UKFyVt~a z5lOs(>ei-Cb#aXtSv2>CvB$=;$sZMNp-|W1@11K|rB4@&rTlX$)WkM-R7}?un0mPD z3Nf))myj{aU0I=8(!*;mUsf)g<*zEvmYFG~-p;@3?=Rpo)z(sZ`etp#S$)<~{96jY zt?)Yv=|86C_msjq^#jH8=K<>}WqpP8_lAlyl{Z%WM+$$eFmE3EsZyBkKUZ9Q-Tj?r z_khgn2ESMNO%-mY@DB<%SEz9e8b|jw|FhB&A+?H6P*_q}r?6gOgTk`Hi3%qvMC3Fo z&h|fVsA^Vvi^AUYlMdx#9OzPfio&T1rzxDS@b3!$q41vy|E2KX3jd?f4G1plwi&F% z;%SJV^tl`?o{hM1VJEJ08QG&=*_IUi@1`C(TZnv0^0`|$@ z89#xibwh{S@Lb%VLY|vFPJ?pmhc5+g1UZYmqGyFK6X%iV4i;`8>4Rb1ttLGlnz#++ zYO407$1Uk@QMsPH8vtLH+`e)%iMIf^0&Z>bmFo@??*!cT;s;m0s@+T8eZc*I+hu&k zbMwr@*ps-~-@8;3L4TLR+zb7r)u&Hlppwb5l{_(`}#IM^Azqoc5zF zZg-lW6&GVvZs{5xWlE1Uiyup|7Hju^TuxGGd4()_EU#KNEAK%0QqHnD-_l`}>Kd(Z zjKb;y$wrZL74+oasAsARWOac=M)`)ukFJg;@fhG(;5fkdJaeI{3uLG+kfFLjh8~YO z{j}x~R#ZQ9jR?YvRy_?1cb%dSzXpIUZl;3;Hn$p8( zue$HI$EgO{Y}}~z4W(4~*wsC@nR}{x>`>ifrw(n^J$Cy2?CKsn%twU?e5^DaiC*E( zAjP*Oi!ZDAyOZuA;;&G;qlmvr>HZ>owk!B+EvIn@f4jxKM|jC4xD&}a6megY^Pt?N z&6ga9@IQx0qL;+&ktqD0h;11Im46-hy(MnRlSvbLKrLccA$I z%Kd0Qg8CTPsz!Q@d(~_M<<2$RLAj634p8oDGZV@^Zu}V99dG9MU37UMinue+kx=f_Q#?cWSJT|X z=Xgr`F`B=x=Kek>k>_qd{t}ye|M<6}+zIFmO8W8qSy1j0bPkkz2Av1x4nh||T?kwR zTnxC^(4|m*~+7*MQdn_k4O2>Mh`H;2pr-p^C?+ACUJU(4*_c)?d&xoSz5A4is@Ws+myk zO|=u0J5|ks+68bItKFb>2i)Om4=DG$+6$`a>QOlR4Ra{s9$E)L9S9WtwGJWiP@w23 z;!a#gl6MqPbm=;l#N&XXgVzZpo(Q?SC8FS`ZG zz0BOZ#+}XXAkTfy?t*gHvwNW21MNO2cSL&t%KgzEf_fNu1b7s940s%HU$rNpo&uf* z+;i<&D0g6c9?JdLUW9VjpqHWCtL;^&*MQdn_i=j@%3a;whH{U$ccI+z?R_ZsfBO*1 z-QYfk+A6T{0mb)Jw1MbsxCe&HL*?>EGoeOmya6aJPUl&4M1Y8WbOW37QmjRapR{&Q6 zR{`!kb`8|Ez;(d&zzx8Sz)ir-fIFSt3UwQBJK&yZcS79-+zq&U+PzTs0rvy$v-Tj= zL%_p;JF-0r^%(Ft@C5KA@D%Vg;4W{^LOlmO54a!Pi%>5CF9Yrz_bSwD!0Ui}%)JTq z7VtLUZglTLy$8Gxd;ok1d<1+9Y?Uzo0QbV%7HT_Sd%#`uW3VUOG+6U;5{}K+ba%|PHAA9Uoq8Jm6pHh#$Nqukv z#_vgvy{c_piN_x*+(03|Ie$_d$5BKm&YasJL}mf*k?!7)?w#Roi07$Dyh$QY=tOIB zq7&w1XskXNrckb0$x@1|d5M~rETa^;Xz?m~qDN2Ubd|_OOON2E69ek=*9T`mcj&`~ zPYuC^oCDgw#l|aDkLq97(>%cizN=zXdPdzb4z|(HDY9FI;Wrbs7sM4r>VxSzY zdwTEZJo&{t?FaFOVZ#{edKPBsc!kdp_rVRnx_Ed08NuFuQ?vU1ng85nb@8q)-qrWd(x1nv zF5W#Z-ddShyR<_3PhaG{q%qG_eWm{r7jplNw+V`u6xJ!MSJifvn4Pkdg z@oZoZU{7E#z%6V0Kry>;~)(%m(%V zK7-BN=jJP|bt}IQWbcS6dQ_CWDuIcVJr@TEW3oKe^xk9o+Hy$+kaxH(ZbslU!AI#&cOC{^;ZM_uY2j7h4aigfa@DQ zSx`0C@HH3}r(VeWee2aWmB80vS(V@nCoe(eW2bWbs>ZKW4p}iF#+AnlSZp2GF4V=W z(5cW3-R>0S-cbIV3w$;@*ANbnsOm?$oKH%t$Y>>~h-g~9d`uPnNxl8p)cioT{!rmS z&BjmqyB+jYm)bB@VbOW)aEAK`U_LMQs2@0QlRt#$g;e86h4dNgBkut4OD~%!xBKs< z{95V1QON30QXD@){0pWi<(~>?(8OH;|M7==q5NkXj=?hNUkdaO-1!IK_NY-UeD+L@ zha+ez%N7fhM4d|H9!WHgGrYa2U9D2R@BC|_oPsAiswoM_pot%Y@-4x{zpgjGPu=)e zQT*#B{*@B{+6Z6xNM23i10}BkuLExY{G?XGPiiInq*lUDY9;TgNNjoc*KGAXbfV?k zL<hwj_yW!s{ePM0oSZi>V?q? z$0$UM!j;wcPgxN1LgKgTrGZjBORB9-VZFizh25Q%B@Y6EmjmY3SW;ZIg09i>pc%!u zZ5&gRAIDIom^tKqH6{jG#+2vZMdWLT312Ntu%{}2O_l$LLaDl8TV$Tg!=0ga1Kfw$ z-G%*2ABT|Va*AayoI;{|&fXwOH{5{?uYM*}@oUij@_+GWXH)VXz<(EqpTJSQ(#}8K zYwEh5iLqMj2+@<(CEh-oqIA}%oG+wOb)9?jmvkk=O)WjHd;aSZXXt@c35y#%$>xS- zeS#{aD)^*DDJ);p6=xCKn%?mt^se5C#9aZL!jrosP?NiXdw|0vUz5XuBY+ox7lD_6 z*MT>HH-Wc+w}E#AdN2fbPDm?tbv1mA7>Zs;bY2_#zEZ|3lvcp|eR(g*cqLOIk*1ey z5=$pP)iq3J_Kz&VXaee1U0JKr6BL#dGG)C7{a3<@a{>0$<@9O7>_~9CPrQe5txuRM ziEEMmUax=C#ea0Jl*NI_(JG`t7?gZZ@$Z+X zwGB$7bNBZ7iUl@kYMnGF*-$lXq^mY=Yn?i1fgg1=wiLK@flWF~mLe`q_|j*>Z^9;g z=`-O=p9x?3O!(4ga*Q#%F*jfOO!(4g!k0dix#aPsPci366_%1II;T#lH&`%MRVj%c zrJ`stSJ_voFZ}&agj0TzWL|9^YYAJyr7kr6t1Yg$o=l#KUpo&J3R^xK? z=y(Is=zXk=YG6!Fz8td?t$w+yz7kVKqZ=Z;webpLW0s3-t(X2)5s8r?G2*Ym_E}fR z-8pMn;Q6H6D<4f!Ea&G{z6-vH9zq)Ais~VP9xZ%LjTRs0kGxd+ZmwsAR0>y0&Wh%y z;`97bnetE~7kLtX5jTw!g|^Ts;5e<4UU!w4(tYIuE=;`1_FzW!X_1Tn3DItGTM zE>!StHHI;&y{d@+LjCYdg?*k}VKbG_%bPzcWebJ5l|8W0u2uR3g(Zb`3g@qmqh>X# z%HI^WE9_9%sjy4o6ope2PE&}|_IJfmzW=E>GwR=p|3{(A zRM+gbVUD|cvK^FbDSgnaU7L3W+ie}L7^1|avm7NR{9m_9o<H#{a>H#{a z>H#{a>H#{a>H%u69@$pT_U!uzw1Z=xC)=<8%H&!qB9pm)8H~-nEImOx!u-zJH~s7C zs_!ZMzCu}g!VeW6uW&tu>nrTV8X111+#f6KZb!KJxAd9snK$s?MTSXVF2S zf4?=EGePDJgL!lB*R@ozbZLpwHA^ZL^F3#V)#dJg)a0j8;aoz;En$>KNJlGSwHVKp zSVnmmiZ$-a!?2Hf@*R~x0l|zYvtWV?TEek=a-bwpauC2_OTvPp8W&S781!}SkxTt= zG*^96e;S@?CEd60#&0;7BZfThtKa;<12s=a#hlpaS(ehB=5L%=YgC$%p^c+;C9{rE z;&>%@hrpc5kH~j*Rd-c!J*A@F8`d(-D)rSjV=h}U(af&z$5heqv}Tp)4PyoyEYWPQG{;2S zZ7l!SF%%vV5V%MX?+|+9 zE%ld5EEg*e&u8oy7Epp78qbxW1|~XB(k0Hx?keKCY(a@tG3f-!zC&VtF(E;TO;BQ! zt#qSgJHS6#fD@_PrgagYu}k=jol>4l)WSm-ijZ6&2s`VU!%mATZ)br@@1|(7I~nHy z=T`DBBLCtnB_Jn|B%@+=u^#sY6+emAy5LT)m4x6w63wqX7oFP@e#BLUX|yD{XjT&> z`?upQgEs!jwzO_LVEalV$EeU)g?WZYWU6s~KF^}X(y@-p=Wo*&tHCdI)vpwanFEac zJEiHYm9S1T|fgVs^)~; z%<`kxlB#G>_*aF^3fmP(!(uP>nR03+emSEV-v-Hs&Mv@2+7C5_L?2Z z4!{gxCa@#06R_?RU-*1ol7*Et@QUZ&!K%60Pcu-4b&~b zy}(nzE5No?djP;&e&G_R`%EP@(es`__e2lXrXpOWZi>kRY<2jrHW26gm(+mI!UnRo zo|}!ygc#SuOBqOxsyudG%n9Wfsv9Q7NXT^Zq)Bw9?z8vh9bA>4qWtMG6#Wm;|ITPU zB>S~XAkDge%8TG@B%`TxiZx{hgQxxcmv=ZVhI5v@)in;|0N8W%uF{F}8>OLRK02 zZzgAw4Ps9I-H$|j^F;fv-ri73r1d2lvP4>6BCRix)|dQRbxP|?r1d45Y{~DHzNx~^ z6l%AdY_9kp6>g#MPYSiIP9!jrTBS@-SW;N0us(+BJQwpb=yU%qgF~Q-uR!~7UP|7z zz-_>Nz+-@0YF>kSAJ~o&@KN3rf^;tfl9AS_7yA zhU_abxnQo*98w9|r9lpChw@t_M5zUsEn~w!3hE zYkS+;udi!2R4CSRyX+=P5hM9aI&2x(CWuvhYasT(!0471F+&g=ga*|!QQ>5TNRKAP zTNJh_#ER3U_*8`w&H=&vFQxoPp?j?t-$(SDruaw#>3smSqH zKpv(Z6z)241VvbUQuhe=i#UP2lK_7|)n(loB>LgOxlk?uFNC@nxD>b?xDvP;xDIfO z?M+bbi*Os18*W{U@~Td_pS%YFm#x0|xF_|KRG540AI3P#`((S?>@T3`;d}bA-Vk15!*w}1a<;kDDDR3UzgYm$|a>QgZqL0lZQxztec(gjV_<8o{b5^Rdte5z zBd{~D3$Pn78`u+Y=fr)X<^Tr(2LXowyzm)#(=+gjXW-q=z)PKhw>iU!TyQdQDsVc0 z78=fmIu|$}xDdD)xD>b?xDvP;xE8n`xDmJ+xD~h^xD#-F>0YS&fd_$y0d%SGIMkEC z)4;R9^T3P1%fPF^>%bepTfjR2o2>8w)JMQpEZExs+W|WOGl89eS-`Hq?!X?vUcf#8 znqJr+%D<&@Fw~*I;lPo=(ZI35@xTedNx&(<8NivqS-{!AIl#HVdBFL=1;B;CMZm?t zCBUV?Wx(aY6~L9iRlwE2HNdq3sX(YbIqkM!(M8o6t;IcWTxY+tzS1{Rh>F6AgEU(| z$C7qhP&rU7wEru-O^1S^{gJB{ZqJ*+GUh6Szp3Vmx^HECeP;6=d|~!IjIYS<56A&& z@WuBLs`gda*Vz|H^mX<%C|_XRY~o9*TR~iP_SMth)^|nPmrehQyRVo2?!GJ8zEB>; zV&N;KFO8>?=$}k4u4cYey+x6C0glaruQj_O@n!?Qp6mGw5b0=UIV0U02U=DB~a5!)ja1wAT za0YNTa2{|Wa0zfHa1U@l@FMUEz?Y>0-;xS^Jt}-a9!IWWXUsGE14jTy1IGa;04D>d z0cQf|0Otc20oMXI0M7z1051ct0dE5D06XiHFK~t$4ud)#m@FDQAAZN^gZQ&_;aB+2Dex1j#fhS1Lq8Uc3 z2^nVgp}K@%0sMpm0NlKT)_z4Ao*S7KubvLc3}4 zu&ji87R_EXri8r(xrgO3H5^KnbB901SF%dDcm-9FZ;l(Ve5dHvNnc`bWHr4Ba7*GX zP`-4w8Qdc2-XSzFizCoP>bqwG(JXaxn6FQf?6Mz!|-*qMW&2=NA?{=@Cq;Gn!f^u!>8mMal z*NuE9d;^KDDcuC+`{G-me0zKwlq*wrK>23bRja#6ya#Ya>pm#oLAw>yH_{K0=lkhL zpnO~X7?kg>pMY|$?J1~dfad_;YxiMq@dT6hN#H5qY2X>)Mc^gCSK3#gUIl#JeI4oz z;9cN7;Ck(Mw!n74_P`Fn3}7a(Bd`W# z!+ub6fP;X8fkS{pfun$0CrfPRurcd^f)f`1vDQwN#1hPj6ZT*o*9EM?9M}an4)4Hz z%FV&MLG20b2l(lW8+qNj>ta0cVQ2P;T-+5z1}-ZrwkRL^twZ0p<35HygNF{~GeH z1>CGZpxz`8QMDT%aOZa~@!-Y>xAnh7NjF8j0_B$fx1ikQ?}iDt{P*b3(RZH>|G@Ap zG!8dt>9rR0Zb{=>pE zBJDQOwfQz{0n6Qa@mNB1qOyxBq!rq8gyBlbw}o9&zC|m>GPznc7NQx6ZY}U*+Fz<} z^`J_BOmF$IoKMb~u=0+8TNI1au_skC*BlLgj@Co_gUQURJPf{Kj$B!Fe~xAzFaz@J zM2D}Y2kOSzJ-Ed5GCu;#FX!OjR&B82cNJe(AHdRqVSCKlTPUUbGCo1+C53eg>lLyfmldC=kVU>x@xLl$LNzJgtZ>^e z2(|-?=T$RFbQ9}NP=0zfOH^(+N2#9C3dbls1|IypKP=#DvM z6mT^QzDva?msoa3VWLne^PGuX#wL; zRxZrmrZ_riyW$-RI~8^*?6y3H=}P~*!hb0Ir^0_JL}%@3>rv33Ls6Y&TaueBc?Rgd zL^1gJVP8czuSnk^qVu(gjq)!e<)yN}TG88`Sb$bkohvE)qQX%MM=R{kinOWk@*AZ9 zcFi+bgX(AaB)4+?lpnD94;91H<7UD)g?`fK9z(89_(sFEidoF)U4UHyS2g@-(038O zMfmS~!-4&MZ{I$+EWXY&ydn7Sa;U&Sl?8nP4H0aDa@(C*MpxJ* zcOUd0B;8PzSUZNf5;-Xt(35oEKCvuq(W05Fk*Tn>?)GbiNEAs9mCH{bq;CG6BXkXu zB`=M0(?qpUZj?%QUtZ@gUp|dYDf00rW?*#X;Cx)zTI+EZ)PqP%5sdqd(ISm93&b8nV!& z^j3xK3K7fG6#s|9e=BqYvg>WGE4X&x`hW{i7b$Lkbc>^#8sVtm=0rCx`vz#P*d@5Q zLBIsJF}qdS?TEfv@$HH4ORnN_w;cMW<7N_l>Aw@|9sp0^Pd~7_a!l-;G>lHk9V9HUv4;Kr7_`unO>BN|f|7}sn+X|cf9n@ct<1Ybnuii?tm zD@|Hk)#2!*5^KbS!Z&x|C-@ysf=m9Rl0}R10d$|+f{%mp;c~M-Q+026(7A7Z>Z|LmzOK0~+_h0>JGW^gmx6De1eNsQQYVm%nfs@;BG^!e$%!CVu|} zzZeg<{zPrqL}5-+7qpzsm5U_YLh(N-L@NG8@mhrw6qXd$DMVV*v&;ti6q!lS=J;5B zM4w6V6}^~hA~mPmnc6h z)2cT&Bg3jH!Ky?py^YtmRq{Iu$17Y<;rcP`vHjHjWtC#Z6JMw-ZJMk+^`}y&h-UVi zz_X_ppT@k;`>jr2MV=TOoAFt^)yZhV!{RzUB~B{IBMa!ZybYm@Zz`cbpH2E_tRehM zAq%@iygGh978>Qx$15IO!^7DP3Ke3Q~;= zzW~ExJ4)r490(?{vg%k~c`GRFUb_1vK!D}N3CrPcRKsr-{w{{9eftn&37+msVXAA= z@^)eFNh+e0R_X4_mx`E3;D|=8R9&JqofCXRk{4>?O_eS|6IPF8&{T=3-G6^485&C@ z8jXa}sE8=l#;2iFCxQi`@l##rHWEKdJY8HFt_J))oWrRF_aRk70^P|Xcmh3Qc~cyn7$Hix7@D$+NTowhQoEI0v@78n^|xRS<56dK`E{pxZMV zqtqygTBR-`y25F^2$kSjrV?Tf_%%mYMxDihG5m^Zqr3Vp+SR3n1vM|AzpFYKNkr}U zmGT3HKU6qgVNQsL4V1E>!i^Metnfz)yDz=sksh2@eyQ@mQrOEJ3cpwGrV2Mx_y>jk zU$z@mPk!;9q!bn#RHVNuWlM!k3bhD@+@fB1N1|P2Iuv#)>{2*IVYdYCs=M??+^=>HCh<75+Z>xfC}8u66jHz>V0xlf8w9 zz7_C&?d?!^0Cxg+0e1tw=e-x|K7bu?cmV1_;30thV|WDWQQ$G)aR9X_JPGv_@HFrY z@GS5g@I3GW;5&|&pk4-E0bT`O1AGBuZxY@l@e_OC6zr+tV`?cn0Bpme_CNDQm3e+~ zs7J3Jw4>0YbI(CEzDFOQ!^rcOosNL=mxKH6|1+2CP5@2>cvngb917dY5_qdBtgO*2 zcJo)nxN@wnTqReF7Fqw|DGR0Q+(? zKy~S?{#f6jP+dCz|FU#`=4)ms`qTQ`#;38Y`Zn9&J??|A?Ri{xKH#71xDX0I+;B0} zCBUV?Wx(Ztf6n7dDF3R5@AduT9-rHrTO4f!e}T)tadbZ|djRmax*meUZWgec1?*yMVw@CCaB)kLlF7O`UAFcTS%0Hs;5!A=PR$tIO z@-NwJ1J$FS@DAkp=WYJGyKwMt-tayB;Ge$PomyrC{w0S!q4om&yAJ$VU+~Z3_*WkM z>p1&U(!cp|Ae4VA$G-sKpUgRwJieTxjh#%jVYD85tU|V7SSqnUuch>F#ZcE&H+)rF zY1LLbC{%5w;bJz>J$gk{ZKa`VD-Auq<>()AnvK@G2e2p5hc_VmY%A4rHAc&qydOj> z=09qyMa_S_*53-_{;_1D)shcs=t_>W{**0*C=EJ-#erL;IQFX?2~#RN6Ya|fYE@5< zwI@1EOLUml+lOj%SL=8=d?#x$$Jdp<=pfbOSmQ-CuOUPZiN#LU}F`o}UGg>MSm&-{aM=zJwmxv3Kl{1N)cW*O5C*g2|172?75&5Azq#$sU!b6SF30T`CRlsHMrrmC2*~Bo7adl@D5Jj(M#QYX8rmL4yaszxZMn4vsb2 z|H0#0+d9Y9ms>hpJH|DXr*yWqHg%LcS6_3DHOIBLwswx|>S!O=)L1ueQhoinY2RL_ zcAd3XZ!b4YE_JTn)Y#HBZQR;xd~1!h#;vhNEV(w{wwG5gw@hkmDUT~pYin)q9G5n= zuC=wJ(-P~;ZJmv+E&Z&g!*1MJ+t%4`9okuHY#ONQ`diQRj?Qv(KP$=lXkebLuCb+| zpDk)^=`6RmwYS!nJNn50pSB^N3xD@C_u%=@egfNA*L6+$TpqKtea+A1KILhhgCyHr z1Pstkv)ZEA%%qD%Q$D3*dOulpTzzZH#6}yEehIt*5l?acO)9tdvndn1TIvTt^ma~f zE7x|mm#oJJMnE;UHH|BEO{?wa<5@NRuR#qN*VbNkX;*HDt8zcZN|x0dJ0L8xS6~HQV&eQh$X)Dm6<@<0h9nCJziBlsa3R z8|w$AF7LDfS!g=D+L{JP&g6B*fq77?vAwIKai9dDE$_B-Xt7PqfOK6}T|ehQqp8}) z9s|^>_EO8F{t9W;F<_k(_kROZS*a z-KM|umi>!yUUOSxQ@?i)URz76>HfBV?ANBq>+0yV$E+Key4spbofBKz`)hki_aXzc z`K#PHL?0 zx29OAa$>1Iimv{Pz(TFIFEv>+&^_v=r+!W8LNf7MnVyTyKW*0jp@Bo|uJ5si} zP*(wAL-^&i>XcatTExQt#wfl#o1>U#T2vkwV4t`uho}2 zOJ)G{oT+grHKePpW(%M>09l5;@KN8?YFCwGPN^xzP4ZZdJtrBp^-ZOY4&A`g=&*@X z8z^Frpy7t9pIRT=qMMir+%`m3X}uf6iRw5jM&)B+5t-=ha`V0J=xnNu&qHOAO0@@A zDt%6C#`mI|X6NdSEpo4o8P24G%ws&BW_OnAn##30teI~0S*kVFnjKqYEL@v^)Fmv5 z!>kIYTUx#WG%0ry(I3Ow2f-wpdrz+g{X1)ZCuk zWgvZaOPORFveoSdrLLyfRW^j|tZJvWw#Q+y1jd27YJX%C%7@$9$!HXBV}8DIxLRU$ zu}Ig%iH+05g-Z<@q=sfJZ}W>u8dGXBmbYZ%qn2`QeOG(CY4x>5`4F=`BUL(7z0C=e z8}Sa=4a`})qph*UcyG(vsMV%3DoboLC*w3R>Z~>!vSG7XZdJC#hS;+}nK&?8Xsu0z zwUlJWeZ}rxfYvU}n z>#ZHr%N@1x^vb$1O^OA|e@m(8rlt4_>YV!4w&`(tD9QTEjK!teXd6TFmF*X?*OomS>HFcFulus-hH`Y`0%GPfk zwdE=0mZs^o4UJP8I~t>msH16Pt^HlHh$8##g&`jJzwskJ^WDal%Aw`|byirvth(bCbk99yVYM}Vm8SB)R6 zYZYG&PLL?YFH*_I3^JU=>C?yrwHFJlZ(F-M+qydAqH3#Jb`P8UovqnQYa?mPW;&H> z<6KaswrEc5>g;Og&XM1&l6W2zXAXmF%duonM#UaUy|=TTvQoAvO|*mIc{;}48A(@Y zd%q%$+UqISH<%5wI=*gqYSCjinjE(#+j}B)rWe2(_JWUj0JoP+R-_|anSA!5M#n^x z7d(ei{Wa3MAJzX8Y@P@t+(w-nHNX_QxZ!;`YiUK4NUdvcPFHZd#<<6%gXx=OPPNs_WVfY4^U6tkxq}7X zE{KazbGf>ufcHdHMo=^v&+q?{I&p{O); z*b`Yf%dweb0^9^s>=08VCfXddITN{z91?J91VDaH2gQq~0P!z^xX ztFI`?EZ4D(dL$cy*e6!T1crGFTimj;xTTBJriy8d;=#;?$O@V!8kIte+3j3m>IKF1q&GrC!{n#q?p{Q+au_+MQ)SkM2+O$$#W0XVn zx`%gY%AgdA@91c89%S!jBiKsy@ogKj>6>he;TtUGQ(f1@IOZ9#hUc;+Gma=!VQvZK zDCyL)*rTr8#V*OJ$Tk%Da;9t=!&^!=R<&MPw;Otb_eRI@1FRqGcHuv-h{S?X9elc`}PzF{zMi zR-Q+EmLuiXV71uxQAO9P4RFAAsymKy2VcX+Efc=_4{blc<@C)zqz$HzFD! zDp|JQh-RLcG1;a~YkQPrM%bwOP3=j|cGFUh<_{aFiS;d=F>1q`M&pATZ&_lDnWLij zzs*M%=y4vwS3VTYwx~8%QZP%U)+5t9a!QR+T_*0dw%SG*Zk6s9y$<8_lo7=g9?LZ~ zS_L=E3R3u(OcSLW$}LkG?G1{!|L`d{soY6!Tm>}cYE!4ed0HnIP~GE4J~3)58UW8}YKVr) zC~GuS*6royHj~=c4)5&t(o`v^rg2FKl2huk{eZeWE(+1O6qgjM&^p|fG27B*t8SWH z>a@kF&bD5*(QPlAN`fYCTMN@)wk);B^Lv%G9eZ7=!8V-85ZZUPO7NwI4n7; zR(U%^%B!!`fQujFk)QY?S3iV}pts zDMN%dc2T=gs+kk)v^lazxi)%|O|OkR{WQyzZ$;6=v+a_RCJ>ZkUwmlpn8F1XkJ@^c zkxmgypJ&u8rKPj8&00}UX|sF8gtSVx;b=j$4b8mC>7K-{GV`T!e^Pk#O}af*x`~bk zmQs7E*`|sy;7^Up-jH(xi?z-6P0giR-wLYc9Q`wUO8V~S7OOXKTD?2$MfbShPP4L&R-xA;6Gfw&j9Mz1-;>qnS%L=Cc67DH z*X32#dOOE+HfJkbXRO&_YI}(XhF2@DjJle{^!B+VnL%=N*>tLmw4;2}S{vhz!=9Ns zI zEsQPVymF3Un^V&Y(p7_faDI8tQW_g<%WIRs6#~1i)WSS6LFWzbHh3mP+}xOQk-5>O z4`p4S_D`BLv1A{uh!a5DZ5s|cJ}nlP5w|hw3d{97<29C66YY-k^my5LC>0xVnjj`D z25(K>(mBMYMS-hrVw(T1Dz>PZgEJXyC4E|@0?cY_VU}0&5Zsb$s>E`XloAaU$(l_S z6MZ%tYY~QKb8AEpTXN;n-^c!E^)R7k9}vh7$s4jHmO$;ftG1~rM8%u zve8PTQzxer!X)WLI}59ADo(|0w)Wbbz%4aoWo?wP*{f=kmTq6LrbWW6 zZ#DG))R#uvtgAXy9W!lDfX5Fba$GA>$4pSC5?%m)aWhnyjUy24?Ds zYLN+1vzZ`BjjlJr(!w!rM#Yv?o_HzXMyEhDB%abl4e=hfsc+YV~9q6|u@xNXdlHkOgJm7hq9Orn+&>yh3Vvm+4=;nws> zs>y|8JnxLSzsVj?r78+T}(TX9>7YfBBKwp8h|r0f$8veQ$K9c5-`mR4kX+5BX5 ztZBz?u&bro`9!1d#k`u@I9e@cw^sjHCB_R;YSgx(95BI^VvDOa+vZxdu3FnHONXac zzm=|ycT6j(G_X*8q3KypBhRV2rZ-c!H6*P&UuU(g@F&XEX_UE^?le$!Yv=*dMOHFr5mYRD!JA*I9BPXk43wu(N z=V^RWJxpxLwtt*tP0o15n$uuAY};tstj=2$n(7f=c8!ktvyH3W#vZ_CvL0Huu!$Et zz-Op^nbZ#vm1$&)?d1H#+$fvS+K)z-tqc|Oy301AlkC(#t+sOdX(E4GWDDg)wI_S4 zUMa>Q^Q72>iRH7MfgPVZFKYtOQIRDof?B)~bq+>E6-O2-yRHvA&EqDJb&TD>HmQ-r zqAA}-!CL8V5OEVxTQ94Z3cOzYt@t2p%ZKev>6?U;jog{j26m*}wMqy($Z?+wi z)t2oQj9T_}+Rz}se-$?&ME`8h6;EOOjNSGMrhT<^#G`(-*sh9)-o6JjD%<=<1t1{P%`+?;@KQM77m+7B&Yf<~@2ke)(Wc)lwfN;?#0GRD-od#{tT-2AJV0m)ETma>~4QLdu`n zeEG5sp7u$q&h$Xn@}l7u_rv*T*nDd)ZD~9lzg%Mit-;naCQsZNv`jJMOj<$IC+FEH zM7`74NJ2ldlb<#jzvv>HK=EX@TYN|qZq2n58BQyeqb$!(5(+kstUzsQG**pSEwz3q zVhPqp@fJR=>5ZckmN^UByhu}Gv%1x$#7bQvnt%%yJlN*uiS;&n>NVI+QHg%rCYPItZPlvNW?KI{?>!Qu>WDo=|Ki%q!}`OAja z=7BR~G&{Aocj<#tx>?4jq9*G`^Q;KUG2!o3OtQll4E1)c3;V*l)-BCAJNh%F^~8AX z|3}`t$4Hi)hke!E!)Eg#O4{X1vJ77hBdU7YyIZ%a`ZXL5Q`22NQ=IDVQdM0t2BF_z@Vfj08!5gjDRn z2pmd490Z8-`@ZwI=ia*2(=$6HC2Pp7zW3a7&OP^>?|kQbf5x0ai+GGRV=4*ANRau; zpepbe-0kaVop|9j5R(m^q1|$C*mH0i*TPzPQ&PEiQV6c)Yq;#2|LyZ2&JdSN@`?Y`8Vo*2=3oXv3Z zIGZBhBs?V;>EZS}4+Y05QK_Q{hM&a-yu^rV-C57MrEfZWyuT;3Y8KxsfP33HWO8y$ zKYePfn;`%UWg9T;P>jZ&R)@izdSROtxtndyt?0UxP&CF>fEI;*eAe*8EXcn?SE6WC z`LlK|drgqL-n<3yIvs!(Fz+JQQBoo-$ZHO?k{8-LDZUUOu9YpzH}s2869q8Lm+#vpe0Ld=Nx{`UiA$9O61t9&0zrbkDZ%V2;lGJLUEbZ|v` zIZi-7P)0_;PjgD0rFc3JZ*<60OL7Jp`&Dc@4pQ-{iT*|upJ zt&hOAP&oURCZm=yOtnMx-YINIgM6^Tfow^f$qHZLu@q{B;YTbfNXol`0I+IhP&$AI zI6Uy`TzhY#O#^^(Zw(tvO-IJtiWpW?*VKbpVEN^NIfCR0iHiz)O=F#RQ^i{Om~s)x zvPuwY(ne+aYW`{N_;_e4^K4&e4lX$Y8Fp*klp2Q>JKSDl%alGf=v6wQtZEAn4>)U$ z;Rg@Qd171Aqo0=#G0`w~kia6Owl+w}w!9IF4!cGmjYJ(#6H(20Ep=5cq-kofK-h^c9JB8cD! znp3W{+_+J=+w{Tf=jcYH*a&gWI`9^41Y584zBaQ=o?L6BGt-PA=p;~jh^4So#JU%8 z;FwwEIRw#xm?xWth&Hw@8zPm(KLN&1Xc@UxWs2C53)N+d964fcJ^$ceWi<`C+Rn4W z?mz9^^`!4l&dv^m%#yeI2dS9EcaJdD*diwlm(Z!Bna545aA91pKkq+e$>mUOXjEfsv zMbLq{v{Rf`G7y~Jiy@Yr5K8mNmjICB7Q||)^|<>uITVrbARH0kv|pB(!&+{iZ12eK z;>w!v`(Y`lIUgjC~OXU;#j);dfi$fSEA@4?iBn)Q2K1 zbp=mquTyj(Rw#ISDQyr8|KiLJ+3#lOeFiSv#Dul4yJ=}hX zvCa8FjlQ^d))4Z{Tql;)mXf!(&)J4{$ZFFj^u8+)izGWz3BI2Fz#X`)LAFSAt!8ED zT0g|-_T)`sk42WhQ75~u??G))Ohi0=_hoS+m_q|SK3rS(ja?u?(F z;2UF;=Zk_(?#nz1uy5KEVBx83BwmZ8G~Emon{_F8u!}i9EjdgqZ<3z>LK7I9z_bjS z-~zKVWbu%fVz}^;l#)daW=~iO<;s04x0yz~k0Q%XV&p4ix{hFQDhLZ^K+Qa5Ou;ow zY;b3;*~?-qKP5Ll(hMP;!Ds%py_)ZsL2}3QDQNQ6Dd*R$u8ajDML@9AJglf z1ZG1uD)-)Q%~e2Ta=5QJH*GIsjJ)Vm1c`hE$GEuNiQq~I34blh98OH`(>=pz7$2rr z76scYss`tyt%S7ZaNAJ%v{5QQAakY23DyGZY}?iv2T;i#C8;R*w4m%wKZ~hWm9qRh z(`s(ADX|74A^&w&(A^tDOGim==_s*qAhV&%K~XByx8y8kDhSaE25JjX!$Ky=7jcZVgKi{n`Eo8%=;%o%$N&D7_oGwmAG}h$=jz!kII^6D?bSesFk`D zg%1pD1`S2msLqIj`Z8j8nx!w-xj}TVVkN`<$j7*1ueH;H2&AG6lCMIE>X>Y?TLAPx z`)7CtYGrLoi8@JaP%&YqS+3)K)Z`jXg}q_TL*Oh^GxS!K)Jhh0o|d^Nd~$jbPg4m~2`?CX3ch1Sv_V zYGjk2tH((CLj6KI+=I+Xg0V67pShrRI0J%e^qz+gtq7U1rS<5?39pUCv#VWDTJTPa z(n;3mCKriW$EpKg?UXwQnC>2-q1ue(%h?8^#tb)-w3hv=QVsQt6>3sDs=4WNcV4|h zBcsuB(?G%Q{+{)VP7gLMcH}5C&3$UI$IWSaw#l6_h#MMTVR?WMjA4a6i74mjF**o& zotG^>)kzbfT{wwy@B9QAAcR`572mPUyOs9T4Y2DZil4RZh+>NTp`MX>UWi+$P9J?y zOJC=U^-cYGK6L^8N5T3Wxm**kXk@Hdo~K=15nV=6F>5L z8|X?W6PaM9u^gIeo-?vs&s5Vfm5sE`a?(Z)#~XP7-z71YIfJao70^788&Q+)py0AL z^&ev`B%-H|RQL?1qUBmR2anBB78x*Q)wJ@0D^O8JK*x@JFmLx0^ojQH!_tE&eW4tV z@LJbGFe32D9PAX7_^+X95W7Oo5O*82*Uy!yH#?RmOtvUm9ns=W8!XOJ@`P%LYE_0V zvU!!xZ{~yc3rkCJdJu(+zNywr?!67&lUDdj0}|U^5ZHA2#H~Lq8x;lBAu5~ zHN(yp%W7$rpXU?Ru10j4*5N~(K)r|FBE|T=X=S#Wxz@^BD%_g4= zU+@c{2Fz8Cy{>}3y-@}W>904;b+w{z{Y7&ZXYSG)HwDsx%t=5som|NF$7|1!-M_^9 zeMwjk%ndgMY*WMSLaBUwl56b>!p7RAk@1=yd_h<%GYY*4pY9M<%ittlt2g1(^%xez z+I8^U-i9^8$4Zw3laSIIwAGuirP3cFS90I)3&L9NXmgd^eHuiB*%v{M;V!uG8a!TzyM&h3pND^eV`c4MFd3wFi-6p$&m798BIc5HU2sOx`fT8>C>ORdEWL}qVX7+Ht zRNJO|-F0s(2j8CVcbh?>gr!zu zs}vOnGbBqRbZEYMrkwhIHh7aBOyRiP+`55z#57cp`5a#@E#*ya`ID6U;+-jV?)pTa zYV2(s8BDFAGWtV|$1E9WqDpwnQy~!pvmGkrO41&()oedOAvI-`usb?L%!&4h-Ip@a zP)!`q8oCB-010O9ghVv@&o2w0x!^XxqHv;l!z2U>ex68K|5Xab=+RzEWF;=89jURn z`qNy=X`^mc<_;3ps(z&!HW(T;8}68FPi zqEd9vPplo7VcUdM9E7~yB9kKS8$y2Tw9M*RYHW71@{zamRfR)U+jwoQ`fDccPcTUF zzW448!~ALPd6rK#T&}3tFz~geC8k^RGWcLI#YTdf3VCyka<-YdGl%>qB4%9EYZJT``$*~cO_#KQE# zpcWaDI8fz=nM&rJc;iQH#msDgo~^T|ET-!x5ZoieIX2E@qJ%@4i0;DR3%P%y!HwkN z;X|ut6jwEC?`L#=svxtmTmfH1QotKcj6snJ{K0Lh^Z~3=&A*A?E{*;2`1h5@#=^qC zT^jq^_zzKdZ9FXg=VN12pDQT;()iey#;2wFL|FZX>*QKk`pweVyMJYTTxw^^zdfS- zPmPUz_0JX5|NCQOzcqgAqXkd?-1ykLQ@>sszcx1cwaKZ!^ee?xerx=PhsN-4PK>?# zRnzcm1+94e^@3J^VPb6R)pw_UO&d;qV{+miW&oKs|AfVw`u&0j|CGtg4m{J2$9CYE;{TUo9q0Mv z)T4r4zce=X_1`Nf|1*?N{llq8UoUv}=gqUn=Fw#M#s3$h|4$3b|LM3L#@8nQQNiPX zHa_<4|IsYUzU$jjgL*eGX8lf z|3Fy%jj?Z<#r(?n%q!z@!Sk;fpvbhkIrg`ves=1292iX9b64Y^`sBpVPJLzSV-u(2 zGh-94{IY?K4~DP&=M!UJC@B8rYlX$%C@%gxlZCbayW--1`~8Kr|A*q@|Eak6*QW|Q z`IZ!aSSBv>mH()?_%DBe+8-FI{qKI5;vX0){@L`GL=74 zQ2K5C?C>)_M@>QH*FGGU-WZ$u(znc4y!MLz{noc~_fk5(_^SMA%g;YFXkmO=>W`0q z>J{+Ax2C>o{y+8AsjnLB8a{vXo)nM2@lk0%nRznt#V=^#7bYkE*wjt)Tt_lKu74(` zzD?o##%uDnN!e`gpZbRUPJZjr)K@1y@RfUJI8(n#;rP^7_??(EU+@A&zx%tiXM|=1 z`s%T%UzR@Q&DZp2@}F=yJ~^eUICU-$<>%VgaryhrQ=KZoN<7R=T{w&wm zbVM)VJ7wj6P<~#S{Q4A;$K+!b{JuFkbxUu*Ii;J!{FyL+u9-jYlUaJ-sZZ*$8_$m$xGfh`L3ZJq~W;yq`>&TZ%%$|;?MljH>UQd9!(uid}#bLW8Zr>;+Z_3w<=UmbtL{Qu+QH$M91sek$x|MvLpSI0lk|35a>p8D$Fo%(ZA zkEgyk{@2DnI`Kh%$HxEi*vH2!A00pV*!cC2j{m8#SFe3^V)-kw<;EtrwW*1Ji?4t8-D@A8 z_?=(;+OOGv*FH4y_e!$6q1*T!AD@;Pp7`3ePfSky`@b|kJ*JPw%Tmf7{FLIW@q4dc z`=k_%-}`>^#~1&Q+)w<-_&seX6@OSu_HD`3=j2u?wW%LXFSWfM-1_LZ<;j#5ng-_g z_qF&-`l}n#(0^0EA|(^Q`+oTX#-#0D;E(S47ijnF_uV#CzWaZ!>H183^B2Z%j{$K1 z@y{BpGdX_UEa;Tt#EBo^F>?nxd#KAlUY9@D%%As}Ka=Lq`^}#z^XCKR&j-z)57|GH z6Bn`+ADZ~BF?aU7AsvpJ=M(17i+2BE)BO9)pO2V7-*5i>fcf)-=FcnU&#UIoN6nv) znLi)5e(!TJN8ncw4^m{S%*bU-_I1 zlJ@YI#xLn&V)C!@nu&@3@0zRRXY<-8CjO%*<6jt?dUxvGYoDC@Yx?(xCVph?6aU$m zV#!ZTj{o|EJo%(P`Jt`JssH4e{r@|*27f0$qA!@59DiGS`GEHFLHhrG?S8oY*T?n2 zwMj#Nz3D~KrsB;GeUehWVKmGSFCOvV3Q8k>6j zt*I|livxB`YEMl5W4#lw7@vBB-)rMPrrmsVa=h{C_{|@rXliom3zNSlRETn7nW6um zZs_4M{x>qj;gM7Kdpq)vgoFI+uZ~Ss_2c!Vni#(+-#ua%5WmGimwBq2mAfm9eQ+niMzs z>-nb{Aoy>c$VX7HVZ7`IP2RI2luZ4jelYYdZnh3G5%mUi(elDfxKyk_xuks zB7^@$&8>1flCJ+9WZIPMo zUuC*)jaOd<@`r`N-@*4}M3Vmug!jtC2YwUQdFsi#6Cc?!OMI0&uY_RuUkc*-)F;fB zyc$0Fk+HvFV9JYFUrxiiikP61KjkD-nSOa}a8ACI!8~W9Z(65j!Dzckv-~7tt)V*;P_+={pT~k@O_o*+8|Hu$p zd8wWK=g)=vo>jZ|U~MT`X|nEK~va;Sy;(9GvD(}pk z&78~}&m2xi{%NbVLV0vJlNR+iI`r0T^pomzIj+}dqO;)!z5~-em3&FszCK;{rOmBQ zH?eO!_WjO8Co|D8@1HIujkR7Y>GhWz-8;$MBuc+vZGE|!#Fg3dNp2h`WlE=KB7Ws( zj!ru3z1CLJSl(>)*1Hdq*4oN?RIOANDvRy3Lm6{@t~@*&<^faXhs{O1d{VB@%PjD! zvtY!&QoF@eudKJ1lXi23X{*ndkD2R(+;Fq?TfJmyeXUnMpx5k^u%`uHnLbXZwl>Wx z(g%Kavpt3HVA88~=`Lty2HxuS`V3=e9NnfVFZCaEnn}Og=*R`rSxWA-Tep|Cwvszb zOUa%7-L9SYyTPjUnm>{BT0hxL{E&Rfd^MV{mR1{ENpEenlQg^CC|)Qf%gvS6S~KZ& znoFg|#ulL5=yaOhWV6xU;QjJ$5)a(Cp*9ldC5EuI+D;l9{q@yGzmYW88n@fc0YwZZOXPx0LlJbU3TMiv=e>mQ&9kyDI9fMckTj6)nPzN>lj$m zD#MG~ZEiNZy=Jmprjwb7)iqJgBw`0P3?=3~xxbQZtle8%zrV&BZLBRbxQAjGE+zqD z&~r{0gYwhqsLVh9d^)N;-P@~V{^0~O9o@PW&CX3nKQ9$+y-Fop)77h2^7XPcUA=03 zxL#P()mtd4mR8hiH*ZEGs=11;TJc-W2g~=kdPQH6PRpLS22Dr2mRXrDt@iFDoo4f1 zT-#U`#L;TAb&@(K&Ed>$u<3xp z^=`THl*y}2rynJIvDv2Eh54a9YRczI%Z)xbp|#pfmdqa+LJ}SuzL#oT+zW`zPxk%0 za)jnqz!X-i)v_F$oPw27d---dS#7Ox9wi{%C`oc9Ns@MI4z9TH;EMI&isj&nIk+%8 zIodgSNAXORPrBV&TUHF?Za|mIo9x%sX7^50RxXNbrMrzy@MW{#T-#)+l4PxmZH-B! zJBX@&#VkTvZuVITIdxWA9I>5FRQknCKHAdl<{dt5^EP!l57O_j$BwMX?0k7pnHj`0 zgX+wnHZ!Qt3}$Brb2EeanZd%$V39}inCCGSVrs-x;WGy@m11heREw!srCwF~pmK7gDcAy&Cmu)T>diM!g#K>eQ=KuTH(XjEs79>eZ>o z@jc+|8`P;cOTAg@%~Efcdb8A;T3fQ#a;m~7=kGw#T%qB67)4^qP)g+)4V}e-DNMx89lVoWceClc^v8f*A>qpW+YNm;qlBjGu z_-s)RiQv4YM!%dS{_WH5^_O;+;=tT#Jns)<4^P6}_#3SrlHb`UDT%)Tc)mOeUwaE+ z+>H8}1il|!%3#FRt0A%JfZpylJIXdD)mp8bJ?Vo-RUSo90f%Mwa8kJ))Tmj zI2Mvwc2~R6W3K_-Z8_~bjV|!qhpvrEtqx>32>0%KXT8(!MY;QQ-Grs9)@DaAdps%N z_NszQhS)u}kJ&wQZj0nHd&N~tU9(G0-eHrNX*GPg@OphAmb#qAkXv&4`e`?WMr~f1 zbW3aahn8vf_qH-9ZWP>{C{OJhIIcT@3vgfLpQnos!!M|lPiNcW^DFx`Ie=`_jcaUQ zg&(k2uir`%Q|IANmGOq;(a!Ww!zh$p#Fglb&=}{DK9fG&LR+~+bvD*d9_GaDm`BPb zsvO_XluKx(g3r7}E@AsE;_`(VjAPJlTo?4Wm?Rj6CuAax=Mw_C5?_#nJJ!FV)w#FR zJ8K>uHus;S?vqlFco5n_NC%-Dgm4hLLCFTC8iXi}KK}>v{{d(MGVLT@loQrK4|u7v zmE2wKiZtzhql=&ikxzuosx6o*xl2u1HaPahYUf@bl+) z6^xaYmJ)PYc9)-t=$BfzTO4VxNAYy@W>7L6y%rhph@fO7*)q1AR^hM?u_fAl?%o?kV~)vnR3{5z1H|e}gI=c8ZZ$HkWg(il1?)^JKOX z)fZW`4&vNqV>wyf=)-uZgn=$ZzTm5;3uNV#h&b{ql-4nFO09CKoKo0FkyHBD$f#mu zP;(`cIKjX4)&aw%4HO&?MCyB2@F7$^dpN2Fn1S}~WWK_HyUF^!s19akdoLjmMa&$0 zMGDdgHHu++)(CzZqGY)X*S5aVOIqvc2&D@>QWuB!o0i9wK*ls;xoer__Fumu#BQ?E zZrtgW_rVhWfiN=u#(;yMF|C=*MEld_a1zsXFl#lp@T{fM8keoq9Ot?$RFd2W7*~6( zJ7tNecL7sY_E#b;p5F^rQ-EZfZN9QNI~&i%vl~t{4;t%k z^jgT;)^8(1Gsi@7ztz8+G*M27;-az9?w4Vu`wcmy^<06kX5)YjXZkaJ;lyWP)jREJ z&yYtW>PO0>wpK!;To4duJDN-1*JsanVX+sez7;d1`jo zJLTh(85@UO`393T+4@e-n2b|il{cb~xXxU`3f=snnRhcM_$`egbf0k|~qq7}cBY z^cPB^EfdAfMsF2u*HZU^l9?(*kIJvtXM^3Al1Cu7!p%`l;@Pl`rJUrOnxuLt5J!#=mZ&{eFWh0e6;vE)rstYKSmjOOPO*okyRG z%C-wY7iv{hit^V|tx}JORI${vub38bf}|0-q<%H6Uk&OTjWFHs6L?jtn6D7}xqxE+ ztQIm@8hkdwyH~zwpLP{_^?r2I_Vn54GoRsJjU@Q_0gIe5DA zv{rFQK;)?4@U`_W$U^jN=;+(6r3VpFjRd(V@=u|41aSh2@Gx2Nv71bWn41zxDDt8n z5brIObgw~;^fo%3^=_ZPw-d&RDTaVu`nn;qWd50CiPX51EJ5TTWQh$F5SfTgPC>^h zkG@V$`nlRdz-$<4T8;`gh1JSjs`yJf7yyVOp9Ass#!8gCw_oPy@3nrv!{jfu%YC6} z`XSjOGrd@OLAlo=2N{QqhnKu?P&=oNuaFA&E|GefUWbHUpio5EtIgHhAllBl9`898 zLbMNt5&~VTBGw~d$2E!$cy3NC1D*!sQtYUY0xmNnjlzoN51pzJRAIP%IR598im4_| zl%cR8N#;qDkdPTA)kihZfH*zf(>@tYNT)K|znQ8a_^h z`3T0M>o=~K9uU}Tm55Z2m$%=!EfFnLmmkQ-1*&VKPRE*9(|CC2LJYPuN5;a9qK#mWr3{OQqZrE|yZ6v&ycsdno#sJ}7u?0ef zWU@zu80J7|HkYdMMfJeA>Jr*{u^uft63k^+>enlOFsTx!X5f&Pb6byX{sPI*P{;j&AUre#YZ{nUIqnk31zG26qk9h& zvancjgre*!F~YHg=_;bPR?=7!crE|z%#j+D1pIs|Z`+K7w-*VH5wYF40n2~m#`eY2 z8#g2_G?D)7zR$ga{m@+($$<*?`dCCJBG5Amq4IENDx5E{Vdi_=(L45kUndk`H(r6Q5pA}fxp1>=OZnyD3EhozyAVynt>owtPksqZ-+bYv% z%dV`1CxGF3;<*LoOs-~x5YKUFjZ&zbyay`;)A3bVWieEpGpCc??!Cr}QI5!h^$c1P z9C?PaF4)$d35n`Ba zKAK%9S#v5f8bL8PHnH49dl4KCBM!~QfJ_d))XU1Nm65`7P`j50f{r+0WYbc`|<{az361D*m>tMv4xLs+&J1kIwqyo@zL&?ZDu8OOd&!kmC$8{ zb2Cf9F3w8jZboM(>?$++VLw>Tq8BUEGL_T~*D`N2eg(>M188Ms)}|=rbndbs-)^6R^VXdu+(WQD7Q1g-pva{Vyu>*p;I$e zE)$7R!^lLAk{u${5fYx1kZ$^UX?m<-u=PD-w*LShUFrH*^jJ3rOIJjX!a{#X(4%(j z(W3*}hJiYP)%_VU`OHH#k~x+BW-7{IC6!H!+%e${P{qQ<><~G56|j>Bt!5i{n^inq z(CYW_iDBEfmXX-YE@hP@x%P6XP>ATYHr|Rmtmu22L4-Op#0ncx7 zpuIWL!6S{Un|G#PX%+Vco@!~Gz?tnbB*Xb-kc@#3hUJw{sKrOI;vV@EAf$NFE!Uo(mDraMdvBsIo zjnR$4kzpIyJB#N{s*?Rv5`IX0-s8O{hKI0yhC>q_DlCrM!=6iP-o-a`V+}KpCH6Ib zB!1kUsal*Jk^&e*hdI?g2!nX1*$p)hm8uh!$wN+bRXJg*>pSNHv$|N^@kEQ+TH^r5 z^a>%c$d^TKz_b|?xwO#;GAG9G%`^YO#7lKNL0?e19#;V6XNlLflK-eHi3e=IfqVet z(S!Ym7>_0z;}@5KpSd6x;TfvJ?V04^OtLeRU?ZK*gWXd#IP&5>#glYTA!!n^u{W$v zH)RcLXtBT!-LQP$)tV58G{ZQXF1XG1amnVWRnooTCnx2m-RZ$V(!#)KCoK%2(KF+Y zo6j_#B~2q*$DMSNa=0s})yX}@)Ynm10RVAQweFz5l2^x(v7LAm%E{*YJ3f8$?BMwP zO=AMC*JM*ZIk}Y%LO>AF)eC}PRb+_I0zs|hXZcDXX!{L7(6`Uc%jL7SP&8?lIEw2I z27KTCNdadRi=snWBf~15IRwHg3j(cHYZ!I~OK&7qzV9r%>x)y9D0LXXy9EWrstGzB z(7s;cIX8^z)K+pXcymf9FN~s-pGCz6!mlB3o9euX%B*ooYNun8s$wNn0jE7A-Lm@j zCCz42Bxbd=B5pjm8>moE%$b@Zos;vfRy8hyce*&Nc?!ISZk3lVE>p?S-gT$AlLPo#SCON*sm!dIlDl&!TjQ+RjgUyGnBfHfiWF$R5ZKd zTCK)1LT;jDRj0;{<$iK|qlF}B4fo6~jCsX&4*S9C+WID(Y*oJ0$~}#xoQ$NoCcIhY zY26`!9*$j19$OgoImS$`du{ALA|*`cM-!&=S;BN4eCpA$BiOB(rg+h37s9`ai*~Xo zN2bu!meCfex|)A>m7*Cc)w)V($H{U)fTzo6wo_(q>*h@A1d%)A$#}j}Ol-vS;jtl3!J;sx_DEfF zARqCvohnw~qZ(8zt_8xxWW`waG2rr+G1C(RpDjdZd5Ti`89SZUyH<`3K5+%ZEOGP) zk~XlqX{}({q|(aP3f6-UkR8feikMv3p6zpXkQ4v(*Y5$4B9u0k8p#*Bw=46NTBWAY zA#!+;uD?U{`@Q36aS_je?mh8}LPjWCK@J{__V5TqDPthWSgj^bCSx{%2QKwb#@y2z z;|b!$i|wR5w-82yF!j(_Wn0dBTNBz@xB==%K$L21dQP-skb3D9&lrju{}C7{h64?G#wxCgXuXirpN6iriQlPqVrK!LpiVN@M&YpgX2ClQK(0y z^`yIezZ+p_Vz?kM{hcPBmSQRkm5nP?p8!Sn&d_EUpZ&bprUaW`Xb1^T1%-Cs8mt+C z+;Tp!j2@N#%TqY2%_B8I6)BXOC>6vYALTaS9ylmv zpmn^2XT9M(kX^276Q9PJB`bp^1V08rZv<*Jskg%BFp3MuhW6uVDl zKC(sboxIWboPjzOkS&{*#yto)DyzR!%|u|SuY@fWwJHUP20=ol?L(`AE4JK^w2CVE z--7|aWK(kAF-(%gvp$BBpWob8HB~O#tJKJB)@~Cp1JmD=ICshBX181E@UOh-6gbw@ z%F0S{7~PzHQ_UBVI#2%?S2ID8E!fn*JSQ{RQ%y3NeifDl<)<_6xbA_dlW7e+V)i$8+tBB!koY~VabbD9cUpAT%qAdCAuZmh~0E1t6bS?)V41i@sGa8!4& z+ZWRw4F=K_XV-MdhUtVoEao}u;(P4BnF|f&$kxlsFiZ{fns*h~7|SpXK9kxXM5$X4 zDO(@k6s75{=!W$M!m5b4gcnEKr|%>#T#Z)YRcXXR@g53p@oF>4ILp)evgipB0o6_B z=d4$nGog?-ChD?Qej<)w8QX*KAe==T%OSwYuR#j#5H$s81DF~sNt0uc6S3p20(oRs zlDJ&;p-VDWb6qq(TT%YNac)IMlm&O%!O&2`9SGGFU0)lVzb+^8_4IWvV33V4Bo-mq z!5kks%f-ez;$6oeH3We$JGsGMkwP#Utrpl#9ghbXFqUR8q1JXM)US8m# z+mdG^1E!#N6S$A^4g9^3i(1K-T#25u{RZ@$(mu$uPfo;HG_H8Lw7AU>v9($!jzK+# zc$A(h2t;7YorH{Y%9C0Jfe5tnC6NR$upL^M7h`Oy;vwt* z3az*6Rn@sR?%a{1=l)&7I$8ksaWJeoC2CpZkX;KXV$xl9C{6r|G3b4A{MO)f#(;@$ zEs|OE2EFOh$@yapId)NO4z`ajP7=uwk7kps!-M4Lq&#>!*ts~zGzFKsgFQ&P!5fKt z9+i!=pfAU#aQArs9Fut4O0eJCkM|D-Q5nJ}(Ezko04oGL{@mGks~(sw4U7>s5h>R} z8P%kv)}p&JdlHp0JWh-1O67F(fKCXlx{ER9OtgofO_ZjbrPesUwZ5rryA=~`U@CxG zhEhA_P|s}%V$i!UfdoY_kt8e236kIS^4>1iWzp_2X9W&*Owum27{9T&5N@9xB2rHh zXGh9S`TEYmuDCIud^WnyBij#HZ@tI)bp3NX*TuVWx56l|e{R{_5Lkpq+uUezg$w5< zxwk8hoLR?7%1opYx`?U!X?abL7?ngRF$4ao%1>*T0Lby_JJ0}G;14X`w(MsWF zjUAaq<@9h-F+lD!a!(0d<`7(^w0|b)mJOMYW9`NM!TJ6XQN3&_)OtGpTtAn;1!ult z(QQbE%mpNx$JY`SJO8zcu+f#L1JP5cI?BK{u8LaS?`bYni6E|SLngMSmc&tIFR;TT zsEL^S6h-dTC7NCQBg>@B28s`3%SzCrsylVz&k^={OrIsv{bKlqE{Hv(>%8Fh7`U%5 z5$0807?oDqeT}GV!s!NgVJKZgi--dTet_Rok^Hmt{0N<~yeWu#_FZzcNcU21Qv=_5 z8RLr)KjNeI@@OCJEjU`usIN}?SRJ|vl!Knb1EhT*D*dH?CMJ#`nH-9fB0M@hUF~4i z>DF=O4v^Z24&pG*WJY490af51`nZr}SqhD|qUE_0jX1F2)WB?m!$1{&u+X^Eb8-d5 zywLT9TdWBr$4a3{Mlg%aKG3s@My+^11tM+c2DURfd}8(l|i zRZ{DeTTx&grJ)Fjced+|lliVpNFx)hUT~KoiXU|!~5+F@2 zJbIA8rY{Iju=%L8Cq%4$s<9L#T2B`P6c%NrvjK_rbJ3ppNFqr{T#LPf?MDQ!*c-t7 zmc3RSOG0mkfzs#9Zv7k z@5ya{tf^ko{>LWkWg-C6-ScCBAbJrp1k96;2B#&=ewH^nN_`VoetvI{5L9Y8qksSv zp3aY$FwHMU97_#}Sb@3?>CEZD;HWJ3!d!?kl)Aer3%lHA3w4O95nX@t;_UQI4TAdS z;r8kN_U^+sca9G(4vBFBm-8l;oo}8U9iF_odw?19^%5LcdwsnlG^L1Oe2T|9}7o^J>n zX!UAkzSLW4bZ{mlx*RBblh*-Sd;5=^eXby$bhW%*MNEte6|vO>3nQ=IMWVy4Rm3{` zUkRd;>>d+UXplglzjFl9o;(~7m1YnT%>QhVzE6qc`4?oxUnNB{O9G7;sqZ8FE}f5$TCMA z)YmCgq$Dg&D2r0k0Y#ixI5TBe7L)P zGZN+ZO$$9im&V9eLKNP@t5sT>1$9-dC!KLQ(#jGlI=T6Jd`p`AoDZa>z@A75w}ZiF zed!h6Y9qrvR~wPvXTx>b&5V6Kt6R94@^nbz_t-ZkZCqC46acW>k|(d3)yJbhK>_7;$+$6?u+aU`rk7&#eHYW?Uum z`jb3raJ9ufB1Ir6dLSLu$$N44l^`_i?~=y_>5j89bz(u}xtFw#ibe=9K$S~n>Jp_R zm8nDU*|3g*H@RnXC1`?X$k8~DQY;#cK#gHcqN}y-^W#He0z&aU-adLn)W9PQwRd-$ zo&Eiy@41Q?$D6&mEexm_i+CbLRKyp7olP%%;qIfIfN_R ziz;bQM}nq~tXS(jB5IZo_e1 z0`*C58pRJPY9NF>`6hN}_BG;MKphINFa&}~(e z53siMfO~InPG)Pc1*uUEU^VzMf@K&Gwl)piINxSIO@dC0FlWg4Iv3h8dJ)Jp2U0>X@if&apU-L%xO_4svAG2unrI{$?eGXLy_%994!{A`95RvEZ+U$4V$u?* z%F##@eC1Kz6?6D$cR@2V@T<#9QaRnQsz{lnd1UL!(SQ&x=J@cUbe6^&^{9W8HR=)D z71d(+Pw}+&2x<622?WWpeO81ZEy9ON&o4l3jbg2GDZ;NC3ZAq zNSZ>m+H1hT`sTVf zF^39et>#c%m}76|>fvmWE15T^C7D6mo!cbcTVGk>kGMpMeK+zX0&igq1{vD@d5N)Q z|8{ZM(|h|D!SP+a=dTE+mT%v|m*Fl(t?ibGBz6Z6FCHD9JxU%Em-k>lj5exhLBysQ zSB#RHVn(W~&9Eenxi^@-e!V1OEYZ#<7pkx|+C+o;J)O)(a`lZBM-V72X`3)eJ>20_UrjK&qGNnXJh84 zhnC5f!%?x;yf3QQ=*R!$(T}I!W7bS`e19}!Ya;F?&@2A|2Y=WCxG~~qM~)rop`&3k zB^xIWJCO5|kCPv;vSj4sM--|OA5+6)YIID}a+XYFDaTJF_)lLvOb&J)BXf6b7=*nd zBa%2HVM##^(-q;BE0r+FpCFM~Oh#YGzK+2^>tqs>KEHdfgrTIx83&Eoo027+bT7vF zXmdVkwL6fY=1d_Et*StyXVyq(L8eAxCAuShm<@_w8cjn&jh9K(nC^nbXG55fZds(&$c- z5HUGEO5Q#t!v@A#<~Tq~w6t5j+k-stee4@=7bV2e;gAMILy2YIq97?M(L%tE7ZywB z$C_It5sg`C`F2})67ftS>>l7`Uk2ixn6ux=An>C+pXJ5@tzU zlce45HJkSeCt-MWW)e`>OPoK_A!(GqjWwHfq`8dTLgSyX1=8;oa%Y~LocCKRCRj&v z*{3TbmswgW2GjR7V~`~4w7JdP>H#?{BZ16t8IDU!{cc;*8a%Jlj3~DlYUdw@xtGDt!g$ zmN1Sd^s&=c69YNDbRjGwk1*7LT%1YaGw+lURGKHL&`J;h*>MP+@?gd*zC|Ie@z|mc zUb|^I30#VMHnOgsyuh{-?UT9O@EUX(9zv9d`$xNjQwC1wH?PoRXZqGmw1H0QBBLjl z)*H_r53TjPvRZDXf`Smi{qYW?eoWyA_|rEE;;xfMP)ToJ$8Fx-7}rcA zv$7;*cm4K;9D4*o_Jpgj45J?#?07af+&MppAdmct`H!j=L;%u{!f`6C?k8)sEk)Lp z!dg;zK&TNiz17~I({uw*ByT8Le>av}jDDHu9wqg7v5^5X?jJc2#|b3Q!wI|Kze}rM zC4Pp4FnM{30PW3TLV(bW`uQ}6I_m}Ty3Bzb(7|>wstMV93t^fksa*@3N7Tzew1jBD z7n(Rd>kSTHd+S`I0lfuxHi+#&V7MWuePoRO6kTRaje`h+%(MxZkGIu1-fHeG4CN9g z83}j5B`0@0TLs-CAwnXTO&8|dl-RrzDb#v~0kw91<0^IL(=fM}$XJRzYo**z&%x9$ z`9QK#CM46te(LDa`Qw{?aZt{eLaLq*9-VF<$Yb$G)^rF@j`7tbZO6`AWa@i@Tk@kp znGovgX{@x%&s-dzL(m)$kk>7;qg*vzMjKaS_5Uk%+Uq^Ze2yp9lWmQG0nH4JyyI@k znoj;oLR)DlKgB4bwl^Vb5i&pzuJw$yI$`c`6fxHzCGs=w3?3gJaEhL(qjU34XRX<~ zb63beUXPt!PeY-xSA|No>gsf^*@0~hD@j~lbT1MjMBIaWcO%t*NPH;O1xp|||Exr4 z9{`Q$yMiEvE{t4KK3AYJ`%bHstoK?*K4PwO2$n7-`djd&TaqBpe6#;bk0#_uCW6-s zb6Kj@N+G{UVnJ-M03lqF%hG;_xGbN^)Fy*Pv8>Sy$Oh|dY4TNcu5q^0T(5hl`-7uh ztbJyj+q*HaB0tB$+uH;~AV%9k7325J{4BhvHLS!1dzQRb>iD-^X>v@jLvsTXNt=J~ z9hlN7)C~b;AhdvuY1L6{b?kDyxXDa`4bfn1S_2Vc?(7p|?3Z)+#ft)HMGJtn;qzzOD zOPniWY*GodF*;eIqrM~yOBe@U@rFrHRjmdRgFGl!UzQCQ9vd$e6t%lxJ+26fe*F|+ zg3PSB2Sr?*e85l^nkNJfe#0i3A@%Vie7A8MetQQYMi2tYQz-s5zNE_h^IwWk{F9hK z(S_s;c7!F;KeKOEZ?Ctb>*qTUue>AsY*XQ&v7Lmaz3|MDR~St4Z{I z6E$a{|tG$OX$v+NM2q$_6GI@r)!s1Mx1bl+PCC-VW<10Nq zJZK}!U%NPb2(h|6*xSB1IN#hpxENUS4@iYZY%Q(gtd?faBYHy*B2mmnvy0&seCCuXQ7kSWg{m@We$oxQ?V&~ z*59q){sNTwP+$^aTYSK!gmCF_H_wPpLM}sQcYVbN_)E}H`W?gtlHIvXYD|^=5FgKz zu|S3Fgp=~@unm~x`}DnO%Qa^+-0+^Tiuk6e5thjz7$}E2oq8TpwJW4V*R(;h|r!pETrgKtAP0 zf>Qh?k=QTSCPR7)!0>sg8pWS6dyhP7p5K;ZyN{rUlL9|yVbx<7E+h>YNrI;>P7#9g zw2id2+gu^S5ywbkXa^ZejtDTej#O7%eZ0Nfe0sioz8j+IsQen5AVKAYkBKQ@B%iB4 zk!Vs}WDd&x2lo~Vlw!5ureUa2&~7x7rB-)ogLDf3qa21Q$ap+a5Kl&hLbDY-DzK?A zN0axpPkRu`CAUSTD4S9jImYU0qeGsDBso0XJ_%D^_#t>C;!CPHo%5gjHg8~p5Js%) zjq?w7^c}t!6Z2LlN-v==QF3DiBG#xr>JZnM$@>^Y2glp^Mt+`AnYw#~mz4NIu0poD zah?t9+v=`47Wq$QsYseMs}uIz>1PSMCUUdWqwRx4GW9&M*=ScA4{kS2h*W;D?_DFb z!4VSta#_x%X*1w5o?)jy6-Tc}RYITr=#QE@KW(8Wo2Wrn*IU&fs&6({69X*bpziEx z9Y2K$arZ&wtOHz>P$S{TI)Ll}SO@q8G^(_AYgGd`A@MX%08Z-%H`j+n0>QvSLIAamozm zJ1bL-xrZV;4M2_H*ORkp?pj>N&&6Fw)QoSxb+n6USC2ShbeNq6;X?3hH;KA8Z{J=` z)`1iR?Dx|d65Tjo4AtqjHJ@zx3D0VHKynWX_@b)XGkKFma{8o<7eHg*XyI2ZAyk!Q z)18quG&dw9Qvs!_BoXnI3uq!rMGYrh8BW*%=_6Q6)q|4v3dHf$fju7>Jabb|sm#Sf z6c_+`W)6YE2wtw5+JeKyRRJAHC-Ss36O|3=kI9ef)PJHAtD2PP68%>Xj^G|kPvY5` zyr>fNG#H;D42yJ;v8W=&W>knjc>zK@VXPA5HFu2VUZ%uo-msV5-y;s&?m0&6bwNHR zb)t*E+8`praMV@RhR#5TIO%Q*Fx6TSU})435kVNPGR*dL36FqZlzE9Ghs1AC@<~dT zE{^%KYz`MV)$fhdCpRN`5Z(H83Q!hmp9>41;Q7vA0n;&9z-%hF<2CmZ_!XR-H&SXz z^k>nT^qSpGk)e@t(6+|H382M-NX%GhDR>;drn*>PoSUyM&Tg26-rIS6{PvO9`-+k9 z*6rSGYC?=5F$`@#wILq;n9j1MJFG=VqIr=^$shWNc>Jl)wL+sp^lEEOVcp%N>m&5Z z$k13gfzd1oR8XHt@%c61F?2)sSgS8C9kD39HExSt>xSuLEW`Fb<>}gEBHzic5 zJ;OQwapwDsyQO~b@!{Fv(Otp>4Nm<+vJ`MJAlPJSGq-{seaeR}zNjnAB5YZ>=Ze%i zQpdk7J-9A$fik_iy@{c@_%}-2@bh$iJpJdp_9ZbvUHQ+}wONNOIpR^5BToQhN%)BH zF44T!qU5u~%~g?zm_QEX38s>QLm}7c?mZB4N9SRvNsAE(>7J(v{F5R~CO!%(OdZB# zIZmzivMd4AWU^>YUq~0Cy#*k0MNUmM!TTf{mE%H)_!#fhx{@0AS5je(ENpWNj;mKn zP7e|c2oH|m9-OL~oD^J~5cnEp^&mNsvd>57$EE^4|7ZJ;!~#|b=4qbYh^XOkBnOP4 zV3))YEHI~77ddfnI=cC}=qUR1r-vS`VAsW?oHn-ATWhRkTxfx7q(AeTZA~%o3JUiH zLw+S}d_S~wPZ){>ll);RjaUN(b8KpgL$cpKrl=kYh*Cifx{yLz13?Xxaww>oM^6?C zYV3v=Yam?IUW!0(W>Bs0U(A05z{l2Uz-c~!%o*TqIY6B;fbJWBjt4dB;SDyx&*3HJ zFM5H%`@|eFiguAOZPvV%XexU0>yV-`NXufS1!=`_ipLV_tIaRuP(S6A#tMyzhNl4=E@@H1#ioFobNEZU$63#(2 z--UFTpNN8~Ss=gtLZImhpsY!ZnwJk}Z1MME);bV%%0RN%3?%gVAciv-NK)K^WLOe- z=7*^eh`vIKsP9mn0Jo|53%yp1V$0~_R~yTl!lP`6ohm0E%GHc>2uaMk4VXOYbU8Vr z*D-5>@`H>6ST&HU7*{Xjcbt#~jxsCyc1B6v`@$S(DExl3P->!vY20Z*pS@l~O!IVi z|Iz-r1n$7B2!RcWK#xz2U{0i6y&h6I%yP55i2=x*;K@R1nj6s3t!#-Aaw@C{yf%(V zn#l&Lcf$xr{*aK!X%Zwm#p{^BCrj8gxwwt=e;G*Q`!*aRPGu1|ppIe{V>}PBI2QxQ zO_3lY;A$Z866p-y?oH*iN*fz!FXo#IwWWA&PTY3lc)7W-FxyT@ChwqoC2V~gxv3g~{+f;JQKIw6$aAg=`^C}|ARfZC5Qi1|cvjy(x6 z>rF}Hp&Y-pc`v0+P`h8A?YEv$Ns#e39yCi(RAP6*j#(|Ai?CQfM2nEmm$b9#J!Oax2J%||quE}hLO0Mx3H z_`=L37liG59-|E$b|ikw;r2TuQr_P_^X@u{QNoh6UTB3U)e{6bfq6~}wg$AZu+FPr(klAZ zTH`Xnu5m1hjXV50lyYC}7dLv&(}dmTFF(z0+uI|KOmyp3YWkXz618MRZ~=nV`5iA3 zDc$d@u%<)@V{&A=fN1ddT~T9m_J}W(@!7n7MA8R^8uu<8dHN z_J~zN*A)^?)tZyqGF~6u=;8kP%;4z>ntZ>G?im>w0zTpDXTw#v`867W$IlM=4(L;1XkKQwT0` z7zkIY8>uZU%&4PSbWp}b71Y+#9~X|6~{M54hJsG>ls zs(@yV$_V2oQzmL+BRMUr11QW(lQ-E^nMu(DNjayw_ z!=p%wFkK{3ZR9x=kqxqgBuJi4iC9IX;qf%*U9g$NrME%eX^F_G&s6kgjgz@f_d`lI z-ENX-ORaKxq;DbvJZ^oFM46VXWF%N`-;*HI{wDqK5!9QQCuPVt4b5k2`4QC6=b}B zrKlRjlr8q~ruu8#MP~^eWR&1y45#auld^iVmxO^LXwEr78W54 z7ZxkESfYZ@Rvn4xjc6o2kDU-f$U^99yv3dsrTB{SL@MJF5$s^2cEFuuSkxh50mE}y zZ0q9%0Nj75ZH!_@JUW)wH$>)F;N9W9jO9p#vteVS0^90zou`87(HE0`-qa~=HkMW; zrCtvMW?^f>y)B>yOu`JmP-qW{Kk_V*D^nkQ?v-S&+9YFO>!-_O%i$6XO(0JK#6^`h z5p(k2OPK2y{9cVw{jBfRN`7=#`d-^_AY|@stgZLzK(|fXDhO9%Z$sq&q#AWnK$_Na z>N^eK=8oeWubF$g;7w%$o-;)CahlO?mDpD;@ZA>2NT~11b$R&w+l5 zzKhd`15jOwpc=->1!`!u15)guMz@SuU6Ds3lXt(nzIMl=5Q1csbYzAAA`OIlxnJG1juJqo%4Gx)HHrx!s8X1|LMBxnWuq%g?rzVdTF)wQD24>^ zr=krA4ilvpMB+JYb*$$0!G5`fNt83%s~aVgVvF+_cEYgvVywwo^AOqQ`SD|+O5g&| z-rhb*V2Zd+C)Lse)ltMbVd0qsLkozEFZfOX+zgOhPP%{dhf!YN<7$h6cZzS*4f!6e z6;z`xp_%v39+43PF%b4I+XusGrE*Utz0}4UZj%8I;HRakriKNMu1pLTO5xN<$Yu`& zOis9W$upI7mQV&u3}o`Jhc|XHT&gu2d7!n1a03DdAEiE)Gk9MSh;J*Y)Ek{HVw!o; z*r^PSc54rKSIMB8{?by2UoQb6Z!8h)eslQE<0|L~68R7{A;q$VlapWh@ev}1v0PwY z=(nZx;BRz~Ud5+WWh$c}B{c1JT-hb>IL6FdL^Nl?(Pxmw)xAp1T;f*v9MG<`#i(yE zN;y9chSQ5PoFb#efL`>6bajN*pc+(8aj0c9EB>7D zLrv=#MpLT{Pi`O|lVHFZU-=P4wRmL(M0JATve_pCp(ptgyI)e16?Ls`5p{uB8aS^a z4>So;R02($+*&2DRW^$V{?217_khLqpUH*jArx>j_8{05poNFpSL1K-cC}PrBCf4B z#iB0ABxJg-Rz_w2b!mzT|B1q#>*CJyq{^kj3F;9ev;PxPr``=933AK<>veyJpD?$`%f?-kxAm4w)fA^ZpwAAi#-zc=)sqelx!go!wPDv zy{MCD^wvO#`SUcqsW+IYcX=Gu|Y?gwCERecvpACM-bqd5tvC!IO_oBSVs4Rh7CmAfagXS^lj0RQk*9IVlPP_BgUqR?+*@tB`V(wOI;K zaTT3oexBsCLxKNYOn&;^RP2kb3Mzgv1rVcLF<0S7Oaa7D`MVVQ%54Rk6hzIrIRsl8 z%p)!V8Lc-EHIU`fx~(^@GHtVDae zWK-LIgZ-vF{EAL^w|PfgZLnd%Wx0gOHR*uwMWKo+Pkz5F+dWL8MzZE1TXHpqOM45@ z-E;9k@_v9cY%IO6wX$^ z<-c3?4XShDkR^y4%HE%yIhx7J0=@DI15Zsc;+vzP#_BUWxpr8nPU8{AlJY1umW00J zHrq$K=?!0=IoyAE#4XDMZ3IT%TOudX$w5{Qz?yh&Rh+in-++nO~5naX$H*eOaOGISC z-wa){_@1YWuXbrwNeCX0L?KZDncD2EAj#k8sQ2#ToY!Va5Y%2*f=AmRsI$Q#A{}E@ zNIVEX)y5(gF+xCB3hp>5S7R1m?DeWBVr_k<#D|MOqDQR9zBnJIV+-O&q|~>;dI2Hi z2v?2OomWj8>2WQ#-dfEiED%uP%?6Cmp13Ott409dqvO*oCNuWE1uG1?L5S$2qk?WkZa7LhS~p5;^qnn8skNCm1?b5nrpaNgi~lp z=VgS`VjdO1ka-ZNGN?=#IP(SrVlqXx_ns&1^|MknfIOrInb%Kq^YclNmm z%7DIRzuXs_EJPNLJBgfOziUtt=Mv z;%0(?+fs2wl{%z@Dbjf*adJT?a7D@a95M79HLIP&Ez3PphYYFZa zS*-6NUv)!9Edq3lfDi~cKTO^h6G`MhxC`n@B^gBeYA+#nZD?pZ8w8D8$0#U}7o=$0 zV)kbWTejVX9{bQI8~D{P23t}-^1Fs)mK*wF?G;^nouC(Ng>V=`)4}H(6Pd} zVDdTQ!Xv?&#e3*Dmilk$Ho-jXixZoRU zp=7N)D;jBBofRRrND&_s-;}IsrOn&K1?Uo*LM-4gjuS+w>&g+xKU4egXEYNY3F~$S z`%lQDih;Htz3j@|*p+t1w9zw0Seyny!QENNiRQ&SO8R@pYU0QE{;lq)Fb%?dK^g=x zNXa+mMJ6Pqk-s`8tLlX}MPWIu3wUd_qY);V-)VKBR8>f~ao=Wh?4?7yWZ}e#!7EZB zCX*v1wtLD@V!JlrYa#B_>5 zyl-JJCP0+TS))~i|2VE?7zz&X*Zo7TJeZEYYmOS1 z%X7p7iPTB(+v0=752#VRkoe&|8Hm;GK!9K%ZsG&U)-e!}Rw!kz-?8uhN=rwj{V39oRDV6|vq0$z6?jx;XauK*>5p2L6Xn65s0=6+GHQoh_ z2u*79P+M~gv-SD;Sx~7n9Aj5%SOB7Z#IyJeqY`awcJ2}cRdd0FZkR*X?vAy2h?^hV zMvoD=89lQzVO9<9G$t$YyuQSE1|#W~H@X{!EeSBT5USrZSu^~{+q0tjTpHxdgfd24 z>-)FDi%?W^i3V9a<~YxWn~@C75STsaNIAOFHBG4$WiBxfw#0Vk_5MbyUq#Ko2*97E z0Fsh(FXS+)y#)u08THkb{JF2p9hkYNRm2~j<3LofyMK0ad^Ru#Q8QUaSOx5wvw25s zQlf=fD_QT8Qlc9k6AHi!7{}qdCg2q4QL?u#h6)^T6Xm4%B$L>hREy0eNl;`r%NvW& z`q!L`>-FWf84t1T?ymRxw;za7kYP!zJ44=!g`x!lC#4lW!WiOa&qKy3dI@24#K6S_ zRyW2j_S&3I^`tvE!Q*e0R0Dew9EklUp3;jNemU8B`ZS)$hYX;-ZH70U9%$c1yxm6MVi3X?>og>>dbu-Uut;Eb;R;mNy>e z&Hlz@sQ9R_%f9!OxlrQ*k-27!3w#Yfws>yj;9{6w$7eG#ZUa8sicMt+ZQz+~9DNCe z0BffUhPkx~tVz^?bknEA#hg!t?nzs*yk+5f=O+iPo!)sI2ijA77u12F*?R~t(XS-^ zIB9n7^=b*84RZXkRP& z^+-|EC7h=1H()hQd)Yi<4r$~-vQ3cd!;~HDpPg4LqT$cX$ptCp3unVTU>;OlrueCc zWjP0uF@jJZN;tjMWcy5*HrZJwmeiavDTo(EX8MSXFGkOu$jR3_Y#&yd?ZYA$zGidL zNLz`r;LZbKaJRPN*lLNvJ)8YVGN`HV<&QF$Y~YOoBS?)7=I7Q6n`>br9E)$eNfY;< zq?K^a%PyTcn89bjx7AwdQ6pY+>+82$#`z|cuhXKPh$ssNjfGh4Xi#;`cnHz5PE6n* z|C5zU{Nw&JUh`Li-?3<3dLt$ zQyiJRKgCVwxi3Nim-~=xHJ3dWezdS2^yzbrNX0v6GnmA{*mEpvY&B!qnIvy-pOT$t z=b(JFeK?pQmoiL^CIX8zH-eN#CZ=1I!KH#qr7by9KrCfx2o^cII24CD(jOd(%}WqE z;+8qAJuA6(h2y!|t0tX$JBKAaaOH5vh3DiQB=`txj67CoWpnB7eI_m@$)D#~Hx{4g zX;KHOd-2o!2zTOG;&i*y5f01dqG=yLY7d?ag22(wwK`QIlX`d|^$M%5$*5D+MSFd{ z5^_E}3cm}5>F_r>R6In8ueXVO*(9%>DBWHj)vvt`z3iD(zdss> zouK2Y(xw+kgz$k@omaJD0+8lbH| zmFNijIwW!;?LXeLCW06So;*4|(J-Rw?#MPVv=~WPK zx<1T2kzi^j5)8=oLWGJSL&+;5k$EjJh_V@%eP@#c^re&?>M}H}a1&WZP>A`}Mk(3S zh@s{fkm#iljoHA6!nwefqaqHZfgU&4hI8U6%!cS%jy1UZ7dFxm4ly7puZ`tOBl?Y3bO$+_&Y*j?SEYOjNEou3D z<_XGe$=-CYzuxIfe8|w6%ZUqoKmfnZ{F5R|;F9olDS}-bk*_gc3}D0~*ceyGLheY^ z)~SaGD3)7gK!gF51D$AfNErNEmqII8V#EIS&e{3##X)d>*bhPNsjkrl zA0m%3PD9)VoLXkUiXbniSrBtML|iEuCq)mG21;JQp9CqwDv}5BTrbEUBF6Pd8}MwP=MjLbEmHN!Z=w_lyhqO?HPsN$BN1Zs&g!S6 z2g-{n6z7q@W{9k@4+85NCGrs>c&&^dv3*js={04Vh!H~a-#4@qFfx1`;8fVDB33#z zaz+ASO4JSUdldEw5pVBq!^M;F?~+00fLHN5rb+&bAZr0Mi5_Ekir_{iui_!tUnj5z zl%u#9GqsxAW^0S+SOhFwT$J-m5Gi@CRPYLp?Mf71KMYat*XJWFkns)&6Nz6qe_RE2 zthdN8Y*5pHm<(*KowSKVD%FiENpBNQWbc%453YR>uLl>C;#CE1)9N0V5({7yF0HD< z+2A_RD7RS@VIbB89QhY9WLg+KrHoRF$Xd)n8O0PoVE!`7DSl9jlu=OegAj*MD-e_X zf>8O@MiN?LEwXK-qa;35!RSzTq@B#bBF_ba^KLO z`H)w|`vBKUqO>`-jSo|6SL5bZRMlNDLg~O(19baBr>X`iFa+SU*J>Crk5Z9mW zFsxNBqXFn7bYydag0+THbSa^yM#<&-=Lp}}tkFH-d%F*`4Q;ed$myBI76%RrP zHoA?~Uiph*MqkPGYvRKAR>}71{`osMwbz@YdcdHA6cR*E5w-TsFG>9Qyi#5c`PKn_2VZQvOQN;5E+C}}4c z5D;fOIlMR@JWT>kny3Ge%@m(|@Y1!EMdVoLHlY8q9uY>}0T0!0N#@xsca-}8(ii7H z@x|770s7+Qt+Dp@{A;XMAzocjtIp4f?hBjS9-%BXFeTiD;}(n?Tfe)tf|XV~83xIlmuJZq_fPEtb{d6?0PTjURPiNYg0`KriATN=+{!Gh|w!SblpZ4XgV8l1r- zCKq!OjURKVF{83Wnqe3p2`u>CCCYPF3ea9W<97$Us(b!n- zYo;CS1F%5fl60dch}B4mMx(#J3c;Z#vn+42f;iTT5kaSxh?qAr(kse4<}cZ5*G+7 zbfn?LwMkZYkMSuSSR)is6>2m%R7?5za7YU5D49f+ehL#IeD)|iHo}CYEzGnRQdW}h z&XHE6h(wxjN6e-~K$*7BA>v#|xu+7I(&FigWC%JsCaqT@_RL2Tm>vTOtob7e-s+D< z3l`X75=8E(`XroU=ev)^MbQ?NbYkO*Nv9MT9dpJ zS2PV3Vp=j9?04^}_t31Zb8HhJIcl0k67(tl^ua6&uc>CTFA@{Yn9@dm%JQ;7?HoSa zS4b(BORPLhuK|B6u_PpNyM|&wE!Ri*8M#9FO9U}%Sx(>yQlOyPY4=>@;@jQz#qaS(fw9#%ZbG-6|n?OB7c0vLv`m3bnK2#1hH!9xaeAZyl1rdE{EqDRMd>&v^uc@qJs$}Mkk$PE?7a(f8_AWe z%b!w55q5xWs+$18S6l8IAOK3R_%cCKYM*;<1x11q-F%rK)#|awzx{q|XI5sSPz92b zdZs;bdd3t`FH~h^?&sQThrX;}xduZ?*uHdngSIVlz-WLmGUoCTtitR_p3~*4>E2nk z4Q$1Q;Ru?rxlF5r)G7#jTGUjRVW)PHR(r94>Av;#A_-Kta86{3P~PWTQKoaq)zV-O zOqZ9ELn0^??$RGgl(f7lEnwAjt8E)@^nKxMK3D}x)pR42CTRO##d;Kw#{wMOo?PBE zju+l7Ks?AhXf%%JpZ{?8(UAPK%WS+0U&ZDec7tU+$;4Gy9H0%>ODDZRdVuyPuTsxd zGOA4G;9`fRg*TX=x{d%qNomtb*B&-?(A6&~B&JQ76$}k_)x0jQ28{ztM!{N9TRNhFNX;3!S;3^knKT#>&L+U%X+Q3aez$8eM@TK zAc~U81c*TfJ}%sWb@)ft;Ga0geEk@{{xR;n(g^bcioG`C-&oDq1c_4F6#Z(Adt27T zB~H$0U40h3-(4=5?9o+k5P&J~z#>1;cK-?wc3<~*P`ms2pZ7N)1Y25MlJgFl)4gJl zE>L4Jr;5mLqllL0E{b1#&0d^b0I!AZWWjwnWRSy`4Zeg1e?_ZzBbqX-Eln?r({?#h zkRSu?QLqbuTJzH#b_h`xY*+Wx<4(o@?F1-QxatMU&~A@wnY}cYS3y`aHLY5c^GYwSus^1bg>|R& zk|~nBd?#`=hDF|34+1!2n?-~H zbQh*x5Pw#0+c1%*LV6mLKt)v@14RaHpmO znkqpLn{;K&D8mm;*-zYj-V8Fw+fTKmkT6?R-Tvc9A^SPp8~^2Tz|ZNY_FIe{esM|W z=LaA0CzQh2#YaIvO1`_0y-SGq3&5E=2M`DY|2i2LkD9;rm8*`yP#V-(O*jz-z~)b{5!2^1 zW5-mw9MSyrj_nyS5aW)_e*Qr9f1{$CA>=?*l2sxdwJQ?zFsOV@{HLzuFh*bU%!Md` zmK!!j!PkT>3TYf1WcmX92qLyPIN&^(-Bd|0%D7#8bAUEPl>bA1W z;OQCC0Q44VF*AN*J$sOqAudAZsAe$MCZZy1E-0esGmV1iqF@JR^`Cd)Nu{E6 ze|KvRAmKIzOR~%NY4J`qjl^RH(n_(A&^~R>0PWBo^!K1O=>ayw%LnKIK>;wumkz+J z9vX3H9KR6iC7oRt>20rb2UjD^t)E@tS}@@Sg!Wt=n}=IlX+@G7(*lA8xcN6FWxX^7 z;UrLyA%pM?fejf(NPn2K|EBP%FgqU&Z1U4V0hukeo328&2A)em_M}mR-C_ugQX}QkraFw;x)jVt(8E!u>IoGE|Iyp zcnxonuO@GHn30C?2w7G;+dkUk;Ej+&0XH;2IfTN`dp)uta!ah!Xi>pL75n_$- z26rl8C3X`WYd^Y0?2lvFTC*YZvx_oP>$$zPN5I&1dPvw%$WB5`NJ zn&nywbf}suh6gPXkDM|RK&{mKX9PX>wJ&sEJ4Tl>8XIW04$3yHk z?1*W+LZm-m_6R29bh%Kr`IE|D2|*=k4l{6bGq0DkFxwNOn~Q|a5^$TUrlCFBJ{5*< z=I8#E5AX)#bA&L}Qgx83?GG*Vlp>-o_S)DtnuGbw{rm0Z^~X^IujBY9{GN}E%j3T- zT%N<~@c!zakjh6I)!7b;%Gi@>*W5=(QRs^MXxXkcG1=%{y$r99;9oig%GUibI{Aq@ z86V4M^L+ssM;qG2sA@`}mIRCnblf;K{y8*VSs#OgtmqyZw#2b<22*R%u{4*>sp?oK z^)0_ntkYeXD8(DOWJD+E^gw~Il&1nr$=dQx!?Ik1N5kHQ4gFO@w02=`o8{AeNd%Ta z9=U||#UvQ+ZnzYp^G~rFNcb0_&bkpJQ+z?C71ks&R$hdkhhd?Duzon64pefNOBSZP z@duGgVIj*^C8}jFG{pYGUOy9217TBQN7K|oaOVeWpL9^g`7`pH{2{x>>~KNobY zL)=%YU)TR9s9$Rz5{zh`CWzPY5Mc{_%^dZl+}=i*uWzDB0v!V6P&5Ez_D- zy2Bk%$iqG_8r54U2_CrSno28$iJOFSbU5wZ;=YNSV^4*%+LWT4iq3=+qfl^~d0HmK zBTO;tfLVH(98-)AKk!bM$rvp!s#*`5;fQj*VaV7N2$&*LbucKs7t{MUKLgqxeau?W zj=D#3Z0LoV5UTN=uQ(m0o3>wz;U?1O*WZs+#4yRM#;|5?gvk%crrN#3_FRv?u58cs z)YoO8O5fh&GQn}vQ5 zJnl>tRM=<^T3BGuD1q94**CYy75@g`X!`xPVCDZh>bW(G?&|64*TJ}n*B42+|0F#4bMC*YJyebRW#-*;2GOwwgp4FdVlvJ z2Xq8a=kcwY`1UX7_769R9bpNtCJgN+DPZUN%)Xu~H+#s+ql`b99q~=hk`(T`iKGyj zg>du28!@?G^|wfghE(5+kgHT1pSjqAOX+FRQIIzc=HH~Klx<`oOO=w>MdT5Y9;zoMDq(}&QkDq3oy+p;VK?PyW)co-{Y%2 z$RzaL1Q=wrgrI}?mbIc=eM>cMk?7WYH$s^r2~c^EAZ+ML4viv1{M6!)R&f}GZtkCj z%+j{mlyFj0-pZcE)^#VyAwDQs=X&38O@|yLcacQU9i`k3{xUg8PsD%$Mi*WsP9*31 zJ7n~JKGCF2ag8;0toorQ>wV&0)a;S*vvNabvQT}H&rg1JQ7Zy-(j3B)Bsw9yPb0ps ze4Rk+ieMjaQx&1iO6nSh{T6|fiLKJ`F7)W zA(bhFRV|=66V1Cy6{Fe<_Rn?fB(K;i1SKceFs9&|ofC=5Z=g*9S{Xe!Pe3-=OaNoE zt!4u8us;7ao3Nu0T)G(1-$C3CckA{ZC)rPe#}(dI*s{EmEhoyt$wMEvH_GdUyZf7q zlzM&Q5Sl&+NJ$;09hJyB@;0C*p(lVq%oTRzX6^Hq;uvcJ3;Q(f{}w0%SMMd(HWF}Z-j+JalLzTFxDInw$HW#6;2P$D zB-7-{(kpsIf`OY`otHxs*4gj>l>Mt=`)niDkB(^lb83@-0lQdF>H}}`UX5<8eMUO# zi#?A>T8V578!KK_p@OxPCdFnwxw&bq+|mlNBixQVj>T2lLaT3ym2ybCVw)2`=sFa< zm=6Q=-B0Y6%m8M;t%BydW-!Y^Xpu0JKhAyk;rep)-Mjnqi__8Vcb8Q19-qE@esXya4$to15-M6bvaP(c^CLbybP0vU z&bRQ88teGT6YT`-H6-H^XnVuSUU2Opk+9}W`iht+3!mcen2EDq>+f4bfN)(t7#hRz z^7EF)g^(96-7PUICSd_3TqK1jh6y%lUIg{tTCTyrQdLfvz7Vl!e!iNFRqIIFK@P-B z7CysDb~U;iUtPkvB)bj-;oWgARx?s9qfd>y4Q_u!)X+Gca7wxH!AGO_Bp{1Y=9k63s=wI7FvK z703+5Ako(Ex7Dz^zdvjzq(0#_E09&0nU*$*4F_c4`M%5r|KT63uOkyqjV}_yQrGU$ zZx2SO+lqA5geU4=a8%n0Btk~=IaGBZ+I{+)VgOLOW|VZSM<1=taSL~M0D-21oEYi< zg0>?zmRVwAK+jB(`?r8#FlVhS#2Zk7EOB&DbLK;*7?8oMw>PW?PjyrTVGx3_cl9= z%gepB_2u=@_0I<;d{E0G$&(9yR$_s5?v2bvI3rxPls>F~r?=`|Tq$8L!M0d4mD&?Q zFtKr9lMQxO0G#K7x#Zita6Ede@&vM+H70h_q=gXxfyy5GSpbWMg3&4WdmNWFdZK>A zImh$!|GW8rfT=HjI-AdcOD}$ErLJ=@Y3S5AwG<6*4w3U5oHd{#l3`<`bgXw7A+S<&`7EXd>;LrS?(7*V}kG57Ro1yl8^DT8sB4Dw4jcQn&53qKWN zB!n+|bpIgSjaP1|Pj$1Pbv+^=-dWNzw~-RRPAIeFAe@o&;x3#nA*BXj4;4k(ZK^u9 zaacDUB^z#ys_t++Wn&grlWQwt-9iA6%0$Z~G`>M1bndP%Vb1*d`t~&5YM52^l+BZj z&7QDX;zXTIaUTdShCN}t znXcP|gJCf^7-?a4(JQws=WTK=1C!aJ_l5cRDMG#!kV=#}@>v;Rc$16U3?9 zkQJM(^0-V~dQ1&APD|L$_!GMz!T5>Hej|zsp{vM>i4bAl^g1_>XGkBl#=YtjZs!F_ zK#AC5&3E@jVh*S8;NSoNm1C5Tk0qyIrLN9xrK-+trK<2K44{8KRp=s8G*jN5<*mvm zW0{3bdLiZoQH)n-Ez?3T951~G9X7<_bhJ|$k#X2DKEs1bkPD!*?iQM3viBRA1VEPWR8x6|j}pefWK)(1}sD=k~>Lk-ywkmXZRog>&ljkXyB1rgsI{6a`9Bu{@;S#-DRy72F>A`bD+oMY!k7i zuFyFR-K9R16V2}Ga(hWm!$xausom{%%1%RS&4jrbL@qL0a+`SETdM=J7DM5%(mRZ; zB*PJ(2RG70{d#ZEuJ-g7X!cfzHkjScWL!E7PI$_&rD-f2Nh46dOi4Td?yOvx+y0jq!-K^EcU|csYsFTpCrj|M0D=R`tKA?8k1?k*iO0n%LZ> zlJesG9UM&sLdIv#paR(vbvKkhfct-R;y=gFpq$(gKk=ay$yBSqW-AF)t2%k9oh>D{ z!3@W&NpqUunT40ghpk+VT+`nw6j!TBRr=(i&9)%GZkrz6oFzC~aJduE);3P>@W&ld z7&*NM0|WWY`RpXt;w!J@ftbSWN?a0XIfu5Sq0d4Sd^6wpy*?AEar^SrrI9MB*S z(*?Pa$yiO49EK`N69LJt7@U>lP+*w#TXataRj;CRXKNo)q^q9-r9&(nbl;0+k_5I_ zWR0|nmC0KuYz$Ddm7+^czE6NI+mE_I&_alO+p7^xzU8$u-0dnyJN zh5$dXnBW4bB}Qo&lv;{ZH8GDAsf<@aks5wm^WGV@gtuxf+jh|%%ba_kxMaAL%Th{p z!0ScR^Owxo%a?lr@fJ)c;ENQ(!;l$%*^NiD{UjO*1!?Qlq#K}ceGjWj%^!T0EbNa# z)z*B&qQA^ve|srqxvPk!i|Cf29jM7w>x+f)O_Tq%7P|8h_7EzD?GW55%WuBO{IOOP zd;=rZ`N{YGJ``PtSb+J;r=5d_psEY5Fj(dI-T8Ud2N$?i;#eI8fC6+iJPaS`zAfq8 z9}Jb<#u-SIMYLL+$5&x_#zV|FwIgOhBE>K)OeCz?xB_C$=AZa>qXUGomb`U8XIpuV zex{9DP|vsoPCJLkjPGn#Xof&@IHOq5l&{oe0w6p=*d-7yK|^cHHxBFwu%w7u1X>?s3ifA zE5mNkgvY1#YpS&KxSX^Is7HK$2)q%CA-GYLJNXysp(kGfz4#;4Jz^3(^y%=TL&|dHgM=C%6-vk zipY4%BAVWvoqt+TBs{+kGqil7t;gNHMs|IZ1vo$f0yw_-`S_Qy;pAKFow%@$c9%|3 zI!0azZISvcnVIXX_M4v(jah50IY&>1ZK54e8d?kL?auHugv5$a;{;CZD`alep*(KU z?BP`(l0&l+L|}laMW@tESl_+l+wthOH+pyfzJGN`gLX>slT;-U??I0|hm6Z~;??$_ z2vU7?BDp>~X)PE%Lt&w%7pc__$Aa+ zmP{`3OJzflDp8Puz$hPX`2#Adi^CDxq3J>tN0Y{)&A=8KFa4EN>$DOrU?%ONlZw-3 z?SlYpg>q8}ls_RnoVz>+g)Q-}XTd7nbrVEG#rf2k|7J>utqGAc^7e;Ed)Z(wesQq2 zA|^S3YK!l_hAfiEY48+H3FeuDZBoTUcn%^a(x7wJPH>Re7|~>LR!s{si*i6M9%E*W zJ7kt!!x7G~v8tgLhEFWKhN>ziC5~0sR9z%LEjCiYkLl640T6uIT(Eyy3x#btVOD1T z824{0q4|*|D)W*}ZtA4J2Tv@ORoIYl986lB=}}IYS%wg)+uhRfSe#)dYHq{lX9mU7 zmrhH~Djr%oc2M}iM=c$H-KnJ$SQ8E)#4rYAV_|u-FZv4WGCAR}*knUR!E*34zF3q| z$~)jPjV{e*jKeK>(UyDwhK_G(8@Ac0%-FwwjD` zG^my_Q@A#h?KwC#j_)t-K39R(xA$}FUayH3U8A3|~1a5uzE+S%&}YO=*fB3c5?kR~ zhaf)$Fhs!`9CHHlSjz@TMba!e382;X+R_S8)bId715gKCs{yDSj%T=a1axV7vNZw0 zOf4F~F+xZIc-2xRS)T>~>M<$gbwI^9k#AFzvhYA3`u-EHxwG_wwRWD=5!Jn) z)h{{^+3r1S>?gvptN}zqE0IctJp$j#+9cdmrk@a9(^jM3QxWcNu2tm`09+3@wqADu zEY^`gg+bM|Ki67)gssXU;in#@((Rg48oeewW4Qy+dlu2L5YJfROR(=4X3k!Cdd?ml zxj&9h@jD$|=TZ1{&edZ0x0g;J^R=_~z!~m)48h zQ5cVfa8_{=G^jc$EB-Bz+=RRu85Q-nRxJon^7wT0BAlIR)NH)Mf5eeXjn@?Z_*4JiQWO3k~GeSp;siBX@IM=}rndOXF zTMQ+;Cd@_hH$6)GruxZ700qcD_dvK~1_lJ-M<=ev_B92IgDYa#qpRRVP96i=ydk~Y z_-20cXv0dJ(AnbZ{suaX_xNPuufM%(3jZF!w7b{|=J6P(QS6YJ8bu_X(kQP~1Fdd-o3No(#}Y+1QOV#vDho4rZ7gq!KTHslV$By8^}SU zVy-YKwJQS2nCyHt?IyJQhg*Sv!6%C?>u3;q_%c7@i}tb32dTxNUJz_6Sx$D1g3PPe zP@{0o1Tn>=6=h##WfkEqj1&#nE7uEI**V(bs7(&|qq=@L|FpR=KW9mjp#V_OWe}PH z>Ed75q;4aGq1=bC+=7XT+@|roRar$rRG=F$d+B2Ww$j z6MUw*V0?!0g+|l*v%23ndc?BG*?chV;0rj2$yySVLX6k3c*FRMf`un#DfFkGgP@YI zQbp>dPPf@J3;lRbitp5V=Ir|R@;jPs-G34)_L;pnqQDBS6Pi@ObM*d}yZ1LOG#Z`cl zt82~X+RAc!b(xUC;^JDny|e-xzP;97UrgF8#OdIa0g;FDbcl!8ak+@4xlha_y)Pc*GYdg zzE=?YWkh&$WkX%I#J1inm*(&8zx?Wz`D?+dVWEUzMwo+P3rm%><}wW+_dDCef~SK} zs`xtM_*iC!f(%tYg^O6IyII%av(>EX@Y!miPHLPu?zA)wN&>XB7xFVd-wDrPZ+q}X z=Kweih6NN4Vy3R$VcqhCqMeu?_jPNG4^m zFcpwG;63QkCi&w(`Es1h_qtc2$rcA0(6>KEsfMC-tpW#s?a-rV$`@%ZR#7iKhL~h$ zh>`gi3akFdJ<*(`ye9{FpW4yIeBZj@mOP&@5KhUFWioJ1ITkBTM5)5m(Z7;PZm#LV zVbTQvpPE9o$)l zTZcW>eyTF*6=Zpf!gy1@#*$OvkpJMGHoj*{v1tJnlX zyEeMhu8i(L-ZFhj-}uC#XLwFLFCfUfdnMkwAkM;U3tL+4^^E_;aj@67LgIL3Sxl!i zJl@OtyL;}_o8QN2q$F?9-=Nlzz;>4aJy{KxWUHu-LTvNQn*mjF_VW%QvjeKY!kv5C z8}`!XnYzvHV30QX^L80PpZXS0D4<}M3FzaSJh}IzvMG{3_vo6_wxJ(?_lbv*Tl+t+x! zzPhN`^hrPbsqjpMto_3uCXT52q37Wo0$%)|br#DeT8qWC>*I_J>jUnDMt-)LZZE^^ zbj>xbI$38bt_P_RvRS?UUk>}q4RtntM8?xd%PkZFF3_82<;{k3Wo|}J3o3l;aoeUf zI$JMMnEXb6V-p)K6I+lYErn_66`o`w#^Xqs(=e=>i6`o7b*y? z(801MEFRo&2mo0A6&@Q&dutrvAb?8Rua`YGR=F$DrILIAe5{~JZ>5%;i#Z6+G<8%m zX=L+IBUf!jEiYB%vmis7Hh7Xk;t7dPSaUm6wIZl3C(;7qIGs>otI&%w(VzoPB92j* z)^JaX7-2$`mLeB%VK@;H6?m|_;vu$n?1<@^8l%rEzKpYIr9~EU8{L%*Y>Y+KHnAhm z8g4*_pDX{N-$!KzjzEf2Z1-0Lgnr71_~t|@X*R3c?LeJqp~><_dQ07XsQNLuCaQl7 zK@;vR4vrVGkSRYTV(pMwBM2!%DL@8i274#NasTE5%kp9_Do+X)!&62ZVi`Xp2zf`QCiBL4)KnSgPD!gl zV$I0+zGftLFOD%f(c6(8Qhx7Zp_}})7U8Pa+R4K7Li7$PPaSSG&Mj)NS8YAUon;5s zF3vF(XU{0Ia#t;2M{p`&UkEuvI(G3ror6K3S+*<038IL^?x);}w! zVOL8gyu0fMEv~+WmK5~u^*0W|KzrB#XmfJBe>tS`3l}JBFVbvDtjMwh*6<%fHP*@ayZ%_>S{D%U+` zm36I%W|hDp0hom}_o1&z!;M%MzBbglW~dit&b}}Q0mU>C0QM@f0uoc2Fb*{{Q$?zI zhUK`)u3z3nQRn1hrB|++7uNxzfUJhmiF0Z~4*Q`?=E$@l_QxQJ#Zw+8xKvB&F0@Hb zZ_s0l#&Wp3*TGlHd%K57?Oa?Kt*tJD2d&JenHZXVoAgyFEVpEO)VxOMkdwDq#JMi-??#`1172L8 z{KVa=0O&1|lbzP4{j-f%u&I7 zO@woNh@~7%c%^)2PkabYR!JYy{WMfTdi(Hu1#|A|3jdeS~&9`WTeUp(}|X!bqEBUcv~5 zR~NQ4mD_a00E!jS1sd?s95pqi*2?~1ZKwO!;>06T(a(N6N=VEh)#MEtvdHZJN!&zR!^QpB|vmP z3eX^c+(#l5nGM-j0w_|ReknAHf5EVu4PlqxV1uMM7Vs$JX>n5 zrVTrTBUi^|3H?|M_98DmlO-PGUWaHi60rCd}j+K2f>I^AB`YuzZmp#X!3;97$s40?1o=A+f8R6Q(+AFH&xhbijp)ZD# zI#(%Xypcq7;9)$f-2H!`>}V&<3Wnk}%x)GImD?sd{!h+olH(TONCS_2D5`{fgi+!~Klm+W4JP#je$T|U4woUE{!(p1GVBkJ8 zY}}-o#e-_q4hlc`D81^hn<&k z#j}fBGij^#Py^<@?ns`cGbPG5F9Y$L9+H7}$jn%dV3(4CVKi(qwO2`YCAyKlTTC$= zfOudSwi?f;na5enkd@}FnO>hcN8~dXeo>9##UbH|9yLGgnp3mGV<6?0Ioy)s2vgd& z*}A(nu5lBS# z*rFGGd4u(LxcSAuC54A4UCf#=Jiku1BSORP}N%AZ%f1Uhv+5i61Nz8G7UgZ0_g5n zg;k*dsT{y2Jm~3q6#)odcW(nwyU?e+9^Q_66LfcB-WG4p)^4ZQIqIVt32bOX{<4e5 zsIno~JxL+5FsC$q#nU|PHuyaitGz`U#jW;nGSTz~yRK{veQl^Jd#j~wlRw>DPh94S zn_^GZPcIf?J^kr$qLW^LiETla^+nmSDUKGxuxgckA<=AWl4zC%UMQ?u;kr^OT-9T1 zQn-dW?*SXF72v>ruKHrgv)k)Sx>KBw`~TsGynw1v=x#8K&B0sg!1zM^?Jc`L-;WzT z>yhwljGnu2D$q3{Oa6&ADToLXsaC_b21{*tP7)PM_dw=&&u1Nne zqK)9)t>6&y@)&}H!RC)-yN>!>aQ#?kFX=nqfm5s9bdt#WK#wD3z}+C@jR+}qH-mQt@XU1Tp= zfcn16qWiRv{W71*M0eeSvJKX|-^{9dN*mTMrI3Srj_Jf-Bp!dUGx>{+!e6X){$e%p z7t@o!#Bmzd0g%5EWYz9mj<-@Z0D+A zo6mNxd=fs}x#~pHP&-=vwQ~i~;#;M8-thm z?&c={c&T)_L-$LxtFq9J#K}wy11Qig>s09+s`KUGTjrJ+6;S?I>w=LK-NQ#DTp_9T zt|Ps2sT&7M3iSe7oK!eV-_t6R_NIg%Eo>|di|{ank&Q_qe3&v+&(RsAT$G%L|JZKg z22muk-R})#V-wpNG7?BJ^$7FOQJClywL<0;VJXLYGaT$}ZgRfixzvly73+jMib}G{ zYL;?}ck6^jrIA8tCDR>kk_GBF!O61nRK$=5~Ta8!{?eG&AdeI=?Ib$hwTE z$2My)7OkxG2qM1vLKE7vbCvI{asbwoR#K{Pkl5!1P+K1mmB1jCBag-p zB<)6;<7Hp)cwQ0iTjBwycT!p~k(@ZZkI&2LOPOq+f}aHu02a!!NJ}xUB`cPAsWT+13bzX1qu|k zM}B;WA%p};EFGJV6Q&LY&#pU|i7|E3R<-lwrX-I}$!nM}PR_I-2`Sr&VNaEFF8w&^ zsD>-X)E+JH%5v5Lvq@8^!yTR!Vp>H><@;HyU}0}CV+(~6U5L| zHl0=~UPriAusMCl;?G8hi|BJ@d*bIF2H3y(MWjqx3*ZUxaTL=Fr-59 zbq;f6ep63E^jM;z5PZr-R;2z*UCNcQaR-|RyS)PsB&KJpLlo1Wy}8PuqEUXpPNo5H z(TXhs3rkx-7J5i9i-?{#6`)|bAc^}O-hpkecqte-_D+xlH->5e`5aENIU+O;LyGG9 zlt_!Xi%BA8BKTI+at73gGe=ZSX3Jb3SQ&Vw*c&&O&i?*@&OQDIjW|MO z1#thV1dzPlOEfsd^H4Wg+9;#DUWY&%P3&G#*J*`H@ouePl-hUs`0f!fwy08iySL9= zl3B$(HcFy7B6AyQ6-(ZI`?d-5jk2cXr$|rHxG!x&W^&39G%M;C66&9@U~)(2kCL&r zHPBGIABP%xV~Fdq-+4(<@Yau++w9x%sL-8xj%7jz%O9tDD>&Txk`@jj*t!c{a&kW-tI@)0+@dkoM+%82>t z!S0c**!XpBprYvhzPfTYWH;IBfXxyXg-jcN|NHEGe1CI8nK569gQsAE-T;WI*c$kC zk0}Tf+~xPd`c&lims;fa%SYm;l{Y~d_3`GGB=VUb6I8vCvh#C$ARKr&+N*VmTMu^+ z>9SpIqxqcI!!=T_4tm;VibYZ!QObFhOu>?!T-w`Q3+T^8)y9MTomOB(<1r4QV28}S zQ~Bf$p@7)Lh@tv@gO1hP2wlMkayV|Jn`Zsj>_1;=wwHQa-g6}LLDUtxFnqp`t$PJ` zF!7fSPgvA3CX9W{qsyDSU$E`fT*L(a5K0f(0Nvev>t9Bgmg>U3$;eQg?_V|2q$b)X zCfBNPn-_#){#C}cG8s!3%`~}VO*N5)p>`eN+I3D`QP=**>{PwQ6s3B1orCxPRB|uT z5dEDarrw+WTSRv+<@YbWHc=9n^RA!gDUf1Cug3)wU7OFUsc@G|7NEQFC-@5J&w{7` z8C8&DgatjrjfRS{fcLx5;G*b_hWGEr@EZWlF1ot)TnmSz%jmkU%e__O=8ZQ8?7TtGr&7j|VrkzfCDg1b z?_;A-(0A}^x5v_MshXD}j{{Zn>R&$yj*ZpK8D|EevkRXqS`sB0R@fIs;$qR2$3Va# z%>sS6npP9wIB*$A+bSb(-;|w>3E%u}Oi+&dCWBtY41Lr~wxLWfdSYWJ@<3sngI(H$ zDy7b5Z3-SU`(9MtxtTdsc;YjHw3dzz_yH@Rk2iZUh z;SdO7mwm%WzQQeVI{*9!F%QGud^Mjv&wlT>$bbFci~nb8&Ngeg3E5M1%L>j;dSc;0 zXRO4?*o6UCYr4cW)5bJj^0`_@1pjX~9M4$% zTV=gS&?%a3!Ss=0=@v?_E+P!ogpc`4bOkT%@#ZF-R<=SLL`HV#4V|?;7&Ng&i#MN zn@kW*Uj|CvVm3sa)v9W%`@} z52Il~1J}->n70U`kd1hDHM)B~zPf}DG7PLxth7!-lH=gO45CQy(99Z z;JV_6z4?f+H+4TP@V&mSEkgHVKfY*xLbyMtG4Q9umN*q=p!EH9lW2@M51dSeo@Z;1 z;usP<{Ka8Bcz~O=I3kW(FoN+AYHZ+yZ~!$?@D1eMy+doT);PI=^yW^9jPc0_!e@Lx zyB%S3`5p1cqAsR-pjH=CKoEw=+hC$Hd#nw%h7kHS)|*{7D4tSKxkWhnZ!@FL@{per zbN17u^gARRwl{j6hc46+E#gB59f0sBLI<-?arEDONE~KGbtcGhLShF9v&R0Aku09`vdzBxWQH^=YrkTT=V&N5xQIxX5(cbd&! zcdgrNuXfj#mzR5M>&xr1nXnO|`%sfo*^F_vNCY(1T-wJITN7>H!Z)L^7Js!+dB_T4 zhdVDF(I1(pc)7ASW{lk9g-|HxA2~dk9X}XaV6kzLhAgJ8q%eFOk|+p1&l|I-elo<5 z^u{O@@U3xufEiby@w~mh1V$q~R1gqLwN5g9hZ4ZDlJ7IZg)}GqN6?@0HMQaobd{bvqaGOHc`$aH-0ja)-MG>!LRkoTEbK zuEbo2Z^f`2VYRvX!1wzrRHOX;Udh`cw241!L3rc7)BPffUZO`VCZ83a0A<#2xZw{? zO-drwR(58!T*>?DHVem(|2xx_}zO{@DqiP zKqkUgot>8$Hto6XO*$2Jb`;m|VpJk^;L*y=`%!EQnMED~R01Pz6p13eE7}g@OdU8! zsW5{2MP_j@Z2hv73n-M4*VQfZ(tAwu^wJ8d0 zQ%y(LixGtoqh*eRr9>np;wTwW!ZBK2^{x`oA>nciw8I+*p`$;B*fGEkhCzcWL;fIs zIT%63Upwc2COU}`u*YQtc~W%_;jcX}LaGz0l%jrm_n%qYH1$z zKTeJIVJ?;p_*du1$Ppq@W(T2xY%L5Ji*5I;BD#?x6O!%FcN~!Cbi3o&ngF1!Zz=(t z<=k9%)lp@TK-oDdj-C-EzOig@cp3f*kBeV6*L7hFUV10LuFp9)hBhomh6dZ| zPlm(2?EyD}VWum@ymrNMDJC*sC(RFMZdNr5URSSR6;G~{qE%8`IjMb%Bo1Ce_g=V$ z5aVFfkyY!#y+h?JJ!EA0g`hQd?C@@dXF9$BuLwZZF|Wx1KRKp5!S(Gg@bp3o)XV?c z-``aN48L>?P5a-UDOE0pz|Ia=PBQ_fPh5VP_9)#0x~>QkZ+SQUp_Qle=B*m&_=HY9 z)Dpl``r-QGR9QGh5lP2k)~*34078KCihE(Vj&n#8y0k)^$6B2{DXlF>DEc*Q zV@C%b#m^Vo#_n>7ICD4t$V>$z3kx@Ffd(CK9w>%eg)zyiK0SyftQJQ)q*S09Af)6SHaF@7V^jF;@Pm?0_=SS? zPKm{EP;fJvbsQ~Jg(V~{7KuQp$f7IIn*@9eOXhkMnS)0#TG$Zh+=+4BGQxO#=@^yf zGNl_|E9u4)f3=w`;4>N}jM!5ra(M6I3SkS3>b%^f#<(;hO+r9lXGkao`kG_nF8B07 z2{0;f0r(r~S0GhkfJ(zq5(1^Yf|&&i!lIl;KP`|G3<2ct*rQvMRd$gUd{Gs0$387V=Y3K|pP&CF+@>q-eewl~fo*GhYGQ)EKsvCFF3hF$iVDHe7Pj@Lqi;Wna0G9zs7ubX%P;e0-9V>7eo6zA{#pE9Oy?PU8G{*n znH%(bjQ6caSzpia$HIy?6A4I=)mFIj6=m5J1ETkrik?d`BaCK-=w5Pk3_VFQDpFlm z^C%MWI$sdl@OVFVhA|gWOI;0brbxu#Y@$l(zf`SuJD#uDGGz+X$5TU@_b;;6x2ssa zYx-Y%d3~|H%ndHBEVkBG+pEyLwN_SI%UcG?7~jx5fo50nV$rcNY;uJR!?9V3C`{fQ zU#p}T)>7HGbHZS0wZaBdp_8p(C$s1#?^5h@eW>002%QeBo=Xr`LhRzgmR2ueJ#dn- z2!=zLg<;Fua<;ZS=g7eGqrv_GY&+TH*QsH^vNM5QF$~%j`L3CPX3wX>JpA(Xy-;P2 z%1r|Leq^3fU-@g5SBC1!Dwc;8hw@ZkG?u_%YY%zsin#Kw%kVvWehEX_^Ij}KDIkq( zvvv&}FF=f%A^mBkP3sx6^2u%zZ3croc=-y3e+400q`LPg(#-G2mqSX>#yi({gR2A9 z+#3R=*FTRn6@=X@in2+-sC7&4aC?ucX$6QIceKvDl321mdoVvx)20}5sq&u&2_G8J!jzxQ8RsM zRhN?!@!m`eQoLGYFSM&1KAJaG*b8@;`F~tr6`*AtY!l21zqBB}sT1X`Wf8*~4pc0+ z!(GzP_~ynE@XF9+yTMpe@*fO=D*v%+sn!7tA99`IWt5O_+%3>m*gs(G)m82R7lu{? z&|GuxW_l33(NGT#ShE3*Z>q}5Ab>Zmw?S3SurlnFF$&$ub4oQ{9lq?V0AWk?g+*=l zhkN)s;aRu<;OHOOYME3lHNeoO#}9)Q`bH5$=mOHt54vz7#5urNkY-q%$TLVQ()W@Q zi`8;t?Ty1N^)6D+hNA0L0s37BqCI-Ah}G@!`5jy>M6!H;CBr-SzDYf##A5DZ5<|K*|>%zBh3C?Td2g;+(ZM2uM}H@7Eu7XV5Mlf%!cA$1K*H!4cYjB}-) zscKE8P@qylvCE+PoRJlRxFLya2bI@kMV3t&2Zc-frfKTdlDJfIxDY6*Sh-f2FDh0Q z#N=7gZWRLSx2vmAG6P1@y}z5iBi-ck$H(vt2hV zVnm?3a*^ocL4I?Iz9)Kn|AxuA@S0NxHRiyoKKThM$KDp~WJX~yq@CqMMK%}LKNm$d zCVxxkJcU3b$#~q@UQVJk+6IPSmSy79I1V9W6S|3wff-6sD~?E+-kQqa^S$h`9MfGRO{@DT5Zh4B9^s{fxpb0an10 zoBqwvoFq)Qc#M;K)>dcsZxSY(;8~S;Sy{;f$#i7iQk`dnv=R5~s_nKbt4le=J-rT&5#mK7!r{9F$#6IkYP8Ze^SsU#Q8Bv_>;LyWdk0$ZW1Nuv57R zs@OL62R(3iWSrcmz&S+aK+(d99E*yd3w#GJVuoV~S90(RCvU9jDg!?w8bIT-2XhWE znNJO#_y0$FQyN6sV{-`7wpq-sW`nCFq!MC^j&p``wQ~ z6t@f5i^UjY8OC=`8+`{e>;0#1KO~C5;5V%*_)Saj8}WFxfZqtxZG2TlHA6PFWpctS ze{RA@$hU{`Jvt@~l9%_hhu&SaYUJGjs8e*3w2{+@+qyUnl_$NB{I)-NiPaJqCWv6s zzxLXTzdF0d47j`fCF6fuA87L?A8~{3=rBwi zPaFjT#adC|E+tqEnpzUvnP2>5^!_HrkKq`&I<4uQ-SJL&!zzsL@YedvVB8a|9 zm)Hb>ABcRwhoZ_U&`j#|F50WXUmXblmBqA&c?T`L-{=s$hKq@&a0>LY(r@6LlBt?0 z#!L6t5tUfMBeqzB|~tToA&N z`-3Bjlk-l0D2rhLdjTw0{49vWpFLL9f1@jm+nkFqQ{ISGMY+$V&K=C8Mc1K%2ZQ8evO`4_OpdkWtD(*q{JO_~Ita=jY>AR~cl{uuRN-@8 ztcA}ra)Ii@f`jh*YQ_mI+yuSfNW&uwA~KCW_un?x)>oH+O)oDkueO$&t1HWktq{1tB>Qq+r;xoKYJ~%QTef?fbb+x%_I3e$da7&+$%5Zv#eMPr@sv;bg1RzcZ$XcX@rJ0nWsGk;~a{Vinxh-I7?R=js$#0 zIr-vg@)Fm{3kh%xl)P3dG3|;`3_%=L(0nN% zZ`{w`pCs)iZFa3JfhK980RWVX+@~PuP`Y%^471bg`$#M``wo^?v!zudx5JU_Y%OH~ zeP6u5VwGUGUr?{1!{N4R5tphJgP?1FiXDrz8@}3oVK!tzQc&<1U(Bpu0Q=g(IS+GRuW`*R66SwRGESSsI;>651Q`*ePWh9glJG zBRgcKDKBR130vOcN2^(yR?_2D>G_E^mOhkChc8<|7XBi@&4Oozs+;lQ9=458`GySS zny)c`!hqQjE`D~9Mdf`Dz9AhHe(-T`$X&PU4Vkx&n4k9aSEn6)v53s;$<3K%qoD1idFD`D9v zoiU&36pk{1Id^$|b@yS+J?6iRj&D&FDvmpWnuL0(=mC)l5!N6rreS2l;s^OzsZd)u z7U|MocPqapc=6ck=amDhWt=6^R-`F?wXL|8BqJr^MOh?yxYLvUM%_5ztR1*w8|fx|Cl27RdPdDF zUItZdk+PE!X#EynVR3^eDw!o=SZYLgi=a&6tGUBfHDx`$@H&~i#%JJKRXH|}R=!8i zcLIe3i$Q);!;kS--dNP!BL#|L`+Sb5!^Zw@r`IL^ktKGs4V~7BxXkKMfiz%_gYBia zO!IzD=k_ND14!FbQBFUK|DyE$*F{uV3k~a_VGT5_e}=Wsuu+T#v!ov7Nh>^8_wXh@o^o!uiqlP#CyMjLu6kJ`Y!XwV^`SOnnt z?)cOJE$NNdZA#3wSh^zcD{#{#zHfx-ZkNbaJ6WJn8m=^Jq~QwoOA-IH_u1_awp1<> zq?TkPoibJu>&Gp8B^CjfJZaT`3GZ{+5w#epJmA4!`#m`7F%9Bf*T~w{rBu`crau%D zlR2AMVTe#7wF6KIhSPJZPh3oN;Tq5B&s>8(Eq8Bwl7ijSij2oSi?H& zSNGphVDgVbhSBqc9$TFw?8zSHCnAnS)Y7*r-!{K(^FJUg9#g936e6IJrO03E zWRuc1EhOlP){?bVl4!KzEhJi4u%8!xaFy3lQ+SmNe&;jE6&bv7qIsSgeh8wAPW82B z#BwAo;0-nPngS96=ew};eS2tC2jDJ8@#yR{K`qKChp?wY#x$q9K}m&S1@0g0cD87j zH{7@GJ+a)A!SuzRi1Y=cBcCkj{NyV=7c#5-{FMK0{Qd97&lX($r<#INI_hgf=Zl(7 zG}o*C+lDI%{Ztf-E)+k(VdrPCpj%&s^Kovaq|l+i2ibsub?VOhSk#z`>`1VIaVi}7gIaapD!*8ePBsJLxEU>_eC zu=vhvL_9MosF_5<2j@#zhRRUXM18%RHng9po=( zb?Z)851z0CQEzu%_w&WK`O*H~UgM}pM-{h))S#nOqjB{6#ZQ}9q4Pid0MB9Zm2YeQ z%VzYe+;x37#hl>A&Y=toSCn8xZ9Lf_wF$ge5VTjnD*qPs08Y2q;sG-ZcOTP(3Kii@}euTmbqKbQ65Wugy(7K1j6 zci`snQ%EGa_^&aCby;R`{@3B%=-#5rMPLBchX-5!_k6&ekdOssTZzW4v7nmN z`Bj-vHHQ;ZuROfa00BB0o;K{MFro|uZNZdaMTPT9Q?Nxkvn&igZw}(Cea%VeE|Z;U#8o;k2Xr*0|JRb+0uXa^&hHvd!?{WNV zYm|VL+s;qV$A1$R!>EC*&506b?ZtIyJpa1WR?@7ES<8c;H<$YTWheGRsowU%UMSV$ zvn9R9X6N2z`ODmYj8EXk91f*o%)^L>Jr#2pU*3du;t7QFw1|MWa@J?Tu9S*=5Y(fC z!VgCGe-`Y@UAMU5P&s8*Y+>ekqo2Y>BUmcX9F|~rMJu~|9c<%#fOg*oUn4^J{tnz7 zaX{r3ILHCyg=II)?^pqY2`!gJtc9C&jiqy%Wzl1k=F+>v!CQw3!67l?G^8Jd9FxD| z(01@}A zQI{7-RaV|Wr%^LbUJ?iH$sua!53ap+Fr^?N?wyxydb9zIiMGn133egZW^Vg|`m6G3 zhCN%EyS>QIReU3K5A4jgZf3B1p&1F0PzqhtY;G-PS72n0it$XxrPRyw0j6tXqV-3Il4PeW^be?r{Z+=Z0>?s`rY*hTic&piJkGDZu}T* z$B^5zH1%Le!2;Kv-0DggY&+GCv|f$FHN%dO)i!NMc&!GGpgQh_ZCR!7m<28YR!fTy1UxnBdJgvxb+DKr{4);XPr4YRp&QmyKC0X!gx-MLp zBscVjzNBumm_TSQx*_w|5C+e-k54j@I4I^zX}4INXsHBU+OS6lO%g3>-yUQg$jJxs2`p-y`{auyp z<7(NN-f^)CJhyT!SAmk=+KAvfPz^;Tl^b(T_XLr?1erB32|kY;fZ=tSf4A(GZU~}; zy?!ns!@{OG^;+`{=o25|-%Ye9is#Sr@7#5#{JSclw)C)2vqNSIHB`!^P}5X3k`&>q z>(V;}-R5%G7z!?5rPg2iEQA#SD4~}9V{u{eKjQ)kio=|)3ajc63O4Bf7Kk+O7buBouZ z3KwSCI&L7SwyPZowIvbvx1kEC4N(KQ(HIhNjCUf8SW{Lgu0OJ=CcIzn2yrZ$(wKD` zm?;L`sa2~lKnyI9|NRAdM_9CORCn^?hoa-0s@ADq&jo;e!J$8p)eT2kxr-e!9MR1V zbYB)ugp=ap7adH5`E+!qLIHllzLNOW|Hs$n=50aT2>Rix89_dG@?YEyEiC9d62$oE zPGQ07Rc&N9#n%unr?*LRS#4))!lFJ3(%bG5QWlvF`3odfsI87tiZ0Km$G`X+@hnJ$ z4!1h{1Z|4069r%MFmv}%I?lR|K5z`(0!e&>&VArG!U*w@xuGU$|804kN=}|1JeG8D zUtqtzJU=OFQw2@)B*%oo3Aodra!739pwZpwEdaGxkf}c`qVH3O6b2u#lkVHML>&c_ z4J|1Y+DA-;d~DM=WgL(1%J~Ti^S>+h*xx!|i{VECm*=PPx%5g20;&}4Ow1M6;nu}> zp_~+HcH;NL9HW-v7m}0Uk5mGj;~P5NW#E6FZW6B?LNGPSi={lKE|Ac;Z2@I7p$eSs z3VTD@y!}l3V4WWu`}xEVMV<9okff$vF43V+vJWO=nj~#@U5Sumb*Bs-nU9%*L~T5$ z5Ceu9mofGYxFvU~w-)WOFo#q&470|n6@0tpB0(!9P*C9oY)pEb@`gHre@zCRa+roMYH$ajX#UP;Munq=kLbfJ)7H! zD=2scGy!lULp)SWIN(*f%-wGYn($xthsMj>&x?ceU2V|#{@^pzX?T3L*Srg*s zQi~Y^^;QN4NP%QiCV=98mEPH+Ri|bSa}S@A5p;L=ery~lUY_S4j>mK(B=C0qGq-#5 zi?+KnBn7r|DuLy1(I@ct+5aM8{_z@1h{)=TgCD;C-f~C9o>0pWcNITAEja-Ze;vVT zW_x_=Unn>2YM(1Mc}nwbTCz?)D|e;hlLvEGIw&ml_`I`x8+YBrw>dsRqZac zib>(ZANyKCrm)2>rFe3Z9_89pq%YI1eJ=it+$3XHX)jKB^lrye5j4{}jdf3eXB@OF zd#8%rv!74D{cv;R=uGaf#^>*^MyDC6QA|VQ#!`9>h!b5r=nt5`5!0@03MA>_wyIcF z*vfZH^-a`7*%}r+VtNg;b*gN|;1S{Z{K>2Hb1d%;`8-^_kHF8qO*$Vb?{j>9HM)(% zVnfwjQ8NS6#wztNJuZSbk-LfV1>}(O2LN1(M=L5YAPReI2}Zb6Z)ZLUzosyF)$IMk zZX`au9*4s#ChEJ4|F^>D)vlOW$KmCxDJF?g3hji~L;g90B$Lu{atZ4eo1OBm;=r&{ zH1!FG+1g4pljDIuM&h5J{X*M}+n=%}+Es;j8qEP8z?~A)@d#%EbHL0vM^%)=kt0o) z+PmdTmyR`gt1P3S=t*vM}H z$I@ghqF_%+*PUN9J#DA2{so~jQT^NR&*T*yBGulaTM%qYM-^^jaTBey6uT`xCkP6f z3Cd0?mJrits@Rq>PbAu@Y~H)e1KbId;ZZ8qUpG;)lXVi%K&e|?{X&DprECzDR+=3# zYpJaw#FQq1$~=n^d36}YGkzM0%T|E<$|ve1ss zn^o3-xQCh$0K^rtDCi^ANd)vIy?Bj&G(37-UszcWuCFJ}SD66Y*14-=vCH_pVZ6g_ zge@>)8Y|}X9wCw|bBju-gu~-Z$w70gn;(d7mTwA+W)mtw#Q+LrQ@evg-+pJ9BX|J|Y zjpTkLHaQDVR_v&Vs(H$VLhbP*;jCzZ0~xFg4Pk*31}H*9TAIra>*n!$cq>H6iBbe^ zZwi!{j{V+C^{^j`Ynzsn(;ZCQJros@Oy%Ne_YsgeNp*GoBb{DBd=efZ%&X}wV6F^z zrPaIh*Z%<z-Md9lj?VMb&}Y(ot1(Lo>sxJDiRD0EaN{J-fIjlydc6+g0|sNk9wR zh(+qctF9DMw4;;TLND^-!0Az6%B?kQh1PWrAsR zv!isppRg$@vdnWs{?m3;;1ktHVZ$P6iVUGh=X#);kIY1k#V_IB!uw#ISFdJp!!jvj z;m6YH`N#gJPjOm?YgAly9q*a?xh;sMHV6H!ol(HL*I6cH z*gg5m^i`&}kmWaQmSglmiti6VU@>5a+ls)e^WZSvpv$W_W2Hg3px;xmew(f<0U?QT zv4%l5YXA=S%xBQsN&3rza!uRICS4r-3_)xf0;zK5fxQpQovFuH6Mww0;du3SM2_`j z)W5v6M#xF*StPFHd=4nj*dYwFzXJ&rj0&sXC71Jew1kq{HhgR#$=>elzjlM0er1rMshF%BQz$gtPFG;hm0P-hSb(IUS$f+FLH6hpl+%f$zqPXujb3|g?&|(>bW3UL#rY*^ zvKQkI*SB|yV-}rGJ?-Z1_AaQ1-tM8Yq^AFTp{jJ)+l}FJzO_eL0^&JELOfPLzg8I0E^IC|LWdZPnZBD_ zyPX4q6|%591P9-)t*FxnMm0QR6PzmUVcK=|T$tX|u!VL(jT7v&FeNo-N)u9>)VeB6 zFk*+^GZE?!fd5Nrt!pI~;)>d_`L>dcT}s2^Irp zSnVYCU7*Q@<`opd-^*T&cRcqM7-p61@G59QUw3j^`kX+ZEeA%6XNr zVMV?XK$$p?8Cv!Q=KqEu;rFC=@mKqADP}_<9uAAG@ps)bm1Mr#2!1&jAz{|kYKX)Q zNPM**Wok-T5i;SCn9S~hOmA4V5zc_f*C_W;T~)XVK449)2~N4KqHdY#DpZO`nDOg+ z%dKSLJlpDe%dt+vW?FC_yxK;kbn{*22HN+HK~c?s$PW*s8sxdBWM(qxse$1oB+(o{ zK}b|Tz6}m2AXG-Y8E+FiYA82j!j1aWL5kj|ugRnQ$gkikxvcZa;16a2yC9U>2x<% z+6~So4uYwCgBdiJ7L5dkMXx^h*qyN`%AjFFstA>17Fg&4sH zs_u@k2_@J=et1hn&uAU6F0dW%bdBKDKKTLlA;tavW*>Y7{*g)nqNPM;(I{03Qslu@3T4Hl7NP1IfqMT+ zWyX&&)1Q>W5jhj8L$}Ev?1|q5N2ZGi9S{2_&Lc(+(jt)>SzKojokUcqN*<5tmH77) z&|zVEo4T%3))kUurlOY2P`xW9wE1BF&D%p+)%u8)`%n919hTikaeO3pL!5Dtq}R?k zc+v#~v33g zvz-+8h``=SVG(9RcmZhTy76C9fr+p>n*?H-D;7Q>Y*+NOox8itFI8w_!bdt+oi``7 zalknO$u5tyr|w8h>}dKqSXO&&%JP%F8Xm%qr+$K=9X2jfOybm)a9Qgt;?(wiY~`XZ zmzewR=N?tV2+QeS#Xxw3)=b))_zeu!O{HBm$jU0?u8U*AeOa&S%5*xJfjB0pvm+u*Ut zkb%0uEZl>dTt!4!pSL!On_$A?Oma7pu3>514}0%ApA&Xh0CvqZF{@qBry7)nKlVolz+-+qgC z>+3}W{fehEJsyuow=6+SvM`!D=}Ozii~-cVN!UhYxH+K-{K z=CdE>fAA+Lq0lh?mx4~U_rcRuLx!1CAb6MX)F|w1)BmTHCR>qr zdM9BdB>x6%vG4`ipWP!ZgY*qYPiv{ zJF7IC|DC8W;99ot{@aoLOD$JtK+IJ2Wb|h3lfr}0$Ejp2#LmGH>`AKN+RQh>J;B=2 z)SKVfAJF2BT=0QNo`*Y~J=)|Z+^}9;`39NgfI=Dh?2oqQmGN!GdHba$8m=p5A>+~) z7p6w=E_ie6%X9tVtHXod?i--ui^;onw-mBkskdC6LJHUSNtQU*N=mh&IqK&b&9khx zr`ybSwM2_O(quLR$`R>@`Dt_tf!4+7ZuF?i0Od&1 zzF^R5f25(iAN~q_p7luH9=tt3Nx9%qEj({BsNA?b{@eBK!sR&uR!pwDlMl=U7PZ^% z*4Q_;3cW$r5cY?S#KLdd9LC~9D)#-X)X zRh`yqot_`Rzq%facpYE?!EXSM*H=bO8Wv?~4VIE$rM-A)0qYd5;3U`DQ(954DLnHl zNIAQ%+^bwJOy`gePhvZMg&OunzlWaTSg+ofW~8+lHA+{tYKhWS#1m7A6v<)Vf}X_} z*QgzJYJp!osclq67^om$n=8|`lMbrBk{s^Fb+rz5yjlf27Nofpi&lJ<__ND47#4!? z1+D+$$GN`Qdy1h`nED~!aB$7*K!q*!@hq~igcu7*p?9SUkG#@Pj|;mfK3Zofj^2-o z)Oh|5S7mUqb#b*$5!e!Fj-{2g<@W08^4j8Bf9qm;>uSHhZaj&C{ub6Ps!ppDbm@8$ zu<`1aRt{yw9QIVjG1hs=()bz+4uw+mb4GNm&F%M*pF8S%pP)nCMR9m*evUmAKi6t1 z3^9>fNOCVsul)|C47e{vl39l35ib|7?oqL{^700wQchTYo(48>Y26Bcx(ared%6w| zOE1i1g0?j=Ce~y!lSNoTj!)={mn{swZ`nls`#nptk%se2KRnpsN z$~v}aA(YG5iNgL7^7Bnf;5!#3fo1q*1E}IK+;McOmX_zBqce?szs5YL^mfBWOple^4s6H&mB=HfD~Ju=Qz(vQ$S6qx^?dv_u0p2i(*PY zMhDQe3Blf3pd8&JJROOS)siBmdY9dm(vzcf8?=A|rbv{gnDd5?Y3y{NHa!lMf2IaC zK!AFCZ%+oJ?#%_w4leSjz00b;S6Q-pmu%x>SiJq1`~g_n^vqGC#K($TfY&Z(KDrbe z4TKnhr%)r%lSqOn8-EuXia+ZvpW{f9=Q6|N_Selk?s!GNVliT;DIe`h+J{NSS6j65 z<|t*@-&))5(V6?jYGX_EQI>Hj(#JH6sBeZx%v5s==^1US1IPd>i#L{JX2Qo1Dmi!q z*8#vOLZgG?+3$vTC%?P7y}rAqT5R;J0fmnRd3QhLJ+$4FMI_bhpryJAyCl7rcgY=#8oH_*E7wt^L8g#<79Tc63Wx-Mu#|2+`oK#tFC~4BhJQODg4H*H&lf3c%sNGq+5}tN?nxkW|q_2IY_j<;|5dmL zo^s_5Y*Z)!1+}PT+LST~pPli;%y%vE)Fga-o%lB}Ut%QJz5(_moEW1ofUy?e!0UZ= zt2=?m^3(NgmeP+ewnO1U?RDFf93)me$psRl*z|ii?b#EM%<#f;)?Y%RHu`g2{w63r!8t4Po$;Z zYE-9<018NN4@QfI-$n6Sl!~bD8<6GIw_RDKngH{)6UYXO$u&99%ah~0jJ}As>&{%v zB!z8Zg5%Pv$$5TB|4tZj2+(W(|54-87O6XlI(G|TMkvJlKy-fZO>aZgd)Ach=KA8x z<@N2&=kpV``D4{)lae!HF0uwgNIFEW=0`W@7S}CruCFgh!*$?R)yJ~STR6TvrBY31 zq=d)8u7#abr%=}!t=%T83gLWe4nJ6X|K|AW^a7qSDn`z)U$rk(=MesP5ef{MJzB(_ zc88bVZk))BPov=%l7bW65tAFI^VmVbLc4aS( z7J|K>8CIs(iAqoEbib!Yjispcs7~{mHIMz@{Lj`^>oRw`!XC^kb{1EeDsV$A{B@_` zob-&kjrLrodE!v{JvBGjo-?xmC7<754>7r~2<7e}NOA%1>Hju(1AA58PSu;^Kn|(Q zsWr#7EBTB_CBB+DE~@MwPtvVdUjSy{w+XIeH}Ysj9EoHrJ&mo}E|kOrHD$Zkg)u|SS0lM9xri6K?w!OZInmOFoOze z4?4z9L&4`B9O{U+Ce@Lx5Q642A2B0beA*vE6oF%ka8MDB@~>{wF=^xfg${yE?yU9k z`V?9#J{9_uUUT#dp>wO9F!Qde7>}*EY%()fTwz~)eVHhmrxQ1caW%uuVk}FeFC*F; zv=>}BA^4EPKdVV@PR8FA*MUQ$>5RqVJm=uUy(Mq6ys=9P1Uyow(=dNh_>1KVY$rS3B9k& zv)k)SCP^Urxuw+X93@r)_q+pUe+`u^bzVP`O1y!=vRQ7O-;VBDWuJ3f<&ioKx5_>C zKyglyD}Xt;pN@dSTXzC-Jp8Y*yK&(9uPH30Fw~3U*K@z7!W0S=5u!wN93B@8uj2z@ zN@VgakVnSI6F6N+{O#Ugqp?Q~JGsJidSl@ueJnx%_y2L45)B z14Nq{rOksk^qn00IR{aPq`m5S`W@Nf6*;xK`mMwic&l$IrtETGFQ%N&vwU)W$?Oop z4Oy4VY_R$mMDQk~){Stib=n%X&RP^Yw$59B3XvvxXz@VLq}(cKQgw=9*DB6h#iv&B zxmBFEia!xO++nfUoVA<+v&r81$BXYz1lR_|L-hk}$NnzF#gHOlIk}zlCM$~FyO^W} zz4OU@0x+uAh=;efGf+*{CQ?i>#&Y}g`u^j^5ZDi3XKt+xD`@I7{~hv)GL;d zzdKj*3$dwh`mh7G8vO~KDRSY12%fiScRIJQwzrR!w(O!H<78TCwB5Z=^_y4fVm6ar zbF8m38&UE@q^$crI6m>VMwk2zMCnEI*|V1~Up~7W;?jM2mRS~Q+Pi@0`Y3Lv?V5RsjUeu9-N!&UulEQ481)}D}c7y97q7aV}k_5NY^fHtphg!znL z{4`KRg%(O=z6&R^#=&F;K#oPso;L;Hv(cJ2mDc{QXu@#*FZTCkp|p0IU|t(Ozu>8}%F*#z zjd+>CZajxu16*V+6aJNnQCazwy=mG+i=O9-;mO$Lsc4Y(=@C8rqrzBetdh}fh>>2C z;@{TY{mlh|chv#g$Hvi`+Dsm9s9{+InjjBn$flKyEI~~wm4^gJyS=wFC~^+2oq&)b z&Pg!F^*cp$)|ZRM*AOkPY1D>vkr`vz^TdXN@_HU5C@shb!-b@Nu4yx|nYBJ<k)jJzVRtOs{+9vEg@^Glo$dSzzNCl}-HS;zqX= z=3^?}?$G&Sb9i=4b1SoU!h^UtqZxisC{DHfAhK6wBs`e=%}XvN`&r)=KmfU^Eh;r& z(-wzhtIwQ9UuZSyQa&6emcYqYX*DbCF3&-6DkRruW|-Knn>nk(e>yb?zQ=te?Y(pX zU7@uca1EQ)X-8dlU=7)LLsmfLA|+-ZEqB}v_{=d&?x?rP+WH_!xR8N3t#9Z*O)bXj zY`yt;ivwx6h1@mHc8#@yvrdB({_u**(4T_iXs=kUdK$mF5w?TAZiM}Hvk}JX8r&^e zpY-8k*@Mp_Z^kEmlH(zqIHca~#~g%2&7E zO%Uq8wo(}C&{dHGb6SbIdAq@}{GZUh9_$-?jir@fvXv4sg-f$J=R__I&0ALW^Sp71 zL;C6V`kn~yC-o+5aF#}q(Z||l7ivgumH_Qdg{hOBsB<NMCX39@-hJ!vFM@(xpY5ciD>gc|DNry1789NaopA zcRSVghe;X01F|H=o2DwxgBH}&x6e&4p)3@(qB9pJHXAK5v$_7Su6YrFD>E6U&^{*S zAac=YK;{}O@lunKJr>qM+;f7Yw1stg&w>xqY@(6SL>}C==T!_8yNPV1DnUAoQJxAJ zbo^j-KdU>tM|kudXW^=$M)&pJPM37Cp3@;`=*+WyeU*B4@}grLuroJF`tGpMb0Gse zCg(c;gMH?sJR87MOr`4q?AR{8!O-rgr8mha?Cv`G;nQEhtf5#vGE6t56-pn69<;@) zF!aSi>^;k?P#os+8W8V2J=|C{?P@Gv-ApL}7uL?L9#`u6OlCL!!S%E7}uOJ@I?$gi~q`7hgh6d!O zxjKgh6$ir1(+SnWV8Zoj|b9wGBncKfwhwc4s+;`-Hm^dxwA}y^RmbTcn1TFgq@Wqjzr<_s7P+R% z4~-LYheIO@Oe1E?MQGBc>8+9|xpI>a6Od|2>(~rMM!HDS?w*#hCJ~#Car`}Y$Yk&{ zAzuOYRl~goA9SNnFnSH+uugkKad{-xmiUdJ7lGm<*gNuk1u2xqX2&*UN!O}tbEN4cXx2+%kmo2B@&?%Y1>q|t?K>L5cLAGu=J`; z9DyL66kD`ntqQ4e0$}R?DQ0B&-iz3#SR|BSMICP_hw2^qijL3M-0g3bZT#UG?Z9_8 zUSkSbSaa^DmDRcBh9s=AE*3u?-u-lZcXvxc#tImB<9hNmKh2L{?g%o^B?38_V^eOu%L*cnu?P$osM^L^;H2=Q^Y`?nGM)(EHAI2#Rz-$!I0Ng7N$OvWgm z`9L^PjENp^1AC>7EragMHgh&5e`1_x1WwbWrHN9QwCRS;HG1bj{Bn#;Ank9bJ4iZk zl1aj4Co?x#$X|!r%iIf_ZEA+`v>=#3>kow)>2Z?Hm!x@Sgc@Wfz7}-w+78vSF&k%A z{?0mY$H5uQg?Ct!_j|7$d@O!-MH%sH_C_oB1iCo8%zt^%{abH5$Uo8O-h{ z+31XLCSknf42!2d2PIlgHs&UTkNvPOds=MwbWPI}i*=ag#YxPv+T6vvac6>Ah6ek9 zYF>P9Iz1vg$G$5Y^L9AAS-&{G`hHZOiSgDT)g6?|)B=aJD`f+~eDT$+!S0)Pd%HB0 zL$K5TBi@^dMar1#2OrXbn!zX4(vG7asrZHBXHr@^tUu68#U0?z$Ob-V5ssP@?<2oz`o=bIsp z<49PGMorTIR(!Tq{IT!kdH`$_ldE+bFh%+{X2Bd>4{RfWVi!Uh7&6&^_QMfEiLRW` z=H0k4&YE$pkVEakSj*mx&ZDS-0G2I`MFUI7fx1w@mCkaM89o?L*>vQB+woN;+l}@M zQ{op{a-+HwmcQLv_{NJtm&?SwyYa`b1{Vhb_K;-~UA$yv9*b}V6|w>;WE@8~5i674 zJLe>aBd{x;;I#!WZi=#CPtp~*T;kCractH&nG}JM*7kj>LL_G!N3ISyIvPSGZmiO+ zfp#JN?t6S`6sY-&EGE%Plxq}7H(zw3tTW)M$D4@B7{u&0tb*3INu@PP(EzGk+j|55 zRSs*54?}pQUiI-b;1EM4vmR%aAX7|)E8s#it1%#&tr)44noi+LF;DNLtM-0BjhNV6OUH zR|rhgo)n-P(jdg?Vn(&MW2}#Q1=c?{AM5H81ex-U)RDD!N+S2?>La_{*Dt})oedt( zo!$LyvKS7wG51^3%kA!q)y2)N2Jr-Iy90OXE2GeS`7)+Lz+)iSxw-MH|&NDJj^BsNk>uz?|UA_r#Sbl3zLq?4Ve; zMBxdDI5WuPBd^l`B~BbdH3?L{pm2mWQL~I+={nVyC@}YF%y0z-V-f>5e;ZmBv{_rk zB%AB*f+UGjS5D$>3VB&HGKAh7l{nI+-`t2f7H&trgIFiibkP>a;9_mOmbMm_=GQh> z=2teiXydiHHs4)Zom<^nT-sb&U0kKa$LCVryYd5yp0bcg)ZOiI-Q5m9SW)qlhXs}Y z%1V}s1Kyu%mx}e6zaiMf%M@@?+) z?5VjVHD^;V>4Wzka;=4Xf5ik+G*Kp55d17C?p-}JMGqY{cv!hTQkYx2?6D2ZB^`v- zi3dcrfD*VM08pW3epWZ8@p3bP+U;PD#PN!I>K;$M*T%DW%2>fG;~>~$>8hx~-r#0g z&^&uY3;iu3*J!2?f7(WT{;7=B*1G4R2$~%fe=w=F8KFOa-7I{8(6p4>rj4{?nTFC` zr5{G$j!2g88Gk0`hNh>6#xq0J#E^>)cd4Iqx(oK9Ap}Gx#K*61f9EKtNHqV>i6GnX zJ1VSxJia~c{Py$B&3B$NXnSq*h?0_if2WI{$)XFg0PlNebNz$JQNs21_!)90D#$P52zsAqGS`wBcFqJM zQ0&eM9xui=+(hWFwf^f}YeH9>KjSU?p}|%MGEzG>+Le0gA#eGbxer{!-9*j3w`GG7 zYGc+SGF`xza7JGdA`_V7o6=~+xfcf`ZlOYXY2E?p!PNA+?}$0Ocm_oD6fqjT5QuYV zJS?z^9eVOTw0(b)?N`i0Mjfxo2Lf`229MkH3M;OpiAmOJ)ODE%O{O7id+{Q6VYQe@ zn`W5;iG)9jv@Z0rpDjUP)Fkj=?tgG80(}QDM0#ME`Z<&w4QmgPE|6vRu}%ag3Vnc7 zfwv;dy>UK*vsNZ!GjzV>Gs*Yx?d;j#1JVDd8?J45o z)Q!I(;X=vXRGJx(c^appdP4l}F3&-6%cHcrzit?aJUQV-5jL-OJ1iG9^E-s?L2fxW#Ke0bU0vVRUX+}FcR_wO6{++Gk;u}b!V9U^1nhmL*R z-`b$x&b)mFcuRK{mz{e7m8oq!+}M1fA+#)AnAr z9}jrn|JWe=t+8j-=;_WGlY{MNMDn`_OGXNbniFHvLM6vcfAI*XWc^!-j4$v3N3*t# z8CUjt#%XZVZrwn68t0InaSgrM1a5oNmQQ&rwY(1jM z5;dR#nlfc_UXLiV+JsK4BV^Vh25fqT{$|O_O^d;5R|>*ncJS5KdamsE-cojER;XAD zT!*;Cup77t&}t(%|4-HI*~k<#Ufpm^AWRv2*e3q>Hm0rO%#3$DKb0?%{>{OLnT_r{Hma%N)(i<6H1aBP$^;KMyYmyrnTT35>FNO7Rl+ z_mFVskofSA676=)Ot9C7kL#nyi(?b6l|J0HtF-h|m<(=xKPtVha&iP}$oP(hK)Quum9xLQT}6Z+?(&lsi@zX*j5y33~Zw zSPSpY&%UtC7piND$CNxG_brytknhoI3ykm2+U4TnGZ-$fh^*3KHvLdV)Xf%zZF-qT zNeCDBPUoVS`|Z-|JVpXEw~LFbs|$-0x}SP z%BD!RZ?18)9z0P`0cnxVqB*(U*6eSb9m?+Y?e5jx?HBB`;Cls*Pv_Fe`EQh4U3!kA zv+aGv`QZ$(J*kek&0(DrU}YE@Eqq_gI%lox+x}lQ~;a z^Te@_TcB_=8n?K|z1pwot|6h8-fEJAKa<$gWTk8lO8dzaORiLJ@~es#=obIW+^D;7 zoMJvt!M&;xhO+bGeVrNZ2*|qJabq&OrJH9=>q#4y!=!I&%L&^Xj;7x;} z2O3I6$1UFIkF=60jH$1nj`&$aMAFJd0f9i9XWvM&DCK9p06SuWp%zPmGz(;zo?OW~ z_r;O+dukjuq_;FAlQvf!_zuqc_^`dc+b^Eoo!khY@CtUb=$`NxYbenCn8&Xw-0|~? zu0U?)7P^$4J#Lzv;q9sgnahBb@7_W(Onz!3UCEnD)MkTGsEsLUS90X=jrp2cOK4)f znu93eE#5pI`tWs6E~CmdoB-&+)D&R>_KfOT3$~lE*#?;cWA;4%se9?4DHS%o z>#kAFM1|9o2y1-w&fL^cBfVFmoyeo})!DTl$iMUtx3v&pBQgMTd_I${L~SQU>#8KH z68fYp>9K*`z${gI)5n7PFy4+4lDZLTH%~r)pD9YWwPRcTQ%|mSE%Z*)S~s*txNf7H zPK#F`a(1s`e$Nh}i=#V+{GEG{{E7gjad9!W3*LON*)KrI?W+tO8?+X1^)dqjxk>-PvLuGw1qv zA_7t!e4tUHzkP1qDq`XKO9-Rzz_UydwX+}9)SL}$)%z2!Z7y2uhB1MtY6^tj)CdL2><*6wo26jJ9E5$ zxXJYOca=va%zU>EAISa?>n0+vG>~fyQ@!&%iQnnO;yOPejm*<%pzP9;4+Nlq3f|tI+!Z4=OFKQiEq+r%w8O^plRIdt z7&zE{2o${*A9hjQV1;seoHPS-!#O^Hx2;l&6P%&kEH(I&dRFw{i0TLxqEisQy|qc5 z*E_e%^!Ac=*#DsN@pD30R|vRJ?4tju+lbe{-wlnHVOaqqH6Y}qcqsEGAZ&Ic#6IHSp3gMJ<74+ZWn9ab0=@^bc;aB=6 zZl;=PR=U@lK-H}CLT&7~y_EDOAv3;?n+zHki!{Y48Mn~n9GK5)<45x5C!d1{&FZIi zpvssSpdaG`$WJ}OI2p?#&gg*DA2_`xWp|_2=>8)O0`KncC`~>-xxLP&hWtBI>Hp>CcOxPNdtipV@|e0Uo;eV;raBi;!bcUQw&dWgiv9@KV#}oArl1J1vn7 zmICXnEKfMsE~y~jdUEV0w-CdpKTu|RPBYekpv25WSkm^g=_oG3O0(M0nnm)n$Nc8~ zu0Iemz~||h#28{1D4#c@f5O$L+>Gdn>u#pv4Oi^N%HGam3ZbO%R$Ic|XQ`LYp{F2w z-9K-4t%LBQ0h2Oxg6^-=5h=x!0(TBXljf06xkn}T+1#7(s?MhujSVept7YQ>I)k@|9 z#7DJM1w6)E2g2W$?OMLO$%8VsyLhQIb6g|_z4!oP%Z`{8hf(JTg<%LLmQu)&KGF37*UnzTN_ z4TC&bX`3?DN*esNTA#_5xu2+UA2)8gfTXb;qUJ??V*x~B3H8;34Zxu-;`7A&t5J-0 zd(iO0Q41l3SB+#1ghf!>N7Z2|iAXTPTAapNj_#6`O=zu}riBH+zM9ZoE+~Igm>aRjS4;^1+vzM3U|sy5 z0%u>4i6~LaS9jl80M3M5k(1FV9_9LIWO+X=CL&@<6UV{#d+KJRYnX^Y8r7*M=A3VN zxrAS5QREm&F+*BVem^My1w+0aiU3H)t$7hbxxD$`+)h8r9NvUI!~#*|1yVw;3Ilsl zA|$p^zz!HIyj!WMyNiN}h;+T+WTeu>jl!Tq`@1R9po5GH*+#?xUrqI4<()LkGbFks znZBU}_?j+m1N~I>NfELu-QVfDJA%BE9MN4J488F7kw9seA&8L7rKl0fIImV1aK8-fcM zLe?^zU!_YAWP?}>>S?2vHp7Jl{^Pg>jsp=g1cWtQ;5ZidaFOE{IgS$Q;UdTJ-iExk zLeIt@G>R-=*kWh3?KFX^*kUKD zYc`+l)V7`5v2&GL=lAT~j-A`Fb5$76b~{%DQGB*@mHOk>?A&=fSM}Fyv2$hF^4ZRn zwCA&(D^eRi+qsMtpJiL|*UlA`kI#0l+W7I=&J~u1&vq`O$7cyg{@S^Wp+4KWjH5o= zxgs`>^Vj87Nv%HNe`%h7)j}c%pB9p;7D#We4c?H@3M44vaf!hq^P~4jgyW^4RBE*Z zdy7zg9?KjlvC!L+i*`u+U3xyo8^N&OP_^sfK#eUn z->p$~x3t<`t=Q(?-dz5gZ&2C z#&T87g`=5J)6Br1b$jw-4Wt_Lb+Ijn!nP2VT@0_9<-k7Ei(?4p0sCYFC^l)?!<~&H z|I&asez3D967F#)3lO7H4duq5e7`}5o2NsX zhJL!b2XyuW;V(87wk<6O)8X?J@1{+a6(V@&H!{&BzNWpKe3Cql@WZ&nMwx(cH~x4N z-OU*FC9Te_xTnVSHCUjzl5RTXxM6?ZSJ97kekuAfcj0_N;YT^lr+`9nm73NUA9UOj zk8>75FhfG@`bZS^C7h5UNFU4o938AtK;FHwKtJ`-J}E6i4EGC6;(d|_1RHnPp|ssG z)Rt?8<59x2Nk*&zqc_?eQosV|(T1aS&^nOo&>}*x*C*lQ89;GzYmav~s4A4(`_VbX zl%#t^8gG4etvu5%_e%AUcFE#9QVm=*tp+oKRviapG=$PfJp|caMepS32=UAkD5>+spX=$F%1y%SaJzUdN5 zsuB>mzBsG?G2#Qz34m^%tyk`ThRPvyA5mopn+>1~;#dL}vzaTsq#?(;t;V3AgT~dT!08PghL-zk zFT0x~)Hm>Ue>>FT*slb=S>cZ{gpFwHtyneA=87>6pzIqN zxC@HWT5(d2w>#n(;;;VXEJN}2IQU-e>!Fr3e?5H7WAu z9-rK)t*;dyVDEHa6g@C@}C6 zP^Q+IaH}+*j7jXoJOLd!g%@+B14~@q0B$9b2TP^I6thYQHUf_J3EqROg^yo~w!W9A zlMF9s$N?=~vrLG8Pb^)(BQq}340TCW>Ef!tn2zyTA009)mBd9{UezrGfiI>bDk{PL z_FRhgWBIS-ohkf`Q6baRk|D=l9c87p14dRx8W0tQAzNpJp zbg@Fj=9{xhBPa-bxbt?05EL%mzmmCazF4d#sci~&+SBJCuf#uxhX9(I2+TWphGEh< zjL_chM70*$oHaoj`Y_ob`G!2ILdSZ7D*UaDsZ8#*NH@4P!@p3^jgv)xQ)`0~g|%{i z?KX&KB)(a;3{3aEB5_3KR4Z|tUX)gu`nfbm!#`){S=e0m=->P2WEPsTWqosF2iDUo zw~zF@s!Jw_qdd$(7)KU=W#zR&SyvaQEW-E*cKl=Vt!+hXzg;lLUGB;H!{J}O&bSSmSj&qtE*z8tl|>P+Z&$LuyAPrqWdv=jyG`oBC_)z_ z&Q5Saq#GPd)^_i`Dz#hA477_|NZ8u$WxKaS|pdXNG@xMToy#R!zFTAOY?NcgmyOwb}=Ik9K|VOJvYCi zjUQ)B+_GAP6*E~=1f;R9rU;0fM3e2@WzfUAIfL-VcrA)9ah;WOLpK&`kPn%fd6LkZd_eGo&9| zTFPXv^8v-emsvzIPYCDCO*XhNpEC`dD!|)w#3|yYs__HJ=^Gh827gK~Eyc{9##L>X z%O-)l@dqPE*dyY;_$vIKTJMADKLO2zV193SdVFJf>{CPG`Z8dX*5DN4O&T z0j28cu8r`O+O$;V7GG(59+H&i9GKR77-ziC~i zg6r@D|qPtURI ztHl!mHekFnEW2+;_>xA$Hx;Q1$wj=QOS5}$wHASYp*1aT6=NdPC| zn*?tXx=G+BVVeYPGGvqbxAIAc3f43fs%a=tlVO^Mf;1VTX(&L`PQ8Y=QP z6qacyD3c+Xh5|Afj%lcjj-i-_0x=DRVKNBQPzWXiFbU(uC!L{WyMdR4^Wv6uhLB5w zdhthR2)1OXCBeP;q%#CrGQ^SrmW27@tIiNw$-qkBzWfwW<}5I^rcy3p+DZ42Sx7S_ zt)r!7#8;>!)CI&;ZXpCmQ%>mMr?cBjgY_DD-kq-p?;gA++|q7fFA|U^p+pvCEI%f} zOFZJqYmy;&cujK9*RDysZnh?ayP?c4V%oW9xT%UI&F4r@GZNHOWYS1rE7pcVx1n{# z%Z}-tz}qsh1$!IGNEld+Ft%xe(cfKP>kBsz1|i#{axd$9%AQ~S3Q3^;v&ai5ukUJ4g~*Kg3f&F5U0K!h0i~FAwQX`^G0PkZ zLNNkbg}13ie@&sne4f8>Dh5KtdJWUA>r126H?CjeI}BbtrGL|5Y;hLg;tnMy0>Jp)%5$wI|kwVsHrI3r$FC>qB zKicx__WCldwu&`axwpz*cvOR}NZJCatjyAHZCX zCBn`M@l5{N&FEoW0C;68Nl~6Ybe;g@U6YHvJ#RGflIFBLcZC*EenjEV$b z8%qQv87}vH&KCJqZ!S6v@x`$;DtVkuYr`ELRx8_x4Dti*(WfnNnV+lNV|p(!#$}~+ zd5kgbNsA8+wCdI#)+?;Imf$2D2ytn!b5`%J6@3PzsHpv2N-R;tzin{|h<%_9q&yiw zYG_-G%QJj*Ua5iDH-0Y^iHYX~8Ke_c${$Hix)m~L9)30V)7BRJBj0_u((>P)x1b}rKBI-=-St^h(Seq$w6u!2JXA-79G-$F%r@dh1&~)LAwjL-((l=mr)HXQA4+d zLF4-F^YC_zG(Gr{i&Oo`MRnPY^Melpd~{@rP56*Mrr9rl4tH1M>k@KG#y{q#OSJ4D{&3GZz>WzbJIw0ya9p?7-00>0-kLsL= zbj~8&LRdvdhu?0%VR=I5 zNPwjm!@C)To=<4KQeAKVG>)`woJ!+J8YA9CoDw7y>ZgP#j@;ocV}7(N z>IOvD_@Wi(iFjbdU@or)P(lfr4yq#lmN}7&PY&#;$mc;PQU}E!d|Y71UAN*y%A9E) zw?5*H$&LH2X!7x2 z8k6pSeI({zTE$oVfA*TabL@j4RS&ruWei6vKv6d#eAv{a)UT%7`??3Aksu!vMz#cYaDP)`XSG695Q)VCXsb26qB zY&5O-Vs|f5Z3SfOLBOpZh7ap7OU4#bp+aPMd2{#0^_MzO4=J1yv0$0&{ty4qVTGe-%%@Z$Ebj?;OKiaHO#!1VDk7hs+EHIF%x2H`gNoPK#YTloeg`6X7qyRd3S1_yoX$QtbP%+h#$xVAq=4LPQxrmCn%D1on#onIwr zzwN<6Y)61S&V~SV1hrFRNbez5f^ITWI&<~(RyLCsVdJ1KgQ!SsTDw^GAVWhlY#Sak zGV_!AdE4FJ>EfdAZWPb%ufD&6A&x!^DxEr7GEx^NWt?cy-UTaFZ+=qu3otgbclm09 z*OIf^>{QoAv%@Lz_7whc;9EuCUZfs$dQRFMbl(?1$U(OE-@aQ~hz$3v zE0=enlqWRWNztbOGO`$67ykSIo%Zr928Tz8(f>19&8hk#i0J837{@-#@kn#upPxFl zZ66v$n(0_W%-Po6wrZ$0_gQ&V1ykwg+C%oJq!bnTeh*wvdkM+&l6B+QDg789% z1K)mcwd?tOAF~x{+xpEIc7A!eI91wwTk~?-)iBCkD~r+H-4{cWU7UYB`RS+9IQhjR zdNV4{jxR<-4#ZhY0)=T!V;P*3OzyTs&bcq=&h>0B+kn%(U%qfRCUBH5e zF6A~E3iK&Az+fa3)Om7khYGe-7@%O_7y{nxXfmo#0&xkd^H8Wy$3$uHs7Rl?Y8L2I z6}-yEiCK<$ODSDVr^gWetN2V0@i!j^WN*Q)xYj5)pTCSC+YVJ0o^M^H+?LT3>rP%M18BVG zYwRQ+N>7d;9wHvg#7MC~S1PdL1{E*L(toN}ii@bqO34kBP>z%~9fdVFmU?ku)r6We zc61ti`w@1wf&qQoiQHy~7Ia9-02t+F=8BQy>y zv269&mOm>rN^EYlbbJG=-YH$gPcGBU^{ZeiTNh(qw?2g79Y;B8W>}{Z>r8EQ*tDiz z;O%d1(x~FC%D}4ZNN#3OR|+PPY6}}3YfEy_BYL#fS5*O>16+%XaL*{U2o+1M1zc3e z;Y&zLoP+D50rn50A4ez0S7#c5w~J_q(Oqrbb-PW@-J=a|9hl4H3k{;LX(|2V@ddog zJjwtNF|!J)4iuYwWj3iofl#yax~Jcy`WXA0w0C`g?B6cWKMp^gUp1&1dEFIwX1~EB zZ|;NDT{|LMPP-!u(G#Ih@%g;I$V4W&`AN~bJjt!9+0E&JypN$;zH_Ji) z^8Vj1jQ0OF?j=BO5(4m5*P4Uzm72biJJz8NvkKO61RC@ljfcmM8W_@<-63O!5J)^M zxi+{y2XEA00|>6ws}A1ms)LX9mB+|Um-cfw29)=kw=L^}(mFl9J8oT^kFap#FUWmR zvD9s|=?*IFs6vOez=LErQ@!xsjD5Q^_H85b^BScYY?rZ)ss0#%{Inz^q_~ENqL+1M zs8m<-YJ_9QM^A@1P5KZ&i2%1+#x7v#dWM(V)CnOgUU&D6(#}~-F>)!^kcRac4}}_I zbsEtF;_k++vbbkOweXRbWCcJ6#u@rzl}a}_J_%Q}m%$@m-(DVHl;?LtdNp3(_Ryk( zQTK+zkhd3&u2nT-{KO}Bvb18(1d9{=bx0_jUr~e?d?v&r7a;C|+2ktETvZydK)B01 z{>)~i|DnA2aK}Ljx+tmxs1~0W;nT~PL$(<=W4ga_`MC7ADIduxfaRHFjs9ORH)mH# zJw>W!s?P#VVEkjQAWllZr^cQOq^4-{;PPB%mvj@COgpEZw5rxYHC_^qW+jc17)(Kv zp9%HpsA>#@!=OGYP%vi8Qtqn@C=j`r+?=L<5=!0zfgS513&akYOO~yL&|0F$@vCKRWcF+k}F2n|@cgP5?!dDk*wC zz9@2^R|y(Ip;*8fu+huAPC2d70(-_{PQJ}ToIPpWOqf@mt+JONiJqFP=QXT8oZ0(Z z1VOiY z?YYtC<6GdvD2LwLnN8b19*>5h1N%bRI6WU>Y7>oiYH?dN{+qP2?-MMcAY)~2HLDQv z^StvlJm2)@`h`}7T{xM*xtGLf_4>VokoxQIGPA~UA8~Rx^l(jWj6#wrd1N6;++Jx) ztH1+4BtDwrM3&BBpRKM+{O0!f)8#SrjrvE--4lM;+>gWK?_Hz4RXUTpPXI;YymNxX z3V#>=cj>8sC7qTVe+-uS?*U>utJqgzPI078K~KLuDx!Q&6A+|w6#hDb zy5n;>&6kDF-}Zd@dwKt9twtXWV$@m}Z6(u4rl#m*L>f9>!Al}?)g9Fp)JP)jQs=Og z##Uk|Ph)4sE!-r3ldk_X)Ak{e0kKqUi1HBGRFgM;3ccZ!44HdSWgyjc$JdXguUnx7&tf|_0erq#I3FKx2lBhC|Cb#f$m3ZlS|~yD z_|z*_@&U&vobP910F%1{U^6!?GOs*z>Y+AH4pNbxlkVlygeQslY5w%r%T8S^TW#)^ zA1^w2HGO)8Mh`BAu9n2MM+VN@ZUrCZy`>o+NKFW5$-4lsJA*&D3wN zAWm!G*6_Y(UPbhHJh1$-i6ln;1LN6p9jl9| z>*9OzrUU|`w)g6i^hP{bbBEmjGNV17H>!*z_M!32mO|_+^r8P~&Ox8O`DM7tmsS=R zmX{Y-=9V+3JiS+AD6g>}(ZArwa{VjL_W0h%fD@r>2lbuKe>PV`#LVkN!-@L7J=}xB zdU$ekL3@zHJ=4e*nCf?rx_zYG2AK1%1#N6|0JC&ssdp5|5Qh=Dnsq?q@|-YqrTvsP zRohQ#jaia0j(OYyX^{~r=Ui`y-#sO7;kuL5#7n1?MmTmu^pC$4Sb#zH;xT73vTY)qc6PCoB={3YX`f$WRQ+8xbx59241%qf%0vCVJVPhVvOr zw{C0w0(euyYR>W+DdA4N{_*YY@s}*qmHe)>*xd=5j7@jARr$wP=XOg&_}#(TkL#e{ z1#q&lyZ50KGeXmXz0aY*IRAmCd|B9cxAj*PDBj$Eyf{C3*@$QaPoO?V-YC3Oyo02V zYB&H~T2Vw5<<$^lUlv3<)jh8wQ}t~(XZiPB(ZK)&0*iNx@FDXL?%@wdYx{&8GZ8C2 zLY>u<4RCzqhYj$rMmaLSblqTQk~Dy2&BD|IV*voktnFkL`M^7&@P`8LcF3fqvX6A# z=a)8{#M3LO|0xPL=g&lGy8y4BWe`4sXjHjAcH$0}EA4PYxK|GYW^d2~N(6JyI#?^@ zd`2G=l6I>Qi8}^YS3B%}VK3OBh6e6hV)+dvw9CHh7fmv{D3aG{R_XrRD=w%UErd8- zeX?b$r`0xee6}d7*%^0vT-kWZBtB<&TK>A(i+1O`suC8bbO^+!u6~Xplg{GW>sDsNL>=~!)vM5O-Fxzahb|=#2_8FSrr=Sh;IWLK zA*vLcob;O6n&UkDkrPN)VxB?&p`6q7a1;0>pjmv~NapET=nZ&NA){GSGS+F+wfJUua(;G>VIuH5^)&ax zm^rhxfG60a$Xh;1qnC0=XuWBxn#+3{<|5!wutNgp@0&GU0Sc&W&jt9m9$CMyx3 zK1d-8?g-!XJajR&wxxln;&ga&@x$@Ot0dZl$J&E(3Q8Foc*wKTWKtz~-THk*=6NNq z?aavYBFURij}%~L+N3*8YVv0S7-&K71X!H^W`hcf4bpKM5__rR%*5?IU;)e|$TLMi zS?IIjZfh-FKZxFs^-(T+`SHiy*laaVTZCh>F^e}fojEBBlXAI!2^B!QfwNJ*deQ#Q zA(-}e-<9+MgXJXm8QpKLd`+?YES30k)QMd;<<05;q8H&ATQF(XpeY6TW)u6S-MZ<7 z^~$8LKUBvSS6E6YaSm5c>bKnwV}(=h`6CXj@-CKZq9rJs@nA{ioLV1_w8ms^Cx!x` z_M3>nnNK1*hj{tuACW$oINVpkWv;)Om#{29vCa+hyocQs9Te{`Ez23!D|V=^J7K-@ z4t2vSkD4^K{hpea0Uw5c9mG)G82oC8Z~uL_fnq6WE?G| z$(_pl_7u?Ew6fJ-bbB!HTn97NIe5h{h27g!!^Ft%6!kNqo4e!l3)e-PaL(Cv=|e07 z_#?uJ;nHKaqjODaQ1(x>sO)XmEx)I^CU&`OIe(Q!SS#>cneAL_6#*(6k$J|c~N(yJsQSlr)urY>=*W~QkM6}%walOw^ z?nxC{@mYfO9od-0w0dMG4dgTJrH!SCwb;4rpqbMW1oTlZHdR35Y( zx?fg-HFQtP;_CS0#jrd-D^FfE<5nFfqJ{Ij(aV?TCqoJu?p_sXKdpH&*oWi{E?)Ux z`0nLPe6;)F^Z21v=tudgtA%0oanBVM!pi19JEph}8acyw4n~W&BpXguOE;o&ZahbN zuz#?-l}|n!>IJ-qTr|7tF`}xua5tl@{bU{mbxCj(F;LYjMe{IdE;7jq-k|qC?z=Cz%eo$Rq_x28f@^7;r+Q+m{> zgMxKTuGsXjMx9HIE%i;LNi%vxrKRBuE0p9HE9>TyYCrSLNi;d*z{M@}Goi7Gic~rI z-qzDnbZT=s5z=hV3^qC8hH!ZI>Gt{_8WVM=g-&#B@J3vs{Nr26kW}4#jp)X>G961%F_mx^}}eHIZ@rbbb5fQCB82 zmaZJfJT8T4N_Ji`plm5rRcyR~0}<9Prgla}%WC4QEvM1v>)X2mQSI+vjEA9}p#=)d zo>ihl(a~=Fcrv;@`Fz_r>UG~i_5n*$w^(XW2uME679TEk8i#mSU^D6^(L9nU5tDO6 zRtb?C4;D<(eZT|)$DoV6{E=9SMXOsk$G69MA*cUI)f@aLJ%jO+v#DKst!-wpT_oLi z6a?`F#VyOLz}(W2{^uxzm>MECz%p{HFf5TLdyg09Lm!TsT z$_C4u3iveMeEik8rOos3UwR;uHB{10iF+*6QSfvmm?xlB+mga>dwYd}k9KzHl=7wr z^THagM?l};%;IEydybPc1EcL+Svz-Trygu8R%GdGP&Q&Koe#!lwohvRZw%EC9 zhsS5mje|0~f2{e#Y7z1Npx1E94b*^Zl*HthUSV1v$VE3?7-9D9ode6z$Q3D`(b453 z5D0nI+Ex{CI~pS%u&vlM#1>Pt1ns%HKnMZd`bY>NU_URlYP161zo)@14b|ys(6yRM z0t4Nxrg;$7JfsDR==lEPE=E?unXaP^F;L$)%s4y-fUnoO&7xUoWD9p0YcLW9SEu)T z+b~6K(;y-)7E+G=7%hz5i!u``9`v1 zX%hNHk2Gv{T5~!*j0iu5jojo^+T%?*f!xIph&wtE%Pm%Axh5s(lfBJD16a8*5fGMB zqCIDpi&Ou@!7k}QY&Ayr4~O0T4-J{ge%A22(lDlOSEuK$Rs#x11EWz1R@T;TpAINC zgWMxjp?&59EU#a|k?!yk!Xq`P&&+s<4~ z7_!|NWASiDO7+AC^C#y;+HO!QHlLr_^Td|}LxjaNDV9cpye8bm3yYbf_EI%L(C)Bu z%^0@Y=bgbExh?0sSki#@4&)K8hPU1BMn|!k`H=fbh+Cg4Cb8gHylNMyx_AoiC76HN z{llS}d%ET@;~hNJ4L!E-ocoW0+}D%?Xd&}&bN>kkSOV(=g&NVPk%*nWYwXsdF zLs%V%B=oiqw+SnNP#>Krwv6YafAl7Rf!e0>qu{g!#7zHYsUpyu&(#VTGir4HNpSWU z*PwrnPOe0o0oSH_g{TRPl9qRGe(FKy)E+?dV}4SmATH+_8LV!Sq!EUFQ{mi%3f+dV=!UBd|HEZqqCG56_GwG)~Cq2 zj1MQ+R{Ro=1>65TZH{N+Whb50);sbUi6tc@hJWt$&)ePpc_;BzUX$D?uW!qf+o5V1 zLc}TwQi{N*)%R#us_((=;H$aj?tV1`6dq7v8rTVpAY!vLWOCk^qE2!fWbk6LE9Pho z6f=uWtGhC|+62}nuJ^gd7TENyK8Ep8rti*%S3fv)_<~?(9KIQr0Epsf2$V-_4iZ{4 zdRt)eA_49B+12na^B&`ZhfQW;3A!1%y3l~NT99_A(0l8Y6pc=9TR$Aze|kYJ`iGM0 zdS0BL70p{X3P%uMQCsrSA4*QZ^_b$EbLE|+mLrNO!*W8>vac|Z-6W!oG!4eXv=Cx z|E1U*Qlo-+y1TqF=#Ouo{VHs?R$IUNj%5WT-8a(W*y5l5xwwM4*a3Rl^Q3T3u5Z4S zg0+vjdnXSdd(Z+7*%KZJ=;yxAcZS?L4irL2adidSHV=J$^R}uQ_+P_IsqPNlQrau2 zbP)Pwa`gHWQ2&+)v9O;LC3^Zlx&_Ec{+F1x@?A9gedKL=ciU@ ztL4lT=f||2f;Ci8O>@cSv+{cLpeI0w+lD$k&%@sJ2YSRIM>d#NC&Qb&k*pKCr(O=P z?p_)3DLimLX^*Nd0-Pvw4P<15)~G>C?kWCCjm+-h>o+hoZm(~;cCy}`P5tTupjRg% zq+Re{9bL7sEv*KuDgSo-DYdD)IKKRNdi=^=BD!tle#Q9L#wD^eG#E`B^0$=o+f;v1e{=pCr*30BcN1egASEKsw@*Gri{tWr$ubT<5h^*-O!6ZN+6n)_B z49yc=Tvk?~e?~1;6|-@qx-(!1Ak6tPQC+Jz&gxu2G=^Nvdx#y1raq{(_jlhFfZ4F^ z#(2kQhp zMVwIb4NC>YGbkCgx?QTIVO0K83swXR-S|D0>TNHnI5ZsWlfA`viav76b7h0wAx)hP z=QDAjH~WSACwZ&$81s0is}?T(A-xz2%F%W#?qzwpq{7vAny!JH7~xrI~h2Q3su50?6qhzjl0e`rFSp zH>PynZJ}m%HYxd07LfRwYi`0zQvv`*(gU1Z64f9dPjtyj7M8#=5XUi~pc9FhP#Zx@ zfeY~QXz&2)xdxrsAtJA-KB2 z@KR>}g27aNFq7pp{u6bUBlk>8sn(qMYH!G0HB(q|soF|!6OF4KAMHr@V#gBhBfo1# zSD3-fKs|FsLTMAN^P<`gYF(5;s7Or`n8pq2L4TTyi{p|Ek`lNYc#*!2^zZ`v)YZm{NgkN5wT|`T2NM{&0SKcMqRC z;U9}*L926+P28{3vbbh3m>Q=eE)Ty=6VClzBD?#C=vx=I)2+!e`@`n`u81U<&?sI4 zP6>7ZDzUMn;`XgSZ0=Ae6@pu!)fG)Ry)OQuxExXyrM-ox`4>r8g}>YpzX$&K<7YIG zI`&E=irK;(f7F_$e_1HEw2`A5LbsTVCcm)^a?t zrzWl8`9W|jZ>;2>;xLb!y}UcW9G+g^00ay&V7kQU%#W4h1aN4`kMs6pibW-mBd03=SJLA8f^iB?+tH=P;q`z{K z-ng`o&&jzu7~EVV?iz~hh~+N*)C}=S5-|=-ytOH^eJlzdMeXYG1;E+!yU&;H_UGa8 zX{p)(ve4)L_kCfqnxI)L9gSe|?A`V4>5IXS>RWVLte<~+(Y-o7Kc-)Jyot&>ZPySx zNL7v>FJvKkpXLR#a(s^|aaS;B4t(03y!)q>x!L6=e(sUP0a_Oj4{1whC{*Gs zsm09wipEW6N)ZnL)`Ty{v=QztN8!rb?{q-L=T2Q%`}1bLR3oHSVdrMTQC%2A*)b@AHV@)}w@S#MSjhaW$^@w_`^w%nXwN9fT@Mmc4Z!+r zy^3>QSboH(Yknp(1T1MDvv_+b5Z#+~#k-27g=n(VFiIKEKOFWp-jY-xeg?r%?QJ@$ z4`HSKoy0+^+^jof7Tt#-tc~zvy!r;8Yj==RqRcLP>2SC~O4x|M$6@8_auG>jNqL&h z6D*pdloJMuG4l480ZcMokOQ5|Og{xkEX!tC!SxR%;hxu-=!~c3h`v;zla4D~US z=@&9Kn`6=$?%djd?BZ&pD}SMgmIL?hf0lZ;X}uD(EB!ErH(%|SGlj6R+dtf<0&^Bz?%FdV8?(lv{2ds9trtu z35yh;FJ7fUd=`e^bm+qC%I zWM{K$zt>e0U!D7rJnB9 z!FNqw{2YFJN)W`MjzxGiH?K0i;+56ek=1CCEwo|Q4f;AeKTH;WbE5B>GJUWNf9zKRo9Se<;^|i$9WuBa>9zmSlXKka#bw;N6Bs&G?(s&ZD zBbIA+Y-RO7ldK&0nwmy7<+v=)m%d&wu=N@h^P*r=t1m<6nbd zV<)^4#YyH{Xh1A0Q}cjsJ9LJ3*Ox?P&#wUDD3e?nXQ}*$ zMNI{w!WyE+2}BlzlkzE;ytVl`GLp1+-J;uWd~0zWC)p<4Fyg)&iRtG0{_gHU)h5Jf zrAO@;n{vEj&2Ny1%iLvesZd;p=TmDTX;%V9V>w&FkJ6!vl)h1-6@b%N5~`TKD?N33 ze~;kgYEy(94QuyMikk{fN8Ww_2g;PFmJCyx3KRCL8}P}#1vcO@RTyHkIqZAN51Fql zyws$l%~l*m{_4*o5!|X9i!O6YJfEI_BD*1A{OXgoi+^&9f)VrW^u4;J(0>uLmCXHw!{y^ITK)37 z((F)hV9|Mt(cF)d*?W6aljmX^e<*jZW8wwV!_G*ZyQ_vcRIJcXm?qDaXObdbS`Wgj ze`46)DsLZp6gw#X;G>?!Uw7hRa^HoNaIHXSEBv0JBgCeOI0%K>JG+WTDQ4;-QZL$h zi{RuLtxBlm`Yqd)YWd|Etx^afdGp>PqOOF&bra3ll*3Z>SX;$NRf$%&T7B6vBSyqe z{D!W8$oxoxfCI{xN#OWQqboQYLB%$@>9jVINA$|o0w)xb9Z6ceJjbnhRrpg3LgY!M z{e)Bc8)%C{NT|Pqrl=S3H!RObesM#tz<&iiA#cQPloAnC%4<-I#9`NVNT`QTM2U%h zt+~KHT+neQL@fZ+VZs7&f{ui|J6!Y<3C*f?YcWWShw`Qz4R6YiUrMWPX%GPBw{S|S zy7!;SOur}+AeBTzm$rLr1S&r8zvfX);bwct{CAs2t#&J&7s?K-Q``Ru9(LsFR6a6Q ztEyO4wW?OCYL%)(6{=dD>QH5>R;4;rrI6LA4ppLR6{ZNKg&7O2=^tS+;Tw3{NfnP|aL~0X0N7ue+nnHe#2~DEh9Zb4~Ltc94-@atWpIT-6 z*a`mlc!3LTc-}Z#+t^kR5l;IzT?K>=*9i$FTpR);E_`)dthyey@WVGHjV#!0ZI_htZR-x#M8#iwmb!(CCwc<&R*z4CA5z zwfn7$B+_NhidQ0A9`Wtb52pIA?X51>Im03_V>sM>FpxB821Qgwn%~={c`E2V3`CDFWO!TxU3D;nfhA{MQRAQ_ zo_P0#(ql9hJXf@@NCW50bILku%=0;Mz*&t4B_SeUI9e)|S`}Pm9pe5sFjLsZ49W)U zL!bH@d)dwO@i#?>9n3Ou(J&_fZz*#c=S23sv0A>SD(rfc7pKIPJE_Dw%LPeYw;cS&asL(u7?H+q)*D-ZkKDpVYFl-25=^Dt{+3^K+d7C@%8>=(1 z!(XX@B3rTUW-4hXw-I*A=ps%XVWM6SjIbRsYlIj42)o~K=*~#-Q1RLDwNrj3-jq2( z3$;~?qF$V+S{ysE^6YjkvRlzD4ABfr{gg0IkWjK08Y436P?%Hhq{MK5amfeh_g?Qr zFzuj-KWdXyjhlBiy-XWBdVP(woh;-*5T0YZJygRE$Y#FXwzaW3X~kQQKlzYH+jhOK z(mhsFrgnK96fgNWKhRw_EY;-HN(mwXDK{3f8LR1cHfqyFJn*-HHmUEA1(w4*WqX*OWW@3>>j}-)bVpLV8v=m?H4|R zV@M@6n{x!C&Jt_O`#P59Xgf>x$#ZcxMV?&BcQQgOmCa7JJUM7|^@&YU!q%qnu< z3k{HT8ym9O3S<#@xsd&J>xe;MZVY;~Q|oS9U52f^*zYFZf%3l{a>AL2@CG*(mWGe4 zasRa|;R|pL_?nsXywiA%DK2ZTaZ)*{R) zz*_)!Fx|Sb8W5DHPC{Jp*oUB+QqeRpS3<&u;iKQtoDwd28_D{hk5e|M{qrk>Jf%Ub zcBKZfmRv?RDTIPa(lI6>Zt%#g)buss8r$<}R$?V@7}3LA=_ZT#`03bTMIR6Z%kj`< zW#*`F${%^?-mYDGd{dg4Nir?|0wk|hZm9n$a)F#MfF;le1e3VhqOQ@>oizQAFRT!q zLr7jUPR*Jo*vr4VW~C#jmKeZ~;|GLuAwSp((| zyZptCGx~rhG`;|fyk|itQ$%xWK=33zH%9>D!FZ<*ic%)crWvu@w!3bo=P;62iJxEH zmnT2{)LFnm^92MR!;5z-NN;b{T`V1J7X#CzB|;tqH)_%9`FD1}nu~<}-P-;Rk%j?m z1md&PGBJuIvROocYi+wIqT|EFEzn|;l=R3zkK=&Mj)#@fb%FIAxf(H7k(4p+S6{vS z1TR`UP>eL{E$Lq6i{KTe<1E4y89m0BWWZ_Tv62YdXwrs7JjLNlgSy?F4{XqHH}H|M zs#x_R2+x2&dJ1zrRaR8%lM;~}pQ=!_JZ;8EJ3KUDbW9xLN6i;^)oi+iM=rNrq=v$L z(AdFhVM&jDFE>`L*bVZst=*=gAX@dHb_X&GsUXo7Wn%>7f>3(xedTR+pDFxbDWHFh_kIB#j zkc=66O4&}DL~dI~iX<{5ZK2+PO@+4c28{M7DS>3w&rJs+&|o!;H8E~jW?+InQ8 za(~WvPQX%8LR%jRW0yqvt;1fDvG2?Xvj8nhaTaB@cDnBn_nfYhn+<{r&0%X;UJ!#W zn!SPB^LA(V-45Fe+d-h8nEbcfs#hVUYQqqHr)Y07(RlP>cm^$OX0o_FiY1?<-P@7C02dYAW5 zJfkru3M}~8tI=)2WyxB#&v>~I5~r8z#!ohq=Y$xykXXS`?rIpnGt*15###TtU7fqllTFYL5ef8^@fFc`XEn4Q_i0UNT;9x8Db9 zj*g{BSncxyl6ovQl|ok&uY-)Y(QDVpIqga=HMSIAouo6fpd%s}a?rTESTugq!5ae9 zJ~TqQOgS26OW;rNHWa4z&8X2Gh=X}vMSAO$vEf<35HK%+84izh3phO>9EqJGuU)FB z+&aG<-L=X-{!gnsvaS=EH{#y>YJA6Wg@he7f!tN3$`n!-iRjg*DtW;e9vey39c%|V0n^Gfx=}f0!gqR1Mj#>DqZxX<=QvJnLP1q`#^ESdiIO>HHdc9G*{fXQ zxyiQZoZ@Oup&H5c2g?txn+iV@C#z=H$}CdC_?fq@o?z)g-A`Ad25uwlf|;EBa9|b8 zqK44gR`%6@B=xlnZH}Y$AS|S?m#a=y*h_(;u`P{$c>U4bSQ;Ay3NfB;%_4Kp-wzKpe8NQrzg6aG)#DS1=~UKz8|%O{dKeDf<_yR zCYiekxCF6|_>X#2bl$Z~iAX3(tgw_63!ST|5dU&JUo$mXZNJRibQflF#-+>}b-6QM zVu@Dm32tp76=yqd|{=n1_BHcQ}W zqT?H8{%r1U6F3onq;S$6T&=I%a*!MiaO3Z{Ln$dnovhAH*YM0q2sPQVm5{zR98IS< zK{JI@oPsv1P9uaAgC=tqlAnSFiN;6!J>qU8p2#q z=^?=Pzd;h(A-H8fqxK90LCc#krQ!?W16DR1=N5?v8?bw1Sq6#Q_$^66dkYqg0fRX; z8nc=aidQC0MMG5fu4Xlm@fIt`%)UaZUChW9+S7SI+f}}(y0rkk<^zdv7|tKa^l(IF zE#Uu9L0IJI@+gQ_WHi^>)39;|sf-|6A#I!6^|~gNq-4H~;lyJ(LI>~8=nGVum!;u2 z7EXvHTH5dc3fBH>j2wc#$*f@@Y;us;)aFIdosV_VgC#ok1R$RZkyR$O4 zO~zM@DRC<330>|O%8FW3xPyNi^|yr#8dQKuf*u@L zJ!!QsVpN9pyEBa#nN|U-2`v4g2t5LJtDl5Ywn8t?sQ^1 z!8kYM$iy#p{9||$I@Wcrh$kkC`AIwp?sAzE?QZ-*o&<&DvM_Pbxqu)j)(5$DK#-0s zU-9g>qwA1^snIf6L=Pw#J7Si-wM=Y9Xo4~Jks`!Z##MlY-*2ALkl-}*fFu#hHsH{- z8t_|%4q9GbnOk0h*ACWBoHYOTE$}v_kxvpq%#?oFURIadIBDWjO>UvP=n4ph3d1Cf zOkUD>hI&WSaIgXNBJeYa)g0t!hP*KOE_;-KQdRgl^R*Ihv5mCjt35a;3~;kPw9Eq6 z@pmbJ@TFAoKo2ebA)xs;)255N!L;Bnt}TDD^0+m-)&G~fcVTNI+0M50Q#z9?6R|g* zkpxKK?U`I01Xe5#L4fW3e(%>824R!o6a*emc9P%z-p{J)s#2>Z4r6EUWG92A?&?x^ zb=9hMc-FIo_~)~`SyT`{V?*;7UjTpc*YVe`U9f8x>{`)CP=3s=U9@WjqU4BOEB;VE z+qFuN;ImyT?UH(BcI}c~yJXic*|o}(;4IgMSw6d{n9$Ty|5sZ(?2|kIEb{f+?YNR= zxPSXlv8!4A7#Mwd@ zg4!)EQTEo!Wz?ywAygbdNB|FA-@?^T!P_khU8n%H|7{2MC<69)QdNy7`;MgMTQ2(* zIA>#MZosP9wqcqDva|0fa^(aL17{w=)^lC@O_lh2$fs|O z!VgCMW)@t@^_zGE!}W2pI3G_Zgk39|n2X0+%+xp#IMO%_-K27@=sO-2lz@8NTkkmM z>EoQ(9r;VMa9{D!f2R}M`jyj7OyBqjEx}@|w@$o!b9HT96Qo8R>Q4|cp8QgiH_jqd z30_CX0(wV5%)V&v&(1#%ST@9$Mt+6_o6o2vx2eO|Q{%`liO+2Zv~v+p0Pks|=nLNF zN4u0k6acGLyEGOuvQs|NzqOLiX-OpDDoCb;Jw49L@@p2L^8wA$HJSCIY2n^9kxcTz zedJf@UzJcEKZs_TyR1%!{ZUNASn5!J6c*)dyjxR@%%cQv{WQbZsOujz06UjtN07RM z2{@)Gx`6MipW=_Y35k2s-1(22kr?0KW=gt_nUi6*OC)2y1JPV`F()b@iKAS|?x4Gx z%8QJ070@aXd5pDRIMO`3Iq2xWnsVs(VCipC-&AB(HC9z(RTWnM$|D_*8;O4tld3mmfGZj8MK;qs>cT@0ZhAHaimC~(ymPc7+XoM-JQzCj-kgvEAp5HMz z<1UODeC`vjM@3F0*di<2YF`{7@8P2uSS-YMBwzxP(;hp?!nf@E;op%$LS(hCjSb@o7M^4UWzn#@7%x)N1ai;u7=D)eDo!xzoG`>)~ z!t(ukdjnjtd%OMK`ul8Q(WPVFCjrwLc4xEGAyA0}m!2VP^Fzg$jX7t7MM=Sl^3$2| zxQv4qf)yF`r2k%Ctn-LuwGuEI;-I+&f-@fW26fck-(b9%N1MQV0f(*aQ0J@uqQwX< zE-$nfJ7dZEMT#FD;%W2BV2xqY=!H?Yv+2-d11`O>+_saJD*s~TYV$X~t$xpXr;IX^oG zJ0iw~Tufi_E;V61_cH!`%faB#K_9xC*vR1(ah+7)6#*%xmYEW?5&aW~I!rF}oqPbc zpHWlQ=BHK+#2F3}R<|biS04azoJJ2et8&l>aII>^@H?e`iR5szw)5xi{_a@Dhyn_& z=GY;eb)?ByS%*8VSJg~6^pNmL$&&GW{<0JIyQV(_Wp|EfL5?zWLhDl;q%fy(1y@h% zSZZC*B(S*Y4%7L$nuQ+fQ?85DYhYI!;G99<1G(x+x)ix;iE?5pJ`A+g6R>IgWnoSh zv)g#e=1M3Qb7wOvz(xyK;(T&AxQv&P1kjjBz47F zXe#D04o4E6k`e*rj!|CL*bNi5MR8MK4lh5DFHcn4lv%vpqCvkH=D$Lq8*fMh1EQsR zTvi0gFAs}yZ6_9Hk{2P)wDo?E30z)xzh}d@MIGCN39Qf@$UMfs&`7 zF8c^NEV*|T+#!l=|BRk-r`y^gvSaRaZZXI)kK<>mbDXV(N>^1e`|aY>QG z@-{OZc*1rxYkn-ZDeCQgTx1&ma(rhsNB0NJPZVaAql6bZ*%^Z%Xd0xrVl|N~X;nN} z``Kk3Wu31s$eeNsw0N{zPBm)ldxs$X_Ep95jwr|c==OwvV284QTgvlM6G9t<$PIIH zbFV-NJSBAPFU*Q7{Re*f|1ZXdZPD!(KBJ_p@K<97O(V;KB>8IY7O&~WCG2-H9Cymu zdfd&yI?3Mg4eri$94zlLJps^o$1BkAkaFPzdpVL#&M2IS<-w4knsY)Y8!~Kci~=-K$Jz zvY+cZ$EFFj&*4s}_$2>R{fP3Y;*TioG>2s{N{P9Qli5$1PM2R)$)W7t9$ck`zMrfY z3okm|P!)`kauxkS$o7;MZ+Pl&@!~yD+oMaG3j#2s>0A@szrIbkSuX_u016FRAp|%R zbIy^SP5wg{*fmFJ){wsH(kaas)?8UxBHkGmT539wFcpqRAD)BSL8DoA;XN~EE}E}t zYl&R-a0kWfjEbDyQyQ1QR;@vGmt5v<{K1%c_?e)>&v5?5VF>~rhv0;L;7$5M-$xLZ zMzJ)ROJ~sni!m-{HLI{eira?b`{e3SA!h?cF5tU4ZMFlv>w(jRI1SY=Epe8l1S1*b zvTZ;yS-V|I%0<)dQthlaQ3!){il?j+l~I`XN}cB>47Zp5>5HCT?11z!Iu7D7>@1~m z^g@A@952p`;p2j^e2fdNa`{mAq|l}LIYmxWRXV)!@Ce}uPBh368dd_qcq4^9f-h-f z$=E1@+>N)fKuO^0Rm_=q8z?^>SBG;*dv6(w%DwdSm9fmEXkM?#$fcIt)jhRZ{M0SV z7R017i1|rF+OJ`dkx&LQSVo94qsF(rFd5=4%U>Rk$4SDpEPKaHP{5KK zn}@`mdRFGcL!nKz39m8gn=>Mt zuGgx-W_a6>uvNe9rnqQ~1mpbU@x>jh>f{%eRr0{*pA#)sp&>B{l9o61#pMa_oV<+T z=Iu%qEe=QG&f>xJKvB!vw>i%0WZ5OgH{rT42cC_((){edG%GM{EvctijAN7c@lqml(x zHb`yoPg|Jsl(FzdNc=4p08{L1XPrW(%deY6g z&g2H4a&v$DseXE{Qk+9dp}Rr-{G>;x^&hj(Q+j{#dwSQs)B6kSJzS>iC>;xpNuL_=t|aUP$Jk_B<9Sw5d3Qxz{RH)Q4gez7e{#LZMbF+WRwER@ ze<>A-)rs*Mu{uH+o&7YQQ6koSt7k!aB--^B4hDH=ICAsdb3KZrtqF+ARSgw>#O>47*SgFFx2gd@#m{I$!;)~z!Z?ot%0ywm#=cqS*n1B*Vuvco46X00)Afi($?dTAg;MW|X0|Zol=qj|VK-N~S1BO#lwTVP5FSW4ezg z%S-f_xRX4BN1+pd)kW{jV|xMMNGD$&d;WaZM(1v)g#~Op9UfzG1|A~;_IsC3<4G=^ z#YVSfURR->*V|3MkR1uH0N6jB)V9Ats>azGbuu8MCMPh;8~6*_-EkydZsEnMGZeDo{}L5SYpB_AW^hSY5}R#xB3Xo23|1Vj{OetGc5%HGa!24g?m2Olg(E?4q+>@GAZ z2?dvXHkyY;Bs9_UhA-AWb=-`fiG?Szrl)%nQlG&iokP}LGRE%4AMYIEKE;JcWXBKZ z8rkEntT*;Ds0!$C?=SF;kA>siu$HV-cMu>*@KI<#a%r^h_O=#nH;P|bL)D~iuP&~y zK8m|M;S`-B?>kA{*u}lytqqnUO%?@5-LIC9`iJ$P7oQ%CV`;FP@2?+emW{{g!{%6# zRBL-yhb#uRHTisd1Cr?LAMVcxzu7;~nBP&1=yZr)IDTMGo-D#RZ@?Yl%W|LMybgka z2;ely(4^#I;@sh@2`XbM)!oPm&~!O!FzV=y9Q;}OhZa#<-`2C(anuL_;!T7{7a2== z_jh*wB0w5he!o%zcKBIHh6-@t&j~m%JeX4PrieT+d+CE2gs<9_0;f%~pBt~K6}x;c zh&zHgi%lNy(JIk~!k(*Z0Oxo2V!4s*)d?JrBUSoy9}bHTYq57?!X>T7Fhanklsx=ZLy_`$H@;q4n7Ab zj4Df%)$$`yx35zWv#Apl0-4lQ{F%xfo_n1@!~_V%x^&90@$sS~U{WsB!Rvam-K(TR zcY0XB!bNDWBpYF^1VQ5iOBH z-c_}`%W>Ao{+nH zek(~5qXV9=UjL{Fh7s4t;j-n_Y*&&dwv9BgO}8+{Cz^Ok+ob&bgfH`X+9sgVuc>Xi z?vlCwNNrPEM~QA)U>1UV5r@o3GSjxZ8wFfA4yggA6o~?lDY>s;(dZ5b%UumFc1OnQ zswjWBAN}U27vj}%a0}X%5QGeCHn#D!D{3+sblvaD*rFhFy(PwCW#xn}ctLr?K{n4E zK3O2U*Sqla9}LE7_l3QONPYEA1?3Rypx{?Cg#t+7zuljsjN^Sjp3gtb=Rg!{+iQ+& z;r;g7Za@3(@`GYoNiLXv%2c$9UvkG2I9F&~krHc-LB@y24ULH{mUmlgoI3s`LROj< zZw(?N^yKZvsfMQb+aHQ_s7>hbQD&y=HL)_o<>ASiQ|eEm-g;8fyYowx0Uk?IW=8Jr zyEz$hmEB~A6p7%Y#1)`(n2OT$f*52Y#~_Zf&3s{l`Av6&>$`iPUhtD`?Fi!nU%dH1 z0K#ky>eBb;`P9@Oz)ns%4BF@IXHYCOd1Xy9wL$s(UPjLv)<;OAA5dnXCgi`!Z=Ni9DzS5>q;I(n-xtQ8I{uo*P;To&V(@NZ0I(Q4f3ZnIEyQ~*U(h= zWa=AX*z(V~<5el(-iR-ycpC?RZ~d$ zrs)b)YqQAk;l`e$$WjmIBh&`0HLpcD%md(hGcXTg{K|rS zOVtC@B}H~FpECce<(u7|BQt=!b}X~NPh0IdOBkN?ksZ^md!y?4}UL1j0!*MY*b z`NqBVv~D`IS@Q2HiA1_b`YGekQ69PI|F^*O<2J-K`E8_ zOuZ5^gohPNYgF+DW&|*NzZ0sZV_I0<-(P(%%?;l|{d<=lbbCxLQht1Ud;Hs+n6>tf zZy{anUBSxkC?(g)C%PMM0um8Q`p8NV*Z)w@^G7x|)-93A=JFLlApH64hEjreXEwzD zyo(D0US}|JTTw1JJC>z2=@w$a;TGbr{wycL&|V0+AYt1MBj?Xl$dZ->_k@ooTqs#d zd3nR`orCrm{@W|0eY2g!27=NDze#xldTA3ME0v3>rtPIk(}5H#oC8fNdj@|r3#j9q z1K~zXCZs$7WjxX|ZFnmJH$@CQJ!0f))g|WABW-x5+QIE`*kk@&-9hfgx+UWlj_|<7 z;AJ+V@Cd{Pu@L9l>;6l!+c?42GH}FWa}!!t?q$jV+*sOlcne;Tro%EFeCs;Kh_~Ry z@yQ9?24e}OHu;u7Ly+|p@RfzT2^2D@e?cv4DqYCxIRLfbvoisTCrc!UbFsscNe!p;sh+src$J>bQYdaKh+v&6u1B`E;i0@%9?u%5Bik#zNpPE{2(6`b#3|Ghee-=$XGTR&+CSa zBsiAuR#bw|at2(HGoT|yF@YtczUlQZnqB?ZCC+};jZY_eQyMfALD2Jro28T+bgl1H zn@4pfSNkfb1d|QOH=*rr$p_*HWWrb!LuXJltcrB<)!D34<0!DaMFyun#oI6;io0=A zhAvL#Ba5vnjF!7Hphje9Du0^-2dt*mwf7{hcj0I2_cH*FXa0YQC=NmqOhvU+qz00u z(YIPFt-UuCj)M3iv3i0)RE3ku`GI9;H3{&M`rIsNd&khu_7LpQ70=JniqOIY=2H=f zVotLyB6_y3Pwy{=udhdUJM4u86LcK%xHg=-Z{v#CN@G5}X4hTlw}u7Y{b&;V2Nf*(0LG^(9y3>GjEn4F_2o ztiF4Fe06#e3Qkzn6cR%Z_jioj(mj)8@*+um`J#khuYbN6*&D+c=nXBeWGlr>)37@I z0MJEf!74oP*T$l;7^JtuJhK`EHYhNSfcn6O#fSnGppfRA@Wzz?jB_%%#dh9xXb4z{dfa)c3krYsjB*jJS0*4@)(`T6MA zFQ?}p&lA1IbSdyTL6-_o>d#auewJcfChZ6pMv+Z|$yC2A^e2aS#<#$8ul0Hmz>2dg zlES*)3a^+d%B&7v7hWWz;tlCxyhZtElHfT-&s3uoLucD`&NwZ@y^#Sm_1?f9*8qFM z>>+SNss$z+K>lZTjT4psak%&dVBn{@2%Y}D?wVv_bkZ)i(VLHNk3%)^F*iJBXQkvs zS!+jS9zBh(iL!==QGR|j6{13e_~c>j5rL}icmeL3Xc!}t`Dz^pRec(nc&j-{`g414 z)N(x{BS1-d8w49j-&w{U5Wei}c6bT><(K2TJJS78V5K~XaA-f?F++wFhKax*Di|@` z>sC~2cW)J5`MlR&bZk@p`@!l~i?k5607jtGo@Z)r`{0lbbe$Tq((B?+$*!Wx9d;35 z49>q+tVeRsVVuiH#9E}7FgvKlgzc++^g)<5{+*9^pF(bQNGnn%g{TaDs$PlG<;`Fl zIlHfF&-Uv?3;jJxZy-m)J10eoVkJz2l7i3a{O-3OKHc2ZHv5OH6p|z$MzW|>G70QC z7utmMmJ(p!5&8#Kmg_PON=X_L9{xIR5HbCJJy~eIJzW&ST(xdQl<|3ks!DcirKZ|h zA%S6GABHeslH&p@hjfrJw=~tvosu)IE(huP)#vM9hPU&jE2PwFiOv}?2DBy+n1k2m zXEUPdQ!WA2GWXL=AW)Fa4NoPBtALcS#vyrw?HG1^f573<|-BmrF&pjpz{@# zG%@c$5?pPbi8Yt1N^$BHIf0WqactuZFWanV8Gmf&&iZrUHDPEA)*iP$6%`eV%p??X zp4;Dq^~FXdv``LBTha%_gwyu7CJ2}C{F+%dDw9W=I7E|{<%c36_v+nXAXPzBK-R_IFEfIbo5_l)`8#)VQ$cUceTCny;o zTlqP5SM0!qcU2mavXD@S+0bl~l5Y=?=%dR0GK<6#WGrjtWVMtv&eXcrG@3wMNL31- zhz6#6_SGes^j!F?QuI<^9)bm#juTc-bcM`_-q+XDQza{`#|oc>y?qqG+`&a0 znBFSuxPmGRSml_;t!{U`_Gw(XUSwh5m6vX8<3yGCK?IGj6Fyd_GRzr2Uyf^x@S%-`x8 z6MFY>C(pC($XWQBlGSzhbjfO1BiY65?8cfH9xDj1X|fB^1tfQ&C1iIZ#lk8X>&dN; zPE>)s&|KZ@I*wT^|Nh~IR8(1IF3}#1BffB(GnC$_HaQ<+XT&2mxuDghXo9P|j>qIk+4VWqQJTE7gx3?=uE zPw|gbMRJ-(uu>7b1PGA?FWCwBnizlRTDEnFyEst@HL-8%@SaoIi^)2Le!;B^7IS&^ zJ#$?cFf$9|7lrn-3Jy^dme=+4bpZ&c9IX>N@$<3eeJa%BKl(RG5KmBao93jY0`EL< z*k*hX^3-B}*Uf03Ct`XIFCApJ^XsYO*v>}BuQhw6WkGf! z77Tr%jAEWsHe6ov{Gu*Lxk%3hL{WlZW}b5~RZzEHZkJt^axiCYT6Uapl zwdB>X$cQlq^)?j)4`Wgqwvrl9I@?4)_d+D`{+fU^yQ#f2-EIP!E*Xq_MY_2WJQ+uy zZ6vWG;Q%Pt&cVk1?%rUmD5Rgnp2GhdmdT-vDKtUU4|$-RsrTFe%`=!*fFplD%|BVO z@O=Ig5f3HB%CdWUG_8b<%vXcLBG2N ziGyGtlXr|#QZ}9Kj^Vc*YwVC-fX~XU{fT5WxDFRFNy7|(fhTFU*=B|}sxIRTueUmK z!+C2vp1l6>uN0x_?F<@pA$&?a)$LM-5U$F2GeGX;Y!p{DjY&>dv6B`wlsDmYb7or=S)B&H2eB-c+=+c z3?HjgpTm%Q#US0GrUR{9$7!fDsJ&#=R=zNv4U(UCz^J;^V%>0w^*~h2Cz%9DgLfNU zzTgRRHiWy?O&~H-1`fAgBO#23DrDY;>{!24KRG)Wwmudxpv+i zz*1Si{B(Lde{wncC@n+(=2u_tIF`9HnVnL8>s12yw&)FTXc&$RG;n^IsM+x(=d!E$ zjI(iSOP^bOF2q%`>meVB+Jv|IC}qy|n&@&t^qDn@YxydWy&_ z0C;h+&_ili0X-rx9Wu_sD-p6@;G}TC)5T=pQATcrw0m)X1itcW87WWL*v1*f)@0K9j9H{j_#wx$NMjf7XF3ZH{ff1i^&`sF z81rcb%|X78vhcONwH2tgG$N+mL%1a1L-pVUX|BS<NmhSt;H#xpHMC9OC`A39!t=i`W{4)$^!D z?E6hd77gDQwJ#~=S3}VeHVjifxN9~OZM=8V4GFREX$)HVWqdET_d-UnB4UWE)BBra z-al|l(sAUOy3(c!KCJ#1DTv0-qn@)r<3hsYu{jt^A8(<| z9T8NN?q1MArAnVMc$3Dw0)xWw{D=9I`P2E~{Mr1+`A_rbbJ?-5PapK>M1M~8XQ)4C z`twnLKIzZ7>z*(sSxnc0u#jV+0K7nYuvY<8cs+*DV-Be(xxfes0LZ0t&%yw?7Kv?d z3hpLamK5ADGiL;DVe$xpTQWk{fuBJEfDR_skT4{!E1n_V%x-a9MXxSGd9piQ4rv=a%UA z-ma6`t&HZnTvqoe$o25)d#0aqNqhXdzCQFAg5d2XmAEVu3Fr1&&VdSe$`zO|K0ah*b?B0nB ztE1YkccC3p6V}hs+8Rq3GBsa~+o9FaV;I%$9x)NJNb;=NebL@X>OKUmoZ^g?N_m@Y z-YE!pd3V^;+{2Cyv=fFH1{K1v)08mmps~U~kjzT6)W~6 z?1L`1gPP=WR`A|{he>*3-wcUu?x9Qh`59ve7l91yF>~U3LI+c#e8SaO84gb<>LO(k#AHsiWm{NP zP;$Ka^Dpx!E>a95t0}OVKMo_3P8e7lqdwxai!T;LR7_$E&1{b>OF0S2Arb9>nUKaq zV8~hlW?pZvuCKJS753zvw!#^fjc~Lm(g^4ReL87j28g zrM@*~6NXPFnAOQ1T*P$*xO{8^J)7Kgh35A>y6cz;WNV|~m?6U6-G}ZEz!QrE%Bm38 zVD~~T>1B!%G+3E5oV-4 zP1JtcGElXY@aW_!iAvP*Wu9&h-lC9Frpwbco{fGz9ez&v8jHP_(DD>IHA;*beW_Cc zKq>KcTnF%dc)pSfG$3cjGQm2SJE;;Ofkc{ZkUnA5+=&X|zG7HxG=bEm87>Pq)M`#q zYntScMZE^kAYbjCs1st9A^7**;b6abrSupoPK1|hx^DPU*&LKuW7(OgI2!CAk#OVl z8b<$idshQ@da(Nzzl+sN82c99{f1osSl%SqXg=?~-Uo7*!Db{XJ__10i+kH*fqh-v zSQ;m?Fu>B+!bMVP>?_)&)?1>uIa~Tclvv?v@9n&XG=qtZ@wgEj@MA|=0E4${{Wm$V zMY%2bsstKiO3{HDfcRH0nm@Zla^9x&H^F4X8{`8{JJFWliI-O-_wIP-B5_}0^F*jF zd>x?*MvL-oEy}mG;L=1+|92FWu5Bq)ZYFGDwK8;(M8Yvq=2V_l<$%4t-FH?vKp)^> zR)J-t)$XRx2dq(S?8;T6zrMQot%fqY-jgTx zPX>0a4h?$1s=Y~viA6^+&2U__Muw@E2Pp>WIkdH!J83DU}+0+E3;sJHpPb~YrRK1{Y` z#r%zgG${Is8ohuTJ-YyCs!RqI%>hL#^eZyrDMMCxX&51+yh6h|A6;Dk3Y$uggd5RK z!QfrjpPvcSHU81O0DODJx6VHno)S6x5|VpXkCYba+T)f{7-f^?0x~NEQTE$8tE83e zvPDR4u?WZ|`h7TO;kxVt)kaJ!bNkHd5n1Vqz_U0|c6Cb!uMfq|D~pVz`I1$*kN&mM zeV4sRmdF%g0A6rX8W^M>hm2Oa?O=!d`!W&>??L829f6~1wRJ|wLV#-UKuGq zx_b<4&8i>Zd2#G11VCI}>nUKTy-uV~1-iZX*|9W_48b1Wg!v}Ncz?n*MHct`fxIsT za@ZJ*DRB@E$b=}&^h>gsmUMIglv9=L^v$lX{ z61@zMm58;kSjYDpi>@ez;`*RocJ=yLXt-%1*r&NHc9g|Ksy@NmU6Qxt>7npO+qgq0 z`*W8ody(23Mx7mhDiL_C|DFwi%>aKui^{{~-VPx-7%otG82-c|_3IQEog(m30T(q9 zvtUZ`q0(8vFCk@Pyn;K0+25rKTCmfacn-_sZbrY%drPtxlVYqj;Ao;ipNGkl?S)pmv$D9n(r%Nh zI2oRK9F{f6ap1~NaSV56Kns7DW7s;DV^|B7SgiBnBwu1>C}yhj+g80MirZDcCdkv} znhW(`*imTvlc*bu08IElqCM zh!kn^8jf;}F(g5##MWP!_GD7yD8Uv<9MbH#ebN$55g}-P`ODQcsX_$tR%!?L!_n#S zZ}C}!bPd~dI088X>G?@&h;3(<|BqFAVZEad*`z_`aC^0oA7kCUUHM zQ*eN=PxBb0(MI{>S_Tp*6e#9wxW}<>Z8PXBWgWrDAk4e}!nh<#V_E)!R(L@CT8mlI zS5-76<1h36^+|k4t^cJ~EIcgHWG=rV)^8Ix)Mnv{rYW>U2om$w1uV!+*(Hc0GBAPq zMkk+!K<{oa(8**4vS%kGSI5{D7b3f&WZj-v&=gh?Kk>#EB$KAQC_hb#Vf_Uqh#AIB z$h}l)jDh?C8L_ysxUke%hP7e2vxF4t3|}lPC$WFObjXH7NtzOgZb9u-7&+L2d^PbF zUZsyzvGbMVbKy*dE4kUEFUzlY@@JIHx%lEAp_zaLEvALB340J|K}Obs$_ds^$0M^S z8qlx-@fu6N1hIH|hCL5jBrEyrLAkBB#3kkK`av(QImFp74MZmCQtaFloXXT^O*oa^ zYilh&VS}-tZx*IRREU3P1p^;U_A8ah3s^J#IRwd_&P6b=+j`*a9)`uex-ULv-Gi>A3Sg$8nhhro!sZt4 z`9YU^!vG=iamo+vx~Ea-GCuGOs)?rSH*vY&9N&E^^M&bUn!e8rsZ=lt9R6320$K5K z-LETZU*-p>@?Eg!qO%E#iAtB)WeO-7*@A`258h+Gp~s@sg>74STZ?sA(i%HBOtkSX zY*e0IOV81vBrd+nK^LOsiG%JyFv*}>1j{V5P(cR|z18VND$D5}e!<>_JYv8Er>T;i zMooNEfmJnl(h@6?JoV7$V|;JfK{Bp>K|<_YUX0;PmA0~?4PBhJv$Pd2ZZS0;61Uc5 zrnptn6=|wtK+;}+4`A8U0KIH72# zy*Y5RtOaFe0J3{inD3eZF$}|`#!-n9>%xdSY0e30v05yb(&m@&y90iIp7DxzuJUbebkogdM#vNU@!2FTLm%L^)#`s&(4Ab zM}9a3y0Sb7k?VAtxt5FQXyMNM#li7ngIZtpn#Nd~g0$_wri-|K;XKBkB9GdgNO`HjxCAc9S+FD-7;}Iq3674s5gqjfYRLVz4 z293_bIaBfC@O4~5S{{&Uxe;I+yQ|!soOrVcc@UpqM}u0jPtbOM!vpxg`$JOI+6kqi zBnBqxSHaK{Hw$ntK2Lxvo*P@6S1nSNB2^_)6(Xe$DLcCGWM8E$2c0m^{6!w{mzT?5 zWH^73m;A*+QP;ESFMAe$*}eG7E8?$RD}M@~?OJ6g^4YE>lE`Oy_V{bp5>M1;yOx-u zKHIe_Ud3m-R<<;s?OLHz>sFGLzjm$YWB6>>iUgIjbDN*Q)Tyx?Bnoo#S&CSsVQcIt5+a^17*MCGSS*u zX=N+PZ>KF&X9^pb<1cCwtNyQXimIf;q?z&uEuB?i#|;qcurZFg-1X~AD_J{Pw?SJD z4;PM577VO*ar1tk^#4ee_mSHI_OM1-JQZT&hQK8j^p4-Hf0zBGHZat#>A1>5Z!K{P za(i#~Hh0TrwdlINnr>-uV`x&Z$T)_-l^GJlFU^OT_r89D@$cu&EA@b(peSzJ@nSCJ zij-48ZX3M^zr+Q_K#xy`cVPM;Eo+^hx(`e4U>I9p2G?s+R9F%U;thN5P8L7LSrtq| zLT1w}!ez(RNPQ1#R{>ll8^F@7^0oK8Thz97P@;-@7n&9uYgCyjLXr3mqW$5GY_zDd zDHGc`pQbgLX=Jw%PG)2WT%b3_@&mlWXpsDqm}A96Rw6f3)e>GbNv+8Hf-mweThpS` z6GtuSi~!)q?%M!n%HP6M0?S}AvTVNr@eYI(jFRfi$;NTY4Zns*A6h*Mn`ryY3&;}d z_`Ag)IzPbG*=Rz;3KwyGe|Va`mSalCUo6cfTdPI9TU1ZMA*Dxvn{V~K+&C_rG}ma?)d$h!#57gKsx|DDIr(ZrGCi2yG=Rdl(wGA<@C zpww>jD%u~pNed{XoJQe7o5o9I3@sHKqeG;NYqxn8-Bc{s{6?+V;-R-mpMvBuRWhN?k}qH z;(-lJc!w>T0%;&y&n5GcNKxwQu>~j-%YSWv&|0GIuIR-XA z#IOZS50)MTDgaa@suQ|k7 zF{I4FaEXUlq8+R)L+0HOipF7^c5T{$rOAd%H9SiPNWMY8+nrsLgy7;sQs0`)l=`xx zoia*5@$;wStBGXk2VsdfYj4z>LQ!&wZxn>_nY4!UEwk`tXa zxUO2Du%@`KTJR7TzJ1muU(IzD^>KDr#0(p+1G#p9#td)IPnvDn*Zzy~rp>?-Ib9%D zYY(eGstabJSc_S6LKK3U5{Bg2e#1Vsy@xdWFgm?B|Ao3^;}QVILG;3B6zG+=!kd?% zU`T9?peh7~2yb~$Zh`4oZetDWQuj*=#O)OdgxJ!7GE%AI6b7D)A%{~)onM6sH%#8^ zIkUj{W-dMZH7qfvrlG-6&ywKLer`3ZgU(iUqJ}-}iijBCiZ`XV9DzfC*1{rngzI+S zABVTSQFjTA<@_qy`or+6&hxbKZ>|)k1@FGdlxmL?8_uFMjBh*Hym4(5SP{>N<%*p+ z$-c9@x-RMrQqcYDESW6i13zf9IHM()Ef!9O&#~ySu;VG!XF{WFFqb8Ov#hDv{B10G z*D<0_+Iol%nC>3F#aq{ln-=-MXI8!I$w^ ztOf{;@2}IJHJCX3bxLsif9~4*Z_6kWVYu!kJjDg>hAENq(ZjBU`ZFQ;~(f@HA)N zedn}Ol2Z2bfwa(hcw|M#JI`lP%A&7MF!=_$UfLKHFKVr*cJ);?Y5oAKuj^&b>eGnJ z%PYLb_NCvkzF+)IzWn(e{x~RlQGC1o1N|JQ=l*Z@{ZH9{1=YDYtkO0ON6kAqE={Xi zmAci!kToHOFEm<4hOag>+y8=Z$a_E*TAg;HMaWv5%IamX?{EWrP$=2MuDx)>b$2x82n@R{lv2 zIjk)!=9$$_j&F`n0LI55w6Ms^a~*5V6~x#>o;7O}ro$sGQtS5-7AYXkud~*Kr1*Mk z&3a1~!Bf|oMNAe6{4EyRB6cvbo52A^w<$?KM=*i%RWQ|4xC(PAzEEA+YAh08gsn%l z&v2C=;MI}kbb5^wDbF|7l7sAJzkWKu7}ha8$P9&rlL}!n_Nf2$rO{Y+{#r`}w?F(k zAo%1vzWWzhv)?Zi1#@Qal4V2W*cbf+GyJ~rgG%d7sd+KCt=h}@L=Dp=NaD#OElP&* zUwm}0M_RPnTG0hZ%bjKzz3y~D~8O= zOxt&WS5*SR7Zc4Pj2We=D;rZ0AUv`O04o^&ESHokDjr9$Y>-;_Y7~Ajj`6It5!Y`b z0Az8tgy=iS_YZf>5LKCKv-nd#2?XF^SkTg(aHIF;NjjfJB61U7m&V?&QWBz#L87=1#bkG!A#rlG~kbJ!$ik zIa#T8FIJV)UL*)?GtHR~Wcymy6Qwe?V6Ruf#JOyAb$OFxJ^8wf#c{u2-~%D5#}qHz zwQ(W&g>Pg?|HBxk1QPv9@hYGl`RxVOk)fWVu*)#Nu}LoY)sE_J;_cP}IH-H9lefSd zPAY70p?hUeR_KX375T0-A4NMSt#^8YsEsCyH0-pvPHWKT%q*;W-DDJI}R)Y1;f z88XhjB}y`YE>V(&k|!`_csqr<#{q+3njSd(aQ{)oGBMO|iC_-1FO>J)B|q}?`uJ@>96wR`>5mr(di0AX4fTg4A*Y|ZMpUaIvt8ii+$D{7`5XZ=p-K_x4IAsyHMHR;%| zd%Ia*jY(5dcCh!IZ`%T`L zg=bgrmwuuy$H_0>9%nwWau)GgT`!5OZ8+=^mEt zA@VrB>Nk|?VVNExkmHl?NogLIB*0NSi=f7V3&idtt995=xOOn3@vxh3~W5E^{2$bzzvCQQ)K%Dh$DS5rGMIA@!%hE-~+ z(0(Ap6ZfnYCJ+8ure*Mo8g*NRvJ0tOw7pm!ZD)FgI}1u>1+j$lrzCo2XgqoOQYTv~ zB^H)UG24IPo(sd;fIV@GtnhUquOuKB&I(l(ZCa`0xw}(X#Mkm(zi8P?aRc@>cGS%ewcO8)R;+GUkRT$SRMb)q$)7ayFI` z+DysT5@FE#2E6p&I#KZ}*`N>`n!!*gFinKBFFG`q9!AX&yt}wqjs}APMmR-Y{w8gQJ6YnH^zvfVo6{OBAcJE>89Ai4Z|-W1(=@ zWR@;Y3$Kf_gm(Lf+dGDPk6NQyWTff|@PwUkc6@S=5ir#QV>0>7p$Ds zI~R7pa9I`mGFw;uoVfVECHi?-Iz3KhIv0N|tV@Du(-x+Z(36$P*YTz4#Mv~ka9(aSD*|p)t%L777^_y58{(5F}$hFhV zK0y8;W&9+^Y!sCRc@#Zkmq3Ul%SVqoZ4Ot>;78714-!M=4bK?gik+0xXDa_LHC|6C z*sO91Do(xLN`aZur9@D&1pU`Njv`f0EYK95Zh7wj@;Zb=jO$Lj4J+jHzywmQpV>el zEB~V@bUC~`HogD&1gw^jGm_1zNGmjXu%e3BPq|CCK0(t?VhPx-nFIXg&jKMy7xpB& z0kNh^U|Wt23oWuNJNg}si9thr$=)<^CQ8N`8s6e!Mpb(^kjQ3c&RTDS4P{YSWt-NUgi^FNeFtBfvctpi*Da$R$-5c9D7RAZaQzKN)NUW0P5J z!w1r8a`YA#7(Cf~i?B0k+ZFydK7OM8bcHSYCT2MszsM9G%GmyT_VZsS_dD5d-E{6$ zmYD8XiRliCFMB3vz|9TR*d48nb*QvJvxBDIcR6j!e%jf!!w9(e)|ivHADgPYGcJ*kzPfPXC$Ike&xv5|za?r~A_ZOV(Sm zkGQ*jJYXq4rQb{+OhyO4H(L~TaHC9YrX@|r_E&7)#1fRbB5Gi2rxIE@7(_Xv*uOv* z392cmc2zv0F0U_u2-pQ|df@3#B}9;OsALnCmBX(EsZAGtFBJ`^@@^`0A)OM@4CWg# zVg`Y);|im@jm|>2jg8&>pLc<(yqkYt=&k-x%Z|m_81Hr(&0Q11L3Y%!l*(32sT`mD z0Ywpi!9O4ns--EWs!l~)m1)dZdq9WW5?n1-T@NExdh^9N7O5YFt}k!*go_(?Pcl7k zK1qAo+)&C@RyXJ><`Gd=vzdfCJtMZQOsxrlqx|_|WTg!l77rK9q$aEcCAYKD&Pl74 z74kRX_fVW~HQyP$23ZN3rsmiw%sh1RNWg;nizU2#p$Gq%q!?3?q;k6GRGcpCM|>Th zE;D=%4!kaaqU&YLYCoUEa=e;U9Y1sRyCLC;oN06x)s7QBNf&-scT+ z^6-ydXQ$_%&rgThhu^Y>FxZ&YoBbX9R82GK4SR`ogQCqWA%~H0?>>AWO3jHA!6cQI zMteGtGgb~MoLua1-PNfye~brSKZS|%t?OwKM4&Th8UN*NXm zE(Ud-hgUHD97ktvO19`0pp{1l=pInw8+eA{<~PwWon+AwFz%a7I^6fCz}x@hr%d0? zJIMjie`K$lX1#jAitD~xU61IQVxNJ&A_#cN9MSVxYzrb2KQFWZZ0A*-ti8j*YwF61 z3TS)@6eyi-B1EJ+G|M`%u?HD5uMoOD$Yk3!hu1Qy33aAt4zE7!A(Ka%m{a^0+j=~~ zlTxbSuKqUD&~>b77!-aI-$4=V^wW_JON|=E({teBGfF&>auCE*7#4S;!pASwX1a@? z>!};Kv>5IQ?7`~(`#j)%gd#gs1P1(y;??uJdvh6XY9!a)Fni@vF%PI&W;vOM#fLTW zH(tK{aD6?xd-?Jd`||wa0BdixiAC+=yql=fkVh>>#76 zCNk~%Hrw5+XRc`b!S~t4rx8DL4Y^Ww_f|Fsf zg{PRcPcDIQT59@jc5`*(h+FCRce;3=LW*;mX=uKKl3E;>hx05f1|Sr=JXUZk-&-rp zU-s})^Vyw6)}}^TT~Mf1gNHW+?u8P(Ju$_@IB4!vVYh8oU_r5WxJ428leycl2{&iJ zB$_E9rCni&S7M} z->|^Kd?TW@w^5UCD%TXJ2)2%pDxU<=qw?6H$_Uk1L2&!J$dk2<$4_RzO`4-rt)D`L z%NfPNobLiDD3VpQ>^%Rn+|J2uj3I+j6Q?X_ixU;fRGV=d2U3Tb z7cAChXNvWVFM_B}a>IPJI|iD2K-y(}IDavhDZqrQbuRn6pUi(KF+y&c7zw24+>%_4 zZdC{vvmEySlzoJBEW5~1Z{h>mTJT2Mq{8U86K*FwLKKD3j*4f?`;Y5BbwR}IXNXd7 zpG{kb=EVwk6jsXeLKdjLSg|ya+8VT0AMpmGzqAx+sA%V3ifRQK9k#4&1(~=N9?#MV5WD_|P)H!H4_vi#s&9%i-n8pgpA&V?WG1e~3J{1M)V+aEsN-2BXY8>>5! z<-Py~ACmeMN`@G3n2)7El$NWukFqtW{V;42*8VZITdYd`G{0x+;iO6^$p|xl;~H=0 zGpo0dWFiZlazOiviQ{vupIzR~V`PH?85=1L)R_`n?r@&xWGHA+<@tPQE+3br?-_Qc z_2%867wjJdhVyOqK}`1gV1H%*5HKzD7bUf8pLFOCLM1Pnh7KUp1wj5_AZM9D`9-(v zMjQ9-YjYqt`q4oq#B%QVrfT@R_uszT&Fb#MR`&DH8KpVHdx|Q`(*H2{`eRYUDFQU8 zPtA%d>@HpyLXJg%!wwr}ZQM(d0~$PdjmYiSg+7=kj&UNK%lzp6?CktYm^wwPyy@C0 z;4#)Pvq>gimx-qAWxG3Kc+>pym(3MF;I50Wvb01?QmS+ortM+@7s4bp{HU2bRThD^ z^*W=2yp;!-XPj=UBx;uH{TbxD0W8l)a(q zqkpyN&E3Q+ys`LU>0wPy*1u#%7B@VL?F)Y_{X!p`8G$X9L&^IGV+H>8hVgLj0@@Fh z9q|=-4Hv@(_jP5&kW-XsPHi3)%1E_bgHW#EqF5m=l89(8bC@j19n^sITyEk!ZIRIg zK@`?`nEBwy%l5g=@ODzFd4};zY0ttwEM@`o#!P}mDo2pc$bDU&w&g%abNc+@{w&@E zchk>l)~pf1=?xUaIXj&{JEb8JUW@D4(M*Rkf4ruuV{jrKyr<4~>?>*~#NsD{=8YIM z_kdqmkFL%y}y@nR_60Sm`_HO6T8*G8p#iMm|e@8l<|y+Q#R(AfCN0rd5tc6W#s ztrGtPOSPvbheg1ru-3_8$zHtz(U44wY3fXpHj%vMFo`Or)uLR_49ckNvNDgJs(Vvv zp!-gAcv3s9908803aEQ}wC2MvtNZ(_6!0hlVe-A=JQ#HMg#1^?tvJJEbhEel6mqm# z^`(B7&lvkzF5@s>Whwl%v?!%zeLW@0dQ1Eu?yesXNSZpU#>t zK@LZ79?92BP~CXH1F=6ZBhyZfA9jmXIjlOu{W zR(dg^S>t_2DDSDq9AlG^bLMgsG<#!rdlj!b%frGx!!N^=&qEL(vFn10Vlgs>PO^m7 zq+*gRihxUV=E9~1Hm~|!;CM8IO!Pde9u)7ws{5z_JiNE)@BV)9|DtY7wISf0eK%&e zkeYpQ{^3Xd~oUiP1%6W1DWWs_Fx~)rQu=KPvyo4r! zXaBS$2yc_fC{>qy6~{=t2jmT3hl+WCQzwughQz5)xs`5cai{d7(E<@-Kb7`O1AG79^eqX$J(mhfJ zWBNVP*K_XC^(mUEDfjrtpX#UQXJK%LYgO_T^3q^bqLn60ug6wC|-wYki)pF$E- zGKsvR&`jbvVb!kcn(qWF)0#=C$Dmc zq(0I~ifvVsk-Ksg>loD4?E#hV>V!q>ggbBmdv_XQ>lO;S&%+;`k@(}M7d7PHht5PCr&9M6>ae~*k)lT;&)r__08-m-?d)!NaZ$klL!v!Z!@9iF zHwU7AwEAjU%2n>Q2-G&isa7CZbt)z~OQREWX{ymlC4&Mps9#~vb|s0a_4QzX2bD*tdnmaFwY$swd~`axi?fOM zF@R&mOzs%Ty1Bol+&V%b9&+AMcLJel2t2~1{A_o1d+l&D{3=R;UzW<*tfUic8HH$g zAU+sxh@ANn)3VsE+fQbPR zv9H(P&HbP~yFNExe_wp02#$s7!&~yVrrf6~tAJA=_zG_lN`sZeOmz=)%Ug-kPGYNw z&KAe912j4sU`2^!thl^KGizW{VA}5PZ=iwpd+=QX7}(k9t?metg-1OOVrlm+87!r< zqUsE=i14u0YAsr=Yr)+LmrDJvVrk8LRremt9M0@Q(FJmRe{q+SBjot|h7*eI6zNZX zSA9Y&>)e_UD%c|HBOd~lR$HGS3s%f?@O=s8q_3Hv(li< z9FxzidY$;n&aO#$tj==&J4$?8RT4|em_?tt7#S(*KOk}bBhe(&Y4;70G@xlHJ=lWs6;;o&FZ zX5id$&E-i$IJPn5p=&Z}lsi1VrIc zCxPtcOLOKX;}_;6MG~rYG7^}v)e60bx5C$PpG!2*aL)X01C4^LNDd~>UkP+OYXkfy z#v`a#If4G#e3(MuVr)(Vaycf-FV&;v4--HYY59Y_p_;V(NirFN`4-k&ID%%}N>We5 z%7spN>dGZ{A6G72_H$6}1W<8sl2U6W<8b|_9@~(HOClL^nZP33INnZ4=5SA1GA>!S z)5w%}N1<1A3-9Lh?JyqU;>2mGFr@$FNqx-Kt+3wVhOv$mQL*ptPj5uJSwthz^TPte zrC(|Dv~nx{>H?#Tt{6M3}CxvXf(Sj<4^s z55w#@H2TizRIhjUw8dph!5Y@D?JCU&Rl+Y#6t7(t-MS0A3wX5+V9fYe*nq{~-~x+F zAE>iW(!1c`TP0|Yb4S*~Y zP9$-#$I8^d^^Dmbd6SHIjRep(vpcf=~_*7LGLAU>Je=nRiNgcp@was&jC> z1Vxz0*!CcfmMLQ{TINS0ToSwqF}Mh`2vO6$RWd)B){w*2V=UEg_MeI%v0%^5|wEPAvSD;CxLI;pA z&t%$wLqawtA|nn733+YEjNTJ0eue`#3~HR#q!?C4T$-IieGyjj-8)jr<-*753?ERJ z!klq3h0Z3sZ!InZZB2qV&LB%zal$qJOogK!1J1iZMiVBJ0h?HkjH}oJTyNtCS?Y|6 ztAW}X}y?l9leSdZOr>ZmO(@$MYKSjLz>ZH2A>8CEHpSrw0JuAQfplDUJ1H4gR zSyPZk!?ydrsKVm#3z~(NJ(#{wiRsmOXoJj1`reNaQ%ff<^J7l^iDhR~lBwfA*Lq~nLxoV(bRv`P{7h^Jg^JAf;tSiyN)y0T^v*$J zdrX5%XX)+O`=e+7{`i!>Kl%31f+;K)6ojCEd+w_Wp9^OqqySM_MijW03V}?uGqa=U zY?u~&P_QQu$lO@%SzE+N`AKlD5 z_lK7alNbD+)=us`?H2+-@rjo?E}z1&<1db@(Kb_QThxx4YFfj#6tB>pwB)$Rp6)#q zJ>WymL$wL3RC;1XJbG)?7l5(T&-kz(7W``K)n&ae>yeytqg~@x?}G zq0?AdTB3yU5+{`K==S#Dn`1pBi<wGlFe7`e0hEPNHPl`t_BmwkV$H zfgyv}s&{F%#5VW4)NAvT*R%AayKS$&fod6?A&Dfy3qW9}=1JG4d4c(!oZ|jWg(z>y zA2Wduquvk2VO{j7yU!2q!WYPUG|t4@00vsv`njV$j+IKBy>g4!fXDQ#NHy-6bIVPq zs^BY~@W=JhPj@@~vp*g(vE5Msnm_x|U|h|NF#eiiLmwOL4r86o5OtD#tRM>MF+OefUb%6sAgypqC zSf%>TI$AT~CpE*gNi)+YUTjV+$IrPcI-V(QFmuL>N`+Wy-ofibS2Cz2w8?Ku(v~Kc z)U;c;8ve>O5V906eea~(k+uV$OLrd`L0bpfFHkc}1#0H%^jr>*R9aWt{sBG#cbZSfF{6PC8_NVsFRm{_v452s~>Mh*^6PJn91O^ zXWo3fG0osLjSEJkN8eQPP-9+5C{mxSo_q~Y<6qN_=$whAzi5iij~AE$d|feDr_Hqf zMW*Iy_vA9J`6p@oQVJ$9Ay4Z9AsV{KKf_V?gPX_aS7+BHZ}T+MfXFD0mLp#yQp|MP zf=QrJ$wAcRyTmecb49c+D7;UeC`6QqIfJBA1u_*Nn-O99YejgT`7T?r=sS=EV@;Qj z)3DXTARgd;F=gV=oQ8=L$;n;CUaIXH&Q!=ui~Ws*G$hjoqs5c!o8P*7CzqG(F0PWG zU=j6*i;xY3)r*7e6AYJzq867m9w}fHYu&@1oKpT{A-Vwm?H&@SQE{E+#!4tgoceub zC;37c&VeQVW_D!fgDm+yOS2r0O)-zd?(j?ywAgE=;clM+g0}7wP0Zc+!ystUj1lmX z2WxP+^JYh=dqb+I2r6(&gg=xU4%Hw(5*fe5+F{pqZWkFqc_V+_?c33fdc4{e1SWcuiy7fm?N1ID=r*r?Zx5V{dgs$W~Qt zav3a66vkj<@gT2_(U`S!c{{v3zOhop!eTZTukJ60x2TR6=a=VqquyP2;qv%Ps<27b z$rp?eKcsv+rO;Gmgs#rwi2uZc5!A?l8C~ z9ry2pKrK4H@LL1OPFce~r`r_R!uu2!YLT$I6sxNjkO(daXUmnfJ!&myHnpU&Q1%~CrR|CZ)A$%%Qw0Iollni;~xv{ z&J8K<#167`8H?r5+%Ln9krhlUYZC(H%McS*Sm0)EzX)QUbe!6^>2_Dl z8YBJf3uZbm$^~2pS@M~E>m%cL^5qMq%CA1=r!MOWHw5~!RX3{*cFE}8**Mq*pG6Xi zR%n=}Cf$hXRERf@BHzj_Qv=*xyhOks(PdN;&h;f*SP>N<5L&~Caj0V{!m<4C#O*=I$SXS3DF8*rFiK|i#A_JGqNV zAc>>MNh^n@EN_2hubFGB^2gKEKNkcDlf`$CDuvTaGg!Z%2g2210ym-3t_%y1LPV|7 zA}qiJ=Ii(bc2cETDUzBMA_=p}uSRCSznG#asP3!pT1(Q~^{<4DYAR4c0kjf-eniyx zdM?QWXfl=JW;VYXV>tnZkfCaWiM>J$v`%<|VK7SS{7Q&rg%;1#=2sZ7X>T)qZ;vCK zv)+;se55WPp23ZHyQ<1rv#l~`{M8={o%w6n8l|pg?E6>uUy?mvBTegPu4I1V;gxKS z!o5FgCHsC853;*nE+~a`&{d%U$=C1(3pNuYk^3ZuVCi%bpI|eH7{7NmjoWG*YDkrr za%jWFtWQE_F+^xihkIn%fEKd%fk)$;Iu?MlJ_yRI4_w*p6aR_AXLHkl*~Lq61)Qs_>#&R>!!NOkyCY z7gQA){Zi-kKg3uq+@4KltKX9t7o}CO6iAT6WzX9Hh4B7*8=&=;hyr)l4?45LGnAgP zxg3ZoLzCw{CQLA2^Eq92Pk+$eHSw_!FjN+(eSjXhk?gdyjDOr8Uc+XM;hp>dJ_gO)5bHo=(bk#3^bWFS7u}QNeNi z_Gg7$E&_dCeXf4wOT2xbeV)(WhA+Q*L~LZx`^;6@ui}qOs;>DT*e`xyv-r?2KCHI* zO(M_v-7EWT{DIIakf}mGNQ*=66diDBAE=5nUwaAw5RSv}6N$7D-KR_2*KueB&8$4`Ucn0jk#Jc@4HwDVAk&fkK@HGMW~^fMJ^^f0hU z#4GFEobF6Kguy|pDzVM^h57b;bAFNk$i!+@OqphT>YM?l7Th;X8onm8CiOpxp*w{@ zN8wDO9lN^chit=TMFNjxqw|ipJXecF>ydht8oV0bE+7!QVr)SR9)Ucy*6+uO{0RlL1phZT_9f49H44$X(fuDy>37xE@Ts7Use zb6uss#0E3A(o2FtYn+k;Veu!ba~PM_LaTbfkSDQoaS&Oy6iD>m;C1~x5!0n)Am4C4 zJD-dAqKJ5K9pr_q_I?au)f~b(p=2g%E+YzA2z$x#-8~vl{STrU(=POVajfWxS)k{| zClsD{Y;4TM6OQmffG6j@VFHg5PYclig$9TPR1|S#=nb-tUYac=$ql8Ay$NIZSJHvn zUp0(Q9+N$77>P$(9;%_Xj_Q}yS6;nJ$*@fkHe@Xo*rukNL*iu{D$$HSYC37C6mSf+ z8~>wRyAiDd!**4evHTO2h;Iw{!(eZB-vx<9i?T1c*3p`W2kk%}vn~8{og&eVKS&?C zJ~LXnIV&VNz$MGN+3KxhO>R)QZVmN3&T-A2iUkDwVw_RQ3i56|E8q6NJja{-ZxBM% z#vZoGK}Yru+pt&QXC+OWK&b~6_1o*(K}VH3M75lue~L7 zoRg`z3YPwGXFbjw!~9Y0hpFOdFDBEg%c3|eKX;_UWCKUDr|1^%9rLsT?HygwT2-Rs) zqf^8U$9DLI$!s`hW-T~if$BoDS-!=;#XrJ34;-J;8k+nb808Hs0I=OVs328J&c^r4 zsP~}~!4VdZ1+)Upxs{4;Q+jt1a>BM=#`7B#T^?wb2Y@SsD(@J74%b0&t8PLtLBdp+ z(Gdyup&th|yFU44c$Y0UYhNxeHil=%kX0cT`wp6`?UlNR6=(h*dvC(sHj<@j>!)C< zPiN6pa+XN#PM7DCCCXM?TZxj>?wLL~vP9XO)RtPjRCmvB|DN|oAR+()Bqht~?5?RS zQzQ@o0Ni_>aMMz8D;*F64xPkk0hG@U(mnxFQOiV&g&pv<=(K5}7I} zlhh-q-(;kMQRS}KWzr0m`AD~!%?^R$GMW%Cb_K})+4cJjP%5{9ylLOk`<&6fobl8@ zns%6OiN7Ee(=n6%Q@J-(A*b*L6snfH&NQ#Wo?p1{%Eo_7$%-BT-Oro=QxrbvWBB{x zGKrPu1&w_{vbGWkiNc6m(h&iSl?q7kdp=MIZN{Ty8~DcPP)&R7tNio2Z%QtLt`RyE zjxaH^#alG10t75LtS7GynfZal3f1gW;&co@3)uKWBh!dYNfEjl?%N*5rVPEWkiQBW zuAEIOfMd;YmtWL83xd>F)M6 zaFNK+-F@7iUt9C<{KjD5f9}4TS)5rQWVwh2tBH=hE=NbQ7gFRU179F3Y~uxCNpP&_ zWcEYB{tQ?X7A$3ta?-fTNeVJ?(RSz9C(q9=9m-QKW4gkg3pae~Uvrxf32tBLPqrD! z4^tL!oYP1cEFQ2XWC_AxHBg`h1Zs&e$omUnxW3H$r~NY!1bo(!cVAWw0#BYC5!%)_ zt2^0ozRHA!UMC4cMRehFCX{#8pIpEVC^-cN35w#u7N$ch&VA4gMiE3M8P_3v-cO&u zLgrT0uQm6#0N5?Yto?;ql`<+@Hs9rClk}WDVhE4l%U}Xu$Q%;S6J8-eF4GGo?+wz zmWsg+d+^1V{OtCo|Jl_7KgPB9pV_AmDw5J-H+=k5RBg@A`xx!s_irvPZ;}_T5b4n* zoRGOfzAbnao3nh2xSUJouyUi(*f?(O?6SS)7qr?!bUHaeMDzUZfIQ9+m!5`1R31_T z-giG~TpCN0fN=MaFS}c^?Om_Odc3zcaCvQKp}=I&obW8)Mc7#y;Ys`|X~%BNd|?=L zff0q02vZ}k#F8EeVBjR^JS_HFPFkpg2y+UGg za2Dmg>(*aoE4YKIVHFffmps+m>~>4prjd{E4hY zz4(E1GJA?8v9px@$A8$bXNow+392(sveu#en@9g9_fQ}Auj>RCo>(!_p~GtLs$uY4 zuJU~@IXwMnCAHsORrmAh!CAuW>zetnbK2DrY0zPaSKr?NUVDQ`2-3g|#WkUQ4K!L6 zM(S)w4b3~m6eP{Nl;GX_+iEtScq9~_<3NBG4Z9EN2=26p13BRK&0tBk^`!WBajw_v zvLF>(2;s=V4{@taQ_;4Sq#zksXfYR;r@+K?ieU(w2;XA^V_vFF$6i7-EXN*^O0xP= zrs^KL#WqzlT+Ut5uhQ=FC~H_aslG()r2bmcm~Af~AjS3<{Gfre5P>sp?=;q#m^cW@k zZg-K2X&&8{29T2V}F&5mKL{} zrk;a>A^7@86+$5%O5J*&3W^PTC#}Y#Fgj_4lvc2f@bc~M&i-aP@iAT)|L8xInFwSX znc^6pU1}JTk$-!A^%u*V{L9(l)!^{>9fjLZZ_m!J!4>GM{NZ0DB^Fv`6cySoQKL!} zn(QL-Fl1p}$MK(i1YOBe(Z}B*Jv1V5K_SM`G9oM|QRnXV%5$QwH`Xh%bl71;OxC+- z37VXO%Tc*r#sBiN!8<7j5u`=NY#04KV<0VY_a=(Kyb1wV5jkSZLI4PsH`hk^IdAU zQA+WYW65y(_g1+cNqIF!8J&t4jMxD9=>M)bc-noU@m6Q$O~X^V8jImoFn zH$*sM8}pF6CZk;Bv~WK1&?~=T6f@Gz@nip{(wv`PO|NEGIaHckWl$-BO8HYtpHlXe zB~MxIR9~r6mO0gz(bn>&gd4**wUTOpS$Quc^a!{= zv=5YiS?-2f0m2-?&Z)y#F7waqM;JTSL0-?W7?;)5@W!CT*54EFhSm9SH|3@I>F(-; zPA`oKB#elXx40r-c8LO)T+Opm2%aK;(!fQ3*=5dSUNBhMjI4*U z6xRFO-o6R}N>6{inE$-720kue_XafxKksh8CRTjJNgg8eir_&&-7AveOcHp#A=hr} z?C}3wTuIONUsR+H%Um0~+~d>;ZnAG;k_wB;ov7K3D%3F~6q^YbN&jW{jfHPC=M1?P z<*XrDrSLU;Rux5@bIHz&%)>Jn)?8IGjcpu*u_hxKj8>|GunO4rT>t=+?{Q~o5Gra` zRS?1oMPPmJ%Qb&onlPcbuM1%Kc>%C9RjYDjax<(UJA1EI0J^}m?eLC?S> zDhh4vI)3`SY?i&F8%%qNEm6H)az%viF4`_ZXvRslY7^GXM1rlm>#$tAlY4kTZ>Cha z5t7b-$(9myS>q-?5+F`fTmf#C%!mA+(6!ja7KybOwMN8pv_y)SChW9e`VfRbp{C8O z^|(}vcZ3T7@ccmF%R~U|(KoxI0t%V>dEFAkC^?|=qpsJo0OG^)-Uv4LON-FU4v#-d zjm%Fju0DZ?rAmp(70Pn2%X=O8q!6VZ7{Go;-F0O`6lo!T8ttjO9`mdmRw2ALIoVHH) zQk$?0CR(BHuE`2j`i}B=vf@kCmaK?3TbgL#Yp=RsH7%u0TnINsVCA>dOl!SYGLTX{2u`}yYLcq%lj!3o+jprDc~r>0fn$+3H$#Cytj(gumDO^#Z4 z5MNOGNpg2x_{IH6G3P@Or?$K#n-}lbaf!zpxc!YtSnTC+>u{!qQMOgxtn42N*Tuw+ zgxST#`QN|#+0^xy^F;qQDll_jG!cZ<@tn#Ug$ambJ;Da#@0(BpXULRBb+?C2vHG8ll7eA0_jVPH*1wDK!8DP_L= z%AB!PjKYM-QD_8RQ3MnTm@E~tB;|xFaMFNN%Z~@|$(BX;f(5lY*`G6g`4eLG>?X)S zowgtyhszqBf|OiXz_}}^FGl42(76rBu&u1E>?+I)RAeaI%A}%^q1@Y)yKh6|2lDD@^nn!CMDK6OUa-Ob_Emnp-x!*6QglBD|l@t^;gj3;ck|Ne>skf^zU&QVDvp>uJ4 zxMYT5G3tI+;Kc`xh_SmRO4|$^G8f0{tG&>g{fK_cs>z zbpe=`NyI9kcu)UCnZg8C!jZ#kiu@`fd{{^DXX@CStO!GjV7R4|)Nu^&?X)PRQ;3;F zjKr@&whUL5xP1$hKz9bC_Z|ryDryFC^zj)nFIbZ4(dps!b++#X(^dNwTV(rjpOv0b z2)aDV-C-Ab6{&*CsM*Qjio{-XveWI-t)EVCKix_4ZV}hM??c-E^QWm#)LlJ$7sub5 zTL27fwBWEf6I;CymC{I3$IgOD{2mzSKv_==Z9NGBl{cIImo|%oJHTOq_x zSVePYhLn%m-%o+{+k3BfGDV;l%8nvc@}h-LW(atnXfkfb$|qXHeB1w*2?0kjiRB1` zS}tcQ3d9Dm7C@rztVmM}lh2pUeBKgbc2_Y9DP|~|?6SP(pud<5?Rt1#T9cF z->SeiUWmxY({yJRYgCUYWmPKTNKtXhv{k86 z#mNQ9IW;?e06IN=t)g$KJ! zBv%+XtqTyeEiNux5{@jlvtT6lyGyo`)|*G!8z((4APfxNpLcg(9ZhvH$WULMg6UuY zb?Wov8rZJ#ZCDh<&?iorG)2bMKO_!pyDO(ZbHqN-=$p3?h_;?3epjiv$u+3p^* z0w_ASOIH4b47N;6eU&j)A=q9Kok&hwaZ$pN_FFBVl?8u%@`U1w=Z8;4E}vn@Hf2CK z&>Ne(Fc}~#@zeUutDWA)o3^a#$qr0JZeK^(GR%BX6^`95QzK*MGWN!u^ozK6S7krQXgA>=M~0XSgrr$2Jg2(r*m4n$)Dj)5{Ns@glEn04der&hF%3k`&qov$9xmXor`@PTBOb z^Na3Hs5I5t+b8-jgN2z51ttxNpg0yWsqg<_rl3H%%noEgG1MK;C_jS3W%~t&7tIL^ zaJvWh+^TsMD^gtJ`sO7|uOjbLsyJ0-^op~ua+V^=p2Q?9FpQ@BarPWtB7$F?=G`d_%a9efGe~OiHCm8^1p6MCX6T;G*9{#c$~B#Cep)9Br!He}@{8tL zDPs+2kV&(WdpC4N@4C?BYqny9p($SsXQ2Blk%EEf5C=6#BB8_K2nfLr zB^aq=pSLgxG&Hm5z18mSK7#*@cXXbR(ObB_XQm)G*&qM+%^%~#{0w3oKtimYL7j@3 zrbsCKbTcSKYb93rNMQR4Y=A`ZG?_JQ=*~N6PWi$Ejg z&Bq0*(IQT9c%a;g8iG5=Ds8ZImY^3QL`j`dD>aQ7^p!btsfC04^|b%_@aii2U;h@n zV~P-YKQ%fOM~7Ukz&j-q;V;Ib5k}G$!|Z)yJ}jhu>|#&|T6o}Oi$RyvFNVrC9nFGC z-7hwA!h`R2i%xKR6}OPdLUsyv5(!)`r6h5}nKn`=S46bEc35^9i;-2jdo}pDdv$Sh zK~fEKj0Fk#8tIa>CsEnu0y2e-%9w4co=#y`!agvA+DldQE&TOw60<;H+YL#fXr_UN zBB8N4Q>j8)8fGIlKxgXm77yj&m0uv`H*GM9DL6h#7t-~MU3osa%? zy#0q6-&lXEFfFEkjr?IkFIf?L)7>{XKt2Lp^~ioFt1Qwg=Y($q>{}H}VjFYBx+cR$ z1gu&h`Czne(V{kHzVHaKNhUUN;t87N-`psV(D(H2g!Ro*VzrrDp$fip2D$u*~fKk1X3+ozmCAM)1+!m3YNLVuoijgY&c!V$t) zoOjQI$-@~#*4x%(6kVr9g$FYOoB47n*)+(QVRph1p;Smo#Laj1E1^2(=<9$v8k+iO z)3#IYCQZwi;#Ieezd9}7G&(p>Qtc|1m=wfxZJ0B5F*08EL2ZjK7U#qE;le{jN-R8R zq=en=tM_3clFj~(z)QcUI7iMb0ui6kOg@oj_+;MrME2(sdk3F5(fDM^O;Re3He4I_ zO{1V#sUhb}m;}(^*H-;JVh7vaBvGmV9!OeM1a(g^%knO;aSqLy{eVXJHgoC;r4p>P z+tk18Jl8UJ$OMUaru}arX_VP%^rlc7XbN@D!M`EA#jP{Kp$Z;%^r%X)TUjGJY-jH+ zrVWA=hK|IW2Ab3XVz<@=+esbiar=59c`P-h7&v?o_eGc^yGK-LR0vQ)ayai@is6lh zPSl7GT1E{4__51IaUL%8^Fb+&y+C!4)+guuVQr!0G&$;sTnS@oGMX79?vstvb{2~` zr(O!J+@9SYj!Y(0y89+VrGpW`H%N@bIQaR4-b?JpanA(Hjm&P^Q_3nA3VX6AE32cu zJPiDPKfw@8m1b^ycgfJ*E*VeP@yQp6mnd*7Ri%k=reNJ^H}dc$-|`hYVcvD!?F z2+L`#hRCnE z6+m&Yu5(v2R>t>;novvYA{j3ir6?2?2Q!UWOErex^`iXDR4~GnsaUeOqWxp9bD$C~ zTlun#L$qerK2129g@3BFc!~y;8fya7Y}NLV zP^z#UTsD4RRNYFKBm=e(U z4dyocIJh3%19LcV+bz`H=a+-e&fPKZGbU59_?Txgp?g!)b5NQ3rAZGnJ*> zWREGC;tLEYE(AK0mPa8acOFaxO`6BKyKC?xY){ECSLYtR=6jdCvDtmGvideYIBqs4 zZFPi_8rOLB^qLXbBIm=TzT!u`r+*ocrkY9y=v2hfKuRAf8Bl#NcdF9L*u*xuwHPG@ zD%!Fn1!~WbqPdv()GGHJO*qI6Ejl$L47h8{^r+j`oEeEGH0c(5OQ9FWTOo?BR z;sN%o72=l&NZX-|w6bbU^t*2YrZ8^CS`%p#o;I1>XLn7+K9Pf>n45rSr`9)i@bM6e zk36xo3}g#g1%(rCYvo^%>5}So3$A2cdp^k|P~7v{Oi0IM93;PxJ&bxsyqd9q_M(7r z@G~hJh}2Jfogxa?XH#3bkUX&O{5aR1BM)(Yp)cm!f>h!&ZT}bMY5t>O&)?UyZeM`?Cxy$ z6s%Dj+w1Lf<0~(bxy{ZVMNDYn9WNjf3jI}O@-o2_7C+*+hpkh3Ig7Le&`+R#0a%-7$0#+Kyi@18{01p9Ogy-N!|q9>i%!+ULl-^(xsuB z;Y_XAZW{{6_@#x@f_m+6YhSbZU-|fcW#GgIHPAYid5oV)n$r!yl;$i;robH(V_TJ@ zVh8cUunaBT0!ZvE}#};u-`(!+<5?s2Ute6^sIDoRM@jmh&UZOfl^5V9al?eSF`hd!U$<3f zpj8baXD}(h%NOrdw@A*fCXLe(gwQe1DN;QY8*1G&2m#Y>T%;J7Y}wtW#zlK6vG98# zrvPqWBYf!?)cVtDRCqL|@Z>_Ojx|t$FToRf%!*UaSu%H(TW;mNpW0DMSEABQYCSaS zu?)yt!1QJmgWv_fZxXyTaf#r?Pt%=Tf2A+&VqYS_4|X!%hT!)g)|PR5(3%YI{AeEq z^q{f_i;)A%v>7}K`$h3KQh;S!M~qx2XUHI_KtLBuAY_ra-ktrOZQR|$y(xH^S-MG` z1nNR56sts85(I~wjQjie$&GvT|D;?mL zA4&&Kt}srNj$B?)qB`jo_bgvRcxd^i)jOOXSC3S?p<7TcI(f=Tbu`F!C^g^~Nc(Uh=_dk;{14^>d=rs0t_API!wq!g6b1Xmfe2&+R+ngX18&1<&Zc z-Fl8_DBFDEFS(QkgoWCzd64vl!-kOeWNG*UDe) zW4zvbrHnChNM2?weR;9Bn>~A$r4gs8wQsR7F$8TPz_?NM!Ya?SZl*t`l7+>vVlTs^ zR}LSy6T+Zz|DOsYK}fDypL&?#x{Oxox02$&#)5YAajQ3%@AhVM6l%vtD6c^(>K2u{ zrd$*zP(LBsH>?6T!W6B#(^ke`{4K;8^mw(NVv0Z1 z2STj(-fpjk+=JIEt6TCQQ>nm#9c``jguO0?;SCJI#w@FXUyMHF%qRSoBF`LU$e;Jf zQndOias5innP1Aty(_O!xb^BzPg3_s1e{u|v!Sak#%CwO!4;j5*Xr(+}0lV?p4Qgk*Ts)_; zetZH<)sa=Tdbq`AIWJkb!-FvbmrGMv`E7q&G`LDt3_(nVZJFg;@cP4>!Vn)s{K}}i zzEd9|P$Cr&T3?evR6vnPY&*S!U1iE-%d=C290sRIqNS%)XDORnl?h~Jlf}?F?ZdiT zE%*1&Sy3uVe{-aC92k$XA5^Zz{rcn-tLs`8Ej&+Z9W zO`dW>PSZUWwV!r_zJSS}kd#7Sz;?t>wJ9{br6}`1T8hm%_m<2!-iAW;KFq%_HhjWbO@`(CbBh_gOLqSo{ZIgmD1aCMo zC5&vc;|cFfSB#xOT`8p1@WqQqb8^23$>q#H&&)2olq;effswC}G_I}%jC^{WON}*X zWGh%kTN3PyL*~z)Z})c5uqeaWsato>go&t8U3d4~(klDVB&enqwj#(Pn!aqIQw$T0 zu-7`p_H}`^&2E>db#6C|H3>%uQTwJDBD_Xc97F1J)sny`Pq?)g%bQ|@tYl7@U%n_~ z-&Mm&T@0>;S&m#jymSI|Ms|g%xFqkR?YdmSY;Lv_WYm|cZX10kW|m?kyv&V-fvUY5 zZekTwX+^(RsRYd$Ey9jK0qS4fv`U5v<4|xZfD&5f0nR?3ovtcv<4=#WKk)s@;5Y%S ziQ5hIhsNy&bINnw*&@lPQ69!oi*;r5=M@SyK7^nxdt{Kb_h0AhE1Nx%cWhsh{zHZw zCZfT4Hf3mrgCt)hQcX`-$9e*&_cPiNpj2cL)-)+m3A7@7u3#hINGepZMwu)O+C;G( zT74;N5!tPXx;m8B2}!uWO^N)BqRO>d6YvhP9=+Y7ERY@S_zz%3xG^GH}4-c4wuA#aDF>8*p`i<%rZ zltLW{qQlpp9Q4XdPyj;f;zSMS@+wK<^;0R$-b*lo4RfzOMZI`feXrYnr7u&@_qJS= z@=LvDz_AeaP*C1Mj-rC&?bUf!1m(N}nJ8@$QQkER!tn#D>p6qJPhx)yy@Y@Pr(k%3 zS82xR?(L``=)N>WU1XLEcjeRUAbUp1>PH!cE&N?l>?5%4pFH_O)$5zX_la=fIU%-9 zz!+;;p-#mx7c2q%G-l{Vn%8*AN?qYCERq~c!lyIbL=n)}hv(pRH?dduGEzMA4 zb;uk$^QnLMi$gLzB(&*Oubn7;VP%6IUcaMv*k(bRpPPb=zh$^&d5Y^N z?ssEo?7)I>ghg{dhDKufLozgXySp>A@D`p;xm38xw0}eR&%zxZO#6401Ih%^vb2eG zFuRYle<=HMca8G6O1xZ{$m8Ay#wZ~dq3eM?f#uZ1ofem;wpL-e2ViMzOQf&3csRl` z?Oo61;BL0((btq{eGN-I#CnP?@4Bc9pCU3!I~ApKaMDLpXYX)m3=+a;a-G5wQ(@03 zX&gmFu!=#T%4od6tjy)z$AEeOwp~lr>gmPw_0P8{TA)S5k3)BW zGYj7jWCvkANYM39;s|0xF=IASNczB-357wOlC@bHSZ>T}a_{<)%f*o1(BsF2+ z+9ED6TUJmOTFnXw8DN;enM+Y+lEhGS0~rmo>`v4yjRoh`E9?B>vdFC|x?3xVVvLFm znd=CSnh}wUX%7OV0FdkY@MAx%$}3r@uJ(_E@NLhSX6rf+rT+PT`6<@qegd>32M4f_J`Z^U(PQ+ohSB+5rPdG zXYd=j$2V|!E3}g59}Yo~y>Oc##L8b>>8!h4j-*X6hQVvXJYLKxYGrrb5hB2?UhnO; zUKbY>{!$_o&;(np*FVgBUZ0tH^z7NvwEw~PIsZL1xCdHW1I^^C$^dh$WWd$d$HUXx z{-ezP5ORT1R9=ZI_(C_+H5jB9G90RO+@zXi5Q1EmJGj`W$R@b^BO#e0JcKM?nF>Vb ziy&BUB;Ir8Aw}uSdf>I}v@4!8lEcK0@eA>GQJiM7mR1*G(wh0_bP z{r;l2>V<>_=g4QendyCn)>P(q3kwxyQbW$g;HgL&LhNwn#`142hXgjQAO$QzT^rtYbfX zUgj4iiTuBRoiu42l#1q`iPZdM+kLOv)00a00(C*whwBQ~g%9-~U>81+Bn0ikhjapQ zMxnd#p(_+xCV&?{bOjJEeCP^cTnXic4_yJy%a9fU?b%%KQGRXjMOXNRDN#+<3^LX~ zESyybEAuOCzYGm-j=hVEn{8+TkX3`zNv5(xpjuj; z0~eW+F0jb87aAbdVcWz=6&4xs?RgeECYkWg75XSd=Z9gEC|M85B;D=q&LqQ&`uQ-x z?@0r9LDg=4hs&=h4&ZJ)Bxx#ymUXY~4X|*OCc|w|$hjN_u~gF?-Wo+X zicrlzVjlV$DB&+#hERjOAiwILn3&)fjMw`8A9JLJM^#qR+_0tce$tjm_QMHVcDH1J zCX}_pTSkq5c(|(6?o@)=WkZxT#9pC1Y+yk|1MQ;o@9#PLqs{@6?(L7^B;17fW~=2> ze5nZYo7CmC^39<`&fZ-YlSHxTgijDpE zl)t2qGS#WgdGqx4Tvg`?{^aCzHgh|j&2^UNmKPQ~%k#I-Vt2yqh}hRsBx?R*t1(Bt z>_KJ`!UEHyw1A95<|YT}J@2*fdME&9x^R3KesA};>M{3?N4d#=Ao6p2A&0)pTO30` zTZf90CQRBz&E4{jOMnv)HOHAp|7+&o6pJ(S`GmrdMQykqnI6Q-)bKfC%W%uCni`S&Oj^Y{7FK$h{&(i=walXX z(q;b;guCmExCfOlh)?ztGZ#{xt5Y^72=Z`HW2M-C$;SU{o2d(69?YmWMdnm>Pq9MH{f7cuDQ^a5~4Wx}{JPEVfnKOglkl|ApPwm*3y zjE8tMkx|{CU=q5+?xZ@`x7nWV#zXtFy%fRq8?=Eq9Z{We;hAI)JdA<8{jlX8-0c!Q z(RF;R7dou6vYb&5Ge42!5bhX-A8d|2vj5g>DU#yWbBppZ7M|=+Az_#-v1^b+(1nyH zhBg~#K>=ZNBcKsLIXF9UC`=A1PZykCJ_)d zmxJB-VEP1}E@iQag`3hoWuXG9$ce7z3Rw;FszsuB^1i_q4n(>Z7s*XP!_$^2lPoVO z6);UWL0W&GKA%25IjadWPFju3@SMx+dOwe5r1Kga)YBJhO!c;5o3rG$2imI&xo#35 z?vagWw@VhyUH7W8eA>WeQ|TAc)um}~K1WV4V@NNq{R;J}n0YH_7lX@3d1;mnX9Y!m z>7Ra4(i@W*qd9;!>L1;p+S>`_zGS!h^`NYn25eHDirAzW!uXj;&c$3RvbzOT^6~V| z;ecQg_dT;8mdW=LYlc#@Ru8~4-I~Ra;IqnST%zB)E%f!ZwGCXSE;?j?6}eIdVHmPd zbq_EPZLCWCCn0VNXbDhJ|F%jGOe5Hn?2YRuHAX~l+d5(}7Wp<=gfD`OGM`vFiL5`Unva z6dnwLvde+HuXSSFkW&k|n*|IXY;PdNC=>J*m$D8%I;>Q`{EBChw`mDb2IV5)4qpwv zK>YagpNsXH+Gv=1GPwvmUU!>3$Yegh0k}*+NK#>sS0z$IzfJ)N#;+v2!RSgmgX8|xS$>piO6DC)0^5#Q}QR2T*PjZpmU}WntLl(lAN-+7O>w9Z;7Bcl-zb$A zFXjkhu7T~$D$e&lHA*axU|hhsH40NQksRpnJ0u7~lvV7{!)6#1kkY8c4zb{>e+*%dnH%8t?$q=rL` z^w)Xo5y`mOC3T9?_n&0kGb^8t*}R9@&TjTj&F!Jt;ZK=+tR3_VWPh*iJnCjc+SyKQ z7Mh*K&OIl`^r&JWnCdzaU2X0*HSVs-%)m)xIy4`6mj0+&{~ZA18`givP(#^#l&WR@ z^V8OUV7$W_D(&$(DXVSe1b330;6M=;8UrF0O7RdXQk;|Q!7%OjXYd470(Mld*Tqm|y4<&3ue z$u)No8_se@p$@7gw;nGbd>)(w+hA_AZSLnpJvPf4SVPskk%fELyk9^_9Y+S*Y7_=* zA~Il?JVcrEP7)qXQX61z3V8%pfvOk}vBGBaZE*UQorQ=b`R)`5uHZ)4XWR$c&a?L| zGAbwgxG`3nyA83sYqFh34aZ#Byaj}5CF6bslWOCk2~3K59b2m}Uu26*Q?H-9j4p3D zcLtDFXCB}ApF9)+R2Q2^_f2;d(Ol80n+IE%+)bJgsKUvm3*XOZCjN;PyD%AUheN7mpAD=q4^R#>A(zCo{L4;J!`^jgKL z)X-G|gc{#FuM~={;J=< ze13X({>$}R|K#xY^yalvu(H;lAp4D{72E0@Clt7`2wJi|_S_Pf=mqANv-u)4+zW;Z zvaZiz;!N#q7>&Z0a-C3=LV0}rc%ps)DsI5y7J+GgwjP4E>8fTG=y-@FWI@uE_g;Yq zM0PK)YW3nxptZbq6zZV2KK^U`8jSL(R&5p^%jOlNTUnZ4SZ}wxGfU5x)|O}2J9A5&xtaFz^F(opdNal4>hkGLOsnQ5@S7iZ8s%=*B84qbRe9mW6=gTRZ7Hi*ZI&ECxR;K z59|+v-gbDj@%5y{RQx46MCfG@6=uw)Tma*~iVgQ47VVM_qsjArHOqx(jpY{<$m+h70l;3iwZJA~}HyFppC-Uc$le$PbD z^gtZOf`|kn8-^*IshK`T#b`qzUQu)^T(^l3L^7Ws8_XvaPWU4!tFflZf$rAs{@X__ zpY|cx>(!S#&;JFns}5L*G@mV`EihsPE0lV;Y^x~UYpJ>V_EN%sM3v?iGD=g4B>5GC zikAGs8xh{bPd`@M#>BwcQeL3q)0um)mp0ZnNFqZh1c46{__M05h@tQTDlTWW=^SKN z2gt6$b$$x6T>m)uc)Um~3szX?ph;P9O8>b@yrwxmWsromEWr7x0*C)3$(p& zLs{L8Q_>nJAG@uV@F7c#G8lALaI>(KjVlexBdEq2;) zxYqn|0+@0G!l1eB4){= zUz%B(?>}xYY}$QKr#{hrYE#{wU9w(35w)HZ{dG1t$0&UKBS*q%--CvTn(Wuxi<`b7 z5P7i&U`JJzS73rudqQH7$cwMBEu+A5P{`x!HPB^(zr%Vh2&uGFS472)nJ=u;%HB+8 zZ?lA?*hqHRQp1zLQS>}M`IrkNz%22C-c4k|JtH=)N8Gr0!@u!%ME)!3XttBYP{fGP zfI}Q#&}<)Op>HqEr}yvfDy)Q{)1`*=C!LDc2UtHpjV=f!ZD)5y-rD_@7wtM)7re7T z+(I7njW?=1q7o!;4tjf~5+o>w9<`Zh|H8|wl#u*ocXJm3qYf>k2YNRiv5ht5T`Rt4 zaLl*(*3nSfo*?jrfEMSBqKq?`fB7%{FHBFN);q%vUVfmhP@2`n*6zjW;OGmF?i1L? z+RdJtF)iDFM%snS8E5;M>PUHX-~Au5kJFh42PGixeQqD>_@A-?wViJs{kt!yR3L~R z-h6oS#Fe7*Ag6XeZe#7IGuH(S7;=;}_oMcq+36`oXU~t4?$vj|xBIC8S}m@l8(;bS ztBc$7;|ZQ`?ULua>nhJTK1j7EmeNL%bzh3{5!x*LSw&G4je;d&ClqOgtx9)ygr}pEG{f{ zH?Q?~vD;lX7h?{8Nl1QV&-L7Sz9jezC723QcRFa{6`-l{NK+%Brh-&Zyl6)VsFZlL zwEKY7TOj`XG%$#9cbkD0qkHq5@@T2nYr^!<(ek8p@XG~uSDG%))QM-oFIOv`1#uRT zeS8C-6Cop>N}?|-i*U3S0eE4tiVMcfS_$`Uk3dX_u{H)juT(xI;Va4lX3N3_GK&Hw z#&A;TsHi>>GEnP?MSY_DMrx>6;%REA4>Gudxohtsc3Y~|&d>5a%yb1X5t9<<4=sG< zt$8~@rM^0ZCxr=&qFYPcn_6SmAYL0~1B8)8HZUqf0adN3f9>7O9TA)#uL`dMXlc`{ zbO@0zhJ$DG(_Td@6s*jRo8FBd+7uPpWo?Lx=nyKAWYnNF=ea=41 zp8XKt%J!f|{mit72Ej%B5ENIyIJ?1!@}67~#P%r^I0F~siaJu3-^UVUtY=xw*<(hsx67wM$!VTfL*|F&n7+Ux{4hZ-T!rG#`e z#4w3;#26;nD?gKMuZdd2FS$aLO}_qfwNjeWG5~3zas>_EPOW$IgY7kZohsFo{+Q}f z0Zs&uJ8kWf0v3P735*-NAocF&VugtY z9KZ5qjoTFfjJi9H*svkUPGI#Y8c;qQR=t;7T@}bkDZkg`Y85%thkwj|_#r#Wp7QBM8&n14nNNRxbjE2{f|)S2zfS?J}TNc zvzMZ3!1ACt4`!fqO4T}P#DFQ^?7oB6d?#ZfkX(vP5=>tuM;?gpdo}^Cs+s}*9j6rxOIYq z=mQ2JD2P5l5Pian`a}ct7a;qbh@)KC*cz5?yDny2LQh$7xfz`GFK%!0Papc{=)6b2 zP^URJh~xMqb7RdQY=A0T+VeFmvOTjD=}N*Q?Hps=>e<(^+$9kV2kTem818q*TWr?QWari#QTrVV)rhqjx)FtjqEx$=22l+nBsff{6P1r4OKIIM zCf`=X!XmRttqdUe5CxIMTLRFXc6B0wL(wl4MYRU&TL`{{@U`qT*5eJh?Dozo-2`I} z!?DO9sVr{^qm$yhFAT7@LoTzTt;CN`z24~lEGB=@%L-Y>RY$|>wND;>{`@UBb2BxP zYbzA*fUv_CbbQY|NyQjGM*QGatT(2FmrCK;doM3Aq{KGF!Z0(i@Z-Vt<;8VhQIv-y z!A}hfH{NiJQXg~*a=lKe2|Rs$Iepc?CORzIZl9U~+2V%xvu7C*>ul)EwSRhj`7DIG zYe1+mXx4gcjV<=@>9mLV{wo$zyDiq(pKMoo|G4vJ7C++p2*P$7(Xh!NU=^aAPgWYd zTv(}A|zA zx7bBRWxlh+&n%|*ASaP(r-j;mu?zI|ic%$TZIn^wF@ghUD{FML}u@jIqWjmcFS z#y$SZBZ&glASwY*QIeH@HpIzF9%TUDTWX7(suH3#>k`|$CL^DrF$C`7H=vN78rg_VHhq|?H`iky4xkRVnUYd;*CAu9U&CbDAXdI1q(3jZ!qtZ0tkTdTzM`wyJ> z*$5slH5`>2iXugv52RwL;(R2&kznkQgQ05pbe3gO(ZhlZ&4-U5L=q>u@_Yw%Qgks} z-QU}6{qe;gA594;DtJ$~1j0C_PjFQEB#oU~r2e7wmJk$!pnW-ia(Dazh21wkJ#%9;j0KVm9t2M1zAjFoABZtOq8|b6b-~)tR`}HfvSX9 zP&c-B5B9;UnxAqc3T#=kZlM{ifHI3(R3waqVU2shL<9kP17yzM%wef*+;ZcREc@9?sM}AO;GiPY4}z)3fCAeyir(`grFh zB-AEd_wp;^dF{T;(h1pf*NGuBs1+BSi5E*2LknfUWM#qf(0x-Vf=2iY zc(bAi-fkmE$kKmGv)k*$J*M4^!tsc-=O>gZkH< zFRUnZLDLNK(fx#2l{+72?Npn)O|!deGR@)g>W&M%x2A>h7d05gUg(?l8qP^94A0-n zv>;Dq_z_o;g*&tt2p+%$R4QUd6sMVAYx+=F7YY%frinK$jOnMmy(QB^)E67D@uf)y zx+-lEvXWYBsza$tjaB_FwsE~28<1tC!At#g`?|=U12q31O7HlunzaWgJgk^c77d>) zA3l*C_#_&TPxcL;aB4nbtH8mdH1NqX<9*MVBxNifP^Df$zM+ng=eCz&{R8PmbrZ z4lZRogrt4+Oa8upBd0dWa3;TXOzKm~5j16!`Z^}{0qZ5V#Z7yT=%fDC;E0NpXIPpy z&bqVMoe4(M1tty>Eu!yM3;or+IR@La0WeKDApKwE?3hW?JpA;}C^~cE3>d*lf0OCA z8;9vf#BtrL=<&YK1UU}tv57iOipfTAWm6Gc3QNH=xoQ?w2dzMy3ZAYXvcdJ?DI=?& z#j^9F6-;>8i7c6GbjU)j!WUNTa-%XuxuQguT25oPe1|H-U|ngK?Ag9ZvxDf657r#hCi14hJx+TI;fv-9G_9b!EG2QK+*MAN6VdG_RqD?e*-O{)Mp?n#?} zJ%?7e>%8(aGexKes8DP9>Z)0(x1Q&l}RSxahbB zJv=&sI1Xk5G&|UKk+*~%VT+RTl=uF&x8FI<+CR>LB#lFCp)Q$+#y2b7Ps(?l8uz8G{fdJr@;}>`i`19Hy0li zG^BiarjH# z`dxrpX806n-Gw_3IJ_`1Wuf=KA#@@oizMhd8PP;OeVBk~@}Y@`CLNk^`2Arh5L3US zKpPgueMM8Fhdpe+YeY6VAAa~1mtDfP$gLB`0_Y25zGU%hZ0scw%(zL6zO07C7E^dH z(b-)~IUD19P#75w)-LvFNI;UtNa#vK`ca~^He`OIwc=bYSeVpS)to|aB_(t4vG0QQ zf?XAR2~iv{Qwt%-OWtV}sb^*xq12D-GPuriG&DCWE-Mn}rZbm8cTjwJ9zro-ZPYy= zsqWZSIEs7w_pNb|MU7kv%EL?pm94{26ig6jpySD?vY4YofE7F2nxxqkA=bPC0LzP{G zD@D3t#al{-$aaoU28(q_Gq=UqI@6h8p=X8brR-(cY)*(-9N(~6mKq{*X2AkUx5^UR zMRv&iywBP^!$^2>lpmgxu4P~2oy+X$Hwqp3U9pU?14a_$IASJ%2oj-YRMwJIhLe z&B8l+`wvM6gorw4QaI=RZfW2sYpm{Cf`#qAsmAE~R+%7ou!F}vXsQPkQ4$s)9}>^Q z(<=ts#bNun`d4nw*eiyxb(-@0>W#!$>R#erF|vY1M!_w218;S2pH2+*0+2{M9^bM| zzy5J!S!8-d?EZhExNOd*cRYM)QfFJ{)6@syR)u9dl6Q=@Fc)XznvNUJ`-~O>K2dmJ zY~$Q9)?|1m?GenT{Nc40wu*||NUTLQ(*m&%H}_|1=ypdXN{7VCPxAhF^t(GvSFca%F3?kEACuqQ(M-W@k7kJv4pH7O5gyS|&02RQ4yn~P6JU^?V$2U}ZjLHXW1AXTvq zR2#wU&xMtmAwm-K7Wx&XIozjJhrSECOJnr7j#44YmLI;u@R2rIY7RQfTQO%m#)AWU z!h$wr)ttACIg5rh4Y=Dqze&^C6EnnOA~HtmRRo8Pr*MWJH_2+ghtX-OpA12orLjl3eHS84bC#IFWIt zD7v}6ve}~|1erv7oKpCJw-cPUpuH=H$O z8MLj?g@m##C6vu_92bE>0t$a?okC@#o!VY7!19g-twPZiybLswi!pM4*&l*nv<#o3 zti#Iw>vb^%;hNzgLpj4m)!hT^uH_GHdK5&E8yAWxqM>`8HbJHhVUe{#rtM)g%2ibV zZ8G$>aCu~{`GDcSdU5$>6R$J${_0CmTZ_f9y<$oJmDOQEl&(@)Z*6mxF(SGGfA-&H z^mKoGMxB;^%0>bm-DnM_ulv6y%QK$Zh{|j@nElf~WrIvtKxbuIQ?0DO9c&O!xlO8v zlB@yQ+E{nxPP%LOt`2W*31cI7(HE;1PjJ8esUMic#S=NM+C&mRv(H!-PD7xFfcht- z096sR!839J5YGGSX~_N6#kI=HVVOI+BGT&i-Sy4j=JuxV51jSS-u18CkA`%>>6jaM zf=%z;ArS!CUkfBRu-^Xb7b5r>Rq z2}_hg=fw*_48n6L4nxsD@;iMAM5InjJYA$l@hS11-R)&e)aSSP(dW37$SX@DJ7&o5UhGz`Q$PRQ0A^+3CNW0C%aP(|>Vp!0_8|V8fDqCbcGF!!g&Om96Zm zro7DLX$p^3kpzh?Xu0*bN7Hj+od)wOk^HAGZ~t+Fp6Uu8$`PkGmc*Zo9_W)`MY=QLO3(KZ#c{DYBWSKqv0Uzw0r zAh3WZfJ>R!{n))gIs>MjP9x=ZZMjmhAj0f|>o{iYV zo?$IUJwtHQW;wvgREGC6PCFbcd0NCu7FjrJJ(l$IT#*=-I=t5Ht?tFN5B8{A!Lvb^ z2m?}_s9D;sem2ZFhzH>+O>cYNC42>z63+U44kHeSqK1UGsSWB9n1tY&3s+RDu*ap4)otee?;x$x|6$wG0x9_zw` zxaB8ThesahA{2D`>tEvlgt&(`fpfJMID&-c#j%~hi5$VtGFz?;;^>8ylv1CWI>4|4 zwG$Sf$TYS@FkZaOtva{;_ZL@R?2M83Wh3v)M&6g_r#>BBpQ{+It~3I_Yy^IJIUseZ zJ}GNM_Ay6Ztzea))L$#ubp;E{#%t`A!q;KVoxKCT4v5u7p_cbvP+rWz?(oeuz^He8 zs4C)sjU|45M_<55stN9=pfP7 z--0s{rWG#ZQCf@AV^5!EPI!9qq-v6W^2Akb9Kb@G+od;w@@?rd^$s@IjSgY5*lhZy52Y;_na ziR?EPj?oj94mES{r6d0K!6ppIkWkfD_BKe}kZliJu8eQfGTo)olR=OR z?-q{C&t~{mb3A3I;0DS<`)+VEwS9ZGg(>Ajf>&`TuCIg&FImmV-?n?ma=m)ZqD3ta zbvjE&tvqMwpN&0^#W42Oisn+*DDALyAfUF_-Kl^|wn+kpX_Akhof1SUKTE#lYS!ew zb`7tqwYsw|)eC7r%WYxGbRVtQJwMJ6dk4uUySnR{uK{L7Hvu`plxnyJ*_7K?-VZo( zV`Xd~%NCn0)e3f{f|InbD5*6iBq6CK8A+1VN-0Tu0Id_J(p@`Pg&k_8n6ltrq{NOh-@KTM^3pS_)3-grSOb=nl%-IqU!m zZ!9Q}S~+Nz5Q0(wJ3kXS$i+IomQGy`b(Camupvv>_i$T)mdvadFgQ#fa6! zK9O#u5Xp+IIqdDKzA>dYtTrJVeXaZa0Ks|BiwbX;QSj)zeg)h>EduX(t1v1M*tBTtdV6 zgfa%|9pz?JnPz)%IVTvQnb40Oa4anLoz1xE+*{l!H{x5RMiiM5Va1FXVGQA6fD3GC z)SR6?M9NGEyF1aoLp3M|t8hk0PbB&X$w|A|TYfY6X{tHy(y=VxQ zTHnc`IyQT|t=GkRE8=<_E_`iGg%>lCt?dGzcV(1OKpe$DwG%z7ZHzCNKCYWMN% z>{>Bt5?Qtt;X(Cw$5uBFU_p4|6lU`puO!B|xLnL43M`OSba$n0doUc9vp0IX%8RKX znRi22n-lcAc+;HO7({BhmxXb=l}TX?YA6)~9bJiHjkA3!ezR&5ifzpJ>6(nPe$pbE zKm88g+j)M_Bk*Mp=p|pdZpx*R1lOB4c`A`ACm$61*9xA!J#fb>uy4kOus_tZr{yVC z%=5FYk>@pqHtbbfD{dw)I?^KL$PUk@%?56Ida(+^er-isC{jSwYq9BdW9M@q*l(o} z8JsXm;j%|r+K~IHWPv@}x?wT~P3S}BI^o>cz849>50WZHIfh=?STB^z7X^EhxtIj` zL=sWT)&>Sz=G_?U$?4$w=JVmr%@rb3*cMLOo5SOIDW@U!j3Z=*^V`e(^5U}9|J*+! zoIu&HN2gfX&icgS!l92ZC~O+esy>^s)J!~;L0>rlZ_i@53a3dD6PXwR9wIt-x(^6f zzXQ@gjIH&F*1)M& zV#40Wsw_DqS(25hgv*ALQybe0mgTYr3e*-AAW;So(N{KGhcKb}-$7_2F*27{rx9~*0e4WM?#?wQObdJ&y zCdO!IBThkhGq05qhcegTG0>^#F;Iw#Fp88c8PFR#a=cz$UR@lqpxU6K$O3}p|2^h_ z_QK`i`@V}>`#_*Z|7v4%Fw^a}XHkmsa4y6|i1B!dK|I9@GgqYwp~x=`&apY%bZtz| z&IsUGd!3^c11=&)P>a}djTe#vf*<{2mjiOuVr-&y8f${#=-VGCd@4-HoLEtKbqL#i za4619Db$r<&lMkNpm3y8cZn$q;2Nt`cUlo{MwkvKUxKAs?|WFTtKk>0G>4s@715^B z`N~#GwhC9V z-1I^bYDZaoIb4D}Y#Gmi3lfJShKCU1NnA9>NL6>pi3v?bDokmJfZ#iJDQwMl+(3@R z2UM7Jf~dpw&Gq`q<@$WJKJBxuzgbB}buade*&?^V7zEPYjxUBpU$!^U}a9I zg`sV1?&71|SzqUq<>nY&WkR?s3`U~mHoAN-wP7w`tssE;Yet6~iLow%Sa zs1C8dCa8|1X*#2C3FQf0^@j-K4I63$7XBLUz1_nt9FD$-TrvN-yYeb5(?E%LHi(n!O6WdCJNC6QaCzk>3e=v#t%sEG&nS5Qe+Qf9 z3j2ATa#&yzE0~YFi1NK4V6FFBv3KTla};r_yZ54NemBJE@Px|FuZak`AKw%Zc2i)~ z-PxwyEtzoF>#Y3iDHL@Ls5`cy)P_Y<6^4RrsnDq_F8w> z#9kXN52pV%^=PW&WJVXD`Qtd~-H1H8=gW0eVQt*oS)Zs? z3g&ln*GXLNS;3rBBwcL3#xu0%Up=l_qh(q^L}2-og}JLYvp}llJg|kPBZhb23uVo5 zjaUrv{^~Bw7;Y@n;Ogd1ulq9vEwe&}(~~6R>%7V_p}AK@eG3#b9E;AYr8m6|ZY%?! zNt5O+G0CwbB#_XDNP-Rc40ALev`Hr@4HLeOA~BUYZQieqJ`}5n=E9b zf?kWvKb{G!`}iYBKQlxo6B;PV<}DKJ=E0Vn!<+Jz`7v>(4y`bPmAwta)}>_lvKSsm z(TlpcESg-fI#tS7ExTZqf1~USit+BOudTe5sm0-qD+wo!F}HOgtIvXobDtBM7EY1h z90S&SmIqa^R~gmg{XFK&bCqGk4&%0hy)8*S?}&I9oa9GOg^g8&WEm3a*Mxor?^gco zhi4{#suJAl4pvX|Yx!|!m;2$>&NjHpno7rEnP|-}ckW4Fm(e`Nkyo_|Pn&2_y1OQ8 zGF;xY=aBE}_M8`j+V1tL+PvqC;pRnay;EI}zt+zx0P`pWv6`wRvO|#C7`4YW8AT>( zQ6iLVFz4i9o~sWmbB%b`xnQ=};wY5Q`Srys`1y1(b|ho}mw=$4tnY)B`o%6S5S!m$ ze4pV(8veP#pBwtQfu9@pxj~;B^0@(@8}7Nmo~sgart#qe2b;mts2VcgP%BjrnIcPi zVFlZ&Br+emLgoimMdkywTXm87&=oZmnf_;@sRdI9s!)@uL+V>%>fmP*kW$)56R>sJ zQA60&;FzEySupc!+ze1M#dKr}>i8dM`~-Bk2tCCd5zOZh2(pXopZJ#%G6!y#T!^{8 z|Kb1pgFB=!J%8v)=I*Y5tpEK-f8KFM85DHY|Ndika!7p0@sC+%Pzl-D_4}f+J%lEI z_{sI-2;d4`b#eV8eQDVpEQAnU<@6^?pZ-Ooq;%bVC`#VKRA>{5OdmadwypfGTyJn+#I80dJJR#j!R%2{$7 z!)kCgVsaTt?nWP!h-)ROQTN<8O0#^r#jJki37{)?i#mpz%7O!lDu|I?tzGk$6q2cL zY^uSgYZh7*z?+$e@7&vGcexB_ker{9$80X0kTUFL35NLt0GuQyUq5+*%yxExQ%B?e z)NY_lIjvOTcm12g76-G#>5RkKJFV@jK82RgBci9foi(M|J0c(PBIy1Vif zot@5B8vDyR03RmkGh*F6y1lnQ`&Av+^~q2lmBv~_K1=UM4*5~bjrn))|6pjX6#Z`+ zeRsw0sr&WgKeGRmj(^;l`!GMZNB7}?{@dI=mXU6$o9Q5yAnmv?!Uk=y&XogTSahUVwj$>zsh>n4ax zen%5j<`fgp(4nVbthReh(O2!8(w?z_J*@7UUq>%7e^Ho@k#A6D&&A$NgmY*qc$q zQrnx`YZTA``eZuHY5zSs>{TD=_s=)zgoK)%lB-v`ZbgG?pHz}hkEA*)-bfLZ=O7H`doOS-(+Yt!q{piA7L6-2f6+= z4&UEm{`fX4#NRtk!}*w3C@!E~wf947w_OMbV>S8H;vKO;+@9V%b&5ej4U4noUbbzx zJEPRga3Q^|8SbGDf6Zq5(7&QCTff}L5!3np)>ph=K_8r;`z_{kqPL|Rh8^L$ z@k4fbaVqm{l@%wOtmyc?jAw3#u@HmhtbdA?^Cm~6!{Py1WfNhwz~V7N^a_{Ip2p(@ zpLFAVquw9iz4ymBAMV=wuU;m_Xdfm0jRdQ*rDJ2)(~&w^{UC?oemE0Z(X0QHynu5u?TiPH+v_It+TPyA8n^JODTS~XEnIAy<6`eiaMqJ9ldXg zewHXxjR;A#;QR#K(u*siQB#)rb&hN>MJMrlE!9+{Ux=`HQy&>jceGv!^5>kTNH zANohXkf;+b9oHwHIu_a|U27Pj>J_z}tMd6|Ai{nwy=%SOu~1e7?~IloUrQzw$Zb$` z&l@^Bd?8mMT$M)hfjfIOkVWF|eI2^)+jsTm{o&b}4D_i`RGt^tVw@!OmGkTR(Y`!u zkME1M8sDEl{2s>T9Y!iRy%RCAZp2XA#&QsgZ=c_&bnyG8jo=&8B{llC z8z6QpF#(sx$hTmDkJ*UdWES(&i%&$cBnJ4=bLrbpG@}pPVVmOo*Gc+XH2r?vyqvt7 zm-1tb+aIaqe~+EwRKkLVxDD)3v#1zD+M0wHx`2>sP+AQfq~m{_SLP#%hWp*f)1J}Ld`XFdmMrICfzPM;hVI+qQ7cPN1HXi zVOjjEmvZv##4$ZVPtB+P9lH9fIc~xlNc^0oMeE+nHD*kI{Vn%b^6X?xC+Mk->DaE` zXU+@Cbv&@np}96~o}$HXx?MhexxBbZOeGEU(>0@K<3on-F-XXrK2YxH-PO$~;nB{I zouI`x?MDBzB>Cp`>duetLXf4#y1MGL$1?lB zy!b?yoJradBLBV9sQS1|AVlAE)m;C2bz>@x@6Qi{RchEvp)F0u5y!7tM(D3c`Q>25 z3>GcM&f!;fHT^C_U!QdJnekFky$IfXgtZlf0Kn?bRgJswOks>tQLB4#dqm)N*(gQ z_pdM|Xn|YYMw2mr_!_PtekL`5RSnTQw>Ou!Hya)^KDa!?6nwk@Cv^D6p)-K@kc>vj zj6U=$j4hRaRax=k#JYYxos}PxUEFfbjoza~UWT8;3zVKPbYpj?@;eTP0EE}6=gW5| zo$9GyA9tCZ(j^Z#Ii>r4ySXVn=C_%eTCuxO$dH)E%8+XCxi%l{tE4q#pV5!@4cwz^ z+rZ}A#cX%F zN^=lMoXP57%)YFh{ON;Y`qA;AhY&{7YkrUtbx?f2Z6cEXBHG@5CDo|y-B90}?EbMI zDS5s#=^ELIzblDypB(;rzHFx<&J%WEKf9u`&2gckpha@unx$*4ekzhR-8B%437=x_ z>d787C_l;llyEfRqXcZ4olf>F*DSo1ziRSl?Pox1oF9!HJZlvmbMJ!nvV zlKXk*!JF(^r{!n4pLclHes*?oe3FbEqT8Rc0l>O9^-ECA!ywwVjG?ukcyZJ`lhOSS zPt_`Y=*McEY!_7ctN0)mEJ>yf6o#`;x1UWi)BBmC{SQwNMB_YT7z-w=cMXq-m(hBx z59%2*|HHP%bs_h0zPCqX3^XptD^sx~RMN_&t)-+mYWtbp{zCq~cZc1%-Q(ZCfP{bX% zAIatyY(f@J2U!_sa|q38JJ!bYo!*5o&x!0O{#`oS(Z8#Ak-i=Vdi=YTn*Wa9Ws-SG z-et0RxyMcpM(Y1_cy#e@kSo;k63|{qzhZDh5(!EEM@0U>oG*{hnw=KHOnEkH1$xkNrNIY~E@8oyPP0`Yz*1>+jUh>pRUmt-n)0kMA^| zwEj;0M6JEUKBD#a>gS#29ZSb|>gV;H#*^0Hsh>x8TA#F@w4Yxip&SmbzT}54u%IF7 zp=dHzg8k}#yc^#Sntc0y91e2S%(FiGG)46)IbZy!_=exUPl%C|^(i!*yifaC@iyi< zleq)H<$o`1lC|%xmQP87sW{ArEwY7FSN3T=tNOTxdQfs?-NRMp(eFlfzVwW*b(Z;2 zWc()_Mc?wlM=|X|=?x!p6qC-Eo-xrVMu1u2;Lk2)v&->N!1tyCN-cmq#g+pYq(O4G zU7^(g5gg8r1IKT-mxS4yRWAs?-R)@8@^B_XL*rhRK9t$ z1@7d&YH+Mj$|*$&X)+pAN)w)Wpv zfo3hfA9N2WWR^|!UT)>WspjD`!1^cn=nj2(;Vva{7c@C_Bmb31&30d_d^R}0SeVOi zh>OR4NIh{sU;@_eQRcFOlOIOC0j9c)44+dfX=`Pd!Vf7(c~ilqSqd%T6I+Rpu#cJzik7gzjj=SOtpVBb|09w9}~b zf(MO&ceg7-s{j+<>CDu_1h*+8F9czVAZ2GQOpg34!vx#ImsGatK6Q=TOA8Z_0yPSq zo{SW@`_{d*Xy0NxTkOQC)H`%$XB&o=Gc`lonFX7 zmnEi%>QPhQj5_lw8dFR^PLFTTsUh2S8&p;A7fLeX*Ped7m{Q!nEd7E^w9+ozPToyQ z&gw1HRg+ll#&?}a%LUCv4 z?Wo)i%k4N-Tw^;&hEYl#BB-q^|FL%N@rXCPmBwyg^-AEAKFm68PxDLxM^E!ik-6e8 zp{imxR$Xurj`pfvE-Hv8GPHcF6d((U0 zYfrBI*rqhgcAuK_6dyN+Xev4!3`dO4IO%P`tWyhUec2cPrsQOQZj;k7+X zTDtQtl9uZ$S*Tv9!XV>e|4^LVTdH(>pbFT{F=MeHxIyF$CPWoEEz9B&V`QhhAE`vh zAga3Uk4MQ;YO2y^Z=V`ZqYH#Y(ay5uM#msmv1k&@YpnVs$~?K=#D4flQ-S{!vA= zEP1}U!8PeFCk{g;^x4haWpTKN=!N?pAzKvtTT&^v`Ww4hXBlN8DZaQGi!VN7lvk@S z*6fZCV+)DuwNS-Obon2W!IJEwN2oO?&67EiCEtDD^|$x3mg~I6HXS==J)o>ssSh9Q zQm>F2TtO%95BsnCTUlaogkD`&30Cxr`TnL@XsLS8qw9=odNnlD-7ZkTx>-_f(^nut zPpsA|343am<9ylX8mg1io2D2FT9uB^ucni%w1u9rvQm{N-c)!hS6R09vD(Ws&&AKm zgC*q?SM`qKBPV;-v?o+gq;}#J!LF-IrXF1NtVp;M5*5c@tqO`z5V798i;L{^>iCyS z>V#)2iOrMD(L9->VaT*sx(kOBRplFnRl1`7t%>1ml{q({E|#eoI~${ynKRCcqTH(f zKH#d9CK!#^oIX-S^saPXYid@_XuRd@1i^PPZ8*O)E0uB@?ORFXaj*@8 zDqyAAdf1X*rwLF%ea&kFzj@7+e_hJ{@BcrU_I}c?E}YJ*T3*AH;fu3`=BD#VY8a(O zhiJ*R+-tDy^b-}qmtn0f;fi1g*KqC7t14U8(!%T8hzh)@zwn+^a~;!H1ZBT4%vI32 zdwvBE;$)@h!>O3Bvv}Q1F0S5B_;WhBnSi8WAw$1n5qUYvR?6{iv(lF$Vm-Dp7_y_S z1`#VYc58oxd!YIDj&kr?_GULl!4)fb_-e7AEG?IRsugaSA z42EjS`nb~s+Saq@vKx2Dl*BoiyuEv885CfdAK{x)@yt!i&@QWXZ{r_Rq%m|$$6#-7 z{T)}{x7Wa_wYhUJ?!B(mR`k!-E>;&j8++ojVXv&ZXOn|w>)D^NM_=ylz1l7Ky*G?q zwm^fV@^E6$g;%0V#w(p{C0RCOpSKs>7@c0}b>Hpow61pL@L7+(tUPmAlBq^ozb5A` zCzxb-TQNu(ALWnul$CK_F?cI`+p!9CDMVO}Dvk2i`foJpa+#acEc9`-M{p;8{;YGS z`-*87v;%a@Masc?(lPOVm%q|l*BZ^g^`%L>#lM_?ZT@xmN8Pmc3jezNTjd|^+O+G? zu0uO&&#B~?Dvqh(nCgwG+?cA3so0omjj7a_DvhboSfvgd-kZ?-VVbRX>visSu`V0O zx%-%A>$n4|I=AU8?L4m^v+dM!a%=VKn%TQm?Yq8G;3`gvMdQV3;^Arh3DQxtxLUHE z7r7RW)<|#_Wi=2QTh9hs{INjg4AY{#VnM9)Dei|NpYvGcEi8dcDpImu(}H@M^A3s? ztHM>Bf~mLi@V)()$L6|N59KWF(00da08FNZT{1dAaLDy~!d; z+@Qfsay{(pma;Ij5bV7gHG7+AKHv5>|MaJCeRL529$7c=R{VT(^(*#Ocr|j(wDS(m zX38|PTemHIjdDlgR(iR; zKUyx{_fWRN-9*{wHKWd)Y>Z7z)5z6gUOO1#P8t$a+G@(#rgBe?W?1kOPKPe zTa(ix2+9wS&hI8!^LrdBi}$O}oWDi4#FT}P(H{2q!<1*jhdPx`lnt=~t;Mg$)63(F zYt#cmCIy~f#W>IqJ8k6CIlkA+@!bjzno@yw5xU@@ncW;uU#=m|>Eu6>xup{6VbGLqie#BJ z-%joHWgV%VzUTzu5prs;FIp?9H_ixpwKv?dV%puZ$heFU)xRzsv101= zkB7b9>{!6OIouc=^cow(=Tdj#!v!@gZ!HW|S*2sQaH0FIr(r4^w_C3^h>hkgxnFGp zxJa91J_4WGl1%~-D+Dh3yWEA9q3>&~4=D}5G02kd@xENA=d0@4% zf|CC$0gmD}Yiw@}Mm++kVa!*gU}gSQ_U7pGp+@8vo}!hMnGC0p&c85B+O3Pc-5(@1 z6Wckbmnnl?W}!E(uclgl&n{yJloPxNHxsr17Fb`U2k{c&QI(-V5U`N9+O2QHjaL8= z2;q+jv9(%jt@VLFugxST#P+ML$_$#hN>4srX8)pz+DXD<=C8o#be%{qDN_WD*D;_K z;%&Fe<%LPRz>I3=wPuu`tet{L_G*SoiyHCrFnxY1b%g<_d>tQ;)G`O%ats;gVF{2N=n!NwamqY*ArE>@S< zI^E^fMya6jei-jy69`_8F>#;k4V9i`!WQ+xkNe(=`KR-h)|{^FckuoZiO$E#bxlwe zlx-#FlUWu=mQ5Zhbfw;wg_j?9^)qREjs8Am;dgtl$1nEwakvv$nWkb^yo|MYr$3%mD%{dwPY~`R4D@z;HRE4nI=RK?q2U5D~-v%U+(fKD0DEHimS>D-B2j`2r-p*c*-Y z0?SVGPBiat*;at7>iJ*vu2#Ake*4DlMIk?T(ML9*L zs}u{GQiU`*Qg=tX}&0}z7rvxv4vMb>1s`CdZw1%QnK z+74mKV)$wZWGZW>+ZcJY;8UUnkVm?Y_+K*UHGSKi+;pPgXA6VJTkTA)uqirO+K-x` zEu@mhz5amE+MS+8VM{!I`B7BC!x%XR_!Q1t#`8c2N>8%&U}W9szQ$!}-sbPD&L9px z1Fw)zO6wfyw{ZXhWanTo?z7rZ<=S8~sSGT2`OnZQ@gXgoIA1g9?7XQ&tIYjRD0xI1 zgOb-Dfp?>fyLoDxlch;GWc8vl$u5xI8-QIsC2pWHxRobHW^XLxn^*Y^Y3he%74c^9-Zx}8Va1Y0(ARArpEm%HUi4o$vnjbpW6JXJq`jdQ0M?PL0_Pi(lhI3 zaBoYyTnt7r`PmkCm%m(I{fa~7!|}u*6!$Fw?ZokladLTkgxtD00`~S2A28~g(BRVG zuuxt|u@0j}%hsB66ny@oxMpseES#)vO;nrE;6Y2GJ8QBchQr+oR1xlOBUYVvbR?$# zJ?*g)=i3K!AzU$RSzRNzXA^s>f|rQB4dSqO6{OY zxZwx&u${B6gUv9IxCMn(i^o}OHNdEio(*0$;f9&G;62V#oP|xdWhrwoHky>mmmhe{ zq=7@6>7+Qpc-DsIuS+yuqG~XM9Nyi#34c$fS7J0cIiEDZI^u33lntz|XX`SW=yMsjz2PqY zv~pK`hvqZRLG0xTj5iDeiJxl6m>C0Boh!dPKYM%p;X_fP^*jP`c5|k!-)G(B&LH~< zgTK=)I|@Ohp@I|Y3$@hT#gpQ2sGE`2=<^1QKW{Q*w6>SiKu&%P!siD&gyrc4@Mut} zT}{s?lj|(?@WlC%uO>1m^lrGRu%!!Tu5@)ogk%B8d*w2Z9nczs37#b;d7V zNvbB7sw@?qpa_Obf7$X$&~u@p`}wP@!k~QJ`nGS1yYt4RmYR62bOWE$hV6c>7t2gh= z_wh()2%8`M5sw_sGO!-N!?75FS@Crj$Y|LO0%pH{o#(}92eq}>9}knEV>5Ft!Dxi; z_IsGKVG~~r-?diaySP1P@L=KjR>;E;1se%MX&*LTU3a}<19!~rRf0_ac0i=d#iE1~ z3s()|dwt%uXYuj15C?OTW;MD>!%6fs@+^c6e9^OLgnue$r(LWpfX%We!b?$)(1hh( z4HwZ>*S}N`S$}{YqBh}b4_YPNS?AwdI#+yPHJ_U*UnWL!^D@-k=a=D9>~zUPmy)hubwM7W{MQ=FcIZPIjwPboq=B=&(a<}mNXxi~8`@LegdHC#LJH&-O1Yon* z_khGODuSx-uv0ZC={B&c)l}8z=j=Eh;?5uUkul7J#9O2&Z0cL$ZsP=-`4KIVEm99& zD58!}NOJqsr~r>{Cm9(=dXqj*Y1vaQhe{6E_-?}Ucz1H#6V}%pU`4GyledTqIUKa* zos=PnBre%mYbW86yp^CDPt`PQ^(${3%)dS`k5k$3sdgH%>hvd}=-O z$L#NajAO-CH*kjY=AqwHvsUDQ#O7BEyjrBdEGq;i!*qJl=pEdL5XH)If=||RIw-JjvA2xgw#n4 zrzR`0={bli^l>u#a-h_JdC&y5kO=$XS|y%mV+%*x#&FmtQp7YHG@b1rp*+1lI-WSL zeB@u;0zi`Aj)VE}V>borP8Tv|TqP@HWA^v>29pPRDAL9rGz)Vss-j=XWZ*lnQ9M&* z9LL6=(W|s}hf7uFam9~T*-IL5h>?UdgrP%P)q;_;5|O$L930$pYCf@D-v5{6<+t&Z zf6^Ofjlvzr?!7Mv=gym``is)1pP;mo2=34^fC2Z2NWQVS2068OS1Tx)(VLxTz!Zu3 zp$}v;xeZN#l<%oU{Pyhp?Dk_(G{0e87SQsWh@q@8%gNsVgjH@W?pyE(GT3@oMybjy z1zxW1viZYuN+=Q6gm$}~HD2xR5n>e+Na*4?aJ=WB{pnTNn%sAjfZp6)S{kP%QM|@s z(Rgyku>K01W+_@l8X`mR2t&Ghx&G~3)jjPMhkxPXJm&| z-{0Nk-E?w-;;=hHuPr*LQEv z&yGVmk?ZrvkA=5@efqC||6?LC-SUPGIYD;H46*86*)G(+08QA8g9hCc74nRf_?vg0 zWLa0?T;EejVy2xR?$ws%O{#solGl^Nt#h614}Y)+_`@HBc9(8DcV8}ZKVEkJj(iJO zHQgSe`Qwj2a%uNg{D4pr7chfyla-$suqny(=k)A9Cs(J~0Mpy1CkZ$P+4W@n{Zky) z5cv=a&Q(7{i$=V=d!D8CW$2>Clc=&^9Nqr>`0@1>FYRnHef+po;ph4UGO5Rp?Pm2R zXD3X)*8V~voUh@&`BX^48ikSlAR+9}n+V}>d{}l?6=$ol%kyGYI(g7nR#|$au9O;t zQ++oq8gJ83@wUTfz-jm2l>Nd*f;(;>jct5j2na>6d(|Wah z%3DmWJ5@mwQCr-cUVz#zsFF*y;+X{sFj-OfcEFG!J}Db7Wuibgzl2YNSS<$o%K6{h z-sTUSDe;CSg>gsLTaW8?NwLbPU+igg8W-wmy>7W$2c=yrtQNTMk(P`jm96WbZmf15QPZE7<9|{ z;v0G$w?ALqO$lI4iz(b8{e1=|*qr|Jo&7BR5pT$KN=2b_8*`NW5b2a%{S0WMKT=`4 zy=`!Z&+#U)#8?;)FJ7ED(j|$WnM#TGqrk(ip|JS^`YATz#rvLnmtUXrL>s<%N6fe8))N`Me%%d(*+ZZjbd|eM{=S7i&jV*C`9>jd-bc;vXAd6 zj1HIPC$oNMaxuESIk~%zt)fEZT^PR=$RqDcf6l@lWbnHie;|;N@U0ws z&hclsGXo0tx0!3k;KN)YP(yBxSjoKX-oz=4CI*NwJcJwOZ77c(p6$?s}oY`kteh(>8-hz|>&m_cHtvX6S3c+1r<<|TU} zH@RX#Ra2zeL)~^M2g0MduIow@2;2CgXiwJ`d9>spGG`YgJOEM>r2@g3_j6{@2<1GZ zCiMY{4a!7;;11B#s+Za9sksAYsb2@eErgq_%#e!UtL$A3(V0Z9>$O-o5+1Jw9`Kb_ zqsn`>vE_mw>8chE$B?P@pSR1Xb#T9JZ)|P=M%W)5j7kF%!Ha2#q<{{A)OF|b7E}jW zf(cTA>exs!EL>{=TMFL%>RZp3KWAR#%fHjSa3@aZg=KrlJzqM_<&v~)kM(X!mtgI* zfQOgw@o4(Iw;H|IBpM;o#k_=dH`>wPk+*&^^#FuGijpPkyygOV zM!DY5?jCSuI9(cAzllx}C%`eaVOa>l8V(L5GGnxul0erSn_(7E3Or^I3G0g`0%`TR22?cZyET$BXo7)GH1QJW`rJ?BrVl4gZhs52hBqm?s^}t z;hAw==@kO)a+_&@p`-7~HIzYTDRITCmvgwaO|$@m+>8e!B?~BPNE(&Wh`7657hswB z)!5l4ftZv+Vt~CdS$M4vpf~J4A0SL2J9r#HlJ>^rb2K>aFTLSj^YjFd03(UyIkzP% zH~HK4i;X1_$Z9kWR+)9W#kN?kBt|WvQ?UqcwTHy@2hX@+Y)P(+wTi%z^ECL*%Fum@ zPT3XgAk9zHKt;n`pdq^~zA(@=B8@@Q9AULi4DQxzIvv=w7WnD3D>~}%!t>KKofJQ> zvE&zAdMPZqsiEYcU8sNe<7^0;R=rkV7BLWu#iDgPU7-WYKJ=Wuqm+IS{kZsTI9|GS zZVRZA%KG~oTU(@9jp`UJ(`-1W%PEf=%A*zUTSf(72eai!b`s$@Hh;IC5-|S9qf6xofR(@>%nE%+ucL)E`v`z0wour?=Qj`7;;4UN~Ijz70;^pEbL`SGKH<*O&7^=}E)Dxwl8mFKwJM3sx zdGd;B7~#IL+?!e0IHTfU8`o~w_gR|lvU8i3&zA}TJ*fxzTUHqvJ==(JClZQ+!k3d% z@MXI%7e#X)B2(8x(9v9@j+=-iJu{>?_WPy~2fvDQ=o$6n$>b7e2f)(l6tk^#y!Zw{ z$Ua^Y!lRfwu8v7|dUQSoLdt4+iffNs7gla^B2Ng*OVeB;*YIQ&r{{{new(SOY~K+K z8jp;N?NMW68{cvNb++&RHe8Cv@!buKStON|fNtSk@%NWKx-g*?XmjwMBpR$&gTOJD zt9Q_#a;R<@O=45cr6-l^t9d)5=@ct&X=aTL#3=HGDVf7;*qyyYeQ!!3c;r3Ak2C%H zHoF3>CvVlCY;X20OddF2e?FW3@HFm9{h=(r)7$93ym|jbCwiKF`_wsP3-g+~R@$Q- z+FC0d$^DCGV|yB7FMWGtKj?eCg$6IpK%#ZEDvpXC|@-(Kq|_c)rs95 z)}MaCGtOKCy7%|E4<0+EMhIHzGTS84pz}0yvi!r;^uhyyLL9DEcxYGjRUi)eIV(K; z)R)Bo9I5r&EDB75-%rZ_cVP5$Q$D^4Q_t2Cs^##G{GM9VwX~kmE}YO+VqfWvHpPH= z0-lb>vxEMCJgWnIr@NXBCuid1k*HDm_($n(r|QNw$#985Iv^*4!V4~Tr>wN;5rmsv zL8(f~2lsQc7)zSPZI1EUZT?q@IRqU|Tw#LP%)#1SGZiUtr3zHNAb*toi#{G_|FGRk ze=nZz9*8t$xG{W#qj1hNZ7<|LWlv478Y5{PsSk2*X5GPh-q;xxe`)^bl2N}ckuz|V zqVfFfB7&6tXY_oaAMggCic8JUx)bm4Qtga>l*}sy*nOSm?ak5I?b0}3qA2FLvjovl z83TG^I4p}^u{-&JYNKeK+tUHDz;HYk@MazUbV#85X5S5b~e%z1M1bC0Z zRTo}O*s{EmEhp|C|H`(9dpia3maQxtF+-wMZI+TLnP&x-iYQfl>wR7@?k|(f=!3_< z5ZbwwfHrd^EDeG>Nd@vf85~P+e7tb9IqKFP7XEg8GfwfZ_$1uMycfhV0}Bg z{KZxUhp2^?W3Uelme?IUNz!NGwvrP@fv`m13__r5<=n)S(BvIxi0=@r zvrS1hk;nE>Iz{6xn~9y?5ALz`A29LmXapMch4}`89on`BQ8VIx~3ne*(p zCvLp}`+Po$8xzc@=i6Wb!p&s#vs*6xnu0NXQ}1_~Ab_l$qon!r%1S9bOGE4fph0g)YWi& zWhPbROl2@jX19k}=G&meDE@?!TmvsOXt%0of}1tCcC zT&|@kcf+mvgI!(%OjaIEK}|5|mOwn57bVEMzkfWM_AUU7zDzLQ_9~Ul(k9t^Q94VT znqwA1ki)3IOMJ+4BT$Vi85VBnT2Y;cLPM?CPJEj9;=U3Z>WlcqP8NOzLt(kyILDqS z6)i@SMo;AhYg47v46unkLMY8_M(84=De=gWyk3g!oe7oSmK5m;j_z zm~bNWzWWgpcCI= zdJ(;5c#NZ~DfEKhQzvKTVOk8;3HL2_=c-_|`xYhF%yl}B(`OLR=VrIjybN`Oe^lek2+3D5GNA>huM3;{CWphp^wo;8nTbYXT~DlZva-y^m- zgX-9Vmn}>#AfRFcbpJhS3}0Drai$Dl(6fx(tyayVyAmx+H49U8qv@0Q;6YO5P-h+> z7on~#Mi9>3DtxhYd<|0hmIW2$R@|M1{aM+dq%bZn?rta07=UcOxk}hr=sE)8u+f*Y z*e@ALoIUie-enyad{iNs-2d=0VnJev`Dh`$r5wGkGYYGdC5gA?2;RwV<3^zj78 zHr3^>Zh+}FuwZ%hP_|N?(}*H1*Dcib@Lrv0cgzHqz;rgv<&-;LR@*yhrq`3>B^O3W zy-U8S^HQ}dZlotVNV$Lx_x(8J1iJGGu3Qx$K4GIOL#nE$*Lb9R*G;moRAO9?Mxu*{ zdE-EPwG+n$z@vSl0*p)@e4s>MuA%mlw{@D4m})En@xg7RV?Fb_T-Y|$Q1i;3hy!BK z*Nu8}r@7<-V&@ceB|X6RMCobsxdj1Hj)(8$@nZ+0$`aXR3B#-f&TGX@0=Fu#+$Y6S zaxFrUQfxHc@$?{k0w}$7hq0bKejHD7N=oD8`T&btB1Mutg(9`dE;8sR} z%|+to&vbbeZ_OoM;Aht9>6H1_GuItI&2Ed*DJ^@9%$+c;)U$Jm8fiC@%~ws^xGj>r z4b4b$JLVqUcP0~|{yyC+bx9ZYASO@E`yg-MjVSWG+b@|G6~m!ofmQaxs2xpg*ZT;8 zN~2GlqE&~9l*b#VA1vjLAQ$KoP9$bkC67=md*%Gv1Z!>3+r6{#n0g4{rJ;(tgT*O_ zoWb3%_YCnzMDh@JW6{aw((Jun;@hJ#@Y~dnC_QwQ99tq>COp00Q=`n{Q@qbcxkqV- zV7yeD6BU(9s>-%7f#K>V)y!=GAKyZ^0j}ol0D#*ISh&W{SW&XFd^V0w`DF`os7M7M z2mR(Ff-F=$+97?rQu#>QXVbYnUb?aqU01`REXQ#SQ`hnP{q6U&6(lU38LzJZ{%zfM ze4eDBUq^dXX^vWc0v!9wsr}t-=2xSDd7K-4et#x)kpFlTsurP%e*inGEC3UavgJe= ziHkuTAgQgI2Ib;i&p7GRCZFS=4}D$WB=&frG6_!BzYJ| ziH%W@<(VJBpE7Xaa{9D+V~xTiJjlNB=S>WpaJ;t>y9&lW)PQJX% zCu{YL=qnRY1O75ROGP~95L(>to1w*Qnk;@k#h^?TAW62png}M>(*oa7l;VrPcfSpI zE)KTp^M)lO^oRyr_+iacbmZ)w?L9yW=F_5D)WX;M`2b8iTcY*4yZ$5qQ`o%QJePCP zm$&X8_ws!5AC{9KEdjUg*{BWk~?Iz|g5Rd?cJO7zue3~l_GK@uiwtf~E- zHi4Ri-0Yr}Iw!{Njnh^`M!BNO3gPOz!sEB^mu|5b{+jU(^xo}zqOW9}@ssGd|M|zb z6K~1P-b?-di8Zj*LY<3`6=64oJp{Y)iEt%E-+Oz;8Ep1pytr3h58E@;p5Axzx^3B@ zRzv8ha3;T}PU#W7+5*R{j2kLW16iemW>W>+nVpH+oLF9f$04OiWA^}PIyGZYrWLe*soDMSrQ13;3FW8@j`(cu?G3iDo zYLv_*z$GyniA*1ootLMdQo&sqHMuZ%Q;jjHO}MiMDd6s`>tiI zfId@N3sMj2(%s$=XNNPBl+G>ed$_27x%i6~h&lE|DF;SJsTB$*Nc3J$C+CynTMDqO zmZMs>sX2Ab7ea2j)i`vQb1)Nn+c7(n;s`#ENUGu^zPtxJ`(t~bsl8|J&EjZ@mllvk6RcYt%h8_IR8eQ z**Bh+{hP)Og$~3-T>=W81hm29$8%_dC(fxRh4p)6ph!~du8QoU=ef%#zh^cpBi`@JC>^f_-J2z z+c$?iD|RlFka$I(jVK5{*vF^p_#TRZ&yc-$Z@gD2*cSc`HxRbKy1jsTTTcFT1jR$v zLS|Y5_N&v~U8tNOxPTj)J}msBy#s&<2fLw`1wi~xvVuE(1^oAXze1rh*RP-ys{IPD zNpe07xG!b*W~o4l4V~u2Rrsw_(CJA~XG(#`;7mzrJatcvC^Oe9}q4u5Sf8i{X8ej~T-)8&bO8`GO)Gt%eyKnGL;9Ut`V zm*=fjWcWIUG{>fTXHEml|RJ8zd~Dl5CxO#&I0xJ^m|Nhpq;?QNsQVNt@Fcq0aPhp6~cpf3g z066>K|9{;mF~1eeQNK+F@+wpDw|ggcwrbCBmt(%VWB!#mT|Bn}q7Qb_T4m7%!|M7g zd_lP{S!!CuYXO|gLdz=dh61HDr?I6Cs7z**B}}-=B)Z@9%Ga06w^?ebGde$bv&;cu z2E!)UmN@{-U|5h)tv#N^&3*`y4~hrZfyc|l(G;cHN-JwfrA6)~;J{$_Ez0#JT`z*; z5$V-TUoGDGm-1q2&H0pOpf)v<@ZFfN_)w$Mw2T47JDq~)poluPQ06|ldH{PAR z{l>p{zxZt*5Sr{|cb8}X0Y^4zb$2%t-y$r6veLEYHvhcTU)ll?;6vD<$7RZlm->nN zHWRKgOXucY@`_~D_JK(mWks5o6laQG{^pmP*u?ql)nZ=q$J_^U|84n;{Om5;MUdR; zdOO^S2>TO@BMkXPbl7bm#=(uike7xcI};Xg7p9!2h_A0>wW`V>IL1OoSUCh0a;0GN zqKGRr`Jw;gD8!XI>sg4qmZNJ%qmZg?(Kl0G)3A@A!>hy429}`V;gS|#RjO98oCYtQ z$cDYI3a2V})cEooI3LO6#B=J)^LGzrvsEUjb!#eSp7?Y4X%7bO^kQ=HR;5?q*q=_l zmFh7MAtS{zp+A1?^4LXL2*^jV4ha3VQeRv^b$5Iwc>VR2)?-<`Gc_L#0Q)0W`3{}UKE z!W)cIf0+ekHkPzC*xrN|GMGKiv1?U{4|{ThRK0fe$$p>G!J~e$)7Vx4n(djKCayXt zx|qM#eZ#Q|X0UA1lmID0UM;+EV8q!6!iM z9s`7=pIIk&=wIiGpfJq5aot`Kg#n-XNPU;KP%gro=5>Hm`M2g`A>n0;2~-42LtwpW zZ0EBEBOGF3EQY7komR%M-8^eu;#&&MZP}7UQ%#OVA}w!~=r{}GC=GOB3HAZ`1OQH% zf@DOnoCxusCUoKe;SPOdi-P-0jbZy~41w&|>&1bzA2p@(MG)%1VfZ2=3Kdg&2@WIWLhA z?ip4Q&JTul+-LQC%`@0})97(n&WJD8F4K9jJQJMI(#Q*+92Xxf;U&C0_mq_h=wDwR zR^Oz%Dl=YXK7JdMF&6>vZ)Y>Q(SC?nz@CQz2cG`*cWJRD39v zQ&iqWWp7U1fFMFmx#$X!>MO-W9l@b32wis80u!DsHAH^*RBSmbgYPq2qu*g(=}gmT zHrs-1P%Dj5y`u6VZ9Bv}jxCEyHzreM&egNUkNjSc|jj%uO zx(0vDCNLPW|7d!lJNky4;a{`=g|G0Re{FpO1HdP z=Sdjm6gwuOw~Rk#&+;A1!i6uk91{bDX(2H5 zrzXE~D|<_VLo%wjDAftELX+?n%qaTI!jLz13E$R3rqCfQ-SSYXTzOs|KHA#ddCT0{ z+TBuPp*fcr6zfVK(&)O)muC|R`v2bRkeZR&dDi8|zrETpr}hEV+0S=-TY?8s&@vd4 zHJI1STR9PTfo+Jg(;N6_m)FH5lQ#B6P`nK4iY^j5BJ8PEuQB0%H}x9sKKS^s)5K~g zQaf?liP8>6JN`X5wgLNJC#dS7yrs`yOsZTG=<7q%c6mF#nN0TXZm;id1Jgithp`R7 zv`H4Nk|Zcbi4C<2rJ)jhMK4ZlT4AB_=B762D^LXV>`;P_kzkrI6@r2$96H_asj-6d zP$OtsTEelKraR^Gm&Vql_kGHRHlrIxGwU7~nmcQ9vjyT}JceYA?&xpG2igJMRLuxo zNisrZZs+Y^Cr7_n^;72t0g=BmJ`gg>@nVy0)Zc!SmHrOzxN>v`NRJT|_dBgsm{{`} zsDJ@4eD<>=O>zWCOV{L?wG&^J6Q+J=oFDVY7dup6<>-vVABnp{9Kbl$AM7))lUYlndshL78_>_XYNAt+W;@){LG0m@;nmsu@m#B3xRiBh*Q z3W{KlEUJFgA$c{dNvK1<`jO+FP%h?)`1l$m%fq;z(Ek&1$1n>fspWGrvyfOI52zQ% zG9bjMt(y+METO{PkI>iO!l6@_u{b#F7Bg<+8-HKShLCd=50 zZm={Gq+^-n=j=KuA-N!$-|m2m1;ZJhZ1a_sl$2Nyz|9p>u~#vINkIvcFGuzg;?LOq zaiR5UEBtp=1wFQLYO6K5S8bJ-yFSWAdE_}SpK~^^BSJ<60&nj%|?nz%Q;TN5O+olBs%pT#I|H$Xv`Ne1`Ew@P7r6U1rMUDjIwj!!)*9L ztiq+O@|MWz;E0aXQm|UbYN>CHe>i`!Pjda(n5jpq)D7aono%2Y3hBl0r_=^#H+gp) zgsi*c*R-)>6cu+|U;*aNi0-mdT3k-hmBkT{bn@`UxBGJGiFrN26+>uSl`=?`e$ zL*?2UCCZHDKjlPsk*lHq;tMmXn;QSBRLtl&)(cZqKB$sju^WQ9Wg@dI8e_llpd{B0 zs>VGPMdD4_8cB3x!RonO%csAL5isWm^UujshT=CiqM6jQnqFmQ-LK}l%HY$b^GDGi zLG8XCG|3w;dw95t!{I(2rsiR}$oQ;UDhKR5BbBwuo}Y|>s`cof$rz8nXMgI~BSOO$ zSMST1j8`sT{jcwx)x2hUs9?}s-wa{(C9kkoKnxC7hE;~)rsHb}b3crhuw`vMqu6!; z8tv{Gk+wAXCgiN~6gK97C}Px;*>a8-{+;E_-NYt-1Oi-M5V^qjAIBdLBH&3FesqUR zWl9Lc!eCH!v>x)6i$jwQiC8^~PX%gB((g#5JDW{tuNdXU=Y&ztCN;rKWWeDsa1$4@LmgvDuc z-y&pz^O;4+hQ%s|(rU8Q$QD{#&A_`Ilxj@Y3>poUc-lt7+1TCQQo$ZfdH=0Zyl1uj zF~)D=;LYmISI)Z5E@KG4*9cH<^?o) zbxDT0sSg$(g~gC`1%Rs)Fht2_2rSM>USGw-A1>WC9_Y?0RT-L56ZpriGJ9#IW250AlkKK(lZMS%i|GwZ!rS|{#c}}~V zuX)ObGU!PuHYP*z*7dNEhG(t0v^48S$&i}eVTP3 zPWV1s%Ut+-G|g941-m#syP;^}<<%{Om%aU$#~1N7!%BjYT&q@g62D66)?T0y=5nDjBxFv9 z39YK#iE;gjb<0}Z*O@DfpxBpwYHm@Jv_HUAdI-?V>5$(3g#e#Qx2iP4s(?Qn3}4c1 z_l0Zl0jFsts)!NGb&ot2u<-(m88?W?)CpgfwlX6rs5?ZG7wS8Nnj@FSzWHA- zs3-K(j~Z}4U7Wq0KK|)$dh?UzkNX^?Jz z_Q7-E!h%O7qTTT*jzWzfa-8c`;C5Y@Tr*>C_&^wCmFoK%+GHFZQC-7M0g6L`T!ev~KUN z&&fax6Kl2&xl8kV>_FUB?oh8f9k^0Rg;SmsXAt+UJ=ZQYQL!*Xkh2@&go4?;31He? z#8hs_e%?G=qE@d9+sx%gFRRmg`^U)=6V5sw8`m|AH%t|z;S5Z`E)aS(==7Ov>%1kV zgV)IksjU2XKPQ-L(}@93-m4G1Z#jJq zQEv9k;2MPZ=W$9;;*Ak60j_{&#g$-10BrVneK2M8$8!Z(^Yt(Fi<2fQvEav>Mo3N4 zn>DHod+Ib6_jtzrdFxE9D6U)gkg&EojWOUCWu}=|DWwwi112xP3DN&saGCfoGg3U?B#_os(VW)X@y>xPP zd$gqKo4iwR6a#IPhnH17yvsPJ&D@Q$ZT7^)9&Ue5p4r*s;Si`YC+up8&%<7@gJBmSK!3^9}%=8a7R%t zz%3JaUnb~>6Wn(b;z^Sgf`Gu{CTL%i6%w3QRNsqs5LHeM^^EKywV9|EE59b zlP*C((u5e)1DWG!GW}uGILyehzrA{7Ro>xweFQRT|+9nZW;FDxq80z*I)3XmzN8C>su828gW;&jsd z4~cX$L4NZ|Gam|&BlaFoY{eDpe6g^9ib{<-;-&joZ^?*2XVtC{3+_O|*dLs&^e8JA z01+1W!!j9+9OuQXi{1_E&w=%6lKu`ez~+8c;0xMHO8O#ybGz&q>`0Nq85KWn932p< zam{1WU4lZ~-u&SCF)ODj0Mg(p!lQ7oi*~uU%fh-%;SyV6Rg#ms0}YJQ;z_IYH8FAG z@@HCOj-S11G=EuYUv8k}1znG`IEclE6|!`vOAd24{z*un61E51BdUMU1!Gs{xMrJ+ z&>}17FYn&>vW7ki+PP&<)GFsz0w+X}6^BYyb1#i^NRXE3-9#@5durSrZDreRwD^b}ivn?VFXda@vrp&~%%hM~E;afyfTqH+i@oqzlE4==cNr~T8a7nETPkO&`k^~Ljl!FLkan88 z^OnN^Y?>`7`BQV#S#1m)g{rDdIE*sDu&Zv4eZQA}p91cm{k_up(ce)$w%~?uH%sc@ z!qH$YfKi^6Fv=Lg^^P5ZiGV~phL#O8oRx-K7O6%BlwrD$Z*%{}5X>i8N5u_kU5Z&* zaj~~>W*;|?0V_jg3b69IRTI*NZ@< zj?lQAQ0IER$0N^>6i+him_VUWV;w{4K`mQ_Jtk(x$FZ} zD`Nyg#+7~q@1}NJ2zU{yg50;gyLX84O5{x_UK3L14m|PU==Syo4G(~W^57v=S2^2>443gU*Jp;9hzaw_FkUbx~sv4d2li+Zz1Nz{#%C7XMdg?|AGP} z%H?B)pi3Y`e_QO=!a?*g-&Ej8>z&P-<0F`|ZkZCLe&hSz;RDehYPCPou;R>cKxwl< zfJ-p1luP>l^jE3`U*4ANUw&1z)3Oc_bCN zA4x%5#z3iyBxMLH)oiPy(Di?M_TQ<1ZCM}16|jBaDD($a{1$FTB?xoK;Ys}Oe5HwZ#@pVdjD}&c z;Yv=SRb;aT<6a}o4BY`MWXf3TO2JcFj4Tg^bXh0f*M@gTS~)hf)d5Ycg#}Eh2dC73 zA}WU?in1>H@6Q< zlRWmf5+Lo13R`2T8P-J$iUaYw{!43)fm@gWN^Z4Isp7m-40hXD>&NbT2NjrlnJX*n z>&q*h);i2^VNiHIxcxbv;@s$jvv7`R5PxN~#GM$?r14dz10EAHXBpi(G>FO8!48PL zQqz(?HXim5`{YNK!UgH4@GI40NiupbCJ;&<;WLP(r=?%Bn2ka1jYnpz{!sn$%oofl~q^l6aY+#x>xNxedMYkhX_9Blz zEKhMv2F1uh<7yS7ws8VD_YpIapNV3`npRnV;ddw%n=ov@%v*0XB#Vr|&-d25(&=_AT!tq~lyn>IciV|QAIJT}AKKX;{!sAmd~%vV?98o&3vND|>-W^SJs|S) zPKs&b*9!d!bjs9`4@)0QqaY|3TFRQJ#Mp+Ry%Rm$S#}aVEIP@4(n!ArC?FO0Ho$d)(g&X{V=40tFuiI_kdz$I|%0w%O!f$Mtkth!J@Afu1cVs&g-ypLiDr9Z38GNTm|0=Ki%S~h-L9? zRJu0Jb~Fg(|I9jhpRAEr`c$Fd8A$75<BY`2ahX@Kt_s9yWtfJqB~i>)LH5- z{K-mq_zR$TyBoD5+O~6a6KCXMF;1DG#{Fj`I1GG1_3I%(X85e0wA)4OP`t zLa%GybDsd>8x zgMm{iS5PU3Q1jDwQ1VsDwZMa`YJ%ysvr+Ss^8>H)Cd>SWfMQ zxHwb>WB3IS5f_|b%tPNW7~e*-aIinm73C$eCa8M~yW7S}Kqqn$m z#;szU!$SRX)GhX3jyehFNStQ$?E>#;P8o`FGHaTt_Jkn>UoqZlrA%BNozo*0FbHBL zHZh-vwYbmap+raXcsK~jzisl~VS0Nhw;42(cM$Dr|Z)2cg`^GXj&FFZ& zJ%p3iB}S7l5oFyal^wm8HIA~da>*>l`TV;8#r|vArcp-+Jr!mL-Q!d?i`)t6lQ)z! z>B;@#EcdG=k6$0j!1q?8Cg7E;k7dxOaZq_@+o$ukp@BzryKm&t!VSH%>E+R-7EJ?L zU%{Tkcd9PC0*+bJ2G^tPUojA^scY~!?4NDzFosEUJKf{*;B);<^!}*ll6kUF&z%d% z3;PH(wdzqa+kd_E{FKhsZKNYK20PETHYy$k(+9hVOjd25eE}F>7;=XKUa*~+2bL7f z2Qo-@1NCz#2eehGRu^T^LL=G2^-dj^1ad~Q3&x{FU~xr)8is*$MF5Pb@nb+zB7L5- zw3nf72=d6HA}&{pyzIC=dar<%{4UcJ!WE!oza0rn6`J;6D+Zv3m;J8i;RCZtv@(1U zfETe0Jn|@MqL$$Ujs0^;=Q%>}PUt&6bPbtipjHvz7W;c6mZ=gl4+!BDP;?`tS1US* zHQ)aWejZjXQ;*>iClEc8n1_hpdA>6SuOTK2D*YzPZ=8taeJ`Adp{5B=09@uc5W<)3 zSFHRBk*?2#NEK$iDD7_svD~9d?JoUunm{0oc1_!w8=zzpn()K)c<>-akkOV8UPg1m z%V8|Io* zNe^?98)6~_vbq(mqPe<_tLx<|mng2)^{R#kFg7tg$y(gES}pTRq$inhWE>ZkZ)%Hh zQLexy%~zi`WMPtfW|k&@EraCh=%n}IcI)=UCmtLgokQ|cQ)cG3Eil6sYRkD|G)Fo( z^nu{Fvk1{t$$gV|lbiloZ>1f@b0e%8mCKK`9i>zHPpgEdgg7FUR)4_*KUQ%+0@5bu-R7=~F?eGGM2<4S=Q$;j-Z z@*|-uIV9o*%FerJzL_AyG1lUiD%F!9xsoJp`^!`W69OC6TtS6-dc2=YTo*htz2RX` zrL0WaT50jq6G>fHT%2^~@HkoTYAtZhg_v61Xv@0xxe=cJQS;TTealU-A!%4c4%dP`x_Aj z{rZ-_{P}^zzDLuiqPkg!YnQUGX8PAr=oU*nZ>pCt>?lS`U5jeXTB z5HcR8-9ojc)qttbaJS|uvCE$x!5VOO`Vm=scAIrlZ(`^${LJ->C>adKf*-n!pVnv9 zPHz`$3ut)RGm~(+hH65mS5J@^3)nZgh4h`d*%OYwXUWd-9|b>dp$cTFPBE&nWGaib zqhm2{qHw)03k&3{C?CIFSiqew(cRpQe=;l(p29DWE1$JIk~X&R8Lq#g7);wvoEpmu z9D+P{>JYTiO>I3eP$yY?EfECn@$z*F&(>lr*;A{sqAJhk3AhgPVdT9XxD$~Kv#B)F z^WlD#94?Dhq!Beis^au+0@{vxSK&4pzT0Av0!_=1+NRr z|I;fFWdBd8gWhtL;VQdTW~;1L8LhHeWwOd*mBDKE>Lgc7DNfRL`A}m)=>J<3(&IMj zeHz-K#}K!xl5zRabBGK@`MBA?-t+%*fwZBnc-Z#7`NJV^jf2Fm-{_cDD!4}D(XOcS za7}*BF27z@u6<68_ypD^d%K%#i6yl#_hJMD;2P@RKj|jxu zAzyEQ?@(7nKSfM})(;%?kVFVGh2!DX9`UB^o1Z4P$3H=6^y}5lFVk;8+7Pbmzc%8W zkf6#9nszE-B|gVmZ?y`W>(WpaZ1r8u*wF2j1*&4_RQ7VB60Ff`ye{@$nief5{sLR* z99sy_LbAMaVL&*m5zHPUd1ZC3Q5+NQrFslPXedow6jwfnG;A+V;J4E?#*zNW(l7w) zD2I>OwkUvLA;7%@*(a=6ndSP)p<|A0IULj7jTgPw2CKGw8Yo1d3j0&`-O+b~9_iN; zew}`&Xav80V8_4YEtvYth8r^tx4$dfZNzpzeAoI8Pb)z&RY;}~kBZm1>>o07?un>b z3^t6tR3mZP#&3qLfn|5G)cJgDjXPa3`Q12ss1ofaStKbP?(aWBgkau$K5G(F`RQS#L2VBdU|8fD@jvWeu%CiZq;6#ab7RkWVnAYL+(vKeKPQ4jeSR*a3S2=X9}QLdiB}-;5@LxC9h;2FK#j#YCkm2%??b-5lLg z)FQjMo8D$`C%9mISuorFjTAAt_<#}|k)&nn?vqgIVk!Hf(_ZZ&gY^fWrn!Ig+%v(} z`}E;u6k;e*gD?p~7~jMqqn3V8ZA!g{8JkoKLyoUte#!BBY7{_HzH1afx%~_90UplU zPH?N1c>HF^`7kZ@&Aemc(O4Ge2?uYu8` zujJ-_y`yqO3`vEa!S6zN=JTE<3z-f3ZAVtbHp_L_aFRUW|{$UZ{8Aii0gt+Ht?w|Wx~rf#4=~c2>?{1`3BgiK|HCq z^2Dgh)aAwP(q;|Nd7h%*7b!GsPP!~PRSZy6z17-n)r>lLTWU=t7M{d}01o;8lmP*6 z&4amYl0+(-STJ$!4dpp?5`&r(K+UA_IN$U)TQ^7Vt}eIFKW1$IrcqG5Zw%!b2MAL1 ziXjOTsS}^0#>WXjVkLqF@ndNbOv}U_;nWSNbLE2-=*6Jg0$)K|F+D1-Db;X>Pmiys zM;B-3AB$UkcbjokyN&)5=8PaE7*{D%hDi^FsmK-_a-|fuH&=I%hF;y>$||15yQ|LT zHr()^NM~|Q?wifDaI-mdf{WlI2Idvkc1s#7pL~dsI~-%qO=f%_9T^BE?!fpAut<;)L7Dxzh*zuQ&Xu8o4jWmIa)A2yGK zOcyrY1WTqXiuN-5p6y4E9uX)qf3pG7?`xMouwC2Q{d{|Md0t|rgrGI2+J*R?Nb!gq zG>8)$#U1#^&9$P=AQ*BR`_kSy1Q9jwoUOcbKJ~%k;(3w%v1M$}qpUW^`z{X;5C06q zAooxmz7N0$eG(povq3A7GsT!#JJhGy8TagUIYNj~U%<7g76A=VF<%_ARI%tOM>H1F z6LxzTPONWOAEJ|J6XOBf2EoFw1Q<}Mmh?e#83IKVnCMlIJdCui@JG9PB2(`&^3`z3}p zF)l4bSvXytrEQHuiwBw7{=E0t+9W|jn!W%4K(+Ir=HW8p=d79+hm)Bq6**AZ+on92 z7nKPFAcSS8F1aWyvyz0^Dkr`Fk}GvrjQXun1E=ya*)?0n*XKVV0XJTg6`N?wdhg^A ze&KruqWkIhZjCuFU*Ni-ASq!S?9-2mvxDxs1Ad#wcc52b=%#^56kPF_5hKNbNK@#BRCtv z6Z!Rm^3wHsTfSOXW(D^{z2-LPzw8a(XfQ<}l;aLnngf)LEMnFhls7^DHA`K=2dKi^ zMiqXJXckL29O1ox5iepoN&q^28PxvOhF)e&#}4Q#ocWnZiE?q; z865(hlrcApCwDjKYU3dPG2bn5%wfjVzIkK<96Wt(9`t6yUf;VE^!`upg+6$S{J*(l z38p~J%@G_Y0xX16Wq&1Ez9y@B^ApEC$u_f6SE9u4!6vqnZqiU0!EC>LSAu;XKc0L5 zr80fuCHveln~xvIn<5`hixl_p*GgIY`;XH>R5tiyd~GIG&7HV5Un~r18CU+%qd|om^=sYSDsUf@ ztj*05K<46GQLyUG4vO$g{68?;5B6Rm%OuId1d`zHikO+m^F z`OL!K42#zU6RktD`ptf@C=C{GpMbOG)dL{1NBT3a6A~>jUwUIS)$pbb*#m?+4{5aV zJ++I47>^lI;ldlSlA&#l*lG89W*#StY$qbw2J(WazEa0jS9F6 zxI|ohn`8m(?LZ}o_?S|_`SP@3E@#XLWy8O4=vFz6cBq)s4}_`O66$uLS_6`YdW}-z zM#6Y~^lmc6ch+r)+Y|l333r1g;h97l?)1vkS$4Kw7s^5ONuxIDN&qVYug87TiA@ZQ zo285CJ2|1Ge?Ce*b1}C@Wz9jXj$Z7&l7l>J!66b~xoK?*jDjXyXbac1hv97D0R)sA zkZ?NJ5BM1Z=u|-6glx2jJMR^2MwSP{jik5YWaoMS?S~Ou?x>TgiUQ5b)S$qKwFWl} zS|vT?{(6tm!RD3$i?Dl0`+h_2_tpW~p1F%;u~CQeQ!llw#a8JuOY&Nv=dLHdgP;{d zWLCA>OeyXr<32R*%-1Hh#+_C$=bV98fQ{Ne7#Gh8NE>|_Z~D}wxZhnWk9cyzqr=%J zN2PuF;c0Pte)Mh%_Ep0|VLJi2J^Xd{Db4)Dg;Kq7w_R5FuIalm)eHneHPtK`i7TzF zaX13kg&Wq?q27)%eVQwbgYRXa<1%AOz_S;rEy=6ipyn*UI)EJMz2?tPOXk@vWVLl z=A29-=Wcp2!fiM`xcuc3qW1%sW_EEHPE{-up@wCJK0tNN6gVU5CFJjl-Q=Ph-gw6b?l#KRfGmb?w#g9JF~G*0liaxSTYR{s)-e|EAnednf7J6_iffXbEq>XP8j@%w;%ko2@DJ*f>% znE=Gzm!>zz{K@^_5T8d#jbe&25qafm6t}4Q<$+mwr2m30_igfOQX!d_Ydr#B0r4yT zx{W%{*BP-nhTC8_`#wItdd)dvmKUrqdP`ybw8-lQXtzO_b{Hg~>)WmFf`y@_8lfR+ z8Kzl>j46Gf&=6ZKXq3sJs)|WH88N?+hXar_SvT=|x&YNWhE^p|fjPClq5#!80vl|2 z*_Yn!=nK>lZ#CKnUW21KJG*>;^~>am)Fqc$ZDBqGdW>vnC%#7dGKTCcE%C?65YO~$jAFaSz z=e%FzO?(UXEI{aX?R zSbW%eulifyOYzeaQ`i(#r?-2^Y`JHr`S#0s@JiR<;Ur)v4y%YqgT;u-$Qzqr62^V91u*i$z)!_2c2U@F zVumz_IU%!(h{3R4EAJ)stK~+xR1=w z+0qUb$)N&xRm_JR;Nc0Zz2_Bgo^#i;d#uu`!*-ora8+L za4J-~z1_Pw2L652Kb{MrtS(BbvfAvSZ}}oWr7OG65DIQeQHqQyxNMQdB3mb{-dSz8 zI^DIE<<->{SgZ!|4Y>u1{K0C#rrc4ZXRj^xjJl(Ob{1~dZ?8F7X~Bit565`(O`?CH zQ`}KEI|EKrSA-WtFCe8D4Ks{&bM0Ka5{+ow9ctN~oE_l`or3%@&QtP|1g@p!#&Gim z)m$)3j4 zWKW6`ONA_ZZTxsp&0ETWRZt@GLuM@j;Vqywdt2nN_;mqWJyEHHP6@)l>LxHh}!|aBFs}Vg%y5g%t## z;5(z5Plh0$7FJMcTE1IYL40sLksYgOIN$A9WzzB8j+M9!L+X>EhiWV$PMsiEa%k#m z1xwyxrI(7i5B(zX(B!)l(oU_qGnSe%J_u3}mz$O{@DuVvj*zUVl-rn zqeufigxL`vh494tnEM=nSg&i$oQ?7fe#}J8j1R@|u79ZIl}0c%Qkt6>`g0U-;6KZb zmZ^y1F59^%@kQn`O_bJfWwGqmUb)Sc!;90xBJ@o#(yDuEmfg07&7A8L@HEc5`(ns> ztWXfH@`b9c)a>6-wYAfgy&OdGCskWhN&_Xxy6;uImnyUFhaG-POg*9u!@=GL7G-0{ zFmL+A-sH1wpQYk!X{1{6C0|HE6)C@MlRXipUd1&l^~_1t&Cm*8juBF$^+i2 zc_`NbPpsD(id0L8-4hpM@AF|@udc?ijq~|flY4zW;!-f552a2-vn8hC)~xr*VjE;c z-c94pSS$f#Xge)aGwcb2LM{?9{jyJaNWlouGQwNsp`+~>Wea}v@e3ea6zjkdv#%1I2iyd9ltQ~3B1T703UGM9n9ztYW2(qh_&KDp zW<-8mmd`5I@Z{$Gq<0Y?)&!VTx%?i`E^5|H#q^oFiIK z7~ht$4ie%=IwF3RQAtc%>D-uFWe0|Lq8Np;uQhU^pD3g8c3jywUFyjU$Qm}H=ZAH8 z&XNtQy=CI@WHNHw$NFxeeZQ|69AXvsglEBo^9&1WSffj zR)z;^0LEs@t>LOKOZ^@8NBw7VvAt0S?R;{>`?KlU+p}}gB9ZOzheI?ylggG^4|KgQ zvmQC6ftN3ndH+QaNdVxV9(dL$JoJMGom_X$i!>^w;#72-tOdwmg|Nh*)MreLcy1Q?|Q%OE2{Ml!q$JZx?Dr`5Uk*QT~ls zZP+^1y(GDG+0Z2HTwR=%A8Eb$prK`r(jv|pu>$J%aOB`1cIDgs?JfE-xmCn z*Gf*SB(Ym7wW*ybniWKLh^^a}8Z};bhBG2EEVgUNX!p(=8nts|%LgP5}>A z;^q;zm_|k!%&Os=^5H5`O>MP8%CVn6rlXfGr*x{awnw=W2CTqZwWgv`?cWZ5ZWo9WzR*2*5wR0HW@26H0P4k3&fBSjgbW|;Q~@mqw7z^6FB%=4A{ z>SsNyk+pixcNr8H=fI1PZ0cD{sc~PD!D3<1PuT_5DBM7l9QW7-{=A8LM&uXhjKI0u zS@PXK$O028J34uPgck+66UR(v;Qw$d_q1u;=#K4H*r^fP})O z;!sS|OT|8W(lU@F%JZ<{{LnkJ$ln27i-4w0h+MzdBjtmG4 zi`pChjTT<(^t|aYS<~1q&$Hd^Pnq8rax+aSeVloY7@t2$Mxs^RJ1?H>K2@HkT1~H^ zq4dZxv{>r(oio_WQ$Nj)p<`$B^p?^iLYY%wT4kdwDsLy?T;G$@Khq9u;nCeW5&PMe zMsb^+Ub%>=5G9xp^fkql?Sb8R+YUu@%x1~6LN0xY8XS~S`1krY%R0`6qhHYzGReK z5BDTT{tDH4Q6f>}T;4{1H|61?Y|Wu~xHftt5h#j=D;(_?g?0g0rglwWPrMz>kX3g( zN}w=01H;Z)=~z8}w4}`fDYHp@!U>AWn0O*C@=W(Sx3$q5bY2XoB-gdu*EPfuzPE`t zzMC?Axp833Iqlyz7w*5JgiY-IS=AJZm@m%jn^R_qUR!utAH1@MRajXRh!4Z1F0_pt z!Mq~|J5nVS7x}s$E9D?SJnsCmNC_-KfaE1-@lRdBF7yn@l|(R<+*wDK%g}2VqgQzT z4zr^CZL#eVdpPY{QH#9G{c zFiMm@#tZayKw=1`)HB|hy*X7f>FTbBIbWtKoH;+p6~$M|_Z6*{&i_lAx|YM{`uOKW|Z zB?Hpp+N_64kE!WYzg(ndVX%u9R%sTif|kckPr#DV2%fQjXOEr=vcYRU5Zy(QCnDR zlmxH~D-Tdet-`M$`gC{$fc$B;itj)OF!F^F0?oU!12J>>X5!bfb?ak%QjrGk< z^CNC-tmmE17R44yKce81WG9qSIG3Wcxi?ZRK8f936%*WjZc&DrpOs^P@>^PQG0=g& zq}SyXIP02W_ub@swm*tPClTMPiRUto>j&_0<$;H^EE+W468myAQstXju(Y|<@@>_P zSF#Y9I?S&tJRhP6C<$z1{=*YzhN-L6%m!B=3fJaA@*{HfL9;{4AU$ zj+HO7Iqh_b9CtVVaGNtMPgWbbChsOMs2)?wRt&~ zc*3B=i94vej+hb$-%x{Gj>*lfk6t$Y-+yH(@!SknXWDX6@Q2`?XN|EVAR|3H7ZZU? z-FF8rv76$FKqU1|r3TzLf3A|FUaOIl=ZMQhy1QQ?5x1{=e9BfEIUbp8K)4cOwMD9L zcP3q+hc$_H+TX)IPV{E4Yc3FFBB2c3$QR|2@CIhZ7&#PUCGsa)QL?D4k&z%sjs=|U z1Kpd<@{- zuX@lL-R?NrvGQU3paf=k(8|=SXy=u^s`nA(-FANu4bjmZuC0^c6pP7a|A)LYVQVAF z(zSj{w&%G$xSOg%0wm#fd9DC~HD+rB*uGmn7=+C&wn5;fm-+4Y{Z2$igi@I-wyUS+ zPIX&IxkP40Mw~dycfPY&U?q9P4c43f7F8x@;#K`Tlpp##+x)+Ul7oZ>9}+4w6H(c7 zcwH4oV;Ks;^tM~#n@c$9$~5+aFB@Ox`Ws&$OI&Do@TPa>J9A5mi$LHO`~4-;8N?Ua zZ}h-nW=|-@cJbx>@^<`BPy8E@h9Y_{oHomttBl~?Z9z`r*`RM!|(HZ*@J=D*QZO>e}`w=wbMpo?=1gX@*Ygc-T^SAPNcom0xgT4JdcO0{@ zbW4TKUAoS0|6jvXWRrJYc^#oJcKlOU9$)q&TiQ=_Bv&>nGI;-Za)qOX;W00iyTncJ z-O(@X5F;WStZeS+ih|l$_U$RPedVBjf^|g2k-`9WlvaS!Rl+4!=&4j`ov8-d$32#s z9dVbTwuI!7oo4kFo;Pu)H`4?tx`JYfb1*N(X>N*&P4YU#ej-PMVu%%8rx;?6ht<(6 z51+r}U|8~3p~nJ;eA80F7jXq?o2@(htRwJy>j=bQ_!V!~V(DOJgA2vITqKy^Q?))Q zlf+htaS>8XA)Rr#ud$_A?xQKC<=$CRa+ajP_=e3V@WGu%}bvOb{xl1V*9s^GF=cLuA{D#+*ycNdf!C=;rc8)y{b;c@kHlK^=9 zeY3zFa@REA2saOuII9=6OzE0FLu;@qoH;BG8ecvKV0U|2l}*y3_wn|^+K+);J>UT? z;w3E9K~{f$+VUSbQlxI}zX`9V(6tPO5q{9|$oK=eGnLeMGDvxvw@?oM#3fg@hp=q>jRLrzhs>7UX64~T# z{Ncuyyoas1E@0G-Fm+bLO{Od zmmZICBnx)Posv-4U}*%yw|G3v0(6Abua!i++-KQT%WzN1U4*vR^^ zzqMCzs2waXZ}u;4uD_&y0(+xSm58`I2oNWN6h8z=cc=e{(&WJPDC(%1j{kw>%l{E^ zNoqZcY}2?lRehar2)U7{E{tb$B$`cQ*|bdBkrHVwk9MRqTFaufBwEX%9Vvy@GH6Fi zptbzjk(hk`llFJ;>J9_lZJ#GNMO zQ^g4KA6_4Q0M&MMb7nz|Df{lbGXFG}w4@UPlF5-DkIqyqjTcdbC*iR7)vJ641;*IW zE6jz)Qh7}5)5LIZ=5qoiAI6}E%B7|G#^uS0k&AJkIiREW7w4cp8>+Bn1Ucf; zH+2f`@wGw|^%~XMzO-Pc4>&eXb1xK(KgRMJ##mHSTk~lWvlM#e>{hG#?5R-oJwg-x zIaT#pPqz17f}rWY&G@G}l~M(Mm>%dY4~(qz@whSp!O3Gw9}0=;rm0%Qj4P0)B&A{# zH5RV`_<)slP&uG;lZ4uLMOzmFv&oz(AL5HC>J^xx;ecV&EkW2 znjK%VK<9b+KnKAhw0?G?Vt`pVDbraEj}D+d2TJQCp4Gi`S9yH;y-VXcn#~Y4;UWD{ z#~P=kD+opzdU3BmAsp?R=b*49o_{Cq*V;{t$H~B$BlBL8W~qIH^bxD=APK2)ty110tWGuKFf4Cjsu3y-w;2FP*l6Z%0 z`yD`9fVa?f_+%3B$%qKuSs2VE;*t1bZLWyCswA$iX1b!A6qdY;n_}_!^kW+N3_`sk zch<~XYV*XKP(5J_3r}5yty4}WN*kq5;7(>XpN_BOfQapen+R75TdW=eEWr}~qMW-4 zQ<-fAngBrJrU4Z_9^mS|xKrj55k$lIDVwse+%?4G@a9dk8R^pyu6Pb%wD|WJikF7_ z%CR;!=i=tUt2>Dr6`Jq&Pe1q1f)Z9FwF=0I)|wT{S!sKShXtxp-6tu>O7%|AFrj;< zJFMNx+ASBAdASWmoEYjCgVKt<1eeFk3KgQUFv|nMBzm{TYuin{wz|F@Owq7%xY2D_ zm;+51=7%F{EnvyUewQUqc@P%2T^w0Mm{k2fx%Dd;0y1TJT1rcJ;j8$h2p*0WIgX0fqeYHe zAaYm-cGOG;L1`(uJBSzya~I(Zx>)K{=`_=*U>*s|nyxP<9<#SZ$K&vqvH^8J716N$ z4Kpe<)vzp9RQ_-aD(V?o8pZtkTb4Sy%ag-b3YK6I#Xq*nFBik?`_ z6I-cmp|*9}>YZ4*lYgWGhPx7ZnPxm6dI;t`A9@Ty1~l#Y&~q^H`OtI7f2UA2A3B4) zRz7qFnXTEsg#V*--=E`6CeIn5w>j+UcNlgKoY?QLG_j5Gac}W&$-&ib4&V11!Bd2V zcO931uZoiaUZ;v{S5(D$6tm0%B7#vK+F(Vh)aIKxsH#Glrv-J08lWQc#`dyh=T8u< z;5C8dX)qM$aUt|vMn6;7k^LH8W{04P6}BfVq&io_%!!ZEu@;pi`TDM7CfdVs%`yoe zQaGuq!-$C0Jgs6{$>Ul8EA227w1Dw~pbb*b@2QY_;Q3__m%Jh2#L|KQBiMJcEr76b zUEi_1>~FL!Tyu$P>TdjA+agSev+;wNx*4_8Ox@BP7jcAKeu`l@B0@)$G8yJefp3%x zD5>^%bbb1fq*()l=3)Ne1MO>y_459L{C<6kihCYyS3~9W;^cDR!%h8$>N_*zD%HJa z1!cLd49)ps*w^W0kq`=AL1%VOW*&!0sdBb8<5XzMWSsKT&CBg=g;1wxL`&*IdB`mW zYuY6^XoNu62@SJ{(+;$ZH4V!gob&*HOc*FeC-qZ~-CmerUzM3hjia z2wPeU7W-C<3ZEpQ_awY&0XHPG5l+W zHpoG4ZEYVAIBq#7@${WGLCuy;73&0&{2G05@fZ={?BY|~sDYR*y=CcAi)pSxcm}*{ z<<{-lI)&lG*a`>ZiLE>sr`5!byLniXg)O5PD7O?oDZ_a5IG7^Py#rpps12R*X7057%jxLsSY-4{n<-qk*Q58s4~#BI++V#s zg}%`M5JKnotd6hYZQ@U7knU{m?NjueB&%)WC@O>aYENum!L(&o?o#)hRnI%O4Cy5z zGb1dA*KZw5SmVkZ$(FufD&yy-Brm%>cZ(er>)H}(QVH>i&sAJxV9}@|utk06yZ~0j zS2QJjzE@1WDIKj&proQhRfzMu{dJd!5o_-8>s@ax-+i;Yvyu_}vM)(-kC5IeAdDYM zAYsVD3YiT*|NLA|2A<^R7!ptOH(Wy+GPcbx{C3kBl?dUsW(B*p-h6KZNXTFhcefa- z$!F_rF0b|+Pu8iU^eP-t_Z*%NIAG?K`p3G11kD&y)E(^?ph+Cb|8_ePod!B9)rCpL z9*Sxoj#@$;1hK8cjW{f|pBFdv(TKk-%m)FWqTi{$=WCw)xr_1YOACNIRUpM)V zJ{+H3XQ5JSSei-;pkIMnVZ0;Ewzid~yS=@$M`EKNuA%I&2sL}N%TKc&8Trd`FuR6; z^3_Zn_EgLqijkG4&ZGpB69yPrePFOTk3aBiG#;CLQACzPfAO}Q6o$aH*yNU&f*cMl zJ>t&1h?V}@$7hyPT$S&aDt}K&E+TKT#09ugcykkWr)b#@+I_b zxuH9BqQ{G{CAIc=38p1W)VZ%I+*phtBhjH!A2akEiG_{mcc?RlVd< z^P+0z8g8qaAw_CV6U`1nOIy|{q1Ip`Z2R>8fM80wn(3ni?8Lsn-JNkcaa7;1#J`ioZp- zSF>pLgB_FAphx$1vh;@olp29oRPlr{o!I2(u@fP9)Mwrl(r%TJZ-T{bjT7DpIYUmB zk(>C1AvBxC6^17aN7!!!IfV;*;r~DM6dpJ9eOd2{@uC(H*;1{ypjo}zU0xJzM(U|9 z30WEM-$z_G1@@{N=Z}}yuDP!e*pk9xmRnFJeW z#!A~9AKn}$C~C7&rL^3x4d-G_Le0=mdFMf--hU=8lPj#jDB-OOFu# zO?lAkrp332f7fv8+9{3JyT@{~8+@w-$ToAm#jCTFWIy=c0MfIdR%k7_CzHe)v|V%W z;v-IT9JKZzgcd`cO6e)^_!YrNppS*L6{ib1M{r+dsY_-_Jj5w>&Z z7FrPtzfJf4E@^~CifPoF6)@Y{CcsB7S7r`X3h!NEyw|eA(V2oUroBmtIsRoGSiM5GuQ5)WiaA_y}5ofdo58>^FQU$NL*bB|x_ z!^VcZ8)lX0#o90~7uj@z`=Kg*gw zE-bX#ON*3m?RL9M?Rn)8FD@;?jMGK_;vjD|3mNQRf!Sub1d!gJlU@l*0+qsnk5VZR zkWum+ao{=(eyf5`FdpL)lI)Oa8-KSi=OX^#85(g&{P1$Z6vUriDI?~U9Fj~x1!g9of(Z!1%SfpT!dwb>7`6bP5rl@-r9hpk z1jq#Rlzp$UB)6$Ovf7`4{24{m{b2>`W`BdIt3$2!e~mg@qOK{g4fPo=(jF+_s05LWF0E=^}>%@)|&|~t^7eo7=bU&1cwd!hx|6Iy) z%AyrUMQAN-VVI;iPeT*iP#F0o43Hy$-H-fy6E!~rS&^7fcKDl4q!ue`k$Ak^BYwlRAT&q=! zmEN`qd}%aw5+5BVK6dG)LvQna^phpQOsbyit6sUamUPnt-#G7789~M#tjZwd-yb=` zV9(5jCEv|&Uic$igtOIJY5}_?^fCn87v4;mNPu$6kzW%dETq#1Q|qeoVDP=}U|C9t zkN_#{krgqVxo}*7v;NLQyKcFh$u6>@GyM6Y$C_xvEP9UewR3z!6t7U#%8g~h$_A+% znvb$2m25BH-QObLmYR2DrV!uV#Cd_A7ZI`V2yG!`aCcI~QA0r044#Ti^~YtYTSC;@ z%GMqRDOWAmFov{dXMLAIa;ZCV@s8CP$l4W?W~9Ii|0D&1HCK(z=*vFkm0!G=z>_NV z5%)Qa=a{XYfP$6m4oX!7wH7^7h0L2?iUowb)}*h{D2e|C0h1_V-hhF?r^c*Xtg`E< z{V6q>mFCLWD}lEmGQyw}HvI1+2#{&cY$ z3Ty#!*b>{n`P)MGsfF&>s$32Tl!eBsR4yG84tS8tN-TmhRA>7UB`;_Y?(TpEVY@A1o`dwn?y7Q5QSJmllEF zitdpxlIZnt%|2R7`*vps=E{^rfHcEu}>{ z#46yit~p40tHdj)Z?V4j(!wQ9h^d+FHBVETZpz_YcuoGb>bs0@o;|Y|`sK;9XQPYp zEuoFecmLO&m5eU847VP|g$v}Z-VSxDaS*qDrAVFU^|)@=Fyq5Pd`g^AZ7_iZY5F@y z=STFZ-YwqB)$M)x_ws<1Wk@7$ho*dImLmrcf5kk7;tdE&Si#QF=&$r3V-v)i$^i!d z2D>AhjnueJN^1^=tHi7v9RNDFwn{8}Vdux80h22L)oy!&ozk$ejimIIhmG4_+=G|U zqEQqY4rKb=Tw4Ahv_$2G%9c3TlgR_Xs*7j{1Dp_N^n%}`*i9oS^F`e(NkkfI{kAD%jHQcrYhO~)sd zedj6z7TzbOjvO5=%0nhIzD9%ZE~MsLctfR?@1AuL9c6l5EHLm86S=y){+@%M3Gqb) zY=1&gbnzaS4PQHEaVnUR%D|2N;7uvO6I}(cE9^7visrs>72T4#?>r1ugeWjcCOW)3 zj!75#%WdftBe0ZY_#JZ*E7A`&5=9s(9tPhZ(QiX7mDTN)8A*eunLcBWxw%k!wO+6_ z!(>n3o6H6=i}rQ~5!(&tEdiG7iSkzfT`o!twwv16CDsR=96&V1I?M zYe^6~&Z@2cYlZR9tqHf8kVl&VeoG^H%Kio z2z)Z_gML_%2xZ!7C$V(G!4-*6c5oV72?tY-qP+0i!DJAG`H^Tu^VDi8Q70|ii?`8v zJ)$V$Q9-GLC<`tUE0$IVGZdwK@!}!oC zx?H0?G#zVIPCTKzb)Dg!^*QmC7c&pK*=Ntv=gyw$e{sBqq3^;Sm1E!4ZNbk-eP0H@ zm3K>>j_JfpR?8Y~K&_?TTv&F7<7Ugit!LEa%r8%r6McT(zy!gbLAvg~6@wVd(KikhZ3X5hk@sD~YwXQ4Z&s^+L6zvPg2< zfmE;*kP8W<%hN7uQ9u(l8-?Z;8spJ<8HM*ab*P!R2}C~)OQ495qHD`M;sAclQ@^|S zQlRC6Wd8c*1IBZT{M{e})Z;ZR{u}xx#cNvW8N+MZ0v14RhX8~XDLhKp0-2mK4+rhTUcp*#*$Q2K zqBz0%Rn=A}wFQFOm;7PA{7M{-T9hd3&;tniN9JDUf^f1(oXxN6aS4yZb7p z`9_6Uj?CpD-p_NYzuu}y!{-cv7Kgtko(LGiEDQJQ_f!pjqgg1UTkQ!ffystZ0S?~Z zdbNcYH{V&^7XvzYC&ylcCx=-XzBjl@Sr_rnytE;gh`i2i7rGi)=n8F`)XZ}qq2jy6 zmyKfB5$pIy3Py|&1WYUvKkYF$s!cM`PE}9tOKlgfZz7(dzx@5y=Qic4#w`-bAPdWhRA2H2SFlA9ab zz11X3FbZlab7vu07gz0bzt#qp37?Qc?yglF6WL4sF~WbvGs*5PoO6!qg2kCaLC)UP zc=$t+=ZoNox713(GrmWl!N7S`*(2H&gH~8t{HzLE^@l4xJY0X?r#z5RQ%=J2H2=4k z|CLPn;B6bynO4s;41=1LOxy)wjuG!)R-W=;$6ydHS}e|6(Q(vw-B)yPNR#$a5oD<7 zVhB_pfbkL>E|e#=7>E)f6?nnzr^1@tCyXJUZYodKYs>uW0!HgDHSiq*yd;Jrj@dbi zsO>>@V?cI4ISO={yoU-!GvpcfGKW-F1~d49$0gG@5$*qAS}M3c*f{wpj9Oa72#V$zbgSTO7ATuyNuJf1RH>v`HOv89v z;ztjC?N284rC9Vtc3{&&R0k}1;m~OEfsOsk2pq=E?bR9Z%8DacFTz$C7~w~31W}1w zFYKs0s?Tw{9EOZtE#6OQAeEdirM-fbPy5yC1Rh#vD)90%V-!tr7zJVgndDR0hC{p@ zp*#$u&^>8E&I-=rR}FU(2K^6bpz~%wtgfPVWvTkE)xD>QW4Q)yUOwIR?1FIeX$yV} zK3ORFgaM9E)CfKq`h0?N;nwV2C9(6}-K?FfoN>0;xlmE+yPXRirM}y_0@%)2od7=V zT!<;P#m*H~9pCL-k=60t&J~Io23gmrwkb0y#SZs%%o=ewONuN2=Wrt4s%#E$!z zpKSoTs;_TDRE~7MWsoKX^o=ds{J_onFr&iDJpXQd;3<4HrolK${N0D<7Pd? zyFU`oS03*!QI-~yg*(V~w7P1+P925ViVoKV_dFR;1;Lcz%DyS6JqriQ>?yjq3c;}_ zvyItlA{^DiOMp)^9IExFaJL?ivPs%WvGz0B-73;?IXh*oyo|8%2h%&hhBLFHc7vG| zlRjd{)JeV6lu7`WI-GYFC1Q}-eovLLp&4a9hH+tU0LCk%Cd|LeBp9r#R4_nB%jhs_ z&ul(no>An5GM5B#le>v>-K!Y5*Y8s??2tQE3}G!y#V|)T1YyIy_JVm^h(=pg!<$h| zh{ArRWk(@nZXnF!(Zxs8T86y?xHASAX?7@f+{(^dCeSH~<03}#^Z>prv^So>?0kr~ z> z>tohRG4YAi!)Oh68V9^fA|u_aJl?;~rmuoJOp6()~3ReYhI!MvNiR&xg)2O ziJHnLiiW-Cs0eSs&t;(U1|O~P9cxz%oUoAd)7HMwMxyuj#n}CuQ3h*bHNRoX;O`tp zLY%G)ecfBX%?DVvHVzNN1r0&O<-pG;n@kqjA<6T zpGiDDk=5VKG`f$nJ|rOyS8(mBt|t5=NIWgDo!XYzVqkc{(FhhUdC-Bu-s3ochRt`24OO zeE#(v_?Tz;Zlmz|BSzu#sjGf<7v4DvxlU~Ok)!Z2&-3DYjlvhh|S9jr^qmb*wh95Z!Yn}(v-g0UY5in6L;+`rc z78Qmnrl??to5KTG7Kv#IL|-yj^Zb^o>z5bD<0SJCh0KS$tt3sWxzJhY&bJpV9mB%> z%{i>H(fjMev;1gqzHvU6MEkid4-(4P{WtRfR#cs;E;_ZCByqUPQ}ZY*csE=u(pQ?& z1G#u)4l6D|Ce#ppMg=`FvFE#mjjhv+D#h3E#fgz{#jk^;+(C76q0OJ9o?V{&M9HUX zPz&z?BRe*`{5?e;uT&ZUhry5pZ57P4By9&N+_H8=8vlmu27_v&9plnTk=fbrf1e$X z-rc^>Pw9N2xBWFn*P~+{{PWLQ5vCdLudG0ui}iASmK)#g5$P=Xl@iitRQ7VKzur@E z4Q-&^fy!V)Gj@b)aC439cF}!f-sFO7=JSM1Jzlf$ZQ#|Ef3LMTXQ8nW4+&<7cWV-? z51XQH4iOPZYI&>T-m)LmHP1m6=ikBZ;M-07iiEWHR#)VjiLcr`Se9-Ku$8XEa~3X> z>}xfyfQ=bFb=Yk%a4WC9)EM7_!@YJCClib`>OWV(2tz1dHuk_m^S5iAV2u%V=*v5}6roZ~u*#~IOxe8VA{$j( z6^|sP&3JqKz9kFbL=G~Hq%CL_Rt<7#;}kEHm=bZM?cl5IGhh_}RyEG_wU@KOn-9tv z=cuZjaT^F$mAgw$(aXUGmzr~vcXfYr2ag`2!RG1gyW5jl%TuV!wx~OyBIhC?-VIl? zzM`7Y+nb~T8_XdL(-4vYo>3E#;hhv%8vOB!R0Swa2wK4RSBE32q(jGtscDT-e^oFi z1b_55rR1%uv~~cCw-Y%e_bRdsp$0+0fYH)asWz|}Hm*E8M2>AiMAFgVA}!)bsLWlN zuPTSE2;b!6m3w?1O#Re02Cvu}dt1XndIuIF>C^^KI?BijZSlnbnw_fPNjOTQvbhL; zWpPPtB%81w;^`jlsb;md`!zXnvJ<9hwm`! z;=RJXQe}5~gL3*wxJ4~UhVq%-LKz&2HWTvE3L|e9mBzDqC`S?xZ##N` zm(i3rR;PTx)kj#E3le#ziGj(4)rmiSE%UcS*o22p=|)O;y%i*uPgk9p`FKfLSF+T8 zAR=K%=N!quM{;-bOsVGcbL`4mXT{_WiTx0ygzSFm&V*-IP({pUN&bkbT`iYw`S=Oh z5~||98EFTFdw9^4^z9~dGMw+iHXW9!k}?UFy(6|eKJ@|L-H>F+!OG^&K|5RQs`?Jv zyJB;_4bnG4jXRe@MYkicSuzd^2&;n;rr!RI9m2o_1NbCjT?z%1c9NQJf$WIQ3ZN1W7r+}@4h1TtF zoQ5Bret*gQ$O2O*>1$Eolj#`msWcZ8Lgw&pzAp4gULk|1N@#yoM8h?gECP=WJ(eEy zZjmG`#59!bjy1Lua%YQ`6Uf8doBZV}g^fyuf|K6Y)CIPNy6l6-Cr2MHKM@w7&gooZ zJ6{#lnwlT7+u}QO_W`>?waU|~lKHAfSEKTHhk<6y${uF0nTe=fMdV-697<7my7jBW zqhAi+kAAqlz=v@Bq#^YlRx-hI`!k^ZW*~B3AKfrMM_ZR{D8v|xY3UU-$%Okp!Lz2Y z9p7=RS##eo*6g*yph(FQw-Al4F3)h9+??5_FtbV>a`%{2O`|X-6{*Re-(260UNkD? z!}BRT3+d9gXGqYBLc_ObNu>Qzw*+t`+>y!>Gm`cw^2<`@ap=6wik15d`(+5*hIMGtwtG}hi%B_jwKygW zq3x4be76s={`_Tyx3aSEo)3{|WD$b}0#w3i;R}O&wr9R3RmKiTpFi*Sm2S=(3$nnM zGJCmc@NxEVC)8jeL4zs>-d=aZJKVxW_I24T)akZc{ z3CYjWUsu-F&El9!)lLL?7-&Hvge|QF#7DW1q76Q@+bOt~-%;rsgPpC`H->o`D^yez zrVzKTt3$ygJRG0n!69v{H{6tdo6Y=_t4)!Jc&`TvRyMH9`T;4^%2h;^4G%UD#Nf0$@__V>U4-Jfh`zp1_~G)fK38VOvBJ4=4$3C2`fa7m_W6Fiwg zCr(~QG}D%9Og+rBrD*C&9~CDn?v??{Xij1xi#wg0dh<&U}JJ=(%7u9%3 zl`-rszeRNQjh>O(R3QFlAVP2)VU17)(l={NMuHVmwBl_}b}z8QfQs=fZgCn+VhV#y zD82mBh%W6Fokv(G5Zl|!EU!5(ZpsLrLyR>IEbSz~Qsu_wR}ZQR&19Ia3f(^>((r27 z&RM(_a~Y6LzBz;ARFzN4n|MRcMu+eP2w=99EWy$5QkOKRij>g_A-{`HnhX8r)MQ*} z=9en#%H>FfKl-j5UFQr9?fVu|7-cN?yWm5Sq)irj@)(RU1GnTW@s<)4j?^G~NYABYScpI$N} zd%IK|eQmgLJXxGL9IW>YJD!-WajCQ_9@QSrxrmn4QmK$a8kq<$T<+641qDXqIAMZJ zFgELoivrP&iN##52_mt4Nn1n~YIrQuy4hhRsvt*j>Q=jPJrZ-zC@&!H6){8-auw1- zEqJw$?b9mo>%&c@nG#MwFgnGGMd|VkKp^RW`AqhNeEC0R7nfI0U=Pv%o{)5ZdHv-{ z_ViETZEx>lZ=_6mjCZOqv?dBfg$Dt>J+-dclf)VT1%_bDRVQXN4EEkqZ`jvZ_;7Ri zZiMc^>!L`k5pP0L$ItkZ;&S8^?~2NP@eo71+YxuE-OA8%i5u(iAieJQUQLF9&38zQ zBau!L%~vx^NFgFU&6MfPIT|a0)e zlu9W7?+l^;$FMj(#rR+Asn#2m*x8fO&4;;y+9eo^2Vy-4zX~*Y7_(8jc*}n=xN<9w zF$qL&2s-m!B8Vfr3?gy>cN-3kq)&iBw!;wP`AM@U; z{P`X%L2}3_DV|W)5zq;d)`1hsPmp#q+P;h#Za;r`p`Xe*5;1P};%D}ARI(X_H(tP} z*}ovXZ%-KT?g-YFKg@)@n}R~Id@^nR@sEj|x8>Wi$KX1yww53?vmDTI=jigB8lt1g z6n;0wO4f|m!eNf~`ud#QoB2h4G*&{@(TJ=!KTCb$9ARJT0Rj{V)q!Mq%)r1>p3SYu z(icX8yB>QgG($ovUNcNl5EZqoPpM^ndJ&*%%Wt9QcU)tHd+ZFOqA5ERStj=#NK zRO?)+uVzyV5oK0x>frrb=6|748d0DX&`OyE+;U0Ke0o`?2!jH80%0^4(zQ7eY=p;t zQ_41L4(kZFJR&b#S>ehFACVEReDFuEH>^3VOXPfysKqeC;2gDS56;{XHIg%mRilQF zZ?M==F98T9<2cGTlUt>^Q`(Cz92@~*yxTE;=B$!(dN}(oQJZ25PIjuQ!Er=bq$h8~ zj5C|12$ULc8#F+{9D{v@D8U+3K6p*^l{;bb8t#V?MDh@Bnro^E(*sId)l81FI2j)O zeBnPa*+OZh9$_Ah5H-Kyd_3bv&=kmw9YK?TTV_o(Y6Q&#RRPxrN|4baNcZ9!XFNg? zDb^QH{^aT>d`<+?1Vsc`>iBsb6`Vjn5p9+<#UzGizSh2`fyAEZL zRMDNJD2vni0pcPlZdv8Mp0=3HS2}H;xAHoq6niGT=N>1ec!Du+nqnuEn-$;^#ElZ) z;%o{v94y-AQPFGr!bUktMMGR*$ZTnaO+bbA>hKZ<0TjB}@2PsJBIc-nsll2KO@%F; zEa?qhKoQ&OOS7lq(x3n;E^S8QvbmhAN@Rvb+N{8uLYiKP2CZ2Edm~!&yZ{(~2l&%= z8%{V2s*7R@wr1befi8f7xMN&y`zaZWts>fp8Y{peC2kkz8^ir&s6aqT?(K|A zEdq!h!YKgdCU_mHT@uJyRa6H}BXnk^QYf#g*G3BS0A6QM!ozZ)#oQU8vG8V=S`;m7 zZ0uOzbcg!V*^{4c$Jal-JH7bn>`Kv>Cmf%pSJE8ZB5ZovJn`j%46 zR{IA73}}mAuVJcGY>Vd_nzKt#x|{e6!p%+J?&3lw{m(%%-|VbUxO0NAs|ivy^Ek;6 zbO_+o1!lw2wB4^kYI==03%6W$qPyl9#o>tPLbwa=?=J@s_Mw13pjLKWY{^i@9ZRjT&XJWFlK}zW&10?JqN+lUJNK4y%vwm{!5K`k6 zZWg3_S>qOeWMOd8X<_g=3dib|)@pMx>WB+yrESw^3_;Ifja8c~O$DE{&+L(sr-yWD zJ>fAQwRkl8;NGK&I;dS8YEF&*jWi7(C^n&dCP7BYkZ=#N3%x6Z`eWs=aXiMk zLhO(`T_GB(a>o{ytb*UctksWr12!k+Bxtp2oCK<*5$=~S$XKKwon}{H@Y2F(O|KyeI&w#vrD>q=^sY$lWxp2T-`<77nBuM?4_p z3ADbj&WI-~m*R@5Y#=s)LHaB`vXz)+6per#xUf&8@WiYL5r}Ynw38=z4oe3@br{A% z+y%qY-b;v&#eGZ~CaT<&YR_Dco#G!9jk>1lBegnX)kmx|@!_RGJI?c{>VUcDV9VhguJGl!^JZzFECdH9ZF>-~{ z#}GNsyn$@Pe~AZ%;bX}dmE#@vS(56}DfMb-00OJJ@khC;vL!hhk(O2WGx7Qt|Yx-I;$!&6G9$vsAHWvf7&5mWc7Q@BG& zxtVMzy@WDx)LQb2++9DAGzuixptmIe;U4%fxmNw-BM70Bv&xAPUFeggMGWR@H<~ak zVy;YEZj@3=T3}e^l>#h*i|c(rffa>;aJ*f!=6lNMw62&+=m7X?Ko-t9wp`E%0G2U+ zb&I!UUz@q1Je>OyH*`#R zUvU=Sp`N=|6YX593)D%nf*RAjUGZ5a7rTmTklqtkOD7uc6BE#}V8+J7YSx_&YnyKZ z?xMk#3`IrXcNFU+R6>;sWI4$c!nt=`ZAgN;;X-i=8-Afu2q>L0kpldj6t3aU0B}~X zv(RnFOV+6$&~^szL7{#yf=ZLVq_~v!;!-G7K1Qc-!+_)TcZitRkF^bHU7s z@~wG&YlcY)-)bf|88<1$IZ8-h@FBeXZ1(J#XM5LA3PkZCV`4TVT6V}$$CtNMBXdXl zAJjxqKGz>O=Jw*~MrBP1mBFJwI)691p7@>~kj8T>eI9P(QpoX01^`cvnhc4a++Hdx zfH#9mX+HrU{YfR%j(_A^5jJJO_#v&VJ-G%dhO~A?Jx)ej89GxlMoDl;$0%US*DEi3 zyI}XpUD@93QA8myHWHm2puKDGc_@5vB~ejtX})058Llo3brG5SVc%o9B#dhm|BW6X!fg zk4oKI$sqS#eB#=c!(kuN{d~dhF033Yt<^peX$p2PcNTi{-R{a_yC~Ql!27R7WG`r# zzh@xn^jx1DA0@@HON&u}d<1~M{Bs^D6M<*AX{EKyw=%eWKaCE5q15UvnsMCi z#~G@p<)l}PGwqsWL{$tS)l1clrtPCZm3z@`FMO<;=Z>x)qi*Q@mN+>|&*knt6 z?dt8u{<1k zNwN6*VET$MmC5KRy}Y}Z+ivk<6~lc`fxn~ApL4frlsFfF&*XOJ(<8gL!cs8bl zj>>f6=3{oQI9wgSfo-nz|Ku!CYJX*)4FYmC8vXLUFd(qSI3|wk1PB843`s5EL-hGj zREP}Li;=-d<&ByW2dphxS}LRgdt@as{|isyq%5cr(9O9Dw@h5-z@^s|v}DhO@M)H0 z&!gUS6I}Xqcpb~1ycY|qAIi7$PB9czP#-_>i7#NQcjCIptuui)6h290tscI$@YTFL zlB@SAVaVcSu1DE%hZbh1jB!G`X{V?p1~;X-vUYOsZi=^>k10jml4e#X%D!ciyN1!X zNLMYEEOg+!hr@Z;18L?9b~n@NuSsX5I21vym5XSMG;<52oye=*TVKbPlvZPFQtII@ zn4Ii_`+F~C`#HFSBDwp!fVX~FpfHE@m4Yh2+2s-<;5j9`>MxW5zc`vGVQwR%m7pqu z`1gA%maCThKU2$9I8h^X2QaRCl=%_-5 zBRT6GjbPe?6vq(er-^YZX@jkO2J_T4^s?9G2QFC0%1`a>%kacrn*3TyfTtQO4ec6_ zbElnk+H~oLG7h1BfT9GYc*8O$5f13it6Tl-hZdu17iCb`I1xg)XHgm>7F%;CYXIjH zYJsA>SH z|BQ$D4&v<2LBIZ2#oFN!4&$tD7B5WH_}oHK)5MaCUL7i@116O$+h}ZQ9Uwax|0F5Y zye6Up?lOMIH2Yxo2i#Fc^N{^9<3$psOfy;IdPE@YS9w`l+K?IGJ@(hu`V8%9oxMfk zYi+8Z@S5m0o)U;HbC z$O;$2?rQ-B@t9ZD#HN591szs4GM8B1JAk3_HS0ZXY{VBYv$oSzod{SOPLECl!Z<3G z%^XKZjS>reQKH0(TPYZ{WM9Dt;EN|JV-9*V>~6ZchJdDujXt5Eal0F<@O1dne|wfT zJ!Jjd?8PTyaQd3>&CXmQet4QkX}FzWrLuV0;?l~ODHUfz$QBok*Yu)z2bRnW?gU@R z9CJk@Nhu1cWXZI1BdAgVpoFy_Z*z@LN8_XM)kVCVA9>(FYsTb4<(O1yCR2n;W0Kx+ zE%Mma4R)lAm&dq*@iol_cSzGnsAl zjJ`~ewlZliPatW};9a#Z9Ai<5oBaCn-7Q6k&tNd6wp^hr@uYR44&f43fRG- zQP62RHWvf5!1W`&u-02)3gAs=)!jyICpzk}n=AVvm|wZojxAJ59pS&nm#AI_b!HBYG$(`o5x&@H{fkuqWOuDD{c^!brrFv zrZql*#Sok)favuz;dzNZOiBr?_E)|R+xQFY$>+^E$5VcEc|7WzkH%xT&_W3|2BD22 z$V;XNQCC?{U5w+Ukn`lF&p|8q-)uy>=Q)dGAO!I65!5K5R7*^h(5{1AhIbMcP5eMp zVHI06K{gxaZV8+70`jiUpPTa+qfdDtG#MQAI|`ih#4vmur5fxafTdM_B?7fZBa{vn zq)wuR8PHm_vN2TGJz_E6G)#-jRv|2IU*rV8z{LSSlAMf=_{sd=w(Vaj#Vtj5f2VPB zbqOJU3DXR~XpJRbS}1{Tfpv(|P+95C&QzZeO<1fiTZ&jOdPU)FNpiZyG-U!T*GC^^ z{{6d~;HXbh>S~VLoQP#`XR#!C2HB59$8%iq=45ro}$qls_W290rc_)>RuLIF*Y|(n_aF zy4)sCr6O>=*&BkPF|s3bHu>#zWWg1=45-Q>uP7;wKrNtbA*E+Ir1YE^_=b1jbW9gz z2hD*yGG;~dNN(OjGN)erReT>5RwjuPAl`4Fz;clkN+Kw#lFBTr%JTo`DS{$sApKDf zEH|&!OcqH4--G`Xj%K04feD*lgl4h5wI9ZE9`TF>{4C zQGR5EQP>n$Zy;t+Aj*u0d&@BcYhDLcoPU>E>)NeSYvm+VURGi+nY1=E5^TY>Xr%ct zMt6{OvTVt30JM%~S=7dfm2ZrBt!dd#xiF=cCt^RO67d{HF@K*md{Nhp*h(GGT zMtDZkJ#jWo>z?ynbkEXpjKI>CrQ!u?oZwdFQ}R`MVX-6jCC|qO%I$Kb;?5 zpB^5+`|0TN?DqU(Ou^sLPryM8k(Ri1%j(|J_wu|nmyj2AQ!1T24+AZ`=8`UYpzmea z@4qto%2s?YbTh0>3qtIvERO=j5Z=OK(r0;eq(7D&MSjq_G2!}CO<5~=eS9*sUnV`R zl-Ub6w^wKQthe)BuQX2Tj7~Z&)l~pls>(!ND$q?%76s3}G>kx#2vV+EN$D)cXSXp) zglT$AQjm8RLyUiEUWI9vE(K;%p$ua+Wu8lP%!2aF7an(1kR);i)LtQV=8||$Xw;e6 zRgu=_ToGy=SIGsPNU@u^oJ=&yo+>ZM983CCG#*A_Uj9T@turQD6`j{@O-<-7T^TO! z&V-OdlXq|Lt;Jc)XMWHrnNRwd*l?)@D!K#K?y)bPslB-xl>|e4Q3Yt+0 z3cl{5?zU{wr<4B2KB-gJXJ1IC z&`+haUEdzvWX1mMubIHr6obkpj|8VsoM`atKZR3595vRQ{d+e0e5I&eY?z0cI6uSd z{Ve;K%lrM;zn5FLLcGZtrDD9H`tHYErDR>l*E~P#qPKTc+lq2V+q;k_pMHe%`q|WF z)n4)Zp-VzJ#6M+MK+R8&o>^_*Sm3ujOe*7MN-+w7voKWLxB`{)2sITVqWVSkTl7@d zaEgMLe3+ll=39-^@##fk6x%AO>>GfD3x!ach^*pva-#JuY`8OC;1x8w66 z$;RW=(b4snD`h?Oudgq!$MO^a*pFV*ifUnVM_}6F%!Fzfb$70UMtISVNWH32)n;hd zs@g4p{|092%O&668=`7$5g!#W!(2VWCx1H5I;(2J|j`^rcLJmz= zfEV&VTlDgQ0mP+lwuDFAA)5&wfByWr!MZlOK0R_7>Eq`P)}55jkb+Wr0ZwO0u$p2o zx1>XeTetT7qk!L9d8t9c*O`GBh9S1UyQTElHw`yjDI-e|-?-ppqzK8nzvUSm`m3nf`^t7Sjs<~P zRiMejEzrgp=Wq|$t4g>UiXpzcFr#@>brZS+dJ*}=4A^;{gQtVGA*itBjj?6x^RER? z3ln~?mY6Eq4^tAY)kH^B$_n7YnRB8@jv5`vCZMqyw`DdnnDH8iB)(OI3q$A44(V0S zas6*%g&gy8Zyod{783~Qy={8zL5o;@Lw@6a8W7nM}8l&Z_Ui=7r(E6 zN|Lkhc}P3ru4hz6_k@gLe#mx5+BH1niWv3&Ce(HNV6ceIApJZt03pSC{jEsU+DZB;0oVFZ0Mr9OiG6?2lV7@YXs2YlL6xDLW@Kv;h zyM#DHs+Nn%oRwLL2A(D@m6)MLBblgduoEM6sQDcippyWx^_P;lj^s!yrK$GQo89Vc z+Q&qs#J#wVOZqN*9?I@@f3O^5Rg?1@kxY6loEgO=q+52kRR^5~MO_4Yg31I}hM>(K z8a(So1;w)B7MgNu`W?z5De(Bmr|(a1#xwaIZp|6hy}vwhKmL&A z=zxI#(Rher{=m=T92fMr!;(c^OTx+$fe?%9?(J%!NrtPCE}+p!WZB)DK~WF8&>5rH zafld>Bbz;`h#P@kc77hZ)I}m%=FK4tP1v`Br4%k4=I2t4Dn6f6Wh|NRVs2Le z-KvBsX@Ec@E`IkR7hxXzKCL8X2zThwHecb!HEcUDi~To{9ez5Z0z)GrkkVY8)KAhu zMJ%(F&Gq|>=G-b6RH6`T=Jmv>lf0>(Hr2ozJDYp^*nb3vcDJD+PjtU9omAGi93!yl zBrmY+1ep}CV0$Md5=gsbMg)kIH$xpriA>URYko%o_T=!=yKJ=r4{~^u6GO<3f5@5* zMyg)mJwC$ZntS}J?b#4{^>`Lg#Tgr~oan-(9QdF0ycIB^g!0;~B2Q5CP@ov)EDLxOciL!prG7 zX`qccq3ec0E2*#%Wxh$i&-6&*ZiFJu{=aZ?-tn_Ob?3KJj@7#-tRx}u-G8q0! z2g$q=+!Cp*kRwt#^lK_NyE3hZFY$1ic*YyuX(tF{_n3=VYY)bI8-zc;#Av~MqmpFp z^7i*OwxPi-On(gNHTY}AjRnpbzYN`Dh<1w01PB)BXhZ}5MJ^<^0PetQb%aQBb5AqK z0OmfAoPwW9WAj+fwORF(jwztmiw=4{do+7Ii(|t9u!R9U(#Nqr3iNN3Fzw*03-82_ zr*>6ry4gncoeXvnLsE?~2iya}a&b)d^d+_KtOBQ}M8Vdzg_YDX;N-bgXh>4-Q#Dg% zk6vz~X_DB-X{J>c@W1|+ir7y4@?)upIQW;ay0=pT6Psf!mgG{^OR-WFOgV|-7uPWF zzk%|clXPMOz?dS=ERUxbeseCD6}S~sEb zt|YR#Y#>?Vk9HHfR*SU&a)mG-EO;)yJ6dsgEccb_B2C_~yB%ue#-h za>&gKcMQ|+mY!0amW9B_rm;>~{3b7<^yXyK9ikq`UXb)c_1_S+%h62o_axTeknHW8 zUBiQcvWW2U8F&eaqGFx;FJ9P*MBzJeKK#S*oxc%$C0&DivwvW3#mx40;9*N8l3zE( zrEAhCj0{`C2_@{l6`M+mvavk^gN6S$1Rg78`y9KO}+4tc6I>P|cIF|bm$@o1;& z4)0+@PG4pvp;7(nZS1`4xfJOzFFo3fDssKIrBy6?Q$>3M*CmMy3bOL5pwOg~z&>mt z=F@lXBuVQric{+j59v2K1=TJuK8#1V5ID!zK`xSp5Cyt<|W5RR!T(E=~pT!0nBF5tQjx9cdF~cN5ko#uqR|lN6Tev*4D#K5p$+6h#_@A?DTU)&ikia&J-2U}U%ko!h-c3nVn6{1 zst#RVj&Ghlt2;=rf?^q*KIR?O(c;z@SrWZ9u>>roLN2k@Y#~HOYaX_qi%VCYTk0f` zT(ARRIf)L%e$<#MnMm3Mk9HVg$qHzexz$nw-B4*10UC~t2f-RfRM@+{N(KL{kRo}MbO*j9jjbM2$2|vHERd#Y{*Q0 zx_Pd3&?aP-mR^plv{@si!C%@NJaV?yG5JqU-{&7#l3Z6p*#X>3YR2kYo(d~W&T(i| z=$$~(8mF;?H#~bLG#$iQCztt*zMdX)yj2tf<#+}+k3%Ym6KY=;GYqX(X-u4rK9MO| zYS(taG!lAVd+Yh3xw2U!R+v#~R#~X#A`)5%{JD8jB}j_%j&Z|9#y$_D%K`?8@)LGI z9j91=j2bcZ0({A-$+HEB*_fpz`d421L^uc?V$=S00tGR8&5F>Gc14JoP$DYfgPGXe8`NqCV(d7FpsJFri84zMS=iQE@*wW6AC7eJm)A7ycZbFEM?8q?*OD%xbn=?Y7F2GbL%JxOC_hU zaOb*nO9=s2Y3LC_`94F>f-B!`=viyuXXyO{{anAX6=I1MVncZ7tQ8$yMUHnLrRTp^ zj(1~X4jQDT)vDE;(BvU1a**q-!RG#^<=A@^R&2^?M$KBbKK4}TMphAZGORKQcoeQN z%}(?_^pd78Gq+R}Agsh5hrHy&4Wt|&f}+8-KOPOvHqI`l{chd<#@Y1NPQSlo9)nzE zxBY`F`XZtj%W*dT#lq9cjV59rdj5ZylleC``2ry?J;J~P*Sd($5%qY24oi3>5-2U?$dk7{CpJQdsZxazQniL;odOhV^gCG!r_)@2L=1c<0TJ%SX}! z;lz?kQ4&(6y{%@@IN$)ixjsG>p`z>qsF2Q1FK$2M*@lH?3vLtK5RT?s5GXiOiKdxQ z#4_AygnS`m_NllT7r|)4LtoZ#O1I<=xhsOf5hbX4m_5yUo~Y&|Q4~LI_JmtihnG4_ zo0`NFk~b%R|JChHT8!Z6!)$(nr(njS3hCH$sw)|RC+ubGMk1(D_N-X(J zTTsdHaUEfFMAM2yT~rxaLRpUr22930J9gmpCILpJ;bxv3-=1H6$e)m#{mba$X{-WL z+QUNir|k43oAGrjVQ|q2aI?IJ?-hEMV|T*mq9q}E3Rjk|p`QKiZ$+8Qy3;@2bNaoP z4^JXDcKP~{#@uuJAMZLJS@73TC8gXyPyW}%6S{~5aq6txbzGLY>2S55&=KmIb z%}Op-mZG!GgV)~~4ghB}QPZD5x0844luP5W1MlLp7Kd*)Rd!Io4u4}l@2IykQ0!JX zy-6rX6!;Gap@?(DuLg-G^{6JmeTEi_y20f1&XIPhLK&77O*+1M53O==kXuAV50q7G zi}XaWt^@SJ$5R6O_#xZMDV0=P1@!sQJP;O|0q(BWb4f-l&Uv}=U1u1X75`bTM7zH zS)?BSUx0BW*be&8<0~2SjsH4l;1t548~aMRoP2==_4DRFxwX*bSiVg`^-L1Q@TR#? zz$L8~`FL>HpC@9FWtpiUT5iLji{8f*O=Jm&7&#`fzh`99fa zE**v17Xx6GiiKL0)reEF+k@PJIsjIflWHgfEnr2R6c+<>QgaLJ@H&PSbOc5GXZUh6 z-`!gEkR&r}{|C&<`EUkHRT0v{tSzisx0fO2cNg}n76~4&U|-ezWSvMOr$TPE7M5@$ zDBB-$t^p9YJvjnKREQNf-WqGSp3_=?`aiXyzp;nf_4I#(nAT6nig}DOf`*eqrPa8I z1Ue1p2)FE0QeFmR^%z_#eGN4xNRtAti3##rQ~|8ndK7~TB4`oO0Mk@4D!$aX5O|Xl zeC|EQgCM+Qv0zSzp<%5Q?vd3QjwqR&PMlO4HS}mSYRD9GIKHGD4q8P}tH8HZ&l|i) zRAx-QN5X}rc(x$6!(E3hFs?0#gjyAs8j$LZK>r+lENVLsdyH?J^{fj7utNE93X8 z&9L^AD1uB2sASyBd7uB9OG@CT+NSuDxc{>e3VsjnCCktzAwZXZBPJRzvO&3Pdlt5FVCYr~0Ip&aG`-bsZhC@D2(kGdRjDf9varNx>K-A_25;?z$_b@fDAY#66UfCgc&Z{nCT3}RX zEA-cT`*4U!S^)eAZ`94TW}H^jdn){7O;M{(y7jG+Y^$@d+M92;=jImrRFYj;ZmzDb z^;`W|Nj5ZJCz;w4lBrOK#c(LnNOW9TI$-0#1Q<23D;)Du>4JOP$pXZMM6qC1+0ivg zW~OWoG(}fxE%|j%ky_q zFJYMLp|X%yg?9>-n1MUoVeNA+vfiGkrhEm=(xXX(pMEs9@@SUwN0pbPJA#;F4WH5k zO`8|O)IDd>6Ppm&0H+q13c+P%qmLk?1jMaU5&eZ;*PL z=i>g_++TYhhZdz0WbR2UOJFA74Yf5KH`|u$cSZt=rGQ+Xh_&`ydqYvn_WQHTcZX+` z4jASQS(B=i5C?-arFO_-V?mpevjl|hle2cnopM$@8IrSDCjDKUZsL_9^H_txR{`xH zxRT<2lU&eGAHV|Lq+DFt2rDFaCB5hZE7YWXzC1gAv$^ql_2}~aiqxKWr)Q@(UkEg? zpqlGBESP@bHxo#;-OJHBzoVnv9K6zpXV9M6;;f3TmcU;WA9#r-Dn>BD4YQfK=g(md z4dUVsB~N-=@LZd&ZMZx5BNL>OaH#Ehz)$q8RSF(MO?__x*>TNW8#2Vql?tj=5V_!n)hJ^n?9r@Ui2E~X|IGJ6v}av*(6 z^eHB}C$_j*1~A&u$B4e_<<>TG@c^}ZMZQs_;tcK?j3E1odvqQ7;0RCn>j+(ssG#xT z_!|2cBS}XmZ{CYOGSez++gcuDcrw0-%$C)%ED;aScOVJ5xY@iszQsBdO$b~eGU#k= z+IjgFQX>2b?jhq(KlTfFHzO83U?^mH^3@>QLol5pXW!aB0H4-!x=XmTIu#fNDlyK( z;XzNSs8MHXN}8fk8nq>3y0kZqRJ+TSJYLqkoC{IMvB_&`KzPh|2e0}qxn~o@s^;k? zp3P5oQ~(?h1tdOcLyv6hO-%+%qE_88fN_$ALIA|&Or=JD?-=Tt6|!dE$ec>R8`aXQ~uVS+8ENf4Ld`F#L1~+4OO?eER-}J}LT#7xi@k?wJLoX?f8;*B}-zeI_XG z-i?4tN$x6{<)mX2Y|O*Vu{+C;l3hZ4eMp&t-~T)#z=tbnVOanoj4rBI_#qStr?czP z&F%F?b^@2|hy2hLRs4PSQIW=q*8lb`tzTY?v-)qfjsKr-Y5cQm{r_0&aU@9?wB}tx zSCDOC;CK_cHfst(6bbJ*@v3ZUJ18_6r{*0twQsi=sDPak^#19E6*7rie0?o#{g>>A zxE-&3rj0*jO@T=Ep5m>YD5N_ewS$&}UmK1qD}cfBqFTb52B+ik)ggI~;r@f6s=g~P3X9S8SUbT1LHdwZ8-!qpzuxz=jZw}asuOZ_wAc(g!APDTkv@=e7HuVOE! z6`U?D!pwk{>58LnuMGQ%3M4m7&cC>_FROA#9hBBEUN^&a*P|FYB&)bR=2~9 zSM%!GQ}ODJD#;A_^wkU30b2qNu&wRXnOjop7N(;!dRyVm*x?V!wy|myRd4jGvTdxj zWPrH4zSky=0@w1Uti06m=;HGFoC*}MkuV&UGN< zT9h0a{m@xcLX;}R$Cnzr&xf}l#w^=<@ffoPn|8>Z2Bn5};f5D6ouMFhR`<#ETckFU z&t~bZ9#GQM3epxcRby1}c#G;q#oGf(l+0P62AI>qI0$byYys3kc1+PK$9mNlDO9J{ zRWc+k6jI0$C8Stp3xK$43Uk4M>m^M|=`t|~A7+p|ke9<$yfZk<=6-AwJ7_L-IwZtH zkU>)O{9K3RwZ*x``Guvqxy8;xNbm_x2WC}REX_A;mWg`$wMrk!3!BY!3hOaUROMXu zvPS>)_P$(mO1(?G#=`@kGtG(0_L#}Ku+^sACg$Tfmxr-!xvyN&uEoZXE?UiZ zcSBez++?Us;ho^CE93)iA6V2|?LW;Z9(#2LH%|8ag-{PFh2j}7&w;(>w>ReJ%SY$8 z90hyT^UONr1<*A|@skCXgfpjUf^M~`gzEVx$ZL zBKZ1?uVEbSsWhBRE4}K8CQ`;0{`s%v#se*KzmaMOg}Zx@;o;jY-VrVUf!kPQ3DTM3 zHGyh#ueglyLX*B z(b7qVFM)ZNmf}8R7g?Hh6Ra#{n_uBcH&-#Nt50xt{6gi3A8s#5DLc+c&>5qg_@9LX zFQ`F_S>y7W>T670N7<2IA6~pqH20wEhK>(g+TE;OMDGz!!LKSzaHUr@797N<%2LG~ za-6`Y7r$iPgh#fR`+yCq!w{C-7w(8J&O55tH6a!7yWXK=#rc?O*6!l)d70~@d;?{p zyg2$-B1yu)vS+dYA9dHaRtrtH2&_3MsWX59+|JGKy?pKD4*2zhR80661hq`32EC_U z5xqxm^3%Ph2`}@`_Uj4xBaM;${8y>z3q}DofXe3cf&TT*yT7IyD8gNc)`y*Z_tn;rxNfQF@S-m|e0y;u z+eKCA4&&e8Et|C2|l9_hP@C$eBf&pCWsHh zoI(Zh!JHH>h!33sGKdeIL0Nh}bcV>cM#6fHL_#mtA8Nwu3@x@I{^3JsC^<&lKYZv6 zW&4T#hYy{h9H7yH&QR9$NLtTGzJigMfkz4kjpXtf36m0QvOg#@udv#gsZk6<0+}^n z&0?%!!|G3AR=axb+d!*_SgH_4%Fk}T(bWydAK3uE-|0ZT*=D~BBT?nJ0I~#GeaEs* znn`Jyrz9uosHE9#Zw^5EBjoU@QN9Y|V7YYG``HshLZ_GHlwDlHEuioaj_&O8_9nYL z$!sZm;v&v)8rpLLd(2nYcYB)_Uf-G8Ts$y-pADc!(6g&>#)76$c!qS3l{frvhTq@c zXdrS8X3<;O%bxt@FCT9IJEqLl<;Bg9fPL{(dJCXfBN7gKWL35ovi71X z3Ji8vdnzZOzb>}7wN1L<%L46@EUU?jc1cz^hn9!N(*8h)*Ie+4dbi2$!OQ{k><YI22%~J2`wTwM|ImBGYTwd($ijT>UM`!IZD>QwYT^dm$p~ z1B=W115g!P(P8XH6`dhaz5~fo-K?`V@n3&qBbg$T#cMY6Ce&|#nZ1}bMQ0Ymy}!(6 z7k;IL(LxnqG!n>FiI-)jS$H7H%nonV?WnMHx=4U2Cv`Zjw8nP6*AgrI==WP;t+mH5 zu*>@!uk!sJrErmRySu%;XPm}Ex^aJN#e7!ys|wt4M4(YawExDXGcj7tWhuyv)hN%& z<8*l#Xc5*Nbo_govJ@zK)8Aa*rEVw29A)8pF9T_O?`1>$XO?^jJ8RAbXpTg(?X8Ws zU^CFVP{=p)6XJ~UqX=#jN54~!=7Glwmr0?gJ+ONMWe!1R^;RKEB+Unui^-$XHoL>u zYx!%kTydiiAgBCLY}(1vw%B2gW*?@gb~K){Fo2>V_l+dGA*iy)0v{G8TTz6&Zci zClM^6iIjf)?(}B5o)XeW+kFM456Y7fq!$|ZW%55X$k%{RYp`Vtb8uX5@AUo*lv*Lp z0i~ei4vBI}!4SxPU8Y$KhPW|eWdFSl(MD5Y!3o$P;*EyU)7i(3m+$^BK8*)+`l?Va z>1aMPW%zQilg+0jx2$z7)DrkZ;=m6kXc)+0OOqrb{uNN?R)jhiFlRuO@@6yVN$E}P zqc|C;DfbThAc4#LC60Lr!J&SE`bY9JO=NRi|#|`7}p+IFF~5)`fF}@qoM$q=(2#7!--VLzv$A z8mf|>1le4O7|j=5H0M2b+(e5>~!PwBD^3d$xg$MS|+k22iZ!zOd>K} z?*$o7)uGUzPH2c;1VH~c35_}~5==W8db0Cm=E*M90Jzs$_4nwtV5{wHsOPIP)kDyDBl%&V4NWE`xbtZ{6tzOkZ*Q$-?9VgMka+oLbbSg$MGjrg))11hEs z<}*LN%TZbD@CTEa$?AZQv>AM$W-&q~rQ8Zstz8POSLIf8A5(U-%Uk<3R4!{b?J2E+ z2I*A-TG`I>JF2b0Io!Y^elqk=OV#~WdRr^-Shr%2mjs8>e7}!Bk63+u2R+`O=bC%G zxnZ8@E2F;B^3ZjbgGM*vwUwD2p47ie#Ls%P{N7>dQiFnadIod!0V^L;#o_# z6n#U6Z7y$bWKS-xt}l;p`Vfj7L(_G0Ez*H^x2I<}luvWIsaa^5_KC>My=cP^ZSzSw z43aF4dsk9Ly7bK9_4VPG#19m0oEbVDnd}Y_sdm9$kI!Od_pKwx50%6OZd0<|cp={% zUGX+H5k){uF25+>?r?Ba*mzRSMT@aT_LmYgh3A|(ot3jWs$mhHqV3Op*C(f%IJ z`Pmm%h4P(ET#)PN#{O=w7?L_z^Lb_N3-1v+awo7|9=!@1#J3aGClbu+)F2i9g;A2V6sP75GGZjQ3D!$49gkMJ_<*IgUvKIygWBL{vTyEWI0dcVu{}@X0Ac0y|nI+%5PKWtqe}(QYHkZxDRpO{B>^;QQLGTYPpX!Hh zSalSepa@%k=g1N}$>-kK#=QZaRjvwoEBuR9DYp#Sx0K#HRj~efn^EHd2f3Jh9mQ(A*FLT{_^U ze)pMiyI5<*F--hak1-Q!sfuuEX_{|oiI_;}1$QQFOVZzL8E$7Yt(K{96zRI6(DV&g zwZDD}6yw_|vf&rjE^^^un*`g2tBCO7_U4$p%?#q1aJ}GlAit%oaG7H}_TAECgb?(^x|Hs~&aJP|U*Sh#AX?fjlsG6k$zzI~T>s=0@1dEdiQbS+g zm5U-l6<={`0#d15ZvXc8?Gup^k%>%-WJ&I7`?XyZfSe;E&bZG$$mng_5D}^+YKMOs zFQzl(ip9~Ubb3CXEu8fVn;PS0?!j)Ee2}k+rHoO&{^m`$3$ksf z4x~ss=E&;Shza7He)Bk+)KVH>a6??tMtCW48ZmL{Gj zcSZ6mv<59z=T$p{)@+Q+(bRNj{(-_35<^Y+xRPqE0PPf3Yg}u$#CiOA6M^G$7@@n^ z#ulbkP1eFo7qL&(0z!L>wbF%rZAH2afX~97o(Rv%bR>22WoF~j7sXK6*^=SD<6Hz6 zM5q#Th$xzv6^W%Bo&3KFr+gx&0e#-hxof26b7*R&A*j>0#*rAOQ&{&DJ~k|Ss0<3% zo>eb^TI$=|^j@M$RIEbVG-;qGvp+qm(mW!E86%-b3CO9a9nVgST}qa9YF7vEr)ynC zYSI8?&x~<91ReP5eV~FR*0;6sU2dM4V;lMv@aqprux^FA>0@h|KDf9jf^}v*6+|WG z5Lo`;aD6Xp_s#i~)u%8M*lvQ$ZGBzc+k^SlYOi1nfS9s%dh~8GGvwTVr?D(S?c|C< zXEE}1cGMRZvIWA8Dx2F^N>Hjw24(BDx;zXn-;)AqiBWtNo@=Mat{@jWx;`uLYK*?w zY7gcZkXZhVFcCoVezHVIlj>N@p!?rduyXY%#+tmPwR;yB(Iisz8p!R*m@ zACGRnyBtryom^gAC(j$^`%**Py_YY=usiczfc|v8Yrrac)yA-~m1rvsq)X z+Ow9tP}yO${J|;5bQ;klBjI)}tusRw5#TTab@fH2;J|ox6mB%kfH^^W@i53JyDZ3) z7>Uh@1;TW8eeC)}#rQ#Y0iv+up91CSo!C>=>9pMDSq!R!k9!9>0*l7A$3H1-lO*f( zqRktE_Q6n7#TVVl%SA&5%p$OR34&Uktfw>_8s99>Ff}XWt|sm#a|+r)Tj7pxzZg!o zN7dnKH2c9h4KF9|;wY}P$88mwN|LKUv*`rX1AHO7oUiPI=5@CTKiyVE7p@{StH zJ*YAao75B&B~#X{H1-mf!bn-agP{s#*Z#$LN=XD2+Z6qFv}R#rF@}Z{#=KIlf>a)J zr*K%ym(kpT8*$zML#JmqkRyT^Lc~ul;@fa`NTlrwuc_Ej_@lscgAuXU>vcC&H@adUkdx-u8^7{1obicOPi$ zLwJ|q?9utpN54#{NYM5?4>QhTV+%%cbe1^DvPYrM&)FrYY9X$vdQRk}_ZgPV-mIEv zRpZg`d`m>{+7Ke~*}=gbmw!?PT-Y9`uKIxMygbineLJTKfO@pxfseAvcVx>UV~VEG zJp(Vw{`sFX5ZvLU!Q1b38od2pr||ZfuT26!&1V$RJa!LfpS>QWP$1YU5I9O}l!S`6 zr|WfnHQQ{$#1DC6BDd=b(BcqQ-;p~#N-f-99OT;!e0Sc&zz=9_Lq&t+AMK}}sjky+ zid^*Ta6~H-TUt(&)Bwb_RNTN1|f=+uco`F7iv$~T0TENIr|6(#GTUz za)3lwCG-03UX`ZTu)HI=#_A~S2v>nJ72jK>?6gZxYyE<`Au9uP=3o_Tu|+fae0Aum z8d_yF+6<+%w(dp(*}P9=CjTM(ANDaPoI^KTx z?)2*B=cAjGg(omh7N^>WT!UQ6Ja(6*ocEuP+Oi?$P@-M^>FLjW(g^d#2S|qsi*0=rlBX0G#0m(AmHDK= zz$46L2wLj;>ePB#p2Xvvh^iQHUT&=f+*`67Z#w{_OeK=yL(OHriGtsZ#`PZD=*Ir( zQ%{9&v=h^38r>h-g*{#5pd&I;yR{7qd6yGqZuiX1_T+4LI`~uj8*w{wH4n@DL@uwT zJCv3Ns?lwoUMn3*`CA-aOL3{|y!h|%Ha{g|CfT-7b3}738(|Yi__79KV@O^+B;A8> zh&og-oe|paYRT+T~O*Sq?^4pRI(D0;h71=<&B zAqV>BYP!0OIsapvEkOx51Yk{6fat4run0=PP-8f7+g1-mQOVkH1Bg7dXg?`h;?IpT z0O={v#F~}jRxDNb=9La%I^di9+WDI~-gu?dj>suJJE3{5z?GWzB-DSkj&T3PH+4oc zT=bPA$>Q($=pwtCe9wQ`vuD_F4mhdLkN)=~_me|V+D}h2cV<%f*}whKZ+FlVT}(&) z+aKYdAv=Ha=zDjqV^Z?kay5Cv^^hriwws{Gnb2Hd=w2@~x})_S^WT zP5R$&<45f@+-TFaarT&u20=P@cFWVJt2gf_V5Z*ljQacJ=;Wkb+zO}iM?OLATpUe7 zU%i*0(S^r1PxxnWb8~g$Z>{ZjW(O;bjrTs>SQ}X9+IY)SzYcLK;+stzgTws+M}i(N z;0uIfq}Of8l?Vi&W3FcULkmtLT=&)$hr7g|rCj7iZV@D%0cu$l2;^{-sV1f{SpP*td#T-7w%(+oc2k z^YP^R-OW!n_vp9RONLtGqRSZ9i+aB7*}SGeYEYtE(4Eac z6lr@GP8RKRzjx!#n!Fl!xHm^}R9+3??^l3i!$J#1{J{)54_m@6r`Z@W!LnfCOM>iLK{QV2=KXj7!?=Z);Pq_O#O>uYDWEfR` z2a!5;=-8A=%OrO;B%+D(dvxJ#k9oK4G5&XZj0kRzxySaHoJw1@AZ-{HDDbKRT!BzqIwJA1SbP|6rCY2hNdg-) zdQ`EEFgmus>WzS?w9nJf`plUa_%9b9?Jntb$!l_#`z*o}o106XaI>E;8T%2 zF4_gU#|nr5P-z1}v7lM~~3UW&)Z@P7dx?5Qgo zNdTK$>%BW=0hH#7kqXNISOUPgbgp-MhZdzPTNWvCnnH#d0(ont)pyZwc+H~;f2uFg6fibb#m94xvG4`AoP>tBa z%5SR?`+K$}`qK4jDq%xb{2tjxx2YMCnLnl`?fU#`tFL(;UfGp$5kwF9>&p=`5#5?KXYoD0?|L z%A9GCF%?|Y8+;4jXg zoOb48u-wjCinFXL8*>yPnLI+zcpWKE*ZuL6|Ksl zwu($DKW-9k`g3-v%8=@&k@ao8^osy%ZEp+ciU<)s{vh$fa(b`fitVnET1@V&Gm8nw$E1?A(Z*`1!i`-yZ(55|Q5?6c6}iV1 zwG!NGrE_d8QSUd(Ukx$a~iw)yb0YPw)QAVfbvWQ z&{cPg=OSN*f0)Gm{0uk3@88IN@b|QA=fs^iUWB~oVI)6E{Ldy56g0gwfgkLP9!ZBL z`=Y0!U_~o0$3LHnROe`#^_CLblQ}`#-EQo(fsAnWQ)R8YA1RqCJiWw&cC)0m8DrPF zG4hw`+|ZBF#i}=Gw_e4_M(N}B5t@QvzPY^TiTd#OhD58HhG9#M7Yg#B>V>L{y%5#= z%t2XU?|)WBIOTo*-xfSyFSe-Q>9<6Vheru#J$xn^C3z0&v*aWVu3esAywixoN0SH# zg$NyK@BY;;ZNIaeF2!8PgX_M&SdhD+|jrX7SIa1;16uBu3H!P0d-e<{hV z@uGncY!scz6=|Ji5sm~mr6i~vEfm~R1)`RMCGVtESeknY@=xn&VLn?(*1;`ver1M1 zGS#Ehj#agiQ=>^arJsc>&Pb@v(W?Di>@CZnPVfIl->U13171*g7e%O|6k{pHDZK;;V0on>-^W;}=+vqrC;!?&@x@9TER^Ub{OnX}p`U?{XJ! zG^}#a`%SA{6*b8!=c}!9J-j;P%$!UdA`Q_DHW~Wdi43N>@ll(|xIQiHbJyv3Cd8|x zL7RAU&Gnk@eLhcaovZmf|8aVC4hOGPr!q!ienkU&Xgy976De+zCX!&Xr0Bu=9;PkD ziHbpQ4tJEh?S&R5-h%YlkJZszB8X;5N_u6jearEP?=jv&gF8f4vM$}nozpUGUb$1> zT3O%%8Kqh4@(Lhk0+P8!%mD^0)MugEQ4+XG1xn2z3TDHr!S9fKbVdHUAuOz9JTxm; z@(=E8^P=DIXP>qHQN3u44MM|P3tQ?Gy^!tYdca)Hh+KCoIQ*p7`AdT3D!7KxTqy7x z-#1$s{sP?&u^2=d7z&osg7s~ST7d0Q)&{gQIvj5NhyH!;|9y4vM&I{ezd7{(KKK9b zl7r=}Advyf!#4vV=S~Zl$a9ue;3o?Y87u+^Hmrf5u(Xnr87-}9%}iM90LYpYdMrXv zsFD9}i8R*q+`3&jho`BilI2_Cb@!M5cDDPA|8R3G!7O|!<7qJ*SlV!Bp6w~a$63)CiJ zaDbY085LEy=NpFx_jYy3GTVyAeOO)U#kx_*?y_L?-!$*{_YWPnkqJnW!UIP^C?OeG zW^6~T8O0Oa<<+BBxEn6fz8S0X>IVGj)SCW0n~X2=={G;L<4!!dd&4@_mdamYLxA}P z^v-J-qE@Xjg5!Wjw5n$|N}j&QxA2$A6#hcykSOAt%)k3D2b>g6mrUC`nnPg;gt$=` z?0K!h+a=0TkkE#(j}ZipXco^qQHHSvHMRw9ib-H9LcAfHdq&nc+*B;+`LMi%Z6alutI%$PrNm#M!q2&C}z+RCg&|eU-?B+7U1J!h}k4`Tv zU1uo3__nsaj#&w3=172gm1%yLsSpo6@F_t z07%808#?*%;&^(V%_mVN|9(YuQD6LP$)+$J_#pNT-+`DA*>%A;N-_q51wwD)I;47j zQ`JQOf^@XJ5TPv#6^u4^viSsN71onPM(uinoiEN)=@ihUrZs{M7;esckj;e|BB}gb zv7|9shEqmU_qLpkJ8v-kW zWAr&jUAs!*DS`WNpa$H9i&^Z|JMtSSU8WFMl)!4tm>+%klowXH<)JoSiNLbf>a|s2 z1)!c%r`O1(lf3$+nLBZ@10p3GJLCWbypY^<|4Sl*ZuSO)Jv^oVy+&ratX(>B!$CfL zR~HQyyRcM87e>V33R}?)aIM|_O=fpEO?WN}>Z=3nrb6LYAjB%h-%7|Fgws9DiWGC# zms6W|w)<;MA}dV=qn~TpQ^l+N=5{?cwZou>Rj}O6mWy}iB{pgY?(+Qg;3Y_)c`U7Y zuXu_!O=^hF60^SOcso)$Kbu>aX*5}+@@Fz0?5q$| zy@Y4;)2Hq-&Z;oj=ees3y1E(e9gil1fq6uuE%mz~sR5$O+AgfWMU)duRLi3nP>r)s zGNcl+Hlf+?r%v;1JDKrcKX41v1YhSpBsfP%Ki0ZP+7#oi%s9R#PLgw*Q3Y6%WhEKj z10V3&#VX%&?2TaNuWsVg*jln;7UXABaG$7pJi@K~?&7^X3tA2|t`;X&!yS7albW8l zluO!)gMrO@7j9~vIQe2LsS7s*sIq-H$8Qd);bZa;RR>hzKoPHogV#E8>k!^bhDyOE z1=^%h4~Bc|8JJJPIPYkEq(Op_b@KDkbw1y#i|7=9Nr)SM6QlOm%qfZX5c}u>Kur!Y zaHmLx_{?h;RNH!c%3ed^U`y5cq&W?Q-fk#b-NKJ*W6=$4bBR*^X7;DL&h= zqDcTlYR3xx%V#@Q%Ye^ztol#!*^X5QDn8q>!p{Ib<=8N{%HYxhWLp0(3DIrqNszxh zG^9NIq{F2J$)M3+NVT?5-qWiO=jX(?N7L)`;qhqN?YcD1&C%I(0uipU;SNUcgdOeV z2lN1Q#N1hZzv6+x>C|gq^KAe6C`FQLAo%F5>|B zFe6c93|*B8*mbJ53U%$JX}3o!j$Y4?hS?~e#M$KAc`haVhDLrnrKY*ebhsJz@R z7Uh?DyFgUFoNyk8-Qdq>m3MT>-zViOtzsk0yyw5+ZD-~-4CQ4K_wK-*Nm+xV9n8_26^R0J|yNh)m zhE`6AlA`E(HQd+>_(VR(yKOYu5=zWuOuUWLNC(K0sJpLQ=l~mTfK~^=%TBKE7ZMqH zD^I9dNZKTdfRNhaYhoF)bZyND+tQ^}uGUTJc8k<8=8mr%R!HRbl406;t_?^V7%TdO ze!XLd|0C!k2$1`QcYO0Hitseq4TTUmTsRcO@K3LdhF~x_{kWW2;ADshdmpwZcV95?Wnx*==lJazrJtdeH7J_sgz8WWGW<69ofTL3US~CmkOTlAm*G1{-Y;+J5Rp}acF#wM3ahrv%xL=)t4u!kYytO(EP*0-5 z9|PWW3@e2*JCw3R?lO#JXXi! z-v-)Tns3pi1%yY|S*WtcL@V6jC^Z9*6>j}Tq7^RKBtx&FaEA$q174X2mC#pZYj=LR zm`I8Ao!RM2B`=|y{gS%eoi5Qk?#4fh<#OUwk$H#+eR_@D%!|P)i2v;L3PQ>=(u*P< zYMo7fJ~?|2eJJ6m!|k0AnR4e)M$RRg;wO)5u|0hiv*oMh#bT3*H14cP zj7CAJzMai#Khd4Xp+Vq;BrpZj)$EgC_;mdqC!H!Wl?a6Bn?P7x@0-B1>v8fe7BR|KgiY?Wecufk9G|WYLmL)RB!UN?E2}R z;0UobdH*MdF;M>X?T>6bg+aK}to7$jrfoR>HW9Ugi4Xr-*w?uSu*uBUl)xY}>qv+& zxq2|pl+bVpwu3jcW&@2QaHQH;?F?S?Q|mwRppL+Sgae~eZ2+#KQzLFwfi2#!LXE14 zxW2wRKhJtG59Zn{s5Jhdy)n0e)h4IG7r7O@X~N12Re1p69Nc%o%b`8){w{qj4iB88 z(`RK3=<5Z?&q9*;uP)kt=(-yo>S2M)ZvPhfou+LHSV=^z**&H71puhs>5_NkZv3-K z*Ox)uyc~e}K0CF7jsQa5}7#zI#9=w31+tTN3ZQJEm0V@?C0V{3+Yo#EV=!@MwU?2&tr%@2f zW&n`%Jgx$HePJL<``ivV^ow8*g7lzedBU(ZXq8?ov3fZVR2cfK4c)x0jYH*b!4Ao` z$x_nt7Ci1T3TT?;X+ z`|bC|H)ubOvp@ZrY?u9Si{5wa?)M`m6c3_Nf==f*#r^CIVMqHG_te+#jrgxPt?lqb zxZdMm!v)=;4Y%^AKN)9T6vrJ89Hryo=1Ow6^u@Jl6?m!L zQ6pBk0x4o9c13Pf3!8TMiK`2ohB) ztJ|Zz`xtkV6=)XMqbDks{C4~a5p{e7GxQ@vsUEJsQoq-561NKJbX#wXS$rYvtnpBT zI+>xRG+@{x40V^L22J^5I*X-E_?Ah?sIwjgu)Mt3@6dbq)9kOy97v?L_B0bVlv;1*`!@K}8V^&-?qk@TzR?N+bVgl28wge#GBL928!vL1xY6 z{g*gCVP*Kvh8Jz-KDMOuvtz&W7S%o=-VV11`$I#)fwe~IOV4d>@?X-YFZrIV7n@G{ z(^z*9hDr2qO?JFBxQNCnSux$J(+yqPGn9ofaPUz!`&&y%a>E|X)<=^a8xcbw=40to zOmieVa#n3sG>o$)U2&sHFppMuH9-dyAg*p~?DN`0^@EZ8c6)7?-ZDoY$Co!BE|YL` z5Of5K8U-EUrIriy#aC$Zeknl&g(>d0)J*X1l3CYSoT*kR9az!rcCO?iotD>zMNJ~} zV}CV!#1qZD1IS7WeMrNuPZ#GS9)IU*aB)5T<>2W3BtDA=an$t$BQiZ3rR}g8m2HQVzTMa{w$$B$>oBwN)Ken^-tn(39fK-m15_lXBMSfp#`( z_^%(Q{~zHuDlAk50T`ye{md$RkR!yBk zO0`{HS?dkacp{^<#pxqSO`_5V%BPPWi|_HD&L;WCD-l?pkDna?)pKAuzr}=q{5csI z?1y|8_OVaUfCgP>Kjy>i(=T377e0v`sMU=v;?>p=NJOn$ZP`1IGmy35sGmM{CkY26 zI|q_Hha>zxDuKdUMl;u!BQGj%9Bz*fR*t;L+$jfJW-8p`HO$0dsRoG^PUpAOT%qgV zRh=PIJYhuFASD&j@)0L%j#zfx9PHxa|szJ9*1!T@1vH$}Dpn3-~U z_bE?u3VL`FOleFk>QG#fL~h3@*ala8f%2yz>0ik2y4)6DEvz9Y6Hfd5a1ZdFT;(t_ zcCDDXK#@9|L!@BIba56;cV!kaYjj)TbpGIeGX3PDTct}k3%eyTz0?4UPZMK$v-Yyn zQ!;ye;iRgf!l@03)B&H-NwThS_^6%p`;xle1qzN?=lVBTw^qQAnkz+{Ig5)~Ol*(T z_d#)}H_<)BM@E>e_2HUA@Y}0zh0I+|S>(NELau(Lfs{s@V)y{j$=4*qfEW;;tL{NA zByWizg{vC$Pcx#&9@sC-s%ptXMB?!B?E$>O2ey9Q7^Qn2(xkR_=Q%v0!Y!IltgHq* zq1>n?O_+7(OD)4vX!b4PH5f&WRa7CKwRNInxT%%6j=kr3KpM00+=?ONL{C>3@N!nA z6k2gv@_q;yh6z=%b!?AW%OaMH^?7^BpaE)R+N;-%&3=`2x^tRXfkPDN2QfIM9r1sm zz1~>06o_?fZJ*6qXagcJMzg8dI%WUg=%iz-(ILGuUz8@zK57;ou#^#sPwNIGv7ly| zfZWLL;nWxxP`Q8}_jhwEm0@o0+Lxogld~_!Uhxv0E0&7&J)5vKiYlL}WfA!y=5fs( zmN(FYwYL`Q)uZxA6Rel-t*QECG@@Y+$X_Wte;!xbK!|up84M*f)O?&aeE{g?cJcCn z-|z0t=@l2^5>0$OzMi)A8>OI|>WcfgJsR`-iFGVJ?T=SyCyz~; zQ_Xofo#d`7A$&0(q3U`nw9dKn^ul%y^9+qo`=X}Hq< z2HV4Z7T2>;VrO(Bi=(G?F1S~{DrHNJDkbgYl{I#^GoK)>aIH9AZ9C9VN2uY}&p#d| zwOIC=R{(#mbd1<@cW;$4u)1DgaPo#(o7m@oX?}OsITkurJjTV>_4f$pgb|6MxTd}{ zMPZkVe_@+b=apy~R!xI^*ZK@oA@KtXt1cw0!_9;(wG#yqS+?rJafzm$Cr!9__@>(d zt5JZ9ya0%xWRsR9yaws6I3_{IbO~@(rGU#s4tMUo|lpNrnON9W0`Mr<5Phr<=!7KyE!>-oXz z^IrC+OuwibUf3y_@3%-#un866=?xUf{B~asNbDUrMkCd6piuJ3^us&&lcrNLqlHbw zW$o$b$@eZKuehoZ`m;BO3Mwks?9RE(S7G(iSnHgq#H>p4z z__$;Xezwhx_17EOw-Q|{yb?fIdcCJI5s+eWx|Jh?1nwRrm%bLFDlD=Zgp`}U*B_?W z7nAp(NP8C99&Xx76Jzw&>P}=a_qKCkCZiI?NmU?8C%;Uldj_)LSchuL5dDS@1oFnb!Bq60Qim)N zN()*)@5{ZM!nnFMswS!RPOf9P3cKrWi3=MsRaqPkUJl;w5B>#!k1DZxD=lT%kIqe3 zL!$yF9Yz`~N^UoN=7wz*ZPU#|t18Y)e_M?taHNH5q_nXXly58Cc@V3!zfcg&9Yfb3 zU}6EA>z$n}ia_lI8&!06KrDHJjZB~EK@FM-*U3V|Z`MYOm9X#{@o9p_wOgtWS!-QV zLspTG2)m#y`wb*GAUPuk4!TlyeaLDVxm=Q>GkdA0VLYA-6Eh5sk3Kbm{f%Yfv(R@% z*}^Hk`Gat}g}=<7H?hXT@&56P=A-lN)4B6Gl4jGwij6~5?6Z;2#{kV|oPoLQ6d6C4 z34Mzr>3Mr0JwN_QYllU&M->reUk*@S`c{3Xsz|6`Pi(1~xY+fL=7o6$0z)k~_Y?^2 zHW&go%xXfm)OnaNhfar(EyOe`0#(~CQPPY7Wr&Vu3>nRD2myZ$BlCYy!!m-=Dq&F% z3;rl_t-|Z^A`5*ifah4z$FY*>V}ZWLBGw)+uCyFm>lP#~>PQlnlozx22|$aT=xYR^ z?Yvl64%c8k3e?0;;akaOcgx;LESM;Zpw{ZaYDEY82WzB~?AB6Ac6}qULi&W71(sFC zVysB*%2q)Q1Bxq*c8sYRxUB|~LpZ=1OE_)&LSeN@~>iWgF8HA`n_r$BcLYmZ}=jvYkZWM-Y_DRC1rz(QR?C(cszqRkk_^KDt+Knhriih8kF9u1s+U%*dH5IC-tC2D)kSB*3mmjp1KGc9 zZHNW+?vr~gcs;{72jfctzJ9#U!G1UNFfGXGOTgOrxH>AoIz5F>Ys$d*PyV8#ZD`*` zp+jugQXFrG14?mUR^ra9o}1|Wp4*Z|LpSP)lanIbKAo?WJah?gK|^n z5K_k@;Ei=vptanm$KMGQ%O{2Ol65OTd%2&10~YS+_`}UjKKbS1-4&E>c%If#Dk6f- zg{}M+$66ww+ex~}h4JxQ>PE*ES~g*KTnY!?o0|O3!aPS=6CPw~cp``MCX8oU2eAdy zb^vqM-=<|QHk8?fbA1B%_Jq%V+x{yI@lCvK>v3$u+14_cV_>`b(|b(9(N`$me553i zjn8ajrma6@Km5U;s(3G9>aS9DQ+6gb@UCH5pH4@w_tohr2^J;NJmlC4#2PZW04n)a zF@k-C9Nrr!$zb;eDA(=n?7jm0(sNfWN5f-+=+$sUvoqfmj=XSejk~d{q~Mxj3n~c% ztEZ@lOA{6!@$x9XXD@CHUi$F56+~TLP&mX%K&0QM0Cr&q-hxlBrRhH#5$n8FSOrMH zpuT!FAb;mEcab2xZO5OD6!8q&o^;!r5|lzHcSczhvI2^rgQZMerSw5)d~W%Y0*Dmp z7(|-@msQ1S;X06&t)1P#mv2a;$rSqZDK&fgr}Z-}lBUO3Cu64D&k!OOVYun|i^$!ke0!*?f+a5NlcKW)D@-J;vcu;uNaVyck5|xU8$HA+bmmhQ zUmzf|eVvn9~$ml?q9IS*4UQ#~f}(cUL)= ze(I&@b)soGEY`jAtovkfxwE{oG~ZiVURmg`EG;p(^Q88W zi}ci{QeCuF(8_&phM)O3gX4{VRRyQ5jeJ~i^qQIbDlRNP?2e!ad+$LZzc1w_{sVx5 zz8LnW0wXF^N}3}id%QXtv^J@X+g0On^5d@zdE+AYr{l|y7(m}V&c4;s&i85JgD?x= ziNk+AT-`7v1si>HO68*09e3x*PXa`SW%5+w`I@j6=HK=nww{yn`Nr#2w8F|#-{}Ph z#zPERbQ=+E2nULuhK4`@lx;?YdiVa2DMVu1`T247|2XupI0T4W^H26vyFH6P(+XLj z?)qInWw0E*#V}TDBQlv#U2AkA*V;2TEMDD?KPio=Oh-WtU`^|cZjE$Dk(Mqn`OA}Q z*Y=$z_M)B1uN$b_d>cIN!yfX|1hQy=?sHakXPARqkd>+A0t0a24CEEBm1YQ}^q zWhk%5S^B#&%a}rQnL~gT_zVLUK-X1=4?!E<%iHZiBi-n9ck`y8DO+OD6u-y^O@mr6 z(?W)`sCS#HabR1G;?-#&sKoE#wUVytS;g*{61<0aVXK85$5*J3-G;Bv4p${=QdIH0LHVR!r%-_l6 z@aIiz4hu_tP*K$7L=9V^Ox)a11C;jZ$=vCQE0zTsXTN3oG4sFrq0>x{sJzH|b##4w z{!4!P^T`u&UP(?C{mfpi?mHBRRhRNc-k+bngQh<}J_mV;QTW#nXSCKNTyr#+znjaC z=kk-e9MGc^&(!y;oC8LHo$bAk^C9eqvhj?J2@B&v7T$=kHO8OF6`$`MQUg2N+$M=9 z$%?083fL#Y8%0|JQyA;JG-gfhdA;i{A&S{-gWpm!b-H3qH@|q2yp3?Pw^)FxODMoo zO)Y+ABn;5NLWYEEC`c5(m_$l>S;||C0nAZ9t!UE6VU6>SW}#`o>5kklcDlrLcB1j_ zwQ3bnx)Nk%cz}mJr$B#S?lJ9b_kT)d?i}K5$z^c69fyUGQ`IlBxn%N4+hhE@KQdJE ztftT|w9bqkFcof&$UD!$Al#h2gJ>Yn1&F3$#(4VS<}%MMcx|A70lRO@3+DVdc<@cO z7oMyvbe0yE78d&p}+_{x9Pqy$8lWj-m-M+7CmEW$dD-;MMcfbLzA*_fOo_L={2$1|ephWy6x< zgQd%@gRBbhQz2$XvWRoqXfQQKHmVRl|C*iNjK^)m)nVyRAXb?CS)6so0^&#(+9_Xx zlff&<;KT|sT1W zJEmwFPN-??prWU6j}G8BLsLn;-@qi&KAL+shid(BPHx%W49yGe+qXYB5*f&0+DFg` z_;254?RVkZ_iA+*_cmsixVs~I3H$4-m(k45g^oyM`(%2-kgc?ME z`!Z8#VoG!_45yi0y@pBL>(wY?^&n}`!xn_}Fs32^Zy+3x6t>rHr1-;~4ZurV;8uMv z@Uv686>Y3h+q+5Z>{l9QtWoM4cl!Qs+24#*B+mEJ)qKZ1-*a*VLPN%@drU$+zGGzD z#j59~V_>Z~)9$M}%+8uNf66-9pZ~0pr%I*R^Pj>G-RysHg0R7z@i9QSF1=CW_y(sz zG_Org1DUGI5sJukmm0vo!W4`8m ze7|53>cWMM=}Fc!15Tjwfi$%8lRM=5=nxLm^Hi@g?%& z<$bm|+>Sf_z2n*byoo!5`8t{`GjGr75iz*95Gfw3RaH8)EPDg8H(WC$I_77R4KB@L zA_50RDQB9)kbhTkGiL+pdvrP>Z8w3hllXOi1_x3Jeivbk&~b#bknBUK(|A;pWPk9y z4Rjcf(@7S|{I>fAMlJ~(tefYLTOUt<=9-tM@hNU`+r$YJ{I>AeamsoN;j=94fS+z( z6-xkFv@AkLl=bbTB?@2S?dnA@2)Ff+7=>6>KR1g?%&XB;yagxc&YH}jFjUFm{{XD- zA?1qj45>8w7SGIXhkQ?q2mJhmBCG*wH(v|2Q@w9pqMaKk*|-G!K>`l@ zvpca*b~%@^S1A-~VH;P}C>7G$I5^lPlyGu(<7!je@uOIi2{b~Xl(CJ(AZvlA@_vF7GXXm zjkf4Tl;rGXrOhwFTkAB=1gfADSU0Cfr_j9udxA_P(L2?dT+{#VftH9$`@f(iVy8>y zwY%}pS|YSCur5!gIQL%ASZ$B;jUovb?L~6Gh_R-$u+>HdNT4C4NelZq%Bv47FPa9> zYKmd7G9yw@NqWR86`e0wTlflaaykbcx+O>PMPhI#R$doi6<3!NzSSU+R1bI$DAG(? zuIJNx7OhzCrA49UEEVSRmbsk^we z(O+5AK$E&X*iZ~X1w~>!!t?$nPT_1 zR{(lm6-^#&37}5Y`O8%;gL*RV(0?* z2QQGoTY)moQ>XEc;Y%xm1FESrZf9zOl?;Sy1BU!w(M7@~+ockKT2V(p#733jaDi=D zm7mQ43tox_3^>2Of5FlguR5eFI$UxHG9LM&=7-thSc6w z`h!out-b+J@gmb7g$bNKq*85id6F$rv1hcq3POy;r#t6KbR+XFxrOm3$lND_GvrzO zSBp#-_?7(?faD)S!+EZ+&oad>3jSV!DcZ_TuqnSdn*1cdNW0+eB~nRWX8P_ve*Ayz zHU?V&-C!I@3ue+AK)b%-mbQ3N+=71PxH*j=fsjlb=H*gp~{voJ5z z$4j^Y>$hh?WNY|?G}?B6>e#*@)J3|tqU!p=x{eKLPn1M3<{$-WwC1`i$*i>_6qFkd zVRf7%MENOBY33~r!@KY~q+y{EtE(|Cgc8EFsnzq^6e(||pVTE9JzuH0J>)&ot(^ki z$GG;VPJG~IV^iBqbRXkgx=~-g4;EqhD?t(Lyb7WfFIa*@jhPDO9wy$=rW*4RhcXQ|cvzYj*5##>#aKy->q=MUJR=Y-`4EAsWM@HAdZWj8K z7>;EG(>`)%^qe>W3w=&*-XuUm%ey$r46hArlUVoncswh%ZlgPJj&v65kT}T!LIpu- zGmk7{5N^R53mE;73;H4oJ#_Ary#iXr^sU{S;8^N(BMI+i9Y0n$Hu~CRRv^w8>w_LR_#> zH7iLTGR!^Qm>mK1x$%fz+GkH;sJ(V$zXxr0c17~i^rJF%mu<}aaBclM;$*Ww?auzR zjqbUzX0s-sgta0R%PExstVW@iha=xw;wulGI_T`@VbDu+n zb@-f@xx0UmJ)-8|TWby=ILpoCf2)vJYY$`yh#8yW1m} zP=9;9I)WUFd(?Lh2+U`sa>M&55i^B7(q2jNN27l$QTX^eo;q(z#XHFxb$hBHFI?LF zv`84$^U)`9CbvySW^%6*O`bU z34+`brQiXjU_05Lgl`^Ax(gH;`czVW^x+ffq>JOa{lATN*v0_%A|@P20hsu*Me18* z-@t#3yzhKU;+wZ9Y{6s0nvlY^YU6GW{S=ECC@&4Sb@t{>QKUo(5MHl-qD($Q77G1Z zQeJ3xIKm6HiQ#K4<NjpiL$6biSIIQ#km39`&Hq zum({@=dO$r-tYuLpUnQ!!?fhTR#9i|ym|}8^C~y8hTrREnMj6c**!jmH)ufd8M=^1 zmsqp73^Z~~-6DZ5J6OZ?d>;pnOylbFCSbV2%*6G1CCLa^jG&5ZTG^^P=L%X}muFNC z4YQ<+Z@z9sru(-!}tWsAO6_)WY1C$V=Ac>N)HZQV$ zXN#)bZV0d$rB|vytH$ z4fe=D&%4+%&ssFGLt4hk7>1L`LBnX`vnPYO;$}PqwBwH=q&++RB_cB?^nRb2F2A$QHPs!7Fu%QDgz2Q{{VnlcrASS~i;n z^;>FUfi&vy#u{VdR#M1SmforlaguMSx{&S9+WhvyT*|QS8UOj|;7nQ`reVfR> zFatr4HO;`lNy*JJ;smdHCEBStyBE{R?bqgf-rQ!l+-0}aWOr*_{Wf8(^-CP^}uvcGB3>ee1*LDb;#7c;P~WkTH^nlh8ON=T1Gz%BIw#tZdp=WD@8qu|I1FWM2#@ z#Y-8#`|w^2bw%hH2{v5afuZ%eHSo&ZD=SL%G5%%2l2*xAU(t?M^;k*oIUrUQOh+Q) z{|-$gYVkXzN$BQEhcJ14=HCm;h0hC1+htZC#qg{#qsOooYv>k#rQ1n?Z9qYOzB!|) zL%`Z_|G_MAn9X{|p5?d*r2CtLu78}_F&~d^0Rgb$B8P1UJ+1N<{E2?!ZfK?fe|t(&O>e6u3(aVy2y7!5)%2RomagSN}9aW@hl$ju8tOpY14>+49+rgZ)vT?MN6P_1TUUMITpk*Rx~g5b=v0tJEK# z?O65M;jRc z+eIW(p6t#PQ1^`10O2~FfUIt3OT zVpOuv!ae$c%{^8bqwqD>m`)p3m^8A`Dn|JM05h5E(#!;B zf-a_nOI;kRm1BxcHOYaVL2^_A@s=2{kQ59M!tFU3l=TXo6g2d5AT0z*c5a2UeEWpRr}d0fnd7@2sXS2sRWv(HiSmmg0cuZ z^T8_I1AXPBn2m%+v89P(ZLjWSods8MfrXbJkvxdCx%u-$(W;Y1OWD^KE{`t8EH22e zm_4dqS5#Q#uGt@-{t@c?(SfhmP|Zeb+k%W9mBG2f?S-i=VvmNY?K)hAI2vDVYJ-6! zc|yFUXn3S-9v&r>k)zRCzGJ2JEF{&wpO!7saMd0W=7y_+@Ch!a7L?4Y;9|-F5qpxi zRiJ@sOhlE9RYJ7?&AQH9ng`EVagGGl&&h50m>I z2642KtrY4E)-=(`K@I6YDho*(T8*2Tb=%vNkSLr{FvBM0(32mpZl)R8yVSgNGGnn( zW~j70+;@-}Jf2}+QkkL9m4P6+jf6ij`pI_z;X$NW$?dY1%}=xnds@U+1J_nOt7hXC zAj^}6S{!+=i-&S;Uvzusvy&=+0v}npAwlK$=I>K?Z>j#T;V`%pr|(p+DOYQZ7Og!H z;%-8S&D6a~5lNA2bKT(TP;p{+Ch@aBSU=n!QIr%=SDp#5{q0?-!QsmcNxDw7tjff* z#XT{qcH3}qI+Ze-b{FU-IKDYM&d<*-0KE^72J`edN-ej0z27czu`sy^Nm6PMx-4q0 z>;eGKH{&XeW=)%A&U$yF7j`A}LOVSI#`}!$I*EbJ-9vcV_Mg*ueg`cc-B6a~;hvxq z1!>!Bs<+4$1k$!}X2Uy)0=43rUAGrShpcu1i;y8J9>q!r$-F}*pSEX^3)lSS-?v4@ zXbk)2%^UaDWk z-FY=7=db=yKeJD{i2+Lp#Vs%N=a)!pg{y@{FLKq|MX&zyVRy-~3T{L{)%6lXH=92# zQK4rbDMdG2*q~16L`fWeF6~Pqk-ADfeA_lXHcYn;%BBcjiY=(XuyPJpr12Oo3IM_U zzGhPc)5x=1`JnHLVbFjwS;xhR@mmg$wvI08jyBjj0z)$JH1xTqdVD@_namU6XrPMM zrpOhKGU97uneb|&b<wW`U2L zCR31chvFUM_ZD=HMSZNJYEsM*SGf5-z@OOZQi)0XT$nBP;TUDis~h%3<8D|90S@53 zDIkJ{T=HQdQE~4bw2yAyPv$%%&{D;P7z=Z}odv;AZvU%8A7{n&E2p;?le>$skM>QA zHzELbb8GeaDDQ%w#Z+)iMjp8$;yK~tz<$aI13%U8tf)Uj9x#ShU{`oL?(STLqe>m% zd0*WcnJo98qX=jaalNz)HTPqFI|_jUH90=kWDIv*fx^exu`=w5b>?Ce-Ie<_lEDIQ znk(18p_MtKWp-sEGvrIHZoE>z5+(bM@wjZUNbU7#J&mqAJFk!70Zl(hQhNdm*PGqGs(2F%dG-h*#-%P z;m(p(a>&Dx#8d?=9B#@WQ~G#Ct~UFCS|t{4^xABC{C_(C*Rsh*1=hS*_fC8D?zGpu z?e*jI>hc^~D$^_U(Y*qikWgVolae{x6QCOOm^+{hslo^WXC@}i&r>4A0OR3 z+w1=D^r^1;gVe&zW0nW+_N#INT|y9p@eP=P=4)|t;c_?QkCcy$g^wx?@I9}5dUJI- zz3Zj@Bj5U#?m1DakKyM`_2<9G^r_s#mzqh;oMOsUuE48wi{zf~@By>u?=xlM;+GQN zaSi9ah%%8;SZ#%js_ar3ug9&y0Z#AE0g2n}(RZ|6`R-zR^zKoF*il%wZz|8IF$T;1 z{=)pqU}I&o12x9_8U!Poy~VY~#ey0`k&zdN!YQn&R%Vtzs0k=!3O9e{=oXB_0qf2R zBGgK!Ta-x%^mTao)8*CAmo!HIAlbZ48QA$GS3ezkF^EEdT9w>z6v~MjOw8J*|Cz5X zFZ|HZfhZ${rov zTr< zn`w>#YP}Sj3BS6&RrEgwk@!~pm$sYah!%LUn&R%dW_cH;91*?Y!CU8?ClSqH1=94Q z!3eZU@?ZlBE)udHObAUMQm8TFSDILCsf{BOAfJgNy8{J#c+PtEe5lZ&_*Pfpyv`jP z08Zf#W+*BB~$0qvrDGqnneiBNP2NsjwUBAr_bADb0n*WxO6iAXWC)n)D7dpGj)FU!=&aYhMCpndMaa>~B-L2taJ*!Xn74#81f+h{Qou&| zWr?VxbGl@oO@F+w*aJRy5uwa?0A;N{e=b%j7aI9^F}XfJJ054f<)Rpx_Z|EDEd_6# zpKVcCF|`k(U;H({BFqLscM<|FdZByXmjlWrMP!p?wu77_TG$K?Q~7<#^MN9WX(5lu z4U>1G6mViuTDP}ios@p_yYm1QH)SQ{Bf@KYSb$}P{7;k5eE;~0oh_M4?yf%@UNI;0 z;_4${>7)1K32&5w^kM)v$=|%qH{K#PL@Gw>p`GXHtJN!M(1_wvQ5y+2Ml9WZczvJ% zlvebin_`aU;xMwNK(8S%v#BdN<(ZCYvI#&MGxdU6V2c(a0>o{=Y(!nc-7EyPfaa?VW+x*r(!2r3fVZv0ep@7Y2F5-5% z?JDe1xl9n@0NI;lc-QDRf)MAcN%0Au>g6<{d2JZPE}{5j6fN;TS;+Ut*WI3Q4v^IT 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≪BN}}ANIiC67c`p1Akk<-}1oU5%53a zfxj!@f7Ap2l7Rm)5Bxm=|8G3-_XYfqd*B}k_ z`~d;~6CU_L!2hHNJ}cmV$^)Mh@c+RBUlQ;??SVfg;QylseoVmM@xWIF{D1Pm&kOjU z@xY%E@IUK;UlH&h_rPxn_@DE@?+W;z_rPBg@W0@JzbxSIdf=}J`2XyIzbfE=(F1=? z!2cHy{B;5U2@m`Y0sl)L_?rU$mp$;e1pKdf;BO1~mpt%y1pKdh;O`3fU-Q7fB;bGD z1AkAz|Aq(tzJUL)9{2|W{=a$PGoP2-|NpxOexHE9=YiiZ;D6Hte?Y+hmIpo%@c+XD zpB3=`(*vIq@c+vLUlQ>D+XH`0!2h-feoVmM_rO;L{O@?+=LP)ldf?9p_}}xuuL$^0 zdf>MN{O^03iu~H@GlAYCq3}@1pF&K@b?A$ zt32=z1pKQ#@R|L|{r@!{_jM4_9{3vq{x5joZwmOo=z+f_ z;J?BHe_Ox@9{4)~{*4~^y8`~82mU1i|0WOoJpun_5Bz-r|C9&*fq;M71E2Z)pY_1+7x0HX@CO9^TRrfBfPb3@J}cmRJn%UI|BMH|B;XHw;ExITXFc#^0zT(~ zuL}6Q2Yz0_7d-H11bnXtenr3+J@8uszRv@{E8zP*@RtPqfCv7vfG>IAuL$@-5ByaD zf5ZcSO~Ak11Akq>AN9cB5b)1=;BN}}=RNSZ1pHTe;BO1~V;=ZB0)EH?e^4MCeC7+1`~L|K{5}Cc=7HZY;42>Z0|NdX9{51OpY*_I z1^l=NJ}2NOJn$s}Kk0!#Cg7($@M8kL>VdBc_;-5X=LP(<2mXwJuX*5C1pJH#eoMg5 zdf;~j{G12=l7K(ufxj%^=RNRO1pH|a{8a(}E)V=Q0sn3f{B;5U9uNEt0smeP{7nJ> zRUY_T0zUM>-xly^Jn(k}{DKGmu7E%5fqzNBFM8nb3HT)s{Cxpm_rO08@XH?f%ois2 z|8pMreFA>P1HWIuuX^AQ2>ADT-~$2wf(Je;;MY9xIRU@!fiDU84G;V=0l(>i9~1Cf z9{8$&f4>KQUcfgz@Mi>k(*wUE;I}>STLON^1HUWa&wJo63HS>h_{#!**8_h=z+d#h zUls5l@W5Xa@E`QRUl;H%df;ye`2U}@yMeEI{Qo$9v}E1Lq?k%gB~!^HnI!AhRBDn; zDyLhMWZlS0Wh$EPOe*U}CdpJXq$bI_!MedzGD#-MBpH%PKmEVgb-lm&_PMUlf9Lw1 z^Z5UNXM5UpUf=8be$V%uoo%Oy7US~_<0n~+&o_*J++uuzVSKv9_(H?@CoIMn8OBex z7+-7{KgD8viDCRyi}9s~@lRTeFEfmP%3^$=rvCUp&0>6{VSI+g_$b5pr!B@u8^%w! z7$0L8Kf_{ttYQ32i}7)W@v|((#~a4awiusa82^mL_(a3_OpEbJhVjo@j88Ud5iHGhVfYz<1-E87g&tXGK^nnF+STc zev!ra9K-m<7UOdb<6p2CpJy1q#A1BDVf>30;|mPqvn|FK8pgk5F}}z!eyPRyV#D~C zEykA^#xJuNUuqctipBUc!}#SE;{&zy$NyI?#zz{)=U9x7GK_!CVtlk={0fWlF^2Ig zEyl+h#;>v%A7>c?{;Xc(VsF+RyK{!NSV$%gT7S&R=F#=mVb zKE*J8jm7v>!}xbB#-|y^ueBJTZWzDLVtj^Se4fSlOvCthEyiaV#;>;+pKTcbp2hea z!}tvr<8uw;-?tc_XBfZHVtl?~{0A1}3k>7)Eyfob#&5D1Ut}1+*B#s>}KcUz24F^u11 zF+SBW{tJuoX@>E8EykxC#(!xsKEp7+$YOk^Vfd@$rW7$1KJt7{>oo^~{f79%mxGtQbo`47EE1lx}Lz>@L2n5`JPcs@{+}ODm{Rn*SUe&$N z{pjp#+G^(fXK|Z!d<@2ykO47g-&~-T^SPYAvu)msJ09OgocT}W%L3Or|Ai#v*Tywa zCm?s8V*WoG=6{#-)uw(cZ2uK!%IX8!PjcAQPeeZs<3;}`Lw}s}-%b5{(Z3qw-7E36 z-pd&06H`CUF#n$o{a2jvrhW$cVtu_A+W*}7kEZeKLtMX|&Un-IXByV;m|^>WX8OhG zU+Ud>=VQA6u5>ouwEZVT9Dg4(zGhH`@i2I1D`-E98Q%osyPX-SKA_{DbHykuVwnB=%-=4IR5`M^uI!%&Z`jp;o{`txzM?mGTYzg0X0aR-@F&v z`I*`Nl!j{0dGEhvhV8$|G3O=%mB?qqg1-0ouW0DcWBN(x)AgtG&t&@1SLpY@N{0R>rau;a@%+Slq5U#u{8Egs=N;^P zOvnGhY=0uQ-@TuT%I)zUlbOM_)X@@Lp&?&KYkyeu9Set7_;EXZlgYRkfox z?tD!9_cQ%W!~D-T^p`RHUg*>NAMNjA#t*~ztIFB_Pnhk`F>HU7VfzE;n)lya^lvJs z{}0p8H}q>5`d2gkLiAgd)9=fSuker>Sc#0M=f7u}@sSuGMaI+px0x9qjq&9j|L;5F zoh8&RMTYge#ISyUGW`_vr;%Hx+h5A`OVQ84cya%~)X;C}EU@YRUy6Qt=g)f1c+>o| z8tdoJI)?ro=+k+{j8Gfyz7FUvLyY?YuDdb)0`$G-zsn5${^--^PlZ!e;6if1(e1p4 z=@+A)j`3ps>l^yw-&8WK|94NSepNDGvN-|qZwi>k9}RK5cu!r^_`gCNFWytmG`_-9 zp>2PC=QRn_`13;?-;o&~9pd;0nDGrm94~&S)U^H0LmV%Dr@}P;#t_GgpDCEecf@#l z{u5v8z5I_E-z&uN4V>fJ)E|uT=X+z$$F$##89x%^@oQXXZiSA&)fsO({{&<8=dV{A z?tdeh{*&m_@84;E5i@=X#+Uc}Z9cR8X@>2OGi?74On(FVbK+m7eo$;pqmt*L+H1wZk`t_!%UU{z{%w+oc=%-=(#reCHp-?xhll< zzt$OV+W+b3d)L2>p+A!8pPQjJyu9@v&h*O+>)+PUU&ZvRqhH?ozsmHZn&{7;5)Azx znSN{ZhnBPd4>J7(L%+SDU)_0vV%q=N=+`c%U)dRN+W)EOd!N5`H1u0B{q^XVcmBDS z>1P=FoelkgOura?`uIW5fBl$#wxOSB=s(W%PoiJm_pe_tD zI{NPOFAURO|E%haH?4n;Vf_af`Yo7#F8X)7VO(qH52jyanExO{{~@LyIYR}PmeWsR z`ti-w@t1?~V*Q60`fHu>VxL5iiRGg2?k{&U=;yJ{H`u2A=Z@bm{-ftYJ`FT<#+&wE zF}7bk=8KEi{uIOZ&t>{EXQ^@R)YX~)CDRN%!}Me0)cOT6QuK!z`kyiVPtlJ%Q&u0) z{&uFHfxbIl^oJYzCz$@f=$Ci={>Jq44D%mh=wI(VK{4(B-m}$w%R7GKobjgpAAPNU z{H7ZElb!M6n54&V8T#VCc`x*H@jiK`?RUqQcl`drY=1ts-+TOyHf(>2^FBSM{+>*= z)l8GJzgz;kkPc!u2Vftg|s)5gx(-(gyXPSRfynguVI}2o5{}t%FkDu;|$Q0)Kb4E^7je(U*aV0rhyqf9>!{UT3a{H~C*8S>%`la~(83pA$rA4b2t z`(ImUylMWKt<~}8uAi9y^M?MjOn>b2YWuFocDh$|{bw@$n447Jd;eQt=zq)fSE66u z{cj)BPeR{aXEFaphW^XW3yh}qFATB2#2If|{}e<21w((3^9$^z{+}WC`#a-J{d7bB zMMMAcy5@fEEVakoY-b)E61eir&c3>54ClA%9`>90WlayN`?u~y#8C6}4Ee@BSp zvzYNmF}}Vx=6p>1b)6run)YAS1!~~na>ifcj5n=cnPL5w8`f_V(|;KK^4715GeOh# zXNEZbGiLmo7+>D{-5q1@7lycgJ)QBU^-FG}&Obq{zc~I@8rJVzXMs%fZ@Ewn9E0)h z6+Qn2objf99{M?+{_BSRaHgLVV*h@oAG}%3-`jt~(EpO@*IlGGyu9=OE~X#ZRzLs0 zY3Se5z`Xu`(qZX(9NVrHZ$-w(~r7E?f*oK7x%w+4gKzo z%H24*pFsLC0s_&iu$AA9i`Y$v6Z1iK*W}Nxom@^-#50)_fGW3J^dNKdc z4EL=-$w!h_7=KU9VNrn56ehm5iMP_^u_D9~T z_J1OJV*S51Z2!5=4>(N6Upo42$@bFi@5PMI$N2bi#`kc>o3=j*+aJVuvHb@O+rNbA z2bQXVt;^~E#EehC`0}>@5VQTchVB2(u>IFGW!4{k=Rcoyi8<@DK;S`Ue13@AKhzm- zTK}j-b^HX;6YGD-u>DJ!e&A&_&^bMwb%{Cavp`@UGd=<1%Ul01nC(wBZ2ymj?XTf{ zgJnGa(J$}*cfK>;w0?!?d+&cg8TxIQem45`$a>N9*HC7BKE_{8#?$rBV#b$ZJnhlX zpJV19Eq<`zT;k;as^6dZ#W4R5nSNlI8d%=(^FL;M9LCe_rJt8E+n;FI{!+vC$6akc zeiG2X2=jNZXulUTJ{aQm_i)BnbZ^{qoo3j6@wckZ-B@1S<9f6+UKsuTh13xHpNBdA zy5|3X-`!qp_L=Q>KYt?3@!y3xzSA|~ZT~`Nyg2{R?||I_1__NO!Bmty<{WP9oOs@IzPZ()3S^RMKLH_boaF#pqr z`HyA#g(1%W4`%$K5a*xT!aV=u7(c$8^?T46Z<>D*<{!j(vHv5SFLduu?s2h&>5q6t z4eVP^eOkz|f!Uj2E{_AOGAJF6iSm z{rs0O#}9CRz#z`Q+9gLx?!{;S*Rwwh1o}GTP3xbF`NyWJ5n}!q8Rq{G)6dDC;GMjzdkuJTzHd$73ccv zXTPKFIa%s%B-g*LMgP47)u;EDQ0E`NQ}vyv7xE(JU(cey1O4C6p1yWpBG z`Y{&$_uGXx|E$mS`8TlWe}euPa$JPE{srjgIrA15G5i#cAKhe_{ z@3rJCgS@!6d*=MFri=d?2#i6$#u-r`gxZf4znJG-yyw3b7X7Et$LU+eo&OEBpNzhD z{w*!~i_x!prmQ{)wV#cC5aY%1*UF-whrZv(pTO_>`o~-J3&LFgIP|^i-`b*o0R09& z*FO#YG|&3CvFHc7sXIhnvct)z?D@YG{d~{kZ(ECg-P^-E|Ky%f``>&1NwDa5MBnfI zKjAO^_-k*`?~VQ=WWmX&?E0sopN+>4asTUR(cjS>``_pB7xh0i|Dfmi>uk~g5&aQ9 z`>E)Q_h%IsG5L$ z{}K9rAOGVjs+IH3zn4XSKl*<6e;WGUid2E6BTlAB|>_=Bo^Y`|H z7X5VeyZM}d4*D^k<8Pove<%7k`0N){RrAmHtp8w(e#D*X_)GTL�#Q-tT{hTJ-Nl zAK$*7*@{rlzeVS(zW4l-V$mOtzTfk2WOdc|o_~i~^e3Yqb!O)3gHY$6guZwF;=O{M z(}29FXD5LG_xhY27Twp%V%9eUH@YAb1+(*e@9vL z52D|I1j(oD^Z$$saQ}0f;v)KEEczAiQuqJaYWSJ|4Ygl%k?O~)o00vo7X3Ns`@R1K zF4pgVX%_t)^kdGqSn92)1PF~?|^=S&wgsO>U-y(Zqc8D{(7JN;H9eXef~e$qJQ(n z|EU)JiRk-%{3)ud`rgN%r!4xj!t6(0ruQ=}`Y)jG_xux&ej<(^asQug(SIBLu|AK# zbo2{whZX&q7X7P|)$yl(iuvD0gnIu^tgqJJJO9}h{RH&=u79SXpJ~zWjedjwrY=7U zb^b-@r(wKU|2Y=@v@qwN6r->IT#No}^b38?KMVah&-cIcE&BcMQODn4pZ$V{YX0e- z<3G!yzZre;?;Ck9hVbFlql{!1+Swfn01)88Ksb^h5`tG@UCmu=B+hyG|gKT+jnf0;#p4Elc8KNo%P`Y*TWFG8RG{YR+lAA6mezxVlP zjz#|q^oL>n+^bOgftIT8{rSTRi~cSB)&5U$!?+H$pLMU)p>w=DWY(f9lOI}d&D^Y1kl z{juo#ef_xveee3Owdl_YbN-2~)%ttqpJ&luihfU@`#%l+c-&#d@weWhe>}|f&%H@M z{x?|kqk`ex|DxLH{f!p=IQ0D<|EcJE_kX@cKOxM1wxPe-qMwAm-`8IY4gIYa{ekEo z@_GCRZpQu3^ZfrKi+<+;>iE0DXFo1M^}Xlc0*n5G=pXRe&q3e&{;k_B`nL^K^Y?rH zEfsIf=3IjEf7SEPofiEe=qF>mdll;QkED*O@BR7DrxyM9(a&(hxDK_S-AVPM)H2HF zzl9e4PJ`4yzpuaK-m3cE=RdnF`tPCd_xzW3o9cVde|s$YJJ5IjJmRcNsOz7Dem+Kv z$G^Q6{nO~TJF6c0_rED!)ci|5{UVEg!eF)kkNNB;cUAo~&-rhkMZftF)%Uyq3%l$4 zf4@b)ZJ7N)550fDqTfBtew?9SY|-zJ{!pAh+`}N$<3EUg0DnItj{k!e{jK+_u;1_h zgUM?B6FtZOA&dS#^!K_G$91Ul&q2Qs>nG-a*rK1Cq6Yds|D@fk=AZAGe~Cr^5c<(% z!sJu-^`H2@s_%XM=ZHoB)B|e%4ScSDMo{&=&wq|u^y>{%{Ty|5W-CISe_#OC-*fyQ zv*>>`T!q(@Ao-MC|NLR9pXho0wbY`YK0@{HJ2P|jL8$%6k*e?g{_l5-{{QVw((UVo*d;CRO^hcwgaAxJz2cgbCh`#sy zSH+_LwmW~d3}?0?)PB+wHUHf6)KGE!RkP@Cdqjo5KU21we_)2{dw>7AxH|7p*wzW4qgZPD+GzVH2yzIXqNzvXof19>U$ z@n?9L^Di~bzph1pGWvdh{u!U8*5CW{&w3X9qv$_R4mk2Dd;AwJQ2i38DK6sv7h}<% z@|ZgQ{Qmxb-ixa5{r!su7X8oA_xtnrqHNXoKK?hd=$}B}@891iy`=g%YWd~*H@4_E zouJm=Z@iQR> zpW~T-yhXoHnDfursn*}!ezE^sTl9yae<7JL`ILS9%R^th=drkmejAJaV^6F5zu*0z zS*Xvytwn!EnEiZ1Kf$8ED9nDTq2J!3zY=}F_y3sB_4|KEi~goC=bwVU_xSH@(f>Tm z`DYpCpJ>tl5q-bE|6Xk9cd_XIi@x9A|Bc&IVr zi~bPw{hoi)(DxpHNf!M_(D(cNCkOqYJo~EiZ%>Qt2QW z{3D3I_xsQO7X5zczlWdS+4hUj58{OuasCTh^rPp5xBl_J>gzwyq8}S(KgG}=Y|)QL zKfzsiT!*^y67X6~N z;objAMykH|@n8Hb*jWa7!Dg}Ve^3%;KYEnjA7#-mL*MW7k3{r?n6KFXV=VeL*QxdQ z+s`rd$6EB`(D(cNGjgj7QQjCe ze{X++MZYp$IDFcjIIcsTf6Q3b_x}86l0|^RzquCu81(%<|4T*R`~BB^i~iU7YW@v;o_`AGsrh@q|ID)J z|1Zpb;(Wco(4t>|lbXNZ$De%kGd;)OVvGK*==(kYB|Wd-|Cdde(obMgIfz7yA7EH?TnU1D@}{mRa=gDNx5>p5OkPsvqs?FSqDl z_?hba-T%?sRNuS*b1eGTq3`$mpG@?Fp8dbVqTd7kET8LNioSRMud?X>_=Q@3zxV&r z@6`Gydgi~{qW?eiUpyZ-fU8iy|A;?`;}1^&#Pjc5i~i#8)%-v9x&BEt>c}mQ^Bn(g zS@Z`TQT^3q!sJu-^{4bEs-J`H7xQ0Z(ZBGh>JP`ykKMfxYCrZ`)z7b{MvDGgi~hu4 zRlk87#&xLulABfEd;ia~=)Z`5tj~V1t?GLpf7e^|KStm0`KJ{9Ahutu{|1Zx_vm-> zIsc?v)cn1Ve;Y0Ov88JNH}u(0NYM9xzD2()`cXdndFbQxBftOLY|+0r%zlZXzty7u zAo}jlkKJVm_5K*TEp`zIe+^hf`u_P^itkL;xS-t{lA=ubiaeRtxx4t4(V=;LJ+ zx&OCY^b>v$@BCMKtA70NwCE2+-|zaTBa5P z)cap?cg)}O_oqb`{i!EZ*zfTlo2(!I`z-o%(f7OmlhOC?|NR#I73lkY{*jG-5IauX z{|;F6KSDpo-SM~%b^izMQR^SXIMFY*=pROZq|bg3{d8=w=pVG`-~E?5{*rz6i~Feg zdw>7tkVXFu^b>sc1ASG$6ywGG4_owqMc?oJuN3__Prt;Xe;R#!`*vm(LOuRs`l4nz zbu+U6uSI{;DK*gV@gMb&>U)p>fb&|Ivkda$p4Yj*|NlJ9euAN2!J_{i`hL&>Z{c}A1x)%L6 z(f9lQvw7%yAAjpv^tXh$|4R)07>oXH^!>j65j{q&f6%l34J`Vs_*yxKU4Bm zKOY+}<{xj-Ux@yEGGX#5`~7$9CLDiQKhbY((T}@W&ENO^|6|qn9)E2t`aRM2`}kLa ze$cc2Z7upE(D(cAFC-SI`FmggPO#|bqwn|ppRx`6-!uRA7X7{GM`65s73%Sqi@x{y zS4WHf;V}EfhJI&@{t5I~xf92AsPm87uGT+WJ&lpCKZ*B(b?%1p;y$n8UjJEoiMs#! zeg2)hQ}uJu6Ziiv7X3o>=VH8j73%zxKT-Vz&-}Yt^ataO`;y%-u0!o-eWv=}_y6y1 z(cgf+@AFTg>IbpiV*QgW`bFsb-T#T7>-)c_MZeOe>iF|J|5Eh5^Y3NRZxCibX_vnK zy)F7}(f57+L*IM;OSb5DM?V9{k9!sB@n4L783u^sua8B4FZzD}{;z0{T7U1~|Mj)# zx2&y>Kfm)&*sJ>9`S-WzZ$RJg{Ns!C`HR2Bc6Nijlz0BGT}RD7*4^>A4t4)$f2I1F z7$^4sK#P8R^sD>q$L&*ncb=j@*rK0=zTf*_BKqF@-%yKwFwB0Mp`T*WPYtu5W9SdF z=%_>jBjz91IA7RnY4znL`=%-rrbHnVX82Y0u`uSn@vkd()7X897 z`vr#nSc`sfnEf(CKh2_Fihg^a=ik`<>i946od3sL^jp+bk3W9D{||hl`e~m21dDzz z^e^-||1|Wy_y0*2{UKq_KgTftbc_Bp^!>j7Zp;CF{U=-WSBJU&S?GJ$f2u|Q1N8mA z|84>LIiBP1DU1Gb^!@()DfL_Z@h8KgU+FS+|MUC(UpD%gp7~F==(j{a#^?Pnu2{`K z=;_b2==Vb3@A_w=?>+uzTl9yb@Avh$eDo7N^Ut*CPe4D)=lVx}ryqZFEc!Fi_j~@0 zH}vOP^j|>#YM=8@LEn4)&$sAr4|Dy?4D-*j=-|zk}_)$Oq=2-N{pznA8m!a?7 z|0^u|)6w^P{!b{;=fBFLzX*N5zyFO;@?~q7xDVzT8sX|%hmk- z_H%w!^Y`}iEc(ASP<_8Yf5|wm`awB+HUIS%{qq~DzBp%iFQKk~3HpiAYP4AY4Ho@% zSE;_=^KabwYUR9-zZ)(3AEQ6UJ9+2hQ0E^+KOF4otND9>|FhJhzv&va{(jHD(GB$V|J|a$3w__Of1vL@{*PPqkE0)f_s?;6L#XG! zeDt&GtC8aSpA#1Szv9*UZ^yr1ZQD<7uhu`Hz73bhUztUJQ-bQh<%V$`>im=YslNC9 zzfM~8N4HabzxzKbsQTXhf6Agi4}JBosQkAGq0T=8eee1IUyJ@~^!+~m6dL*g=U8$M zLwSkDHTV19Tf^)}4^Zpxoqq+3{yy~A;Po?XZs@OnpdW)L5aRw<(V{=QvpW9nB0HRX z%0B-|AF1YF=6U_El12afTUCFTJ8@ix+D{v+`f=)JXSO2Le$F`6 zkE*JMiuJEz(LdN#^~atms}Dl$=S@}p0t^uSY8L(EZmO?t<-d&xwV(c!8X3e;(XVdN zAA^3w|I+fKQ2WK`d(VGS7X9bZ_j~?Ho~GuX=$U^Fi~j5Auk|_qZ1la4KQ%4-gKk&* z-|zPy$`f*rGogec$hYfWG(r527vl--J2;n3?+gYg_bxLBF%l{hx%s_wS$U zTJ*2$9_Id^rO&^fMZW|3et-We1N|J&@fTy!ABp}QKG#2Pwwk|p{To>HH;1|Y@z3b% z-^ilB3w?Df|1CnO=ie0cgP!$oY|%d!=KKo`^N+RY{~Kn%%+POQ(XZY^-Tyu#3r;>| zpMS+>;`no#;vyb@n_2X~NmBjBBuGAG`*F{!eyO?{*>7&qkLale`u+YVW|8W9AOGVl z`d6U;1DP=Sl%0PT`YE3EZ(-4|(o4RZu|Hx%n zf6xAJWzlbOml}8v36f9Q^-q6Q^>aPnf5cn#XY^KmzwbW~w@UT%v2tSlTU+!$2(w>m z=(n-x|AD^W`(N(s*#DmSx3%ckx?8P(&of7!`XJQ(AG=!h<1s+2e}YB-e)MB~_JePz zex_&s?JfGxpzrtoUy8o>`A0{K{uk(f=5zjKxoZ9;71Rxg_3v!aUzV))zu)gair-d! z@An^x7X3BokMcSHs5Ppe>pA|qSo9m;qvo$}<-d&x_4vc8^!@Jt!gZ?e-Tz4z{hjD9_c{MSp6X|Kj{lw({ZW0wJN`4)>+|nr z(VvX|WS{fTL*M)RN4+ij74Hpi{<$0U`6pZSYof1i<-bJ;_4qGFKZv2?{@2H%ABVo* z-@i?GUu}7jr{CA2KP=4kkKU-Se}9Yq_%Qp4hJMhZKOKF)zyFtpexhgn2U_%BLO&Mc z-K$WKzkKvFJ^jHJ{cT~+Kj{Ot|Go1cYSAx7-|y?MS%$v&Ud*{0%1e1a|2Yxn`WK_` zUH@Sg{d#@X`7Z<8>t2Pr|5NkT`bT*le}-H1m!tm`36f9w@4q(V{8LG7xj6rgu;@SD zU(Mg|`7e1J`dB#8Pqpa3i@x8V|Ho}teed&+Q5OB}=(lxuJg!4s{~-F_^Zyu&e&l^> z{r%qm;&-U|CwkU@tVO>b`cdV~pZoc3bBwQ7&iJLyA2^dAvC0wY*#02Ki{odU#rAhY z-|z8LjK25ydCa2UFU)?_PW||uXwe^m{&1h`pMbvi_xB&S=!(jz^jo6u-hbT92zCCcyHq~~ z1H}Drnniyu`sJNJxch(6Zq@hR|DLw!FGIf(nK1d3-~W45Ki%{CQ>ynANt?#`=zEX9 z=PdfQ(NF$w>E%bE9)FqWd*8oto<)CDnEm2?YW=i$Zyn0@BCl1=*Oa;;q&-ULEroO)k_xr zT=f0^{ao-{HGl8p-^&*L>O<7}`~CgRf@0P8?*CUT`d6ag-sk#9eW&`~?_XZE=s$qI zx|RPnBGmI=3HsjS?=_45ljz6%mzE!e+D|;Fw%praY0-Zr%zloc|GGv0L-cF-oPXr^ zYX08Gzc(!UU!vd4XFneOOpF)LKi;(HM+{Z>Kfm)YFwFmLi+(Ni{XYLIGxXoF=wE@p z-=Cky9#Z>1-?RSfEc*AL@Av#$g1-0s`>sWQU6}hn>9BtMzh}|khQ8m&|8(@d=l}OD z`ro4O_xLL?%>M(6{;y&7%MATZ7X8y<_G5q4_x~1){ss4k_x(q*q5q*pzdriWKF_}y z=zEX9k1hH)pzrtiFEsSGS@ds5-|z3QMwh7lpW`|I?Xc)S7UurXN8kJS`-w$=2Ku-9 z-2bKMmwM*^nMHpW`f3&b+lWw~e-;0vMg~3o&n^1L!d(A^Bl`V+w?+ToF#D;7{udVg z>M7x!f3gkzFD?4@!t56s`d?Y}n}^vC{H*W)uPyp*(ZBD%LtlOr>hT|kzW4X%zOm@P zfWF`JZ^}_MfA9JKTZ{hNVXl8J`rh;3cNYCE==**CUu@`qZ_)oE%=t(Cq91=hSoD7g zv!7t-|7g+w6aCNe^Jn*N5bE)tihdfNz=-evezNF)^sqYrsa16Ap}+oJa_(hvP!K~! z|7VN-LG<7E`R~UiRze?l0MY-&qW|JVHGjX~|K+q&{d~{-f3@iEM*j_;`#^#8QzZwPb#$w~VB|FY=s46~nM z=>Kie-;ciE$G<%Ey^nwYSoD7nbN+!l^!5LrMZdz6;T`{RhW=@behu_v-2)%jp&tK1 z^u5RbInFuI`9FDazpv$f|D-kge)oSV`riE?VbMn!@+(D!@(Pek8){=43y z-#5(pry1sdgGGN-nDfs!%>PD<{^T&{Uuu~DO&0yEF#GWX^yBYli~i~``{{=MEf)Q) zVfG6Q{dN}pedv$$`TQ?xpjvZf@g|2kRpA41=Koy1*+ zP@n(D57v*rTP^xeqVMzTdy!j($Kt|J-BIKN#lxgNFXS7X32x{T}~0=zGsU{Ve*C zGu8dStIzXK5&Dsy*MIJ_=--LH-}x60)9?QSEc%1c_j~+BJ*XdlgDm>v(U0-D{>kVE zFGsL355PiRY|C)!s_xQWtqQ5fCeu<&~fJJ`;`hL&9(Zluq|DZ*G7y1o-?*AbA z-sgW0S@i!z|5l&krw@l=&M`#ZzDo|{#7_a zjSPDFqb>Ri(f51*i+fo0z4yOIEcz?a_j~>eqMzuQ|DzWD&0)?z$1wkKhW@+G`v=f{ zDmHmH`VAIf0=S}IyM}rHfgLTFF(UB2X_KAp_<`}mjQ_~^PmKS} z_%Dnf(_H*L<2ix&5&d0>3f-JL7*a{wL#qF_Nybkx{x9RkL&w2$ zOox=?6&SC`cqPUo8L!NERmRU}`~t?K7_Y&2O~z|!9*g73xtq$1do8|y5yzW48~%6y z74J(g+GhEW-T{?)_yc z+&y=?{vI4Z_IJkqcZmpG?%vFQ=zJ6rXux=nwzmoA-#;;<$3FA!}Z^ro5 zj9;VqZfD)Z@e_lUbl3SO_~pdKiClbr1LC!ufx;USZwhZjydC@s;^N;~7Pr%w_(Sk3 ziBExx`;E9bpPsoy1md*$ivJi9Xu)_(##=Fte;n#eQGE~*Xw7_m8^+r*p1^o}#yc|J znejx;7hpZz=W*`&9}|f;h9?p408b{~7ak-&4xU1MK0KB9 zI=K6Nq`Un^@O1L^;*n8oe+Kco&WZ`oBrc8w;aSAR+m{Q^CO!t9Lwqhgm-w6TJmS0I z`NU7a3y5FhoM^@N6vEx}?)C6J#P5U`k=q#!FDCvRyoC6B@KWOY;AO;5!kvwkmq`5g zOPvPZ03Ot7REAUw2AHw5^{|I;gKFQsl3eNBQi|tGxUmpWc zB;E$@zR!$%JNLko$=5#u4-$V4o5c@I2!C;Q7SG-wue|DIgx@EV%GO;?3Yi#5=-^ ziT8z<5FZaOC7uN@Bc2C$zo~ORm6yHnNay?{F0LPkyYI8<`i0Inc4A)9J z#}ZG4$HB3=f#>1Z5`Pcgg7^>c>xf_Ad`~L2vnBDH;nx!%2yaDvHv9(SZ^7f??)rQR zPas|b55kkxatA6n|Bjm2&V0Cgo~{K?brCO#5gLOcUr zN_-K#jQBfn_eC3be~Fi=#P&xzk3Zi1_zgUY_^Xh+hm(fXAy$;3{}J z@tffJ@MwJfo$w-Z`$OTy#Ko|PKo_h6ZUk2mfv$|-&N%*2qO)(tx&0*O>+z4+XkULP z^Y!9clYWT^;2&cl|0yDXe%Gt72A%lLDQ&tv>~#uqTYi18N~f06N*7=M}ZWsJYV_;SYGN7=I% zIwJ5I^YtqjU&;9EjK9IS_%2evLuk23xX@ zs*9gDeqUh@o{+}jrXGQBCO#4VJMkys4e$n`?(NKi_ar_KJ{f*Ra~1y3aq;toiq7|K z;)18Yfv@3_#D9ZVBVPRibvseSuY%Vk-T@v>yf3^i@v-n2;#u%U#NU9&68{k1jQ9`m zIN}jeYF;gg*Mi3rkAo+`-S3aOz!Qn5z>~=BOoI0!z5t#K$G6jgci?@9e*y0ccVB-H zKb{x+y&v%loFAJD55nE;Zvsytej7X$?jAou_!#07;AwDo`xn5+6JHOX0C%^4FMJ~L z6YzAnyFJyNH}Vnlno7JWJOl2|w-Y>*_#k)|xt;Ow#l+{sv&rqe19_2~uQKzt-TAMUQt)9?b~%i)D^cl$TOcfsB5 zEQ0TWyW8_SyolU>HRsnV#C(g%?Kg%WB)8uVeu&(DUw8?*{YT-YB8 z#N*&e#CyWU>y+O8J`SEtJR9DZ_%?Wu_;L7P;ukv48^m^|5N`z^PP{)nmH1Tn7~(78 zX~aK=Pays`Je~OE&hrwnol}V?!ZV1c!et#_-y!o;^LpB6}MkZT>Ntv!VeLz;QSh)@Dk!p;YW$z4KF1=1%90P z8}KsXU%^iik8u7$E3rKR=k;&zdEjbzMdE$nk;JFLs}WxVk0Smpye9D~_0{%76Tco_ zmv|5^elFqN{u%H_#Mi=OiGKx;gF8=0<>gO!0^EK6P&GzvXFK9oz}pjV3-3VuE_g@c z55YSTe-hrA_yYK?#8<%+iEo78M*I_a7vcxtU5Wn+??$}R8~58_Gi zB;pUj?;!pRyeIMH@H>fbf{UM1iOV_aD)0mRF5*!Q)Vz8VkAvS$ycax~_(Sk}h);$0 zA^rmVUg96X`x5^e-j8^NhHCr!6R!`yk9cQzka&Oi0OA?&fyCFs2NC}QKA3o*k=o87 z#GAs067LAVpZIWi3h{~X2Z%ohA4dFD_=ChZ!iN*z1AmD4&+rk%|AjwHyv`MB9a4$6 zgo~e}ii>;PCc#G$9}XW){Au_Y;;+IVA^tvmEb%??M~Rof(};_KlHiSL7p--Gbp-%r996OU=4 zw*Lj(Juje*ItYbmBFe zsd*I>zZRb0yzcA0o$l~#;t#+Bc%tfdr@|BA?mDl8i`RX{#oh0P@NVSmkHT*!UioUZ z{oRQ-hW8-e0iHy>Kl~2j8}zY3lVk5tPS z=nM}MPl1cq(Z$96`Wf(4;;Z0kaQArL2A@Fu4|qE9=xfyWPbGdMJcIaM@R`I%!!wC5 zg3l%X5j>0dpYX-R8^)>a%qD&dd>Qc}@Eqc^;H!wg4bLTh0KSI!X?Py-`q!%M+(0}5 zo=^OK_*UXG;046rgzqH&6}*smpoQ9=J;a;9i->oD?g9y zgO?JobDi4$cs}vR;9H5m z0xux`8GI-4Kj4ML>)xcca}V*(@FL0+qsqat?&Zk!{IxLKL;-){tkQ( z@jdV&;{U++6ThI7+RkF)4dI7~-vBQm-W7h7_lvcwOQ>;4#Dp!5a~O6dp@_2D};Z7vXWl z--fp&{xLkB_}B0@#D9e+5Rd4l)~6%!OW=vbo5H&hzXhH|{7!f;;`hUoi9ZGxzgO$s zzt6yf#9xLFCcX}yLVO2&IPq`csl@+)k0E~E?P}f9h}VIq!z0x+0?pvr@N{?&cuXw? z?$@WoW8v=O_#5zM#J`5e5wFr+ZD&j3N$_~$S@1T*e}E?t7h4?>_$LC>IqNDS@IS`? zW&AYb=eW}+w_kzr2*%H4{5-}hGhUVP^EGeLL;ao3tIqQXal!J*k0SyXXkXvi`FioZ zA`xHc9uHzbMBqa0>y_7F{36C{F@7=Q?qAo-%|7!#5rNvw*NboFd~cmu{8F^)IQBvXh8#4=ysgz;vKH)lMK@fM7?WV{vQ@r<`-yba@R8BbumJ>wl2 z@6322<6Ri<#&~zelNj&GcrV6#GoH+NAIAGK-kX>0f$>R~momPL@#T!?FusEERgAA@JeTpe7+=HqTE_DjU(fgk#y2va&-iA>w=(__;{}Xw zXM88)pE6#^_%6oxFus@ZBF6VIzMt^}j2AP0knux|A7;FS@gs~MW&9Z9rHud1_;JQh zFkZ&^Nybkx{x9Q!bIDUi`Kj}M%ZyiKyb|M)j8|d28spU&k7B$A<24z-nDJ=FYcpP# z@p_EMFy4UiMvOORJeKh$j5lMvIpcARw_v;_lxp`_(sO_8Q;wKR>nVKynylT zjPGRpQ^pG!-^KVI#`iK_#P~kO_cMNg@nXggGJc5h!;F_OeuVL(j2~mXl=0sgKhF3G z#>*H#$@nS8|7AQ-Nq;mIuiJ}vBiAnxfr^Y*Vmy-ZDvVcSygK7ijMreiCgT?~9?f`d z#_KX(k8$zt?)t^~cS#s;#CT)IV;OJ4cr(VEGakoy3&vYA-iq;f##=Kk-W6ZJLCcwr^MA%GGG2-CNXDx$UXAhUj7KqEgYlY-U(9$k zWtFvf>7 zK7#R7#z!$ehVikCr!hW`@y8gS$oS)oKf(AE#-C(-8skqhK7;XDj6cKpvy4B-_&mm+ zXM6$Uix_`_@fR6?iE;6-+Ub{wz$=Wu%J^%HuVnmn#@}H4O~&75{2j*EG5#*&?=k*9 z;~y}-iSaFrf5`a9jBjIn2jibG{u$$+GrpVgFBt!l@vj*Fn(=QK|CaIZ82_H}9~l3U z@t+v~neks3|CRCI82^LuKNklI_N#drp%?WguURmo7m0m^jNz$unzCt?Qw8!&b3#H@D96WwPdbCH>hnLCT%ok;`c5&YL8W%SP$Wo9K|sG3g0J1A$7t1UYXWLoW5C zJ8#xPF0G_@AQ}jCm)=qHq0&2PK1q6K&F4$MRrA%-6E*)xy7R}}G(zDW8A%`4q4 z=uyoFN>9^#v-EMAH%b=tnC8=^PtyDs=}&0h?H)mIYd%`~8qHsk{*LBfNnfjZ^*(~u zY2HqHp5`N^zpMFD>FYJ$BmF(iBkvWoLGuLZ?`!_B^o^S5NdG|dBI)^>NA?x8N%I?} zZ`S+)>02~kAbqRmJEVW8`9IP>(!5zeK_6>=uk-@VpO?N(^Fry{H4pR`v_tcF={q%l zK>8<|FOvSL<~yZ-ruix9g_<|NPtfO@_m{p)^EuLYYraML9?g$S|3dRCgM#*Io-F-K z%`>DIX}(VSSDGJ|zEAVI0|b4oc{l0%HJ>E?8_icsKcM+H(!bUG{DFdsHNRQivAqvb>FNzHGU{*UI9q@U7!we6dH%iS!1V|0}(r=GQ$e)}fK+gQZ`g`8?^3H7}5UrRFE4$7+6cs_0&&`F+xx zX#R}!rkZ~sy_x36q+hLhy^*5ZT=P4mU!(aG(&IFLOZv5%AC}%i^V*|C_d3n*kls@B z$e_7TtKw?~s0@=2N7%)_kq>n>7DLdK=B_j}hIQHSZ(6t>&|& z-=cZG^aRcSkls%7#*c_@d(8(+@1XfY=^ZuSE4`EEHO7kD@2vT4(r?v#y!1rPUzdKH z=HE&0qIs=HMYpTwU8Hx@e4_N*HD4vYyXJ?a_t3mfn&>8J-d*|~nopA6Q}g$v->LZ@ z(tBy%aGdDgrFk#uy)}PI`rVr6Nl(`Ni1d3juRmUN`)J-n`n{S@mflzMx1{&e{0Hg% zHLv-Y=-#J!SLs2`Go%mDe6#d{n*UGwAkAA(5Z%F=kCHw_^S7lB)%=+B`!#PmQQUrt z<^!cap!po>!!+L}{XxyonB>iE{3#F%O9(Y`IM{3?m`Y6pG zls;PX7o?BTe7E#RG(R_8bjNCbz4S*le^7dw<}XPfr+Ja|@tRkABH&ye)4YT937S75 zeWK>CN}r_pSJEHXyz*qxP1n4&^d~eQCVjHz3#Cude6RGWnpc@3x=(7}QTkJwKO%ja z<}0LUX#TbIr!|k7D!S7(Z!dj@=A)(0)O>~XS(<+%eYWN`pA_9^H18-qQ}aiqKdbq2 z>2oySEB!gmD?KH;b2X2bK2P&8(&uabiuC6-|5AFE=I2fm-36MrlfF>%NzxZ-{<`$V zn(vqXg635-M0bhiH%os}^M|EpYraJKOPYToeW~WBq`$0rv!})OEYrM?^j9>WDSf%- zJEXs=dFAQi_H#6EBmFha$4XzJ`CHOgYJOPyD$VQ85Z%``?6(9eU0YZq`#y2IkUv=uhqPj^mUr2NYB%Jq4ak(|3>{=UH+4+cdvc`gY9+O5dUReCazi|5*AbnxB^bspf6xi0%1I z^T(wZYQ9DK=b8te6SuQV^XsJV)_kb+J(@3&{)Of{rSH}JoVlX=rRHs=7im6P`d6Cg zNZ+UVH`2e>yv97y-LLtr(!bGsg7gELzbXA&%@0d2*1XPq(fv;IB7|;dO8-ss*QEchd6D!#G{0z}=pNU+m-Ih1pDz7`=If>ZrTNd&%QU}y zk?8)dc`xZFHJ>T{AI-N(Kc)Fe>HpLG+Qp*#ujUU*KdpJT^fUiFs~9XV2c(}UPJRu(l65dg!G!4U-?qNxzy6U zuk?#Ge^&Y>ntv!gTJz)5FV(!!Qqirg`CZcMX#S-1x|*+(ewpS+q}S8D-pis}U-R3g z$7r4|{c_Foq&Lv~C+Q6}k6tFajWq8m{R+*eNpGzAdg)hc{)_Zj&Fj1(x>sr5U3wGE zCrEFq`6}tnG(RZ)YRxZNF1pP%?;!me%|}U()BGjr*J{33dJD~~yehiaY2HS9OU)ma ze!b?)rMJ@jYw0&=9+e}y@tP+}zfto?q_@_5mGql5|4Mor%_CnE-J3PPS$bQ|ACZ2G z<~h<6G~X+|o#s_mh;Dn$TTAbt`6%ffHD4yZljggnch>yem7;sA=B=bBYW|?~+caMy zy^H31rFYf5$|}+Arg?kmw`=~W^zNF!CcTH|UrSHY{DRj-_YTc(k=|4DROxqW{;Kp| zniomGOY;j>i*9etZ;^ht=A)%2YraDIJ(_HRhT zOZt79H_a8@pyorQ572y>^nsdxDSeRURo)c0KUnj2(uZiCCVi;puS&mP^Dm{RXdd~N z=suwNjnao{o+AB0&7YS(T=P$*Kcu<(70eNuU;nn)o`*GmKzgd?FH0Y(`F`o6G_STs z-2Q0IJ4qj-`9$fDXuekZSj~Tu{;1}4-x1w3%^#FLPV;Q(<2C^huhpmHxQqze-Qn{IYeT`-J9QrBBv;ob)N0uaQ1g^TX1g)Vy|{=su-+cj?nK ze^z>i=3Avdt@+>5r)wVfuISFt`~m4RHGfh1EX{XGpRIZ1dU5;DXnu?IOwH4zKdbrc z(&uRYll12_Z}^_*&ec39eV*peNuRIz7t){C{Gtuw_OmqaBz=MAW2G$zeV~I%~PensCka`Y|Rf!e@XK?8%1}i=1J0D)_kh;Wtwl4{)*-&q%YSz z?gP<%Rr3MTb2MKh{WZ!S8Coy`YO#ImHxWsZ%JRR`7!BlXx?N~z`5jV z-bebIn$ME{mgXCzzpZ(x^fj6{-YmNBXx>};TFqxkU#Iz}((^PwE&W~1=-qByRs>&EusPXg*x}HqBp>zFqTu(syVc`LXEk)cgkNpJ+Zr`lp)Dlm40J zTcsCj{+IO6HNT=jY|k#u@07k<^K|KZG+!W8mvD-y=zvg|Vf1~+y=?64_SNgY_|02Cu^JY6l_dCt+m3~lj@zoK5Ns;23 zULpeLP?DcJ@2|^v1mhJMKbP@JjGxE2ar2#dRc5}v3gcB7ug3WKj8|v;0>+~lzmV}7 zj9hFdohLrHt2Rybj}a8NZD2dW_d+JcjYh8E?RNL&h61eg)%=8NZV8 zSjMknyb0q?8E?k;)r>c1{2IpN7{8YB7K~rVcuU5wXS@~TH!vR0_>GLWX8b0`+c17J z<82wgh4BQ&+cDmr@eYi4WV{pOof*HC@kGXNW4sIFT^aAj`0b2$XS@gFNsQmYcu&Uf zWV{#ScQM|Z@w*vMX8az;`!Iel<9!+L$9R9n?_)g3_yEQSGCqj$!Hf@Kd?@4hGoHfu z1B?%2{6WTtGyV|cBN%^}@l?h~GCqp&(TtB_{1L{-GX5yzX^f9!d_3ciF+PFuiHuKT z{Bg$98GnND$&627d@AElGX50f(-_ZS{AtFgGd_dynT*e3d^Y3HFrLZyvy9JS{5i(w zGCq&-`HVl$coyRe7+=WvBE}ap{sQAm7=MxRY{p+=d@18EGro-RR~TQ;_^XWPF#a0j zD;QtN_$tOA>*GjzKikQjPGIm z3&!^{{w3o@jDN-WKE}Uhd_UvgFn)mXZy7IU{5!@EGX6c|hZz5X@xzS&$ao3kKQVrU z@t+w#%J?sgA7lJi#!DIhjq%?Z|AX=4jQ`2_3C90oyo~X`89&MRKa8JZ{C|x9%lK)= z%`fyjum7K88sNPC&v*pm6&XL5@k)%J$9N>;l^L(XcvZ%$F@8Sd)fvBl@hHYGWV{CB z7cpLw@mh>u%=jgYM>BpYSAKgxI-j{C&nZGX4SM z`HXL3d^6))7~jhHhm3#3_{WSFFuslP?TqhWd?(|dF#ajypD|v@_~(r8VthB_dl>(M z@x6?H$#@atUopOq@vj-*&-gctA7K1j#)}#Mj`4$xf6w?K#(!Y^FylWmUc&fKj2~hA zXU2~*{tM&B82^>=QpSH{{P+Lk?M>i3Tg&>+Vi7?^Sp-2Q;%!%4{+xYLaHy{O_q|2e zMlE+kJ)X6@xV2GL-F+LCglJ3{lW}1TqecxHmq-#rWHgC7CPOlc8KOoVjl?LD(PYp> zK@@Sz_j%vr7WyY!=r6R; zUu2AeyB7MMg}!g0-*2HmV4*)~p+97yKWw4D#zOxR3;jzi^e?l} zGYkF8E%e+%FD&%ZLa!|J+CpzE^cxoXO$+_NLVvA={)mNsXrUij=*JfNiG_Y@p})>T zKeN!!E%XZu{g#D(+d{u%p+9P&-?h+RZ=rvMh5nTm`d3-#Z?Mq+vW5OvEc7>8=zrBh z|7r{UYb^A?W}$zrh5pwq^uJ-DzsW-XpDgsRv(W#hh5olJ^#9pH|9T7k8!Ys1w9voF zLVvS`{=Zo0-)y1(Z43P^7W)5cp?`~o{;d}Jw^`_a$3p*h3;jDR^zXFL|E`7pRtx>R zEcEZT(Epx={yi4@_gd)RXQ6+;h5q*~^dGR$-)5oz0}K5hTIm1CLjOSv{U2NCZ@19@ ziG}_{7Wz9Z^#9F5|6vRLM=bPzYN7u#3;my4=s#+q|CojT;}-h=ZlV8#h5j!r^nYog z{~s3mJ1z8oWugCT3;qAJ(0|fG|0xUoT^9OJTj>ABLjS)k^mkk6|JFkP84LYqE%cwW z(Epu<{___4FIecmXrce#7Wyw)=)Y{C|9cDlS1k1RSm^)3LjP3@{XbghzhDu{BQ}?}=cK*;({@J9gTv>X5 z*UlH1b|UCw<9UTD|2tiI*OdPzsw#iIYyVSB`FC5&|AK}7J`4SiRQtp6JcpE|D@z~l z#`#&M-=|Y9`>Q%v-I=bI2}{|uUN|e14aLnuAR31Usm)#>*#HU!%Kcv##nS#iSM(Qm?YH~;tBU@Tj{Y3ufqUvNj`#aK3*E8MUv8n_XQA&~ z=#_E`uJvv}X5=vM~xf2HW3KA^u((LZBAe=;eESC&3=K)*-PKWjjL zrJ{fKfSxJ(=M3m?Q1q7$=-;mBpWD&fv+-k!{&@rXdldciJNmQCI($UYzo4UklA*td z6v``0FYD;798475>FDi!zhj~Qu%dfi`S#xZk%j(pQZ%nD1zq`8j(@#{{u_!Ob>&<6 z^$Gu8?$NtD`h8|zDfD)&3`za50sYF-u${Y#o^>&mzL{xS=F zThZ_9%D>38f5Sq51N7%Ey|0tw-}FLV;j5vKt@E2L^uKGN|B!|LFD&$*w$OhY`jw@- z-Ml{6%x@!&Y$;QX=g}ZQS_az{KuJgUSpx3 zEBfxB{MT9N->v9-gYrLWq5r(1?+?nq-$H-NZ^*pvAC!Nwh3+f*1B3F{E%Z{+9~_kb z3Jd+sivG}`{M#(_cPjeBgYxgO&_Af?U(=P3&3>)EPu5|`Z{MuwSyz79l>Z3}{r!rb zcjX;Z{>h~JUs)Q`U!>?|SN;K0e$7I^tLSxC{<}>1AA^3+(oc5u?>F?1K!5AfjgJ0w zLofax8PCm*-bPZsQ_=r=M}M0s|Fqwf@_(zNxANjg75(c6^h2H`xU%$(1Nw{q^Ee-P znS~xgzq0h^uAOf%pSF%D+*Se{EO3JtuFs(BG@*hh6#hocyVU{vw`cxUzKIm2c0_drq$Wwv_+2j^3V=_bB?e z59r_UJ5v5T2lSQyD)hH@^mgC>5%jk%J$JD0FZ^#({w-bkcE4T&ee66OSm<|DJ9oNv z+PXh!DgQGT`fph1AF$A$`n%)fe1V1j=@xnb{mRl`>&E|lvyWeHq5n-qf74Ui_4;^I z{^t$-Yt6r(Vg7vK?@9Y#*R}syhW>z|xBqU-e}|#J%#?eY`SX2>{@qmce|#&(Ig=`@4$%EnPe9{QM6| zJKxgj^X+`!VCakU{Ygdt{;r*NzOVWNY3J_`=_NY>H0<}A z6#X4tJ8kg(7{;8(?BZ~f~9sPNR{+o*aXC3_$ z4gE|0e7xVEfPT-?d%E)NIRDbplj!#+I(j?KuT=DZ+0ol^zDLpjyrZ|{eC3m*ohNnt zwjJk>DEgB-dOOaSK6$*~zXAQ8rT^HqpO|_5v?~9UuASEz`g5Nm?R-o}-)+|c`m@d7 z`+wY3<)8A@wtjmb-(}iq>$mh5KUK!_ue+G*>z<9U;!KjW!w{g(bq(C=A#S2vz^oX>xn(En3MZ^yZ+=)X0f zpD6l&>FDh_`9?+mosQnN|HIJRzxUVqU8?-=4$A+&qJMBef9A)^IDe_5f0=3Q2>Mw2 ze_NIRm9G55ru^?K`mc8MFE;e(>ErEuIrMv$e!VOIg{J&>DEj+4`sW$?yDja!PnG}8 zuKZ`4@}KaG@qS+d{hp=wcjeoAv}`H=fGYpnUHMine5IxQcd7FKtt;P-=iQ3_fsXz> zGtU16{jEzM>ges7zvAPB{s#m4w<`J{cJx*ce4nC!ctHQ+XG%MNG@yUGqJLyS|Ig6d zF_-@Z4xmlNw)Mu0O^mHkEc=uvG$+Cl!gX4n>{<#?zCnx6@(fQr;i~4BY z4Ngza4<60R{Gz^ba&~t*QpBmx&W=yAnlfXb-Q)b?;C8+Eecg4cx~b2y!;|unUcGhK zy*Rs@U7QR*IC*t)dNHHBUUu*L*45?pEZfZZhpU=dq~u>#o1Dy}7@>zPq=xvAlDA_>m8r zTYJ~G_BVCS`ORYQH`X?@y|vAU*4hEh?XeVCe(=%)p0u#LvAn)+Yl2xncxj1Pny}Q4 zrLyIl>qy0`Yxml}Q`!DKk+%13mDRBKFIyX5)xUJ^YWeohj+5-b35d@e+=yP8W;oZ_)3sMXPmt7|Ll;OIAheQkG-%9gKtJJYH4tJh6*WV8V^He9X4$Y)=FUY~A`jo5tM z-r61e8m#P0th1M`GY%GntCnC^1U$3D3J_Re%= zZFg;JbUMO-EZxcFw0v^Sy&D-wvbMRlH%8x_J~&2q{muQ2t!q154~#CTzkL6_e6wsu zsOnx_-&(moUVD`zw1Vug^}N1r{VHOC>FxSp z2geun+3DFyS)ZRHzRI&2RVq6CP217$07u z+AL2_@6u*==j`C3?v+lu%MTm32L| z!Ti?YMJ9@<>eN5UQ9z^pwvH3dw>h#{7<<&u#t~cEj zmb5q&H)7h{zR_>7un*fu*Nkjo&93h6qT4P&$I(_y2+IIHPbazHeG;MRMM_NC*v0mS<4`-wp(zS!b{weWx zPnwH6`B}Z1U*xlr$^PziN2Fzsw7tB$`@q(Y(q3AN%8lwr%lcG~V^-B%qeCygQD0*5sq=H;{g3Jw3s`vx~CHoTW_t>6$-1^QUkA3>ahJX6^jt)*s}D2d`%}SfTv5 zVwKJ>&Tgp-oH+*v-9BqQb7O0D-{_h8%4_YDbFtMs6Ry(NR~0o|-dKKkYjd_wZYTfIntdAdH2bvJRnUq1Zd~Eo=H_%~aYW!=_fEI=!KD_z zsH-#bC0(Ch+Z&;~&d%Ds_lP71RRs29wSe)5yd^8PA<7(*g~PrTn>4 zGYkFlax+tXp`07fwbz}}-q`0$h^e>G#=;_WCh+COI$L9D5Fq$jaqGwZ4 zOcshFTic_8Vzcnkb4)wtD2(q;yY8ltZKu0kH0AiC(~f6r+O3!=W!vobNSI;G~8G22x%P zRo4g}*a3gb?!TI$F6^lU33TFh@ z-JP<)%d1

-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 -12. Run the following upgrade script to create calponsys schema and upgrade the syscolumn table: /usr/local/MariaDB/Columnstore/bin/upgrade-infinidb.sh +12. Run the following upgrade script to create calponsys schema and upgrade the syscolumn table: /usr/local/mariadb/columnstore/bin/upgrade-infinidb.sh 13. As an example to get you started, try this: diff --git a/utils/dataconvert/Makefile b/utils/dataconvert/Makefile index 9b35c44be..c592d7f68 100755 --- a/utils/dataconvert/Makefile +++ b/utils/dataconvert/Makefile @@ -13,7 +13,7 @@ CPPFLAGS=-I. -I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -fpic #-fno-strict-aliasing CLIBS=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lcppunit -lthreadpool -lwriteengine \ - -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib + -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS = -L. -ldataconvert $(CLIBS) GLIBS=$(CLIBS) diff --git a/utils/funcexp/Makefile b/utils/funcexp/Makefile index fabc25344..7a342ba06 100755 --- a/utils/funcexp/Makefile +++ b/utils/funcexp/Makefile @@ -15,7 +15,7 @@ CPPFLAGS= -I. -I$(EXPORT_ROOT)/include -I/usr/include/libxml2 CXXFLAGS+=$(DEBUG_FLAGS) -Wall -fpic CLIBS=-L$(CALPONT_LIBRARY_PATH) $(IDB_WRITE_LIBS) $(IDB_COMMON_LIBS) -lcppunit -lthreadpool -lwriteengine \ - -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib + -lcacheutils $(IDB_SNMP_LIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib TLIBS = -L. -ldataconvert $(CLIBS) GLIBS=$(CLIBS) diff --git a/utils/idbdatafile/Makefile b/utils/idbdatafile/Makefile index 9ecb73ab2..fc5c2b8c7 100755 --- a/utils/idbdatafile/Makefile +++ b/utils/idbdatafile/Makefile @@ -77,10 +77,10 @@ docs: doxygen $(EXPORT_ROOT)/etc/Doxyfile tdriver: tdriver.o - $(LINK.cpp) -o $@ $^ $(TLIBS) -Wl,--rpath -Wl,/usr/local/MariaDB/Columnstore/lib + $(LINK.cpp) -o $@ $^ $(TLIBS) -Wl,--rpath -Wl,/usr/local/mariadb/columnstore/lib tdriver1: tdriver1.o - $(LINK.cpp) -o $@ $^ $(TLIBS) -Wl,-rpath -Wl,/usr/local/MariaDB/Columnstore/lib + $(LINK.cpp) -o $@ $^ $(TLIBS) -Wl,-rpath -Wl,/usr/local/mariadb/columnstore/lib test: $(LIBRARY) tdriver LD_LIBRARY_PATH=.:$(EXPORT_ROOT)/lib ./tdriver diff --git a/utils/idbhdfs/hdfs-12/setenv-hdfs-12 b/utils/idbhdfs/hdfs-12/setenv-hdfs-12 index 1237818f4..e3d031c27 100755 --- a/utils/idbhdfs/hdfs-12/setenv-hdfs-12 +++ b/utils/idbhdfs/hdfs-12/setenv-hdfs-12 @@ -1,6 +1,6 @@ #!/bin/bash if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/utils/idbhdfs/hdfs-20/setenv-hdfs-20 b/utils/idbhdfs/hdfs-20/setenv-hdfs-20 index 9d7754e77..e2b318f7a 100755 --- a/utils/idbhdfs/hdfs-20/setenv-hdfs-20 +++ b/utils/idbhdfs/hdfs-20/setenv-hdfs-20 @@ -1,6 +1,6 @@ #!/bin/bash if [ -z "$INFINIDB_INSTALL_DIR" ]; then - INFINIDB_INSTALL_DIR=/usr/local/MariaDB/Columnstore + INFINIDB_INSTALL_DIR=/usr/local/mariadb/columnstore fi export INFINIDB_INSTALL_DIR=$INFINIDB_INSTALL_DIR diff --git a/utils/infinidb_hadoop/infinidb_hadoop_bulkload.sh b/utils/infinidb_hadoop/infinidb_hadoop_bulkload.sh index 7fab449a1..ae8036362 100755 --- a/utils/infinidb_hadoop/infinidb_hadoop_bulkload.sh +++ b/utils/infinidb_hadoop/infinidb_hadoop_bulkload.sh @@ -1,7 +1,7 @@ #!/bin/sh -export LD_LIBRARY_PATH=/usr/local/MariaDB/Columnstore/lib:$LD_LIBRARY_PATH -export CALPONT_CONFIG_FILE=/usr/local/MariaDB/Columnstore/etc/Calpont.xml -export PATH=$PATH:/usr/local/hadoop-0.20.2/bin:/usr/local/MariaDB/Columnstore/bin -export CALPONT_HOME=/usr/local/MariaDB/Columnstore/etc +export LD_LIBRARY_PATH=/usr/local/mariadb/columnstore/lib:$LD_LIBRARY_PATH +export CALPONT_CONFIG_FILE=/usr/local/mariadb/columnstore/etc/Calpont.xml +export PATH=$PATH:/usr/local/hadoop-0.20.2/bin:/usr/local/mariadb/columnstore/bin +export CALPONT_HOME=/usr/local/mariadb/columnstore/etc hadoop dfs -cat $1 | cpimport $2 $3 diff --git a/utils/infinidb_hadoop/src/infinidb/hadoop/example/InfiniDBOutputDriver.java b/utils/infinidb_hadoop/src/infinidb/hadoop/example/InfiniDBOutputDriver.java index 952575009..307624995 100755 --- a/utils/infinidb_hadoop/src/infinidb/hadoop/example/InfiniDBOutputDriver.java +++ b/utils/infinidb_hadoop/src/infinidb/hadoop/example/InfiniDBOutputDriver.java @@ -63,7 +63,7 @@ public class InfiniDBOutputDriver extends Configured implements Tool InfiniDBConfiguration idbconf = new InfiniDBConfiguration(jobconf); idbconf.setInputPath("input"); idbconf.setOutputPath("output"); - idbconf.setInfiniDBHome("/usr/local/MariaDB/Columnstore"); + idbconf.setInfiniDBHome("/usr/local/mariadb/columnstore"); jobconf.setMapperClass(InfiniDoopMapper.class); jobconf.setNumMapTasks(1); diff --git a/utils/loggingcpp/tdriver.cpp b/utils/loggingcpp/tdriver.cpp index 21f660187..1f78d2a9e 100644 --- a/utils/loggingcpp/tdriver.cpp +++ b/utils/loggingcpp/tdriver.cpp @@ -195,7 +195,7 @@ void m4() //------------------------------------------------------------------------------ // This method is intended to test the messages used to profile db performance. // The method also provides an example on how to use these log messages. -// Test can be verified by viewing /var/log/Columnstore/debug.log. +// Test can be verified by viewing /var/log/mariadb/columnstore/debug.log. // // Message types are: // diff --git a/utils/net-snmp/net-snmp-config.h b/utils/net-snmp/net-snmp-config.h index 8d9e724ba..89c97e630 100644 --- a/utils/net-snmp/net-snmp-config.h +++ b/utils/net-snmp/net-snmp-config.h @@ -30,7 +30,7 @@ /* default location to look for mibs to load using the above tokens and/or those in the MIBS envrionment variable*/ -#define DEFAULT_MIBDIRS "$HOME/.snmp/mibs:/usr/local/MariaDB/Columnstore/share/snmp/mibs" +#define DEFAULT_MIBDIRS "$HOME/.snmp/mibs:/usr/local/mariadb/columnstore/share/snmp/mibs" /* default mib files to load, specified by path. */ /* #undef DEFAULT_MIBFILES */ @@ -107,10 +107,10 @@ /* #undef DEFAULT_CLIENT_RECV_BUF */ /* SNMPLIBDIR contains important files */ -#define SNMPLIBPATH "/usr/local/MariaDB/Columnstore/lib/snmp" -#define SNMPSHAREPATH "/usr/local/MariaDB/Columnstore/share/snmp" -#define SNMPCONFPATH "/usr/local/MariaDB/Columnstore/etc/snmp" -#define SNMPDLMODPATH "/usr/local/MariaDB/Columnstore/lib/snmp/dlmod" +#define SNMPLIBPATH "/usr/local/mariadb/columnstore/lib/snmp" +#define SNMPSHAREPATH "/usr/local/mariadb/columnstore/share/snmp" +#define SNMPCONFPATH "/usr/local/mariadb/columnstore/etc/snmp" +#define SNMPDLMODPATH "/usr/local/mariadb/columnstore/lib/snmp/dlmod" /* LOGFILE: If defined it closes stdout/err/in and opens this in out/err's place. (stdin is closed so that sh scripts won't wait for it) */ @@ -1339,7 +1339,7 @@ #define LASTFIELD -1 /* internal define */ /* configure options specified */ -#define CONFIGURE_OPTIONS "\"'--prefix=/usr/local/MariaDB/Columnstore' '--with-mib-modules=disman/event-mib' '--with-cc=gcc'\"" +#define CONFIGURE_OPTIONS "\"'--prefix=/usr/local/mariadb/columnstore' '--with-mib-modules=disman/event-mib' '--with-cc=gcc'\"" /* got socklen_t? */ #define HAVE_SOCKLEN_T 1 diff --git a/utils/prat/copy2here.sh b/utils/prat/copy2here.sh index 9a301ef53..7912ac0af 100644 --- a/utils/prat/copy2here.sh +++ b/utils/prat/copy2here.sh @@ -10,7 +10,7 @@ #* #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools localhost=$(hostname -s) # @@ -38,9 +38,9 @@ while read moduletype hostname hostdir; do echo Collecting files on remote host $servername echo " and copying them to this server" tarfile=$hostdir.tar - /usr/local/MariaDB/Columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/tarfiles.sh $hostdir $tarfile" + /usr/local/mariadb/columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/tarfiles.sh $hostdir $tarfile" cd $CTOOLS/data - /usr/local/MariaDB/Columnstore/bin/remote_scp_get.sh $servername $srvpwd $CTOOLS/data/$tarfile + /usr/local/mariadb/columnstore/bin/remote_scp_get.sh $servername $srvpwd $CTOOLS/data/$tarfile fi done fi diff --git a/utils/prat/getlogs.sh b/utils/prat/getlogs.sh index f33c0bee2..d805d6f97 100644 --- a/utils/prat/getlogs.sh +++ b/utils/prat/getlogs.sh @@ -10,12 +10,12 @@ #* hostdir - directory name for this run #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools date=$1 hostdir=$2 localhost=$(hostname -s) -modulename=`cat /usr/local/MariaDB/Columnstore/local/module` +modulename=`cat /usr/local/mariadb/columnstore/local/module` currentdate=`date +%d` if [ -f /tmp/.prat/.hostlist2.txt ]; then sc=`wc -l < /tmp/.prat/.hostlist2.txt` @@ -45,15 +45,15 @@ readserverlist () # getlogsremote () { # Send the command to the remote module(s) to copy the Calpont logs - /usr/local/MariaDB/Columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getlogs.sh $date $hostdir" + /usr/local/mariadb/columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getlogs.sh $date $hostdir" } # getlogslocal () { mkdir -p $CTOOLS/data/$hostdir/logs if [ $date = $currentdate ]; then - cp -r /var/log/Columnstore/* /usr/local/MariaDB/Columnstore/tools/data/$hostdir/logs + cp -r /var/log/mariadb/columnstore/* /usr/local/mariadb/columnstore/tools/data/$hostdir/logs else - find /var/log/Columnstore -type f -name "*$date" -exec sh -c 'exec cp -f "$@" '$CTOOLS/data/$hostdir/logs'' find-copy {} + + find /var/log/mariadb/columnstore -type f -name "*$date" -exec sh -c 'exec cp -f "$@" '$CTOOLS/data/$hostdir/logs'' find-copy {} + fi } # diff --git a/utils/prat/getmodules.sh b/utils/prat/getmodules.sh index 0a5648610..3f55b5d6d 100644 --- a/utils/prat/getmodules.sh +++ b/utils/prat/getmodules.sh @@ -10,7 +10,7 @@ #* #***************************************************************************/ # -moduletype=`cat /usr/local/MariaDB/Columnstore/local/module` +moduletype=`cat /usr/local/mariadb/columnstore/local/module` hostdir=`date +%Y%m%d%H%M%S` # # Module check @@ -35,7 +35,7 @@ then fi # issue Calpont console command and send the output to a file -/usr/local/MariaDB/Columnstore/bin/mcsadmin getsystemnetworkconfig ACK_YES | +/usr/local/mariadb/columnstore/bin/mcsadmin getsystemnetworkconfig ACK_YES | egrep -w 'Director|User|Performance' | awk -F" " '{print $1"\t" $2"\t" $3"\t" $4"\t" $6}' > /tmp/modulelist.txt # diff --git a/utils/prat/getps.sh b/utils/prat/getps.sh index fd97304c0..e6e971c5a 100644 --- a/utils/prat/getps.sh +++ b/utils/prat/getps.sh @@ -12,14 +12,14 @@ #* #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools date=$1 starttime=$2 endtime=$3 hostdir=$4 localhost=$(hostname -s) -modulename=`cat /usr/local/MariaDB/Columnstore/local/module` +modulename=`cat /usr/local/mariadb/columnstore/local/module` if [ -f /tmp/.prat/.hostlist2.txt ]; then sc=`wc -l < /tmp/.prat/.hostlist2.txt` else @@ -48,7 +48,7 @@ readserverlist () # getpsremote () { # Send the command to the remote module(s) to extract ps data - /usr/local/MariaDB/Columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getps.sh $date $starttime $endtime $hostdir" + /usr/local/mariadb/columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getps.sh $date $starttime $endtime $hostdir" } # getpslocal () diff --git a/utils/prat/getsar.sh b/utils/prat/getsar.sh index 065cadc1b..eb35e48ff 100644 --- a/utils/prat/getsar.sh +++ b/utils/prat/getsar.sh @@ -11,14 +11,14 @@ #* hostdir - directory name for this run #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools date=$1 starttime=$2 endtime=$3 hostdir=$4 localhost=$(hostname -s) -modulename=`cat /usr/local/MariaDB/Columnstore/local/module` +modulename=`cat /usr/local/mariadb/columnstore/local/module` if [ -f /tmp/.prat/.hostlist2.txt ]; then sc=`wc -l < /tmp/.prat/.hostlist2.txt` else @@ -47,7 +47,7 @@ readserverlist () # getsarremote () { # Send the sar extraction statments to the remote module - /usr/local/MariaDB/Columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getsar.sh $date $starttime $endtime $hostdir" + /usr/local/mariadb/columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getsar.sh $date $starttime $endtime $hostdir" } # getsarlocal () diff --git a/utils/prat/getuserinput.sh b/utils/prat/getuserinput.sh index 01d016760..8628da91d 100644 --- a/utils/prat/getuserinput.sh +++ b/utils/prat/getuserinput.sh @@ -8,7 +8,7 @@ #* Parameter: None #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools getuserinput () { echo -n "Enter the two digit day of the month for the desired timeframe > " diff --git a/utils/prat/prat.sh b/utils/prat/prat.sh index 8b067ffbc..4bf3e66e6 100644 --- a/utils/prat/prat.sh +++ b/utils/prat/prat.sh @@ -8,7 +8,7 @@ #* Parameter: None #******************************************************************************/ -CTOOLS=/usr/local/MariaDB/Columnstore/tools +CTOOLS=/usr/local/mariadb/columnstore/tools # Retrieve the names of servers in this Calpont stack $CTOOLS/getmodules.sh diff --git a/utils/prat/tarfiles.sh b/utils/prat/tarfiles.sh index 0728846d3..5c25ff46a 100644 --- a/utils/prat/tarfiles.sh +++ b/utils/prat/tarfiles.sh @@ -15,7 +15,7 @@ hostdir=$1 tarfile=$2 # # tar the files -cd /usr/local/MariaDB/Columnstore/tools/data +cd /usr/local/mariadb/columnstore/tools/data tar -cf $tarfile $hostdir # # End of Script diff --git a/utils/scenarios/common/sh/bulkExecResult.sh b/utils/scenarios/common/sh/bulkExecResult.sh index 93dc4b329..6f1ff7f42 100755 --- a/utils/scenarios/common/sh/bulkExecResult.sh +++ b/utils/scenarios/common/sh/bulkExecResult.sh @@ -12,25 +12,25 @@ function getTestInfo { function copySQLResultFiles { # - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestSummary.* - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestTime.* - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestStats.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestSummary.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestTime.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestStats.* # - cp -f testResultSummary.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestSummary.tbl - cp -f testResultTime.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestTime.tbl - cp -f testResultStats.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestStats.tbl + cp -f testResultSummary.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestSummary.tbl + cp -f testResultTime.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestTime.tbl + cp -f testResultStats.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestStats.tbl } function CalLoadSQLTestResult { # - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestSummary -j 1001 - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestTime -j 1002 - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestStats -j 1003 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestSummary -j 1001 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestTime -j 1002 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestStats -j 1003 # - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1001 - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1002 - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1003 + /usr/local/mariadb/columnstore/bin/cpimport -j 1001 + /usr/local/mariadb/columnstore/bin/cpimport -j 1002 + /usr/local/mariadb/columnstore/bin/cpimport -j 1003 } # function MySQLLoadSQLTestResult { @@ -47,38 +47,38 @@ function MySQLLoadSQLTestResult { #========================================================================================= function CalLoadSQLTestResult { # - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestSummary.* - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestTime.* - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestStats.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestSummary.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestTime.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/TestStats.* # - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestSummary -j 1001 - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestTime -j 1002 - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t TestStats -j 1003 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestSummary -j 1001 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestTime -j 1002 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t TestStats -j 1003 # - cp -f testResultSummary.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestSummary.tbl - cp -f testResultTime.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestTime.tbl - cp -f testResultStats.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/TestStats.tbl + cp -f testResultSummary.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestSummary.tbl + cp -f testResultTime.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestTime.tbl + cp -f testResultStats.txt /usr/local/mariadb/columnstore/data/bulk/data/import/TestStats.tbl # - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1001 - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1002 - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1003 + /usr/local/mariadb/columnstore/bin/cpimport -j 1001 + /usr/local/mariadb/columnstore/bin/cpimport -j 1002 + /usr/local/mariadb/columnstore/bin/cpimport -j 1003 } #========================================================================================= # cpimport bulk test results #========================================================================================= function CalLoadBulkTestResult { # - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/BulkSummary.* - rm -f /usr/local/MariaDB/Columnstore/data/bulk/data/import/BulkTime.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/BulkSummary.* + rm -f /usr/local/mariadb/columnstore/data/bulk/data/import/BulkTime.* # - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t BulkSummary -j 1001 - /usr/local/MariaDB/Columnstore/bin/colxml perfstats -t BulkStats -j 1002 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t BulkSummary -j 1001 + /usr/local/mariadb/columnstore/bin/colxml perfstats -t BulkStats -j 1002 # - cp -f testResultSummary.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/BulkSummary.tbl - cp -f testResultTime.txt /usr/local/MariaDB/Columnstore/data/bulk/data/import/BulkStats.tbl + cp -f testResultSummary.txt /usr/local/mariadb/columnstore/data/bulk/data/import/BulkSummary.tbl + cp -f testResultTime.txt /usr/local/mariadb/columnstore/data/bulk/data/import/BulkStats.tbl # - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1001 - /usr/local/MariaDB/Columnstore/bin/cpimport -j 1002 + /usr/local/mariadb/columnstore/bin/cpimport -j 1001 + /usr/local/mariadb/columnstore/bin/cpimport -j 1002 } #========================================================================================= diff --git a/utils/scenarios/common/sh/execSQLScript_m.sh b/utils/scenarios/common/sh/execSQLScript_m.sh index 54e669350..da731b527 100755 --- a/utils/scenarios/common/sh/execSQLScript_m.sh +++ b/utils/scenarios/common/sh/execSQLScript_m.sh @@ -22,5 +22,5 @@ # # Execute script on test database # - /usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -f -u root $1 <$6 > $logFileName.test.log 2>&1 + /usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -f -u root $1 <$6 > $logFileName.test.log 2>&1 diff $logFileName.ref.log $logFileName.test.log > $logFileName.diff.log diff --git a/utils/scenarios/common/sh/restore100gb.sh b/utils/scenarios/common/sh/restore100gb.sh index 871a0101e..dd844ebfd 100755 --- a/utils/scenarios/common/sh/restore100gb.sh +++ b/utils/scenarios/common/sh/restore100gb.sh @@ -3,17 +3,17 @@ #========================================================================================= mount /dev/sdj1 /mnt/qadbs # -rm -rf /usr/local/MariaDB/Columnstore/data1/000.dir -rm -rf /usr/local/MariaDB/Columnstore/data2/000.dir -rm -rf /usr/local/MariaDB/Columnstore/data3/000.dir -rm -rf /usr/local/MariaDB/Columnstore/data4/000.dir -rm -f /usr/local/MariaDB/Columnstore/data1/systemFiles/dbrm/* +rm -rf /usr/local/mariadb/columnstore/data1/000.dir +rm -rf /usr/local/mariadb/columnstore/data2/000.dir +rm -rf /usr/local/mariadb/columnstore/data3/000.dir +rm -rf /usr/local/mariadb/columnstore/data4/000.dir +rm -f /usr/local/mariadb/columnstore/data1/systemFiles/dbrm/* # -cp /mnt/qadbs/tpch/1m-1-10-100/dbrm/* /usr/local/MariaDB/Columnstore/data1/systemFiles/dbrm +cp /mnt/qadbs/tpch/1m-1-10-100/dbrm/* /usr/local/mariadb/columnstore/data1/systemFiles/dbrm # -cp -r /mnt/qadbs/tpch/1m-1-10-100/data1/000.dir /usr/local/MariaDB/Columnstore/data1 & -cp -r /mnt/qadbs/tpch/1m-1-10-100/data2/000.dir /usr/local/MariaDB/Columnstore/data2 & -cp -r /mnt/qadbs/tpch/1m-1-10-100/data3/000.dir /usr/local/MariaDB/Columnstore/data3 & -cp -r /mnt/qadbs/tpch/1m-1-10-100/data4/000.dir /usr/local/MariaDB/Columnstore/data4 & +cp -r /mnt/qadbs/tpch/1m-1-10-100/data1/000.dir /usr/local/mariadb/columnstore/data1 & +cp -r /mnt/qadbs/tpch/1m-1-10-100/data2/000.dir /usr/local/mariadb/columnstore/data2 & +cp -r /mnt/qadbs/tpch/1m-1-10-100/data3/000.dir /usr/local/mariadb/columnstore/data3 & +cp -r /mnt/qadbs/tpch/1m-1-10-100/data4/000.dir /usr/local/mariadb/columnstore/data4 & # diff --git a/utils/scenarios/common/sh/testExecEngine.sh b/utils/scenarios/common/sh/testExecEngine.sh index c682bae79..e21bd1bec 100755 --- a/utils/scenarios/common/sh/testExecEngine.sh +++ b/utils/scenarios/common/sh/testExecEngine.sh @@ -59,11 +59,11 @@ function logEnvInfo { # $1 = test run # $2 = a or b, b=before test run, a=after test run # - cp /usr/local/MariaDB/Columnstore/etc/Calpont.xml $1/. - /usr/local/MariaDB/Columnstore/bin/mcsadmin getcalpontsoftwareinfo > $1/getcalpontsoftwareinfo.log - /usr/local/MariaDB/Columnstore/bin/mcsadmin getsystemstatus > $1/getSystemStatus.$2.log - /usr/local/MariaDB/Columnstore/bin/mcsadmin getsystemnetwork > $1/getSystemNetwork.$2.log - /usr/local/MariaDB/Columnstore/bin/mcsadmin getprocessstatus > $1/getProcessStatus.$2.log + cp /usr/local/mariadb/columnstore/etc/Calpont.xml $1/. + /usr/local/mariadb/columnstore/bin/mcsadmin getcalpontsoftwareinfo > $1/getcalpontsoftwareinfo.log + /usr/local/mariadb/columnstore/bin/mcsadmin getsystemstatus > $1/getSystemStatus.$2.log + /usr/local/mariadb/columnstore/bin/mcsadmin getsystemnetwork > $1/getSystemNetwork.$2.log + /usr/local/mariadb/columnstore/bin/mcsadmin getprocessstatus > $1/getProcessStatus.$2.log } #========================================================================================= # log environment info @@ -186,7 +186,7 @@ function execOneTestRun { fi if [ $dbmsType = "M" ]; then pathSfn=$1\/$sess - /usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -u root $testDB <$sfn 2> $pathSfn\/$sfn.err.log |grep "^Calpont" > $pathSfn\/$sfn.log & + /usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -u root $testDB <$sfn 2> $pathSfn\/$sfn.err.log |grep "^Calpont" > $pathSfn\/$sfn.log & else su - oracle -c "sqlplus /nolog @/home/qa/srv/common/script/callogin.sql $testDB $testDB xe srvqaperf2 <$sfn" |grep "^Calpont" > $1\/$sess\/$sfn.log & fi diff --git a/utils/scenarios/common/sql/load_TestStats.sql b/utils/scenarios/common/sql/load_TestStats.sql index e1478de78..018928ea5 100644 --- a/utils/scenarios/common/sql/load_TestStats.sql +++ b/utils/scenarios/common/sql/load_TestStats.sql @@ -4,7 +4,7 @@ * Author: Joseph Williams * Purpose: Script to load the performance test result from a CSV file. ******************************************************************************/ -LOAD DATA INFILE '/usr/local/MariaDB/Columnstore/data/bulk/data/import/TestStats.tbl' +LOAD DATA INFILE '/usr/local/mariadb/columnstore/data/bulk/data/import/TestStats.tbl' INTO TABLE TestStats FIELDS TERMINATED BY '|' diff --git a/utils/scenarios/common/sql/load_TestSummary.sql b/utils/scenarios/common/sql/load_TestSummary.sql index 22745ade5..2a28a3a58 100644 --- a/utils/scenarios/common/sql/load_TestSummary.sql +++ b/utils/scenarios/common/sql/load_TestSummary.sql @@ -4,7 +4,7 @@ * Author: Joseph Williams * Purpose: Script to load the performance test result from a CSV file. ******************************************************************************/ -LOAD DATA INFILE '/usr/local/MariaDB/Columnstore/data/bulk/data/import/TestSummary.tbl' +LOAD DATA INFILE '/usr/local/mariadb/columnstore/data/bulk/data/import/TestSummary.tbl' INTO TABLE TestSummary FIELDS TERMINATED BY '|' diff --git a/utils/scenarios/common/sql/load_TestTime.sql b/utils/scenarios/common/sql/load_TestTime.sql index e2689fdb4..6ea77ff7d 100644 --- a/utils/scenarios/common/sql/load_TestTime.sql +++ b/utils/scenarios/common/sql/load_TestTime.sql @@ -4,7 +4,7 @@ * Author: Joseph Williams * Purpose: Script to load the performance test result from a CSV file. ******************************************************************************/ -LOAD DATA INFILE '/usr/local/MariaDB/Columnstore/data/bulk/data/import/TestTime.tbl' +LOAD DATA INFILE '/usr/local/mariadb/columnstore/data/bulk/data/import/TestTime.tbl' INTO TABLE TestTime FIELDS TERMINATED BY '|' diff --git a/utils/scenarios/dwweek/test/dwSubmitCpimport.sh b/utils/scenarios/dwweek/test/dwSubmitCpimport.sh index 6fe959bb4..d697556e0 100644 --- a/utils/scenarios/dwweek/test/dwSubmitCpimport.sh +++ b/utils/scenarios/dwweek/test/dwSubmitCpimport.sh @@ -22,13 +22,13 @@ echo \#!/bin/bash > $bulkScriptName echo \# >> $bulkScriptName # - echo rm -f /usr/local/MariaDB/Columnstore/data/bulk/log/Jobxml_9999.log >> $bulkScriptName - echo rm -f /usr/local/MariaDB/Columnstore/data/bulk/log/Job_9999.log >> $bulkScriptName - echo /usr/local/MariaDB/Columnstore/bin/colxml $testDB -t lineitem -l $sourceFileName -j 9999 >> $bulkScriptName - echo /usr/local/MariaDB/Columnstore/bin/cpimport -j 9999 >> $bulkScriptName - echo cp /usr/local/MariaDB/Columnstore/data/bulk/job/Job_9999.xml . >> $bulkScriptName - echo cp /usr/local/MariaDB/Columnstore/data/bulk/log/Jobxml_9999.log . >> $bulkScriptName - echo cp /usr/local/MariaDB/Columnstore/data/bulk/log/Job_9999.log . >> $bulkScriptName + echo rm -f /usr/local/mariadb/columnstore/data/bulk/log/Jobxml_9999.log >> $bulkScriptName + echo rm -f /usr/local/mariadb/columnstore/data/bulk/log/Job_9999.log >> $bulkScriptName + echo /usr/local/mariadb/columnstore/bin/colxml $testDB -t lineitem -l $sourceFileName -j 9999 >> $bulkScriptName + echo /usr/local/mariadb/columnstore/bin/cpimport -j 9999 >> $bulkScriptName + echo cp /usr/local/mariadb/columnstore/data/bulk/job/Job_9999.xml . >> $bulkScriptName + echo cp /usr/local/mariadb/columnstore/data/bulk/log/Jobxml_9999.log . >> $bulkScriptName + echo cp /usr/local/mariadb/columnstore/data/bulk/log/Job_9999.log . >> $bulkScriptName chmod 777 $bulkScriptName # #append current directory path to to script file name diff --git a/utils/scenarios/dwweek/test/dwbackup.sh b/utils/scenarios/dwweek/test/dwbackup.sh index 9180d5ce3..332392ab5 100644 --- a/utils/scenarios/dwweek/test/dwbackup.sh +++ b/utils/scenarios/dwweek/test/dwbackup.sh @@ -3,7 +3,7 @@ numRoots=4 # for ((idx=1; $idx<=$numRoots; idx++)); do - rm -rf /usr/local/MariaDB/Columnstore/data$idx/dwbackup/2 & + rm -rf /usr/local/mariadb/columnstore/data$idx/dwbackup/2 & pids[$idx]=$! done # @@ -26,9 +26,9 @@ done # for ((idx=1; $idx<=$numRoots; idx++)); do - mv /usr/local/MariaDB/Columnstore/data$idx/dwbackup/1 /usr/local/MariaDB/Columnstore/data$idx/dwbackup/2 - mkdir -p /usr/local/MariaDB/Columnstore/data$idx/dwbackup/1 - cp -r /usr/local/MariaDB/Columnstore/data$idx/000.dir /usr/local/MariaDB/Columnstore/data$idx/dwbackup/1 & + mv /usr/local/mariadb/columnstore/data$idx/dwbackup/1 /usr/local/mariadb/columnstore/data$idx/dwbackup/2 + mkdir -p /usr/local/mariadb/columnstore/data$idx/dwbackup/1 + cp -r /usr/local/mariadb/columnstore/data$idx/000.dir /usr/local/mariadb/columnstore/data$idx/dwbackup/1 & pids[$idx]=$! done # @@ -49,4 +49,4 @@ done sleep 5 done - cp -r /mnt/OAM/dbrm /usr/local/MariaDB/Columnstore/data1/dwbackup/1/. + cp -r /mnt/OAM/dbrm /usr/local/mariadb/columnstore/data1/dwbackup/1/. diff --git a/utils/scenarios/perf/sh/pfExeSQLscript.sh b/utils/scenarios/perf/sh/pfExeSQLscript.sh index ca40e7ceb..8b80bc1cf 100755 --- a/utils/scenarios/perf/sh/pfExeSQLscript.sh +++ b/utils/scenarios/perf/sh/pfExeSQLscript.sh @@ -19,5 +19,5 @@ # # Execute script on test database # - /usr/local/MariaDB/Columnstore/mysql/bin/mysql --defaults-file=/usr/local/MariaDB/Columnstore/mysql/my.cnf -u root $1 <$2 > $logFileName.test.log + /usr/local/mariadb/columnstore/mysql/bin/mysql --defaults-file=/usr/local/mariadb/columnstore/mysql/my.cnf -u root $1 <$2 > $logFileName.test.log exit 0 diff --git a/utils/scenarios/perf/source/pf/common/exeStreamTest.sh b/utils/scenarios/perf/source/pf/common/exeStreamTest.sh index e2fcdca67..4471a5da2 100755 --- a/utils/scenarios/perf/source/pf/common/exeStreamTest.sh +++ b/utils/scenarios/perf/source/pf/common/exeStreamTest.sh @@ -50,15 +50,15 @@ while [ $k -le $repeatNum ] do if [ $restart == Y ] || [ $restart == y ] then - /usr/local/MariaDB/Columnstore/bin/mcsadmin restartsystem y + /usr/local/mariadb/columnstore/bin/mcsadmin restartsystem y sleep 90 fi mkdir $k cd $k - cp /usr/local/MariaDB/Columnstore/etc/Calpont.xml . - /usr/local/MariaDB/Columnstore/bin/mcsadmin getCalpontSoftware >CalpontSoftware.txt - ls -al /mnt/pm*/usr/local/MariaDB/Columnstore/data* > dbRoots.txt - /usr/local/MariaDB/Columnstore/bin/mcsadmin getProcessStatus >stackConfigBefore.txt + cp /usr/local/mariadb/columnstore/etc/Calpont.xml . + /usr/local/mariadb/columnstore/bin/mcsadmin getCalpontSoftware >CalpontSoftware.txt + ls -al /mnt/pm*/usr/local/mariadb/columnstore/data* > dbRoots.txt + /usr/local/mariadb/columnstore/bin/mcsadmin getProcessStatus >stackConfigBefore.txt $exeCommand > $logFileName 2>&1 # if [ $streamNum == 1_7 ] @@ -71,7 +71,7 @@ do done fi # - /usr/local/MariaDB/Columnstore/bin/mcsadmin getProcessStatus >stackConfigAfter.txt + /usr/local/mariadb/columnstore/bin/mcsadmin getProcessStatus >stackConfigAfter.txt /home/pf/auto/common/extractstartstoptimes.sh cd .. ((k++)) diff --git a/utils/scenarios/perf/source/pf/common/sendPlanExec.sh b/utils/scenarios/perf/source/pf/common/sendPlanExec.sh index 75df1028d..329181b5f 100755 --- a/utils/scenarios/perf/source/pf/common/sendPlanExec.sh +++ b/utils/scenarios/perf/source/pf/common/sendPlanExec.sh @@ -14,7 +14,7 @@ echo --------------------------------------------------------------------------- echo sendPlan start: $3 date echo -/usr/local/MariaDB/Columnstore/bin/sendPlan -v -s$1 -t$2 $3 +/usr/local/mariadb/columnstore/bin/sendPlan -v -s$1 -t$2 $3 echo date echo sendPlan end: $3 diff --git a/utils/scenarios/perf/source/pf/common/setDBRoots.sh b/utils/scenarios/perf/source/pf/common/setDBRoots.sh index b901aa9f0..b7ea3de61 100755 --- a/utils/scenarios/perf/source/pf/common/setDBRoots.sh +++ b/utils/scenarios/perf/source/pf/common/setDBRoots.sh @@ -22,48 +22,48 @@ echo *****-----*****-----*****-----*****-----***** # unmount dbroots from all PMs #----------------------------------------------------------------------------- echo unmounting PM1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "umount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "umount -a" echo unmounting PM2 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "umount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "umount -a" echo unmounting PM3 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "umount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "umount -a" echo unmounting PM4 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "umount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "umount -a" #----------------------------------------------------------------------------- # save current fstab to fstab.auto then move 'set number' fstab to 'real' fstab #----------------------------------------------------------------------------- echo *-* echo doing the hokey pokey with fstabs on PM1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "rm -f /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "mv /etc/fstab /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "rm -f /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "mv /etc/fstab /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" echo *-* echo doing the funky chicken with fstabs on PM2 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "rm -f /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "mv /etc/fstab /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "rm -f /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "mv /etc/fstab /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" echo *-* echo doing the swim with fstabs on PM3 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "rm -f /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "mv /etc/fstab /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "rm -f /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "mv /etc/fstab /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" echo *-* echo doing the stroll with fstabs on PM4 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "rm -f /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "mv /etc/fstab /etc/fstab.auto" -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "rm -f /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "mv /etc/fstab /etc/fstab.auto" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "cp /etc/fstab.[$setNum] /etc/fstab" #----------------------------------------------------------------------------- # re-mount dbroots on all PMs #----------------------------------------------------------------------------- echo *-* echo mounting PM1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "mount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "mount -a" echo mounting PM2 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "mount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "mount -a" echo mounting PM3 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "mount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "mount -a" echo mounting PM4 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "mount -a" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "mount -a" #----------------------------------------------------------------------------- echo #----------------------------------------------------------------------------- @@ -71,13 +71,13 @@ echo set disk scheduler to deadline for newly mounted LUNs #----------------------------------------------------------------------------- echo echo setting disk scheduler to deadline on PM1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf3 qalpont! "/etc/rc.d/rc.local" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf3 qalpont! "/etc/rc.d/rc.local" echo setting disk scheduler to deadline on PM2 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf4 qalpont! "/etc/rc.d/rc.local" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf4 qalpont! "/etc/rc.d/rc.local" echo setting disk scheduler to deadline on PM3 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf5 qalpont! "/etc/rc.d/rc.local" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf5 qalpont! "/etc/rc.d/rc.local" echo setting disk scheduler to deadline on PM4 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh srvqaperf8 qalpont! "/etc/rc.d/rc.local" +/usr/local/mariadb/columnstore/bin/remote_command.sh srvqaperf8 qalpont! "/etc/rc.d/rc.local" # echo -----*****-----*****-----*****-----*****-----** echo End - set dbroots to RAID Configuration $setNum diff --git a/utils/scenarios/perf/source/pf/common/setPMConfig.sh b/utils/scenarios/perf/source/pf/common/setPMConfig.sh index 20ded54ca..91b0d8675 100755 --- a/utils/scenarios/perf/source/pf/common/setPMConfig.sh +++ b/utils/scenarios/perf/source/pf/common/setPMConfig.sh @@ -13,7 +13,7 @@ echo Start - Set PM configuration # # Stopping the Calpont software -/usr/local/MariaDB/Columnstore/bin/mcsadmin stopsystem y ACK_YES +/usr/local/mariadb/columnstore/bin/mcsadmin stopsystem y ACK_YES # # set maximum number of PMs possible for the stack maxPMs=4 @@ -26,7 +26,7 @@ numPMs=$1 #----------------------------------------------------------------------------- k=1 while [ $k -le $maxPMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin enableModule pm$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin enableModule pm$k ACK_YES ((k++)) done #----------------------------------------------------------------------------- @@ -34,12 +34,12 @@ done #----------------------------------------------------------------------------- k=$maxPMs while [ $k -gt $numPMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin disableModule pm$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin disableModule pm$k ACK_YES ((k--)) done #----------------------------------------------------------------------------- # Starting the Calpont software -/usr/local/MariaDB/Columnstore/bin/mcsadmin startsystem y ACK_YES +/usr/local/mariadb/columnstore/bin/mcsadmin startsystem y ACK_YES sleep 60 echo *-*-*-*-*-*-*-*-*-*-*-*-*-*-* echo End - Set PM configuration diff --git a/utils/scenarios/perf/source/pf/common/setStackConfig.sh b/utils/scenarios/perf/source/pf/common/setStackConfig.sh index e5dcae0d9..0ce2e14ae 100755 --- a/utils/scenarios/perf/source/pf/common/setStackConfig.sh +++ b/utils/scenarios/perf/source/pf/common/setStackConfig.sh @@ -14,7 +14,7 @@ echo Start - Set stack configuration # # Stopping the Calpont software -/usr/local/MariaDB/Columnstore/bin/mcsadmin stopsystem y ACK_YES +/usr/local/mariadb/columnstore/bin/mcsadmin stopsystem y ACK_YES # # set maximum number of UMs and PMs possible the stack maxUMs=2 @@ -29,7 +29,7 @@ numPMs=$2 #----------------------------------------------------------------------------- k=1 while [ $k -le $maxUMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin enableModule um$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin enableModule um$k ACK_YES ((k++)) done #----------------------------------------------------------------------------- @@ -37,7 +37,7 @@ done #----------------------------------------------------------------------------- k=$maxUMs while [ $k -gt $numUMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin disableModule um$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin disableModule um$k ACK_YES ((k--)) done #----------------------------------------------------------------------------- @@ -45,7 +45,7 @@ done #----------------------------------------------------------------------------- k=1 while [ $k -le $maxPMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin enableModule pm$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin enableModule pm$k ACK_YES ((k++)) done #----------------------------------------------------------------------------- @@ -53,7 +53,7 @@ done #----------------------------------------------------------------------------- k=$maxPMs while [ $k -gt $numPMs ]; do - /usr/local/MariaDB/Columnstore/bin/mcsadmin disableModule pm$k ACK_YES + /usr/local/mariadb/columnstore/bin/mcsadmin disableModule pm$k ACK_YES ((k--)) done #----------------------------------------------------------------------------- diff --git a/utils/scenarios/perf/source/pf/common/setTestEnv.sh b/utils/scenarios/perf/source/pf/common/setTestEnv.sh index 70bb0c0d7..e4fbc334a 100755 --- a/utils/scenarios/perf/source/pf/common/setTestEnv.sh +++ b/utils/scenarios/perf/source/pf/common/setTestEnv.sh @@ -21,7 +21,7 @@ setNum=$3 # /home/pf/auto/common/setStackConfig.sh $numUMs $numPMs /home/pf/auto/common/setDBRoots.sh $setNum -/usr/local/MariaDB/Columnstore/bin/mcsadmin startsystem +/usr/local/mariadb/columnstore/bin/mcsadmin startsystem sleep 90 # # End of script diff --git a/utils/scenarios/perf/source/pf/common/step1.sh b/utils/scenarios/perf/source/pf/common/step1.sh index 70bb0c0d7..e4fbc334a 100755 --- a/utils/scenarios/perf/source/pf/common/step1.sh +++ b/utils/scenarios/perf/source/pf/common/step1.sh @@ -21,7 +21,7 @@ setNum=$3 # /home/pf/auto/common/setStackConfig.sh $numUMs $numPMs /home/pf/auto/common/setDBRoots.sh $setNum -/usr/local/MariaDB/Columnstore/bin/mcsadmin startsystem +/usr/local/mariadb/columnstore/bin/mcsadmin startsystem sleep 90 # # End of script diff --git a/utils/scenarios/perf/source/pf/common/step2.sh b/utils/scenarios/perf/source/pf/common/step2.sh index c4f9689cf..a32a995f3 100755 --- a/utils/scenarios/perf/source/pf/common/step2.sh +++ b/utils/scenarios/perf/source/pf/common/step2.sh @@ -46,15 +46,15 @@ while [ $k -le $repeatNum ] do if [ $restart == Y ] || [ $restart == y ] then - /usr/local/MariaDB/Columnstore/bin/mcsadmin restartsystem y + /usr/local/mariadb/columnstore/bin/mcsadmin restartsystem y sleep 90 fi mkdir $k cd $k - cp /usr/local/MariaDB/Columnstore/etc/Calpont.xml . - /usr/local/MariaDB/Columnstore/bin/mcsadmin getCalpontSoftware >CalpontSoftware.txt - ls -al /usr/local/MariaDB/Columnstore/data* > dbRoots.txt - /usr/local/MariaDB/Columnstore/bin/mcsadmin getProcessStatus >stackConfigBefore.txt + cp /usr/local/mariadb/columnstore/etc/Calpont.xml . + /usr/local/mariadb/columnstore/bin/mcsadmin getCalpontSoftware >CalpontSoftware.txt + ls -al /usr/local/mariadb/columnstore/data* > dbRoots.txt + /usr/local/mariadb/columnstore/bin/mcsadmin getProcessStatus >stackConfigBefore.txt $exeCommand > $logFileName 2>&1 # if [ $streamNum == 1_7 ] @@ -67,7 +67,7 @@ do done fi # - /usr/local/MariaDB/Columnstore/bin/mcsadmin getProcessStatus >stackConfigAfter.txt + /usr/local/mariadb/columnstore/bin/mcsadmin getProcessStatus >stackConfigAfter.txt cd .. ((k++)) done diff --git a/utils/scenarios/perf/source/pf/fm/getlogs.sh b/utils/scenarios/perf/source/pf/fm/getlogs.sh index a34a8cac0..a93adf9e1 100755 --- a/utils/scenarios/perf/source/pf/fm/getlogs.sh +++ b/utils/scenarios/perf/source/pf/fm/getlogs.sh @@ -28,6 +28,6 @@ then fi # mkdir /tmp/$host/logs -cp -r /var/log/Columnstore/* /tmp/$host/logs +cp -r /var/log/mariadb/columnstore/* /tmp/$host/logs # # End of script diff --git a/utils/scenarios/perf/source/pf/fm/getsar.sh b/utils/scenarios/perf/source/pf/fm/getsar.sh index a12977c26..f1f617422 100755 --- a/utils/scenarios/perf/source/pf/fm/getsar.sh +++ b/utils/scenarios/perf/source/pf/fm/getsar.sh @@ -57,9 +57,9 @@ smbclient //calweb/perf -Wcalpont -Uoamuser%Calpont1 -c "cd ${host1};prompt OFF; #------------------------------------------------------------------------------ # Execute the script on the other servers in the stack # -/usr/local/MariaDB/Columnstore/bin/remote_command.sh $host2 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh $host3 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh $host4 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 -/usr/local/MariaDB/Columnstore/bin/remote_command.sh $host5 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 +/usr/local/mariadb/columnstore/bin/remote_command.sh $host2 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 +/usr/local/mariadb/columnstore/bin/remote_command.sh $host3 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 +/usr/local/mariadb/columnstore/bin/remote_command.sh $host4 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 +/usr/local/mariadb/columnstore/bin/remote_command.sh $host5 qalpont! "/home/pf/auto/fm/sar.sh $1 $2 $3" 1 # # End of Script diff --git a/utils/scenarios/perf/source/pf/fm/getsql.orig b/utils/scenarios/perf/source/pf/fm/getsql.orig index e0f8e46f4..5284101e0 100755 --- a/utils/scenarios/perf/source/pf/fm/getsql.orig +++ b/utils/scenarios/perf/source/pf/fm/getsql.orig @@ -41,7 +41,7 @@ cmd="/$startdate/,/$enddate/ {print \$0} " echo $cmd > /tmp/$host/sql/cmd.$$ # # execute the command -awk -f /tmp/$host/sql/cmd.$$ /usr/local/MariaDB/Columnstore/mysql/db/$host.log > /tmp/$host/sql/temp.log +awk -f /tmp/$host/sql/cmd.$$ /usr/local/mariadb/columnstore/mysql/db/$host.log > /tmp/$host/sql/temp.log # exit # diff --git a/utils/scenarios/perf/source/pf/fm/getsql.sh b/utils/scenarios/perf/source/pf/fm/getsql.sh index bc0e38e87..033fd82cb 100755 --- a/utils/scenarios/perf/source/pf/fm/getsql.sh +++ b/utils/scenarios/perf/source/pf/fm/getsql.sh @@ -52,7 +52,7 @@ while [ $k -ge $st ] && [ $k -le $et ] && [ $foundstart == "no" ]; do k=`expr $k + 39` sm=`expr $sm - 61` elif [ $k -ge $st ] && [ $k -le $et ]; then - grep -q "$newdate $sh:$sm" /usr/local/MariaDB/Columnstore/mysql/db/$host.log + grep -q "$newdate $sh:$sm" /usr/local/mariadb/columnstore/mysql/db/$host.log if [ "$?" -eq "0" ] && [ $foundstart == "no" ]; then start="$newdate $sh:$sm" foundstart="yes" @@ -69,7 +69,7 @@ while [ $k -ge $st ] && [ $k -le $et ] && [ $foundend == "no" ]; do k=`expr $k + 39` em=`expr $em - 61` elif [ $k -ge $st ] && [ $k -le $et ]; then - grep -q "$newdate $eh:$em" /usr/local/MariaDB/Columnstore/mysql/db/$host.log + grep -q "$newdate $eh:$em" /usr/local/mariadb/columnstore/mysql/db/$host.log if [ "$?" -eq "0" ] && [ $foundend == "no" ]; then end="$newdate $eh:$em" foundend="yes" @@ -87,7 +87,7 @@ cmd="/$start/,/$end/ {print \$0} " echo $cmd >> /tmp/$host/sql/cmd.$$ # # execute the command -awk -f /tmp/$host/sql/cmd.$$ /usr/local/MariaDB/Columnstore/mysql/db/$host.log > /tmp/$host/sql/temp.log +awk -f /tmp/$host/sql/cmd.$$ /usr/local/mariadb/columnstore/mysql/db/$host.log > /tmp/$host/sql/temp.log # exit # diff --git a/utils/scenarios/perf/source/pf/scripts/1server_all.sh b/utils/scenarios/perf/source/pf/scripts/1server_all.sh index 6dd57520f..133eb0cd5 100755 --- a/utils/scenarios/perf/source/pf/scripts/1server_all.sh +++ b/utils/scenarios/perf/source/pf/scripts/1server_all.sh @@ -57,7 +57,7 @@ echo ------------------------------------------------------------------ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/1um_1a_100_s17.sh b/utils/scenarios/perf/source/pf/scripts/1um_1a_100_s17.sh index edf7fdcd0..f85109440 100755 --- a/utils/scenarios/perf/source/pf/scripts/1um_1a_100_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/1um_1a_100_s17.sh @@ -8,7 +8,7 @@ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo # -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/1um_2a_100_s17.sh b/utils/scenarios/perf/source/pf/scripts/1um_2a_100_s17.sh index c327a015e..ba05c1793 100755 --- a/utils/scenarios/perf/source/pf/scripts/1um_2a_100_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/1um_2a_100_s17.sh @@ -8,7 +8,7 @@ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo # -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/1um_allarrays_allPMs_s0_s17.sh b/utils/scenarios/perf/source/pf/scripts/1um_allarrays_allPMs_s0_s17.sh index 71d3deb94..3dc4ccff2 100755 --- a/utils/scenarios/perf/source/pf/scripts/1um_allarrays_allPMs_s0_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/1um_allarrays_allPMs_s0_s17.sh @@ -53,7 +53,7 @@ echo ------------------------------------------------------------------ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/2a_100g_1t_s0_s17.sh b/utils/scenarios/perf/source/pf/scripts/2a_100g_1t_s0_s17.sh index 6c27111b5..f988de10f 100755 --- a/utils/scenarios/perf/source/pf/scripts/2a_100g_1t_s0_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/2a_100g_1t_s0_s17.sh @@ -82,7 +82,7 @@ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo # -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/2um_allconfigs_s17.sh b/utils/scenarios/perf/source/pf/scripts/2um_allconfigs_s17.sh index 186abf34b..ebda7d39e 100755 --- a/utils/scenarios/perf/source/pf/scripts/2um_allconfigs_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/2um_allconfigs_s17.sh @@ -12,7 +12,7 @@ echo ------------------------------------------------------------------ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/source/pf/scripts/allconfigs_s17.sh b/utils/scenarios/perf/source/pf/scripts/allconfigs_s17.sh index b85d99eaf..ccd16cf66 100755 --- a/utils/scenarios/perf/source/pf/scripts/allconfigs_s17.sh +++ b/utils/scenarios/perf/source/pf/scripts/allconfigs_s17.sh @@ -12,7 +12,7 @@ echo ------------------------------------------------------------------ echo executing setLowMem100 script to prep for following stream1_7 tests echo ------------------------------------------------------------------ echo -/usr/local/MariaDB/Columnstore/bin/setLowMem100.sh +/usr/local/mariadb/columnstore/bin/setLowMem100.sh # echo echo ------------------------------------------------------------------ diff --git a/utils/scenarios/perf/test/pfSubmitBulkTest.sh b/utils/scenarios/perf/test/pfSubmitBulkTest.sh index e2436b22e..1a7d73eaa 100755 --- a/utils/scenarios/perf/test/pfSubmitBulkTest.sh +++ b/utils/scenarios/perf/test/pfSubmitBulkTest.sh @@ -19,19 +19,19 @@ # echo \#\!/bin/bash > $cpimportScriptName echo \# >> $cpimportScriptName - echo cd /usr/local/MariaDB/Columnstore/data/bulk/log >> $cpimportScriptName + echo cd /usr/local/mariadb/columnstore/data/bulk/log >> $cpimportScriptName echo rm -f Jobxml_9999.log >> $cpimportScriptName echo rm -f Job_9999.log >> $cpimportScriptName echo rm -f fileStats.txt >> $cpimportScriptName echo rm -f finished.txt >> $cpimportScriptName - echo "ls -alh /usr/local/MariaDB/Columnstore/data/bulk/data/import/*.tbl > fileStats.txt" >> $cpimportScriptName -# echo "wc -l /usr/local/MariaDB/Columnstore/data/bulk/data/import/*.tbl >> fileStats.txt" >> $cpimportScriptName + echo "ls -alh /usr/local/mariadb/columnstore/data/bulk/data/import/*.tbl > fileStats.txt" >> $cpimportScriptName +# echo "wc -l /usr/local/mariadb/columnstore/data/bulk/data/import/*.tbl >> fileStats.txt" >> $cpimportScriptName # - echo /usr/local/MariaDB/Columnstore/bin/colxml $testDB -r 2 -j 9999 >> $cpimportScriptName + echo /usr/local/mariadb/columnstore/bin/colxml $testDB -r 2 -j 9999 >> $cpimportScriptName echo sleep 5 >> $cpimportScriptName echo sync >> $cpimportScriptName # - echo \# /usr/local/MariaDB/Columnstore/bin/cpimport -j 9999 -i >> $cpimportScriptName + echo \# /usr/local/mariadb/columnstore/bin/cpimport -j 9999 -i >> $cpimportScriptName echo sleep 5 >> $cpimportScriptName echo touch finished.txt >> $cpimportScriptName echo sync >> $cpimportScriptName @@ -47,15 +47,15 @@ echo "/root/genii/utils/scenarios/common/sh/remote_command.sh $PM1 qalpont! \"/mnt/parentOAM$curDir/$cpimportScriptName\"" >> $bulkScriptName # echo sleep 5 >> $bulkScriptName - echo "while [ ! -f /mnt/pm1/usr/local/MariaDB/Columnstore/data/bulk/log/finished.txt ]; do" >> $bulkScriptName + echo "while [ ! -f /mnt/pm1/usr/local/mariadb/columnstore/data/bulk/log/finished.txt ]; do" >> $bulkScriptName echo sleep 5 >> $bulkScriptName echo echo waiting...... >> $bulkScriptName echo done >> $bulkScriptName # - echo cp /mnt/pm1/usr/local/MariaDB/Columnstore/data/bulk/job/Job_9999.xml . >> $bulkScriptName - echo cp /mnt/pm1/usr/local/MariaDB/Columnstore/data/bulk/log/Jobxml_9999.log . >> $bulkScriptName - echo cp /mnt/pm1/usr/local/MariaDB/Columnstore/data/bulk/log/Job_9999.log . >> $bulkScriptName - echo cp /mnt/pm1/usr/local/MariaDB/Columnstore/data/bulk/log/fileStats.txt . >> $bulkScriptName + echo cp /mnt/pm1/usr/local/mariadb/columnstore/data/bulk/job/Job_9999.xml . >> $bulkScriptName + echo cp /mnt/pm1/usr/local/mariadb/columnstore/data/bulk/log/Jobxml_9999.log . >> $bulkScriptName + echo cp /mnt/pm1/usr/local/mariadb/columnstore/data/bulk/log/Job_9999.log . >> $bulkScriptName + echo cp /mnt/pm1/usr/local/mariadb/columnstore/data/bulk/log/fileStats.txt . >> $bulkScriptName # chmod 777 $bulkScriptName # diff --git a/utils/startup/installdir.cpp b/utils/startup/installdir.cpp index ec842e8f1..cb1150aa5 100644 --- a/utils/startup/installdir.cpp +++ b/utils/startup/installdir.cpp @@ -52,7 +52,7 @@ const string StartUp::installDir() if (!cfStr.empty()) *fInstallDirp = cfStr; #else - fInstallDirp = new string("/usr/local/MariaDB/Columnstore"); + fInstallDirp = new string("/usr/local/mariadb/columnstore"); //See if we can figure out the install dir in Linux... //1. env var INFINIDB_INSTALL_DIR const char* p=0; @@ -60,7 +60,7 @@ const string StartUp::installDir() if (p && *p) *fInstallDirp = p; //2. up one level from current binary location? - //3. fall back to /usr/local/MariaDB/Columnstore + //3. fall back to /usr/local/mariadb/columnstore #endif return *fInstallDirp; diff --git a/utils/testbc/stats.cpp b/utils/testbc/stats.cpp index a9b5802c9..c797fd6b4 100644 --- a/utils/testbc/stats.cpp +++ b/utils/testbc/stats.cpp @@ -92,7 +92,7 @@ public: else outName = name; ostringstream oss; - oss << "/var/log/Columnstore/trace/" << outName << '.' << sessionID; + oss << "/var/log/mariadb/columnstore/trace/" << outName << '.' << sessionID; oFile.reset(new ofstream()); oFile->open(oss.str().c_str(), ios_base::out | ios_base::ate | ios_base::app); } diff --git a/utils/thrift/thrift/TApplicationException.d b/utils/thrift/thrift/TApplicationException.d new file mode 100644 index 000000000..97309f0a0 --- /dev/null +++ b/utils/thrift/thrift/TApplicationException.d @@ -0,0 +1,117 @@ +TApplicationException.o: thrift/TApplicationException.cpp \ + thrift/TApplicationException.h thrift/Thrift.h \ + thrift/transport/PlatformSocket.h thrift/thrift-config.h thrift/config.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h thrift/protocol/TProtocol.h \ + thrift/transport/TTransport.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/memory.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/checked_delete.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/sp_typeinfo.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/memory_order.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/operator_bool.hpp \ + thrift/transport/TTransportException.h \ + thrift/protocol/TProtocolException.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/static_assert.hpp diff --git a/utils/thrift/thrift/Thrift.d b/utils/thrift/thrift/Thrift.d new file mode 100644 index 000000000..9333c48cd --- /dev/null +++ b/utils/thrift/thrift/Thrift.d @@ -0,0 +1,497 @@ +Thrift.o: thrift/Thrift.cpp thrift/Thrift.h \ + thrift/transport/PlatformSocket.h thrift/thrift-config.h thrift/config.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/lexical_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/limits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/value_wknd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/eti.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/na_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/lambda_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/void_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/na.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/na_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_arity_param.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/arity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/dtp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/limits/arity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bitand.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/identity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/identity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/add.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/dec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/while.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/fold_left.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/detail/fold_left.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/expr_iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/adt.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/is_binary.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/check.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/compl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/fold_right.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/detail/fold_right.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/reverse.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/detail/while.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/overload.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/variadic/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/rem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/variadic/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/sub.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_member_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_member_function_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_cv.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/broken_compiler_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/static_assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/lcast_precision.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/integer_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/swap.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/swap.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/functional/hash_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/functional/hash/hash_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/converter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/conversion_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/conversion_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/meta.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/eval_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/equal_to.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/comparison_op.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/numeric_op.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/numeric_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/apply_wrap.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/has_apply.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/has_xxx.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/type_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/yes_no.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/arrays.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/has_xxx.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc_typename.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/array/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/array/data.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/array/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/enum_params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/enum_trailing_params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/has_apply.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/msvc_never_true.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/use_preprocessed.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/include_preprocessed.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/compiler.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/stringize.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/has_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/numeric_cast_utils.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/forwarding.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/msvc_eti_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/is_msvc_eti_arg.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nested_type_wknd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/identity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/int_float_mixture.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/int_float_mixture_enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/sign_mixture.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/sign_mixture_enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/is_subranged.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/multiplies.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/times.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/arithmetic_op.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/largest_int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/times.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/default_params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/less.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/less.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/converter_policies.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/cmath.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/converter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/bounds.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/bounds.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/numeric_cast_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/cstdint.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/make_unsigned.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_signed.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_unsigned.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_const.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_const.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/has_left_shift.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/has_binary_operator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_base_of.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_base_and_derived.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_class.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_fundamental.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/has_right_shift.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/special_functions/sign.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/tools/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/tools/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/fenv.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/special_functions/math_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/special_functions/detail/round_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/tools/promotion.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_floating_point.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/policies/policy.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/limits/list.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/list20.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/list10.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/list0.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/long.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/long_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/push_front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/push_front_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/next.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/next_prior.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/common_name_wknd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/item.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/pop_front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/pop_front_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/push_back.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/push_back_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/front_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/clear.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/clear_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/O1_size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/O1_size_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/size_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/empty_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/begin_end.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/begin_end_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/iterator_tags.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/deref.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/msvc_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/include_preprocessed.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/list.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/contains.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/contains_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/sequence_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/sequence_tag_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/has_begin.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/contains_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/begin_end.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/begin_end_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/traits_lambda_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/find.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/find_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/find_if_pred.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/iter_apply.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/apply.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/apply_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/placeholders.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/arg.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/arg_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/na_assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/pp_counter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/arg_typedef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bind.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bind_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/bind.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/protect.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/full_lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/quote.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/has_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/bcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/iter_fold_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/logical.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/always.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/pair.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/iter_fold_if_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/same_as.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/remove_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/fold.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/O1_size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/O1_size_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/has_size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/reverse_fold.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/reverse_fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/inserter_algorithm.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/back_inserter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/push_back.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/push_back_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/inserter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/front_inserter.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/push_front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/push_front_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/clear.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/clear_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/limits/vector.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/vector20.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/vector10.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/vector0.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/at.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/at_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/typeof.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/push_front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/item.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/pop_front.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/push_back.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/pop_back.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/pop_back_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/back.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/back_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/clear.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/vector0.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/plus.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/minus.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/advance_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/distance_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/prior.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/O1_size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/begin_end.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/include_preprocessed.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/at.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/at_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/advance.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/negate.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/advance_forward.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/advance_backward.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/size_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/distance.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/iter_fold.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/iter_fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/iterator_range.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/comparison.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/not_equal_to.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/greater.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/less_equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/greater_equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/complex.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/special_functions/detail/fp_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/endian.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/detail/endian_compat.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/other/endian.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/version_number.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/make.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/detail/test.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/library/c/gnu.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/library/c/_prefix.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/detail/_cassert.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/macos.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd/bsdi.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd/dragonfly.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd/free.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd/open.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/predef/os/bsd/net.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/special_functions/fpclassify.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/math/tools/real_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/iterator_range_core.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/iterator_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/iterator_facade.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/interoperable.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/detail/config_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/detail/config_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/detail/facade_iterator_category.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/iterator_categories.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/indirect_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/detail/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/addressof.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_const.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_pod.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_scalar.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/functions.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/begin.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/mutable_iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/extract_optional_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/const_iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/end.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/implementation_help.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/common.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/sfinae.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/size_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/difference_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/distance.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/rbegin.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/reverse_iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/reverse_iterator.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/next_prior.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/iterator_adaptor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/rend.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/algorithm/equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/concepts.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept_check.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/detail/general.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/detail/backward_compatibility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/detail/has_constraints.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/conversion_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/usage.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/detail/concept_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/for_each_i.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/for.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/detail/for.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/seq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/enum.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/concept/detail/concept_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/iterator/iterator_concepts.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/value_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/misc_concept.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/range/detail/safe_bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/container/container_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/integer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/integer_fwd.hpp diff --git a/utils/thrift/thrift/server/TSimpleServer.d b/utils/thrift/thrift/server/TSimpleServer.d new file mode 100644 index 000000000..c32d130d6 --- /dev/null +++ b/utils/thrift/thrift/server/TSimpleServer.d @@ -0,0 +1,123 @@ +TSimpleServer.o: thrift/server/TSimpleServer.cpp \ + thrift/server/TSimpleServer.h thrift/server/TServer.h \ + thrift/TProcessor.h thrift/protocol/TProtocol.h \ + thrift/transport/TTransport.h thrift/Thrift.h \ + thrift/transport/PlatformSocket.h thrift/thrift-config.h thrift/config.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/memory.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/checked_delete.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/sp_typeinfo.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/memory_order.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/operator_bool.hpp \ + thrift/transport/TTransportException.h \ + thrift/protocol/TProtocolException.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/static_assert.hpp \ + thrift/transport/TServerTransport.h thrift/protocol/TBinaryProtocol.h \ + thrift/protocol/TVirtualProtocol.h thrift/protocol/TBinaryProtocol.tcc \ + thrift/concurrency/Thread.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/weak_ptr.hpp diff --git a/utils/thrift/thrift/transport/TBufferTransports.d b/utils/thrift/thrift/transport/TBufferTransports.d new file mode 100644 index 000000000..df99200df --- /dev/null +++ b/utils/thrift/thrift/transport/TBufferTransports.d @@ -0,0 +1,118 @@ +TBufferTransports.o: thrift/transport/TBufferTransports.cpp \ + thrift/transport/TBufferTransports.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/scoped_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/scoped_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/checked_delete.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/operator_bool.hpp \ + thrift/transport/TTransport.h thrift/Thrift.h \ + thrift/transport/PlatformSocket.h thrift/thrift-config.h thrift/config.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/memory.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/sp_typeinfo.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/memory_order.hpp \ + thrift/transport/TTransportException.h \ + thrift/transport/TVirtualTransport.h diff --git a/utils/thrift/thrift/transport/TServerSocket.d b/utils/thrift/thrift/transport/TServerSocket.d new file mode 100644 index 000000000..6a99eb50e --- /dev/null +++ b/utils/thrift/thrift/transport/TServerSocket.d @@ -0,0 +1,117 @@ +TServerSocket.o: thrift/transport/TServerSocket.cpp \ + thrift/thrift-config.h thrift/config.h thrift/transport/TSocket.h \ + thrift/transport/TTransport.h thrift/Thrift.h \ + thrift/transport/PlatformSocket.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/memory.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/checked_delete.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/sp_typeinfo.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/memory_order.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/operator_bool.hpp \ + thrift/transport/TTransportException.h \ + thrift/transport/TVirtualTransport.h thrift/transport/TServerSocket.h \ + thrift/transport/TServerTransport.h diff --git a/utils/thrift/thrift/transport/TSocket.d b/utils/thrift/thrift/transport/TSocket.d new file mode 100644 index 000000000..5240a1413 --- /dev/null +++ b/utils/thrift/thrift/transport/TSocket.d @@ -0,0 +1,166 @@ +TSocket.o: thrift/transport/TSocket.cpp thrift/thrift-config.h \ + thrift/config.h thrift/concurrency/Monitor.h \ + thrift/concurrency/Exception.h thrift/Thrift.h \ + thrift/transport/PlatformSocket.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/enable_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/user.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_compiler_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/compiler/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_stdlib_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/stdlib/libstdcpp3.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/select_platform_config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/platform/linux.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/posix_features.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/suffix.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/intrinsics.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_same.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/template_arity_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/int_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/adl_barrier.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/adl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/msvc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/intel.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/gcc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/workaround.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/nttp_decl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/nttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/integral_wrapper.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_tag.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/static_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/static_cast.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/config/config.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/template_arity_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/preprocessor/params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/preprocessor.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma_if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/if.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/empty.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/punctuation/comma.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/debug/error.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/auto_rec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/eat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/inc.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/lambda.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ttp.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/ctps.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/config/overload_resolution.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/integral_constant.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/bool_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/integral_c_fwd.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/mpl/aux_/lambda_support.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/bool_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/ice.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/yes_no_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_or.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_and.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/ice_eq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_volatile.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/cv_traits_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_array.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_arithmetic.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_integral.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_float.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_void.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_abstract.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_lvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_def.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/type_trait_undef.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_rvalue_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/is_function.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/false_result.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/detail/is_function_ptr_helper.hpp \ + thrift/TLogging.h thrift/concurrency/Mutex.h \ + /home/builder/mariadb-columnstore-engine/export/include/boost/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/shared_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/config/no_tr1/memory.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/assert.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/checked_delete.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/throw_exception.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/shared_count.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/bad_weak_ptr.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_has_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/detail/sp_typeinfo.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_convertible.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_pool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/spinlock_sync.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/yield_k.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/memory_order.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/smart_ptr/detail/operator_bool.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/noncopyable.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/addressof.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/base_from_member.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/enum_binary_params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/overload.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/variadic/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/tuple/rem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/variadic/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/enum_params.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/repetition/repeat_from_to.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/add.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/dec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/while.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/fold_left.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/detail/fold_left.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/expr_iif.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/adt.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/is_binary.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/detail/check.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/compl.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/fold_right.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/detail/fold_right.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/list/reverse.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/bitand.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/detail/while.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/sub.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_cv.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/broken_compiler_spec.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/remove_reference.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/binary.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/control/deduce_d.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/facilities/identity.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/cat.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/fold_left.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/seq.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/elem.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/size.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/seq/transform.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/mod.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/arithmetic/detail/div_base.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/comparison/less_equal.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/preprocessor/logical/not.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/utility/identity_type.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/function_traits.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/type_traits/add_pointer.hpp \ + /home/builder/mariadb-columnstore-engine/export/include/boost/next_prior.hpp \ + thrift/transport/TSocket.h thrift/transport/TTransport.h \ + thrift/transport/TTransportException.h \ + thrift/transport/TVirtualTransport.h thrift/transport/TServerSocket.h \ + thrift/transport/TServerTransport.h diff --git a/utils/udfsdk/README.txt b/utils/udfsdk/README.txt index 591db3154..3b72ec2f0 100644 --- a/utils/udfsdk/README.txt +++ b/utils/udfsdk/README.txt @@ -15,11 +15,11 @@ At this point you can use the idb_add() function template in udfinfinidb.cpp and files to create your own function or just try that function as is. Make the library Stop InfiniDB -Copy the libudf_mysql.so.1.0.0 and libudfsdk.so.1.0.0 file to /usr/local/MariaDB/Columnstore/lib on +Copy the libudf_mysql.so.1.0.0 and libudfsdk.so.1.0.0 file to /usr/local/mariadb/columnstore/lib on every InfiniDB node Start InfiniDB -In the directory /usr/local/MariaDB/Columnstore/mysql/lib64/mysql/plugin create a symbolic link called -libudf_msql.so to the file /usr/local/MariaDB/Columnstore/lib/libudf_msql.so.1.0.0 +In the directory /usr/local/mariadb/columnstore/mysql/lib64/mysql/plugin create a symbolic link called +libudf_msql.so to the file /usr/local/mariadb/columnstore/lib/libudf_msql.so.1.0.0 In the mysql client add the function (e.g. "create function idb_add returns integer soname 'libudf_msql.so';") You should now be able to use the idb_add() function in the select and/or where clauses diff --git a/utils/udfsdk/udfsdk.h b/utils/udfsdk/udfsdk.h index 09f6dc4b9..10a300e8d 100644 --- a/utils/udfsdk/udfsdk.h +++ b/utils/udfsdk/udfsdk.h @@ -30,7 +30,7 @@ * 2. add the UDF function implementation in udfsdk.cpp * 3. add the connector stub for this UDF function in udfsdk.cpp * 4. build the dynamic library libudfsdk - * 5. put the library in /usr/local/MariaDB/Columnstore/lib of all modules + * 5. put the library in /usr/local/mariadb/columnstore/lib of all modules * 6. restart all the InfiniDB servers and MySQL server * 7. notify mysqld about the new functions with the commands like: * diff --git a/versioning/BRM/Calpont.xml b/versioning/BRM/Calpont.xml index 3fa8dbd62..1bee8d812 100644 --- a/versioning/BRM/Calpont.xml +++ b/versioning/BRM/Calpont.xml @@ -251,7 +251,7 @@ 5 3 60 - /usr/local/MariaDB/Columnstore/data + /usr/local/mariadb/columnstore/data /home/pleblanc/DBRMRoot_test 90 80 @@ -355,7 +355,7 @@ /tmp/oidbitmap 3000 @@ -364,7 +364,7 @@ Commit - /usr/local/MariaDB/Columnstore/data/bulk + /usr/local/mariadb/columnstore/data/bulk