Commit ffc36496 authored by Jérome Perrin's avatar Jérome Perrin

improve reports


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4736 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 5e2e16c5
...@@ -73,11 +73,22 @@ ...@@ -73,11 +73,22 @@
# are split by \'destination_section\' categories and bank accounts are split by \'source_payment\'\n # are split by \'destination_section\' categories and bank accounts are split by \'source_payment\'\n
#\n #\n
\n \n
from DateTime import DateTime\n
import math\n import math\n
\n
LOG = lambda msg : context.getPortalObject().log(\n LOG = lambda msg : context.getPortalObject().log(\n
"AccountModule_getAccountListForTrialBalance", msg)\n "AccountModule_getAccountListForTrialBalance", msg)\n
\n \n
from_date = kw.get(\'from_date\', DateTime(\'1970/01/01\'))\n
simulation_state = kw[\'transaction_simulation_state\']\n
section_category = kw[\'transaction_section_category\']\n
at_date = kw[\'at_date\']\n
kw[\'accounting_transaction_line_currency\'] = \'TODO\'\n
\n
\n \n
getInventory = context.getPortalObject().portal_simulation.getInventory\n
getInventoryList = context.getPortalObject().portal_simulation.getInventoryList\n
\n
# wether we should or not expand accounts into virtual accounts \n # wether we should or not expand accounts into virtual accounts \n
# (payable & receivable with other parties / bank with bank account)\n # (payable & receivable with other parties / bank with bank account)\n
expand_accounts = kw.get("expand_accounts", 1)\n expand_accounts = kw.get("expand_accounts", 1)\n
...@@ -88,28 +99,20 @@ gap_root = kw["gap_root"]\n ...@@ -88,28 +99,20 @@ gap_root = kw["gap_root"]\n
# extra arguments for getInventory :\n # extra arguments for getInventory :\n
extra_kw = {}\n extra_kw = {}\n
if kw.get(\'from_date\', None) is not None:\n if kw.get(\'from_date\', None) is not None:\n
extra_kw[\'from_date\'] = kw[\'from_date\']\n extra_from_date = from_date\n
\n \n
# shall we display a summary line for expanded accounts ?\n # shall we display a summary line for expanded accounts ?\n
display_summary_account_line = 0\n display_summary_account_line = 0\n
\n \n
def gap_sort_func(a, b) :\n
a_gap = a.getGapId()\n
b_gap = b.getGapId()\n
while len(a_gap) < 7 :\n
a_gap += \'0\'\n
while len(b_gap) < 7 :\n
b_gap += \'0\'\n
if a_gap < b_gap : return -1\n
if a_gap > b_gap : return 1\n
return 0\n
\n
def formatValues(dict) :\n def formatValues(dict) :\n
for k, v in dict.items():\n for k, v in dict.items():\n
if not(same_type(v, "") or same_type(v, u"")) :\n if not(same_type(v, "") or same_type(v, u"")) :\n
if round(v) == 0.00 :\n if round(v) == 0.00 :\n
dict[k] = ""\n dict[k] = ""\n
else :\n else :\n
negative = v < 0\n
if k in (\'opening_balance\', \'closing_balance\') and negative :\n
v = - v\n
# FIXME: this part is a copy of Floatfield format_value\n # FIXME: this part is a copy of Floatfield format_value\n
value = str(float(v))\n value = str(float(v))\n
value_list = value.split(\'.\')\n value_list = value.split(\'.\')\n
...@@ -119,19 +122,61 @@ def formatValues(dict) :\n ...@@ -119,19 +122,61 @@ def formatValues(dict) :\n
while i != len(integer):\n while i != len(integer):\n
value += \' \' + integer[i:i+3]\n value += \' \' + integer[i:i+3]\n
i += 3\n i += 3\n
dict[k] = \'%s.%s\'%(integer, value_list[1])\n dict[k] = \'%s.%s\'%(value, str(value_list[1])[:2])\n
# XXX ohada l10n local hack, we only use integer part !\n
#dict[k] = \'%s\'%(value)\n
if k in (\'opening_balance\', \'closing_balance\') :\n
if negative:\n
dict[k] = \'%s CR\'%(value)\n
else :\n
dict[k] = \'%s \'%(value)\n
dict[k]\n
return dict \n return dict \n
\n \n
# organisations for expandBankAccountsForAccount\n
organisations = context.portal_categories.restrictedTraverse(\n
section_category\n
).getGroupRelatedValueList(portal_type=\'Organisation\')\n
\n
\n
def getDefaultColumnValues(node_uid = 0, **kw): \n
""" returns then opening balance, debit movements sum, credit movements\n
sum and closing balance using defaults categories. """\n
values = {}\n
values[\'opening_balance\'] = getInventory( node_uid = node_uid,\n
to_date = from_date,\n
simulation_state = simulation_state,\n
omit_simulation = 1,\n
# TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n
**kw )\n
values[\'debit_movement\'] = getInventory( node_uid = node_uid,\n
from_date = from_date,\n
at_date = at_date,\n
simulation_state = simulation_state,\n
omit_simulation = 1,\n
omit_output = 1,\n
# TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n
**kw )\n
values[\'credit_movement\'] = - getInventory( node_uid = node_uid,\n
from_date = from_date,\n
at_date = at_date,\n
simulation_state = simulation_state,\n
omit_simulation = 1,\n
omit_input = 1,\n
# TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n
**kw )\n
values[\'closing_balance\'] = values[\'opening_balance\'] + \\\n
values[\'debit_movement\'] - \\\n
values[\'credit_movement\']\n
return values\n
\n
def expandBankAccountsForAccount(account, **kw) :\n def expandBankAccountsForAccount(account, **kw) :\n
tmp_accounts = []\n tmp_accounts = []\n
organisations = context.portal_categories.restrictedTraverse(\n
kw[\'transaction_section_category\']\n
).getGroupRelatedValueList(portal_type=\'Organisation\')\n
orga_and_banks = []\n orga_and_banks = []\n
for orga in organisations :\n for orga in organisations :\n
orga_and_banks += [(orga, o.getObject()) for o in \\\n orga_and_banks += [(orga, o.getObject()) for o in \\\n
orga.searchFolder(portal_type=[\'Bank Account\'])]\n orga.searchFolder(portal_type=[\'Bank Account\', \'Cash Register\'])]\n
for orga, bank in orga_and_banks :\n for orga ,bank in orga_and_banks :\n
this_tmp_account = {\n this_tmp_account = {\n
\'uid\' : account.getUid(),\n \'uid\' : account.getUid(),\n
\'id\' : \'%s-%s-%s\' % ( account.getGapId(),\n \'id\' : \'%s-%s-%s\' % ( account.getGapId(),\n
...@@ -140,22 +185,23 @@ def expandBankAccountsForAccount(account, **kw) :\n ...@@ -140,22 +185,23 @@ def expandBankAccountsForAccount(account, **kw) :\n
\'title\' : \'%s (%s / %s)\' % ( account.getTitle(),\n \'title\' : \'%s (%s / %s)\' % ( account.getTitle(),\n
orga.getTitle(), bank.getTitle()),\n orga.getTitle(), bank.getTitle()),\n
}\n }\n
this_tmp_account[\'debit\'] = bank.BankAccount_statSourceDebit(\n this_tmp_account.update(\n
node_uid = [account.getUid()] )\n getDefaultColumnValues( node_uid = account.getUid(),\n
this_tmp_account[\'credit\'] = bank.BankAccount_statSourceCredit(\n payment_uid = bank.getUid() ) )\n
node_uid = [account.getUid()] )\n if ( this_tmp_account[\'opening_balance\'] != 0 or\n
\n this_tmp_account[\'credit_movement\'] != 0 or \n
balance = this_tmp_account[\'debit\'] - this_tmp_account[\'credit\']\n this_tmp_account[\'debit_movement\'] != 0 or\n
this_tmp_account[\'debit_balance\'] = balance > 0 and balance or 0.00\n this_tmp_account[\'closing_balance\'] != 0 ) :\n
this_tmp_account[\'credit_balance\'] = balance < 0 and - balance or 0.00\n tmp_accounts.append( account.asContext( **formatValues(this_tmp_account) ) )\n
if this_tmp_account[\'credit\'] != 0 or this_tmp_account[\'debit\'] != 0 :\n
tmp_accounts.append(account.asContext(**formatValues(this_tmp_account)))\n
return tmp_accounts\n return tmp_accounts\n
\n \n
def expandThirdPartiesForAccount(account, **kw) :\n def expandThirdPartiesForAccount(account, **kw) :\n
tmp_accounts = []\n tmp_accounts = []\n
# get all entities that are destination section related to this account.\n
entities = [o.getObject() for o in \\\n entities = [o.getObject() for o in \\\n
context.Account_zDistinctSectionList(node_uid = account.getUid())]\n context.Account_zDistinctSectionList( node_uid = account.getUid(), \n
at_date = at_date,\n
simulation_state = simulation_state)]\n
for entity in entities :\n for entity in entities :\n
this_tmp_account = {\n this_tmp_account = {\n
\'uid\' : account.getUid(),\n \'uid\' : account.getUid(),\n
...@@ -164,32 +210,28 @@ def expandThirdPartiesForAccount(account, **kw) :\n ...@@ -164,32 +210,28 @@ def expandThirdPartiesForAccount(account, **kw) :\n
\'title\' : \'%s (%s)\'%(account.getTitle(),\n \'title\' : \'%s (%s)\'%(account.getTitle(),\n
entity.getTitle()),\n entity.getTitle()),\n
}\n }\n
this_tmp_account[\'debit\'] = \\\n this_tmp_account.update(\n
entity.Entity_statSourceDebit( node_uid = [account.getUid()] )\n getDefaultColumnValues( node_uid = account.getUid(),\n
this_tmp_account[\'credit\'] = \\\n mirror_section_uid = entity.getUid() ) )\n
entity.Entity_statSourceCredit( node_uid = [account.getUid()] )\n if ( this_tmp_account[\'opening_balance\'] != 0 or\n
\n this_tmp_account[\'credit_movement\'] != 0 or \n
balance = this_tmp_account[\'debit\'] - this_tmp_account[\'credit\']\n this_tmp_account[\'debit_movement\'] != 0 ) :\n
this_tmp_account[\'debit_balance\'] = balance > 0 and balance or 0.00\n tmp_accounts.append( account.asContext( **formatValues(this_tmp_account) ) )\n
this_tmp_account[\'credit_balance\'] = balance < 0 and - balance or 0.00\n
if this_tmp_account[\'credit\'] != 0 or this_tmp_account[\'debit\'] != 0 :\n
tmp_accounts.append(entity.asContext(**formatValues(this_tmp_account)))\n
return tmp_accounts\n return tmp_accounts\n
\n \n
\n
### FIXME: is this working ? I guess no, as multi-currency is not yet tested\n
try:\n
currency = kw[\'accounting_transaction_line_currency\']\n
id = currency.split(\'/\')[-1]\n
except KeyError:\n
id = \'\'\n
if not id:\n
id = \'&nbsp;\'\n
kw[\'select_expression\'] = "\'%s\' AS accounting_transaction_line_currency" % id\n
\n
\n
accounts = [ o.getObject() for o in context.portal_catalog(**kw) ]\n accounts = [ o.getObject() for o in context.portal_catalog(**kw) ]\n
accounts = filter(lambda account: account.getGapId() is not None, accounts )\n accounts = filter(lambda account: account.getGapId() is not None, accounts )\n
\n
def gap_sort_func(a, b) :\n
""" simple function to sort accounts. """\n
a_gap = a.Account_getGapId()\n
b_gap = b.Account_getGapId()\n
while len(a_gap) < 7 :\n
a_gap += \'0\'\n
while len(b_gap) < 7 :\n
b_gap += \'0\'\n
return cmp(a_gap, b_gap)\n
\n
accounts.sort(gap_sort_func)\n accounts.sort(gap_sort_func)\n
\n \n
accounts_to_expand_by_third_parties = context.portal_categories\\\n accounts_to_expand_by_third_parties = context.portal_categories\\\n
...@@ -200,117 +242,68 @@ accounts_to_expand_by_third_parties = context.portal_categories\\\n ...@@ -200,117 +242,68 @@ accounts_to_expand_by_third_parties = context.portal_categories\\\n
# we use strict_membership because we do not want VAT\n # we use strict_membership because we do not want VAT\n
portal_type=\'Account\', strict_membership=1)\n portal_type=\'Account\', strict_membership=1)\n
\n \n
# use a dict for faster lookup\n
accounts_to_expand_by_third_parties_dict = {}\n
for account in accounts_to_expand_by_third_parties :\n
accounts_to_expand_by_third_parties_dict[account.getId()] = 1\n
\n
accounts_to_expand_by_bank_accounts = context.portal_categories\\\n accounts_to_expand_by_bank_accounts = context.portal_categories\\\n
.account_type.asset.bank.getAccountTypeRelatedValueList(\n .account_type.asset.bank.getAccountTypeRelatedValueList(\n
# we use strict_membership because we do not want cash\n portal_type=\'Account\')\n
portal_type=\'Account\', strict_membership=1)\n accounts_to_expand_by_bank_accounts_dict = {}\n
for account in accounts_to_expand_by_bank_accounts :\n
accounts_to_expand_by_bank_accounts_dict[account.getId()] = 1\n
\n \n
report_items = []\n report_items = []\n
results = []\n results = []\n
for account in accounts :\n for account in accounts :\n
if expand_accounts and account in accounts_to_expand_by_third_parties :\n if expand_accounts and account.getId() in accounts_to_expand_by_third_parties_dict :\n
# get all organisations with this account\n # get all organisations with this account\n
# and create a "virtual-Account" for each organisation\n # and create a "virtual-Account" for each organisation\n
virtual_accounts = expandThirdPartiesForAccount(account, **kw)\n virtual_accounts = expandThirdPartiesForAccount(account, **kw)\n
report_items += virtual_accounts\n
if display_summary_account_line or not len(virtual_accounts) :\n
# then display the aggregate account\n # then display the aggregate account\n
item = {\n item = { \'title\': account.getTitle(), }\n
\'title\': account.getTitle(),\n item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n
\'debit\': account.Resource_zGetInventory_old(\n \n
node_uid=account.getUid(),\n
omit_input=1,\n
omit_simulation=1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00,\n
\'credit\': - (account.Resource_zGetInventory_old(\n
node_uid=account.getUid(),\n
omit_output=1,\n
omit_simulation=1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00 )}\n
# provide a clearly different display when it is a summary account \n # provide a clearly different display when it is a summary account \n
# (TODO: it should be in itallic ?).\n # (TODO: it should be in itallic ?).\n
if len(virtual_accounts) :\n if len(virtual_accounts) :\n
item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n
else :\n else :\n
item[\'id\'] = account.getGapId()\n item[\'id\'] = account.getGapId()\n
balance = item[\'debit\'] - item[\'credit\']\n item[\'closing_balance\'] = item[\'opening_balance\'] + \\\n
item[\'debit_balance\'] = balance > 0 and balance or 0.00\n item[\'debit_movement\'] - \\\n
item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n item[\'credit_movement\']\n
report_items += virtual_accounts\n \n
if len(virtual_accounts) and display_summary_account_line :\n report_items.append( account.asContext( **formatValues(item) ) )\n
report_items.append(account.asContext(**formatValues(item)))\n
\n \n
elif expand_accounts and account in accounts_to_expand_by_bank_accounts :\n elif expand_accounts and account.getId() in accounts_to_expand_by_bank_accounts_dict :\n
virtual_accounts = expandBankAccountsForAccount(account, **kw)\n virtual_accounts = expandBankAccountsForAccount(account, **kw)\n
report_items += virtual_accounts\n
if display_summary_account_line or not len(virtual_accounts) :\n
# then display the aggregate account\n # then display the aggregate account\n
item = {\n item = { \'title\': account.getTitle(), }\n
\'title\': account.getTitle(),\n item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n
\'debit\': account.Resource_zGetInventory_old(\n
node_uid = account.getUid(),\n
omit_input = 1,\n
omit_simulation = 1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00,\n
\n \n
\'credit\': - (account.Resource_zGetInventory_old(\n # provide a clearly different display when it is a summary account \n
node_uid = account.getUid(),\n
omit_output = 1,\n
omit_simulation = 1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00 )}\n
# provide a clearly different display when it is a summary account\n
# (TODO: it should be in itallic ?).\n # (TODO: it should be in itallic ?).\n
if len(virtual_accounts) :\n if len(virtual_accounts) :\n
item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n
else :\n else :\n
item[\'id\'] = account.getGapId()\n item[\'id\'] = account.getGapId()\n
balance = item[\'debit\'] - item[\'credit\']\n item[\'closing_balance\'] = item[\'opening_balance\'] + \\\n
item[\'debit_balance\'] = balance > 0 and balance or 0.00\n item[\'debit_movement\'] - \\\n
item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n item[\'credit_movement\']\n
report_items += virtual_accounts\n \n
if len(virtual_accounts) and display_summary_account_line :\n report_items.append(account.asContext(**formatValues(item))) \n
report_items.append(account.asContext(**formatValues(item)))\n
\n
else :\n else :\n
item = {\n item = { \'id\' : account.getGapId(),\n
\'id\': account.getGapId(),\n \'title\': account.getTitle(), }\n
\'title\': account.getTitle(),\n item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n
\'debit\': account.Resource_zGetInventory_old(\n report_items.append( account.asContext( **formatValues(item) ) )\n
node_uid = account.getUid(),\n
omit_input = 1,\n
omit_simulation = 1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00,\n
\n \n
\'credit\': - (account.Resource_zGetInventory_old(\n
node_uid = account.getUid(),\n
omit_output = 1,\n
omit_simulation = 1,\n
simulation_state = kw[\'transaction_simulation_state\'],\n
section_category = kw[\'transaction_section_category\'],\n
at_date = kw[\'at_date\'],\n
**extra_kw\n
)[0].quantity or 0.00 )}\n
balance = item[\'debit\'] - item[\'credit\']\n
item[\'debit_balance\'] = balance > 0 and balance or 0.00\n
item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n
report_items.append(account.asContext(**formatValues(item)))\n
\n
return report_items\n return report_items\n
# vim: syntax=python\n # vim: syntax=python\n
...@@ -319,180 +312,198 @@ return report_items\n ...@@ -319,180 +312,198 @@ return report_items\n
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAACQAAABOAAAACwAA <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAACwAAAA+AAAACwAA
AHPDCAAAZAAAawAAfQIAZAEAhAAAfQMAdAIAfAEAZAIAgwIAZAMAZAQAgwIAfQUAdAUAfAEAZAUA AHN7BgAAZAEAawAAbAAAfQIAAWQCAGsBAH0DAGQDAIQAAH0EAHQDAHwBAGQEAIMCAGQFAHwCAGQG
gwIAfQcAaAAAfQgAdAIAfAEAZAIAgwIAZAYAdAgAgwIAdAgAagkAbx0AAXQFAHwBAGQGAIMCAHQJ AIMBAIMCAIkBAHQGAHwBAGQHAIMCAIkDAHQGAHwBAGQIAIMCAH0JAHQGAHwBAGQJAIMCAIkEAGQK
AHwIAIMBAGQGADxuAQABZAcAfQsAZAgAhAAAfQwAZAkAhAAAiQAAhwAAZAoAhgAAfQ4AhwAAZAsA AHQKAHwBAIMBAGQLADx0AwB0AwB0AwB0CwBkDACDAgCDAABkDQCDAgBkDgCDAgCJAgB0AwB0AwB0
hgAAfQ8AeTIAdAUAfAEAZAwAgwIAfRAAdAUAdAIAfBAAZA0AgwIAZA4AgwEAZAQAC4MCAH0RAFdu AwB0CwBkDACDAgCDAABkDQCDAgBkDwCDAgB9DgB0AwB8AQBkBACDAgBkEABkEQCDAgB9DwB0BgB8
GQAEdBEAagoAbw0AAQEBAWQPAH0RAG4CAAFYfBEADG8KAAFkEAB9EQBuAQABZBEAfBEAFnQJAHwB AQBkEgCDAgB9EABoAAB9EQB0AwB8AQBkBACDAgBkBQB0EQCDAgB0EQBqCQBvCgABiAEAfRMAbgEA
AIMBAGQSADxnAAAEaRIAfRQAdBQAdBUAdAIAdBYAZBMAgwIAfAEAjQEAgwEARF0cAH0YAHwUAHQC AWQTAH0UAGQUAIQAAIkGAHQDAHQDAHQDAHQLAGQVAIMCAGQWAIMCAHwJAIMBAGQXAIMCAGQYAGQZ
AHwYAGQUAIMCAIMAAIMBAAFxRQF+FAB9GQB0GQBkFQCEAAB8GQCDAgB9GQB0AgB8GQBkFgCDAgB8 AIMAAYkAAGQTAIcEAIcBAIcCAIcDAGQaAIYBAIkFAIcAAIcFAIcGAGQbAIYAAH0YAIcEAIcGAIcF
DACDAQABdAIAdAIAdAIAdAIAdAIAdBYAZBcAgwIAZBgAgwIAZBkAgwIAZBoAgwIAZBsAgwIAZBwA AIcDAGQcAIYAAH0ZAGcAAARpGQB9GwB0GwB0HAB0AwB0CwBkHQCDAgB8AQCNAQCDAQBEXRwAfR4A
ZB0AZB4AZAQAgwACdAIAdAIAdAIAdAIAdAIAdBYAZBcAgwIAZBgAgwIAZB8AgwIAZCAAgwIAZBsA fBsAdAMAfB4AZB4AgwIAgwAAgwEAAXG8AX4bAH0fAHQfAGQfAIQAAHwfAIMCAH0fAGQgAIQAAH0h
gwIAZBwAZB0AZB4AZAQAgwACF30bAHQCAHQCAHQCAHQCAHQCAHQWAGQXAIMCAGQYAIMCAGQZAIMC AHQDAHwfAGQhAIMCAHwhAIMBAAF0AwB0AwB0AwB0AwB0AwB0CwBkFQCDAgBkIgCDAgBkIwCDAgBk
AGQhAIMCAGQbAIMCAGQcAGQdAGQeAGQEAIMAAn0cAGcAAH0dAGcAAH0eAHhZBnQUAHwZAIMBAERd JACDAgBkJQCDAgBkGABkJgBkJwBkEQCDAAJ0AwB0AwB0AwB0AwB0AwB0CwBkFQCDAgBkIgCDAgBk
SwZ9HwB8BQBvCgABfB8AfBsAagYAby8CAXQVAHwPAHwfAHwBAI0CAH0gAGgAAARkIgB0AgB8HwBk KACDAgBkKQCDAgBkJQCDAgBkGABkJgBkJwBkEQCDAAIXfSIAaAAAfSMAeDAAdBsAfCIAgwEARF0i
IwCDAgCDAAADPARkJAB0AgB0BQB0FQB0AgB8HwBkJQCDAgBkJgB0AgB8HwBkJwCDAgCDAABkKABk AH0kAGQRAHQKAHwjAIMBAHQDAHwkAGQqAIMCAIMAADxxpAJXdAMAdAMAdAMAdAMAdAMAdAsAZBUA
BABkKQBkBABkKgB0BQB8AQBkKwCDAgBkLAB0BQB8AQBkLQCDAgBkLgB0BQB8AQBkLgCDAgB8CACN gwIAZCIAgwIAZCMAgwIAZCsAgwIAZCUAgwIAZBgAZCYAgwABfSUAaAAAfSYAeDAAdBsAfCUAgwEA
AQZkBwCDAgBkLwCDAgBwBAABZDAAAzwEZDEAdAIAdAUAdBUAdAIAfB8AZCUAgwIAZCYAdAIAfB8A RF0iAH0kAGQRAHQKAHwmAIMBAHQDAHwkAGQqAIMCAIMAADxxGQNXZwAAfScAZwAAfSgAeCUDdBsA
ZCcAgwIAgwAAZDIAZAQAZCkAZAQAZCoAdAUAfAEAZCsAgwIAZCwAdAUAfAEAZC0AgwIAZC4AdAUA fB8AgwEARF0XA30kAHwPAG8WAAF0AwB8JABkKgCDAgCDAAB8IwBqBgBvJwEBdBwAfBkAfCQAfAEA
fAEAZC4AgwIAfAgAjQEGZAcAgwIAZC8AgwIAcAQAAWQwAAsDPH0hAHQhAHwgAIMBAG8kAAFkMwB0 jQIAfSkAfCcAfCkAN30nAHwUAHALAAF0KQB8KQCDAQAMb/IAAWgAAARkLAB0AwB8JABkLQCDAgCD
AgB8HwBkNACDAgCDAAAWdAkAfCEAgwEAZDUAPG4dAAF0AgB8HwBkNACDAgCDAAB0CQB8IQCDAQBk AAADPH0rAHQDAHwrAGQuAIMCAIgFAGQvAHQDAHwkAGQwAIMCAIMAAIMAAYMBAAF0KQB8KQCDAQBv
NQA8dAUAfCEAZCQAgwIAdAUAfCEAZDEAgwIAGH0jAHwjAGQHAGoEAG8EAAF8IwBwBAABZDAAdAkA JAABZDEAdAMAfCQAZDIAgwIAgwAAFnQKAHwrAIMBAGQzADxuHQABdAMAfCQAZDIAgwIAgwAAdAoA
fCEAgwEAZDYAPHwjAGQHAGoAAG8FAAF8IwALcAQAAWQwAHQJAHwhAIMBAGQ3ADx8HQB8IAA3fR0A fCsAgwEAZDMAPHQGAHwrAGQ0AIMCAHQGAHwrAGQ1AIMCABd0BgB8KwBkNgCDAgAYdAoAfCsAgwEA
dCEAfCAAgwEAbwQAAXwLAG8vAAF0AgB8HQBkOACDAgB0FQB0AgB8HwBkOQCDAgCIAAB8IQCDAQCN ZDcAPHQDAHwnAGQ4AIMCAHQcAHQDAHwkAGQ5AIMCAIgGAHwrAIMBAI0BAIMBAAFxbwYBcVgDAXwP
AQCDAQABcbcIAXFsAgF8BQBvCgABfB8AfBwAagYAby8CAXQVAHwOAHwfAHwBAI0CAH0gAGgAAARk AG8WAAF0AwB8JABkKgCDAgCDAAB8JgBqBgBvJwEBdBwAfBgAfCQAfAEAjQIAfSkAfCcAfCkAN30n
IgB0AgB8HwBkIwCDAgCDAAADPARkJAB0AgB0BQB0FQB0AgB8HwBkJQCDAgBkJgB0AgB8HwBkJwCD AHwUAHALAAF0KQB8KQCDAQAMb/IAAWgAAARkLAB0AwB8JABkLQCDAgCDAAADPH0rAHQDAHwrAGQu
AgCDAABkKABkBABkKQBkBABkKgB0BQB8AQBkKwCDAgBkLAB0BQB8AQBkLQCDAgBkLgB0BQB8AQBk AIMCAIgFAGQvAHQDAHwkAGQwAIMCAIMAAIMAAYMBAAF0KQB8KQCDAQBvJAABZDEAdAMAfCQAZDIA
LgCDAgB8CACNAQZkBwCDAgBkLwCDAgBwBAABZDAAAzwEZDEAdAIAdAUAdBUAdAIAfB8AZCUAgwIA gwIAgwAAFnQKAHwrAIMBAGQzADxuHQABdAMAfCQAZDIAgwIAgwAAdAoAfCsAgwEAZDMAPHQGAHwr
ZCYAdAIAfB8AZCcAgwIAgwAAZDIAZAQAZCkAZAQAZCoAdAUAfAEAZCsAgwIAZCwAdAUAfAEAZC0A AGQ0AIMCAHQGAHwrAGQ1AIMCABd0BgB8KwBkNgCDAgAYdAoAfCsAgwEAZDcAPHQDAHwnAGQ4AIMC
gwIAZC4AdAUAfAEAZC4AgwIAfAgAjQEGZAcAgwIAZC8AgwIAcAQAAWQwAAsDPH0hAHQhAHwgAIMB AHQcAHQDAHwkAGQ5AIMCAIgGAHwrAIMBAI0BAIMBAAFxbwYBcVgDAWgAAARkMwB0AwB8JABkMgCD
AG8kAAFkMwB0AgB8HwBkNACDAgCDAAAWdAkAfCEAgwEAZDUAPG4dAAF0AgB8HwBkNACDAgCDAAB0 AgCDAAADPARkLAB0AwB8JABkLQCDAgCDAAADPH0rAHQDAHwrAGQuAIMCAIgFAGQvAHQDAHwkAGQw
CQB8IQCDAQBkNQA8dAUAfCEAZCQAgwIAdAUAfCEAZDEAgwIAGH0jAHwjAGQHAGoEAG8EAAF8IwBw AIMCAIMAAIMAAYMBAAF0AwB8JwBkOACDAgB0HAB0AwB8JABkOQCDAgCIBgB8KwCDAQCNAQCDAQAB
BAABZDAAdAkAfCEAgwEAZDYAPHwjAGQHAGoAAG8FAAF8IwALcAQAAWQwAHQJAHwhAIMBAGQ3ADx8 cVgDV3wnAFNkAgBTKDoAAABzIwAAACBzaW1wbGUgZnVuY3Rpb24gdG8gc29ydCBhY2NvdW50cy4g
HQB8IAA3fR0AdCEAfCAAgwEAbwQAAXwLAG8vAAF0AgB8HQBkOACDAgB0FQB0AgB8HwBkOQCDAgCI KAEAAABzCAAAAERhdGVUaW1lTmMBAAAAAwAAAAQAAABDAAAAcyIAAAB0AAB0AAB0AQBkAQCDAgCD
AAB8IQCDAQCNAQCDAQABcbcIAXFsAgFoAAAEZDUAdAIAfB8AZDQAgwIAgwAAAzwEZCIAdAIAfB8A AABkAgCDAgBkAwB8AACDAgBTKAQAAABOcw8AAABnZXRQb3J0YWxPYmplY3RzAwAAAGxvZ3MrAAAA
ZCMAgwIAgwAAAzwEZCQAdAIAdAUAdBUAdAIAfB8AZCUAgwIAZCYAdAIAfB8AZCcAgwIAgwAAZCgA QWNjb3VudE1vZHVsZV9nZXRBY2NvdW50TGlzdEZvclRyaWFsQmFsYW5jZSgDAAAAcwkAAABfZ2V0
ZAQAZCkAZAQAZCoAdAUAfAEAZCsAgwIAZCwAdAUAfAEAZC0AgwIAZC4AdAUAfAEAZC4AgwIAfAgA YXR0cl9zBwAAAGNvbnRleHRzAwAAAG1zZygDAAAAcwMAAABtc2dzCQAAAF9nZXRhdHRyX3MHAAAA
jQEGZAcAgwIAZC8AgwIAcAQAAWQwAAM8BGQxAHQCAHQFAHQVAHQCAHwfAGQlAIMCAGQmAHQCAHwf Y29udGV4dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMLAAAAPGxhbWJkYS4xNz4JAAAA
AGQnAIMCAIMAAGQyAGQEAGQpAGQEAGQqAHQFAHwBAGQrAIMCAGQsAHQFAHwBAGQtAIMCAGQuAHQF cwIAAAAbAXMDAAAAZ2V0cwkAAABmcm9tX2RhdGVzCgAAADE5NzAvMDEvMDFzHAAAAHRyYW5zYWN0
AHwBAGQuAIMCAHwIAI0BBmQHAIMCAGQvAIMCAHAEAAFkMAALAzx9IQB0BQB8IQBkJACDAgB0BQB8 aW9uX3NpbXVsYXRpb25fc3RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlzBwAA
IQBkMQCDAgAYfSMAfCMAZAcAagQAbwQAAXwjAHAEAAFkMAB0CQB8IQCDAQBkNgA8fCMAZAcAagAA AGF0X2RhdGVzBAAAAFRPRE9zJAAAAGFjY291bnRpbmdfdHJhbnNhY3Rpb25fbGluZV9jdXJyZW5j
bwUAAXwjAAtwBAABZDAAdAkAfCEAgwEAZDcAPHQCAHwdAGQ4AIMCAHQVAHQCAHwfAGQ5AIMCAIgA eXMPAAAAZ2V0UG9ydGFsT2JqZWN0cxEAAABwb3J0YWxfc2ltdWxhdGlvbnMMAAAAZ2V0SW52ZW50
AHwhAIMBAI0BAIMBAAFxbAJXfB0AU2QAAFMoOgAAAE5jAQAAAAMAAAAEAAAAQwAAAHMiAAAAdAAA b3J5cxAAAABnZXRJbnZlbnRvcnlMaXN0cw8AAABleHBhbmRfYWNjb3VudHNpAQAAAHMIAAAAZ2Fw
dAAAdAEAZAEAgwIAgwAAZAIAgwIAZAMAfAAAgwIAUygEAAAATnMPAAAAZ2V0UG9ydGFsT2JqZWN0 X3Jvb3RpAAAAAGMBAAAAEQAAABgAAABDAAAAc94BAAB40wF0AAB0AQB8AABkAQCDAgCDAACDAQBE
cwMAAABsb2dzKwAAAEFjY291bnRNb2R1bGVfZ2V0QWNjb3VudExpc3RGb3JUcmlhbEJhbGFuY2Uo XbkBXAIAfQMAfQQAdAUAfAQAZAIAgwIAcA0AAXQFAHwEAGQDAIMCAAxvjAEBdAYAfAQAgwEAZAQA
AwAAAHMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwMAAABtc2coAwAAAHMDAAAAbXNncwkAAABf agIAbxQAAWQCAHQHAHwAAIMBAHwDADxx0gEBfAQAZAUAagAAfQgAfAMAZAYAZAcAZgIAagYAbwQA
Z2V0YXR0cl9zBwAAAGNvbnRleHQoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCwAAADxs AXwIAG8LAAF8BAALfQQAbgEAAXQJAHQKAHwEAIMBAIMBAH0LAHQBAHwLAGQIAIMCAGQJAIMBAH0M
YW1iZGEuODg+BwAAAHMCAAAAGwFzAwAAAGdldHMPAAAAZXhwYW5kX2FjY291bnRzaQEAAABzCAAA AHQNAHwMAGQFAIMCAH0OAHQPAHwOAIMBAGQKABZ9EAB0DQB8DgBkAAB8EACFAgCDAgB9CwB4QwB8
AGdhcF9yb290cwkAAABmcm9tX2RhdGVpAAAAAGMCAAAABgAAAAkAAABDAAAAc6EAAAB0AAB8AABk EAB0DwB8DgCDAQBqAwBvLwABfAsAZAsAdA0AfA4AfBAAfBAAZAoAF4UCAIMCABc3fQsAfBAAZAoA
N30QAHH8AAFXZAwAfAsAdA0AdAkAdA0AfAwAZA0AgwIAgwEAZAAAZA4AhQIAgwIAZgIAFnQHAHwA
AIMBAHwDADx8AwBkBgBkBwBmAgBqBgBvNwABfAgAbxgAAWQPAHwLABZ0BwB8AACDAQB8AwA8ccEB
AWQQAHwLABZ0BwB8AACDAQB8AwA8bgEAAXQNAHwAAHwDAIMCAAFxGQABcRkAV3wAAFNkAABTKBEA
AABOcwUAAABpdGVtc3MAAAAAdQAAAABmAzAuMGkAAAAAcw8AAABvcGVuaW5nX2JhbGFuY2VzDwAA
AGNsb3NpbmdfYmFsYW5jZXMFAAAAc3BsaXRzAQAAAC5pAwAAAHMBAAAAIHMFAAAAJXMuJXNpAQAA
AGkCAAAAcwUAAAAlcyBDUnMFAAAAJXMgICAoEQAAAHMJAAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0
cl9zBAAAAGRpY3RzAQAAAGtzAQAAAHZzCQAAAHNhbWVfdHlwZXMFAAAAcm91bmRzBwAAAF93cml0
ZV9zCAAAAG5lZ2F0aXZlcwMAAABzdHJzBQAAAGZsb2F0cwUAAAB2YWx1ZXMKAAAAdmFsdWVfbGlz
dHMJAAAAX2dldGl0ZW1fcwcAAABpbnRlZ2VycwMAAABsZW5zAQAAAGkoEQAAAHMEAAAAZGljdHMJ
AAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0cl9zAQAAAGtzAQAAAHZzCQAAAHNhbWVfdHlwZXMFAAAA
cm91bmRzBwAAAF93cml0ZV9zCAAAAG5lZ2F0aXZlcwMAAABzdHJzBQAAAGZsb2F0cwUAAAB2YWx1
ZXMKAAAAdmFsdWVfbGlzdHMJAAAAX2dldGl0ZW1fcwcAAABpbnRlZ2VycwMAAABsZW5zAQAAAGko
AAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzDAAAAGZvcm1hdFZhbHVlcyUAAABzMAAAAAAB
GQAMASEBEwEUAgwBGgELAhIBFQEPARABFQEDABMBIQEPATgDEwEHARgCGwESAXMRAAAAcG9ydGFs
X2NhdGVnb3JpZXNzEgAAAHJlc3RyaWN0ZWRUcmF2ZXJzZXMYAAAAZ2V0R3JvdXBSZWxhdGVkVmFs
dWVMaXN0cwsAAABwb3J0YWxfdHlwZXMMAAAAT3JnYW5pc2F0aW9uYwEAAAAKAAAAEAAAAAsAAABz
7QAAAGgAAH0CAHQBAIgCAGQBAHwAAGQCAIgBAGQDAIgDAGQEAGQFAHwBAI0BBHQHAHwCAIMBAGQG
ADx0AQCIAgBkAQB8AABkBwCIAQBkCACIAABkAwCIAwBkBABkBQBkCQBkBQB8AQCNAQZ0BwB8AgCD
AQBkCgA8dAEAiAIAZAEAfAAAZAcAiAEAZAgAiAAAZAMAiAMAZAQAZAUAZAsAZAUAfAEAjQEGC3QH
AHwCAIMBAGQMADx0CQB8AgBkBgCDAgB0CQB8AgBkCgCDAgAXdAkAfAIAZAwAgwIAGHQHAHwCAIMB
AGQNADx8AgBTZA4AUygPAAAAc3oAAAAgcmV0dXJucyB0aGVuIG9wZW5pbmcgYmFsYW5jZSwgZGVi
aXQgbW92ZW1lbnRzIHN1bSwgY3JlZGl0IG1vdmVtZW50cwogIHN1bSBhbmQgY2xvc2luZyBiYWxh
bmNlIHVzaW5nIGRlZmF1bHRzIGNhdGVnb3JpZXMuIHMIAAAAbm9kZV91aWRzBwAAAHRvX2RhdGVz
EAAAAHNpbXVsYXRpb25fc3RhdGVzDwAAAG9taXRfc2ltdWxhdGlvbmkBAAAAcw8AAABvcGVuaW5n
X2JhbGFuY2VzCQAAAGZyb21fZGF0ZXMHAAAAYXRfZGF0ZXMLAAAAb21pdF9vdXRwdXRzDgAAAGRl
Yml0X21vdmVtZW50cwoAAABvbWl0X2lucHV0cw8AAABjcmVkaXRfbW92ZW1lbnRzDwAAAGNsb3Np
bmdfYmFsYW5jZU4oCgAAAHMGAAAAdmFsdWVzcwcAAABfYXBwbHlfcwwAAABnZXRJbnZlbnRvcnlz
CAAAAG5vZGVfdWlkcwkAAABmcm9tX2RhdGVzEAAAAHNpbXVsYXRpb25fc3RhdGVzAgAAAGt3cwcA
AABfd3JpdGVfcwcAAABhdF9kYXRlcwkAAABfZ2V0aXRlbV8oCgAAAHMIAAAAbm9kZV91aWRzAgAA
AGt3cwYAAAB2YWx1ZXNzBwAAAF9hcHBseV9zDAAAAGdldEludmVudG9yeXMJAAAAZnJvbV9kYXRl
cxAAAABzaW11bGF0aW9uX3N0YXRlcwcAAABfd3JpdGVfcwcAAABhdF9kYXRlcwkAAABfZ2V0aXRl
bV8oBAAAAHMHAAAAYXRfZGF0ZXMJAAAAZnJvbV9kYXRlcwwAAABnZXRJbnZlbnRvcnlzEAAAAHNp
bXVsYXRpb25fc3RhdGUoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxYAAABnZXREZWZhdWx0Q29s
dW1uVmFsdWVzSAAAAHMmAAAAAAMGAQ8BBgEJAxMBDwEGAQYBDwQTAQ8BBgEGAQ8EFAEPAQ0BFwFj
AQAAABEAAAAWAAAACwAAAHNHAgAAZwAAfQIAZwAAfQMAeG8AdAIAiAAAgwEARF1hAH0GAHwDAGcA
AARpBQB9CAB0AgB0BwB8BgBkAQCDAgBkAgBkAwBkBABnAgCDAAGDAQBEXSIAfQoAfAgAfAYAdAcA
fAoAZAUAgwIAgwAAZgIAgwEAAXFOAH4IADd9AwBxGQBXeL4BdAIAfAMAgwEARF2wAVwCAH0GAH0L
AGgAAARkBgB0BwB8AABkBwCDAgCDAAADPARkCABkCQB0BwB8AABkCgCDAgCDAAB0BwB0CwB0BwB0
BwB8BgBkCwCDAgCDAABkDACDAgBkDQCDAQBkAABkDgCFAgCDAgBkDwCDAgCDAAB0BwB0CwB0BwB0
BwB8CwBkCwCDAgCDAABkDACDAgBkDQCDAQBkAABkDgCFAgCDAgBkDwCDAgCDAABmAwAWAzwEZBAA
ZBEAdAcAfAAAZAsAgwIAgwAAdAcAfAYAZAsAgwIAgwAAdAcAfAsAZAsAgwIAgwAAZgMAFgM8fQ0A
dAcAfA0AZBIAgwIAiAEAZBMAdAcAfAAAZAcAgwIAgwAAZBQAdAcAfAsAZAcAgwIAgwAAgwACgwEA
AXQLAHwNAGQVAIMCAGQWAGoDAHA/AAF0CwB8DQBkFwCDAgBkFgBqAwBwKQABdAsAfA0AZBgAgwIA
ZBYAagMAcBMAAXQLAHwNAGQZAIMCAGQWAGoDAG8vAAF0BwB8AgBkGgCDAgB0DgB0BwB8AABkGwCD
AgCIAgB8DQCDAQCNAQCDAQABcYsAAXGLAFd8AgBTZAAAUygcAAAATnMMAAAAc2VhcmNoRm9sZGVy
cwsAAABwb3J0YWxfdHlwZXMMAAAAQmFuayBBY2NvdW50cw0AAABDYXNoIFJlZ2lzdGVycwkAAABn
ZXRPYmplY3RzAwAAAHVpZHMGAAAAZ2V0VWlkcwIAAABpZHMIAAAAJXMtJXMtJXNzCAAAAGdldEdh
cElkcwgAAABnZXRUaXRsZXMGAAAAZGVjb2RlcwQAAAB1dGY4aQgAAABzBQAAAHVwcGVycwUAAAB0
aXRsZXMMAAAAJXMgKCVzIC8gJXMpcwYAAAB1cGRhdGVzCAAAAG5vZGVfdWlkcwsAAABwYXltZW50
X3VpZHMPAAAAb3BlbmluZ19iYWxhbmNlaQAAAABzDwAAAGNyZWRpdF9tb3ZlbWVudHMOAAAAZGVi
aXRfbW92ZW1lbnRzDwAAAGNsb3NpbmdfYmFsYW5jZXMGAAAAYXBwZW5kcwkAAABhc0NvbnRleHQo
EAAAAHMMAAAAdG1wX2FjY291bnRzcw4AAABvcmdhX2FuZF9iYW5rc3MJAAAAX2dldGl0ZXJfcw0A
AABvcmdhbmlzYXRpb25zcwQAAABvcmdhcwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0
YXR0cl9zAQAAAG9zBAAAAGJhbmtzBwAAAGFjY291bnRzCQAAAF9nZXRpdGVtX3MQAAAAdGhpc190
bXBfYWNjb3VudHMWAAAAZ2V0RGVmYXVsdENvbHVtblZhbHVlc3MHAAAAX2FwcGx5X3MMAAAAZm9y
bWF0VmFsdWVzKBEAAABzBwAAAGFjY291bnRzAgAAAGt3cwwAAAB0bXBfYWNjb3VudHNzDgAAAG9y
Z2FfYW5kX2JhbmtzcwkAAABfZ2V0aXRlcl9zDQAAAG9yZ2FuaXNhdGlvbnNzBAAAAG9yZ2FzBgAA
AGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAAAF9nZXRhdHRyX3MBAAAAb3MEAAAAYmFua3MJAAAAX2dl
dGl0ZW1fcxAAAAB0aGlzX3RtcF9hY2NvdW50cxYAAABnZXREZWZhdWx0Q29sdW1uVmFsdWVzcwcA
AABfYXBwbHlfcwwAAABmb3JtYXRWYWx1ZXMoAwAAAHMNAAAAb3JnYW5pc2F0aW9uc3MWAAAAZ2V0
RGVmYXVsdENvbHVtblZhbHVlc3MMAAAAZm9ybWF0VmFsdWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0
aG9uKXMcAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNjb3VudGcAAABzMAAAAAABBgEGAQ0ABgET
AUwBDQAMAQoBFQEbATkBOgESAScCCQEbARMBGQEWARYBFgEwAWMBAAAAEgAAABoAAAALAAAAc84B
AABnAAB9AgBnAAAEaQEAfQQAdAMAdAQAdAUAZAEAgwIAZAIAdAQAfAAAZAMAgwIAgwAAZAQAiAAA
ZAUAiAMAgwADgwEARF0cAH0KAHwEAHQEAHwKAGQGAIMCAIMAAIMBAAFxRAB+BAB9CwB4WgF0AwB8
CwCDAQBEXUwBfQwAaAAABGQHAHQEAHwAAGQDAIMCAIMAAAM8BGQIAGQJAHQEAHwAAGQKAIMCAIMA
AHQEAHQMAHQEAHQEAHwMAGQLAIMCAIMAAGQMAIMCAGQNAIMBAGQAAGQOAIUCAIMCAGQPAIMCAIMA
AGYCABYDPARkEABkEQB0BAB8AABkCwCDAgCDAAB0BAB8DABkCwCDAgCDAABmAgAWAzx9DgB0BAB8
DgBkEgCDAgCIAgBkAgB0BAB8AABkAwCDAgCDAABkEwB0BAB8DABkAwCDAgCDAACDAAKDAQABdAwA
fA4AZBQAgwIAZBUAagMAcCkAAXQMAHwOAGQWAIMCAGQVAGoDAHATAAF0DAB8DgBkFwCDAgBkFQBq
AwBvLwABdAQAfAIAZBgAgwIAdA8AdAQAfAAAZBkAgwIAiAEAfA4AgwEAjQEAgwEAAXF2AAFxdgBX
fAIAU2QAAFMoGgAAAE5zHAAAAEFjY291bnRfekRpc3RpbmN0U2VjdGlvbkxpc3RzCAAAAG5vZGVf
dWlkcwYAAABnZXRVaWRzBwAAAGF0X2RhdGVzEAAAAHNpbXVsYXRpb25fc3RhdGVzCQAAAGdldE9i
amVjdHMDAAAAdWlkcwIAAABpZHMFAAAAJXMtJXNzCAAAAGdldEdhcElkcwgAAABnZXRUaXRsZXMG
AAAAZGVjb2RlcwQAAAB1dGY4aQwAAABzBQAAAHVwcGVycwUAAAB0aXRsZXMHAAAAJXMgKCVzKXMG
AAAAdXBkYXRlcxIAAABtaXJyb3Jfc2VjdGlvbl91aWRzDwAAAG9wZW5pbmdfYmFsYW5jZWkAAAAA
cw8AAABjcmVkaXRfbW92ZW1lbnRzDgAAAGRlYml0X21vdmVtZW50cwYAAABhcHBlbmRzCQAAAGFz
Q29udGV4dCgRAAAAcwwAAAB0bXBfYWNjb3VudHNzBgAAAGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAA
AF9nZXRpdGVyX3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcAAABhY2NvdW50cwcAAABhdF9k
YXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcwEAAABvcwgAAABlbnRpdGllc3MGAAAAZW50aXR5cwkA
AABfZ2V0aXRlbV9zEAAAAHRoaXNfdG1wX2FjY291bnRzFgAAAGdldERlZmF1bHRDb2x1bW5WYWx1
ZXNzBwAAAF9hcHBseV9zDAAAAGZvcm1hdFZhbHVlcygSAAAAcwcAAABhY2NvdW50cwIAAABrd3MM
AAAAdG1wX2FjY291bnRzcwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zCQAA
AF9nZXRhdHRyX3MHAAAAY29udGV4dHMHAAAAYXRfZGF0ZXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMB
AAAAb3MIAAAAZW50aXRpZXNzBgAAAGVudGl0eXMJAAAAX2dldGl0ZW1fcxAAAAB0aGlzX3RtcF9h
Y2NvdW50cxYAAABnZXREZWZhdWx0Q29sdW1uVmFsdWVzcwcAAABfYXBwbHlfcwwAAABmb3JtYXRW
YWx1ZXMoBAAAAHMHAAAAYXRfZGF0ZXMMAAAAZm9ybWF0VmFsdWVzcxYAAABnZXREZWZhdWx0Q29s
dW1uVmFsdWVzcxAAAABzaW11bGF0aW9uX3N0YXRlKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMc
AAAAZXhwYW5kVGhpcmRQYXJ0aWVzRm9yQWNjb3VudIAAAABzKgAAAAABBgIQAR4BBgEvAQ0ABgEK
ARUBGwE6ARIBGAIJARsBEwEZARYBFgEwAXMOAAAAcG9ydGFsX2NhdGFsb2dzCQAAAGdldE9iamVj
dGMBAAAAAwAAAAMAAABDAAAAcxYAAAB0AAB8AABkAQCDAgCDAAB0AgBqCQBTKAIAAABOcwgAAABn
ZXRHYXBJZCgDAAAAcwkAAABfZ2V0YXR0cl9zBwAAAGFjY291bnRzBAAAAE5vbmUoAwAAAHMHAAAA
YWNjb3VudHMJAAAAX2dldGF0dHJfcwQAAABOb25lKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRo
b24pcwsAAAA8bGFtYmRhLjE4PpkAAABzAAAAAGMCAAAABwAAAAcAAABDAAAAc38AAAB0AAB8AABk
AQCDAgCDAAB9AwB0AAB8AQBkAQCDAgCDAAB9BAB4IgB0BQB8AwCDAQBkAgBqAABvDgABfAMAZAMA AQCDAgCDAAB9AwB0AAB8AQBkAQCDAgCDAAB9BAB4IgB0BQB8AwCDAQBkAgBqAABvDgABfAMAZAMA
N30DAHEnAAFXeCIAdAUAfAQAgwEAZAIAagAAbw4AAXwEAGQDADd9BABxTAABV3wDAHwEAGoAAG8J N30DAHEnAAFXeCIAdAUAfAQAgwEAZAIAagAAbw4AAXwEAGQDADd9BABxTAABV3QGAHwDAHwEAIMC
AAFkBAALU24BAAF8AwB8BABqBABvCAABZAQAU24BAAFkBQBTZAAAUygGAAAATnMIAAAAZ2V0R2Fw AFNkBABTKAUAAABzIwAAACBzaW1wbGUgZnVuY3Rpb24gdG8gc29ydCBhY2NvdW50cy4gcxAAAABB
SWRpBwAAAHMBAAAAMGkBAAAAaQAAAAAoBgAAAHMJAAAAX2dldGF0dHJfcwEAAABhcwUAAABhX2dh Y2NvdW50X2dldEdhcElkaQcAAABzAQAAADBOKAcAAABzCQAAAF9nZXRhdHRyX3MBAAAAYXMFAAAA
cHMBAAAAYnMFAAAAYl9nYXBzAwAAAGxlbigGAAAAcwEAAABhcwEAAABicwkAAABfZ2V0YXR0cl9z YV9nYXBzAQAAAGJzBQAAAGJfZ2FwcwMAAABsZW5zAwAAAGNtcCgHAAAAcwEAAABhcwEAAABicwkA
BQAAAGFfZ2FwcwUAAABiX2dhcHMDAAAAbGVuKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24p AABfZ2V0YXR0cl9zBQAAAGFfZ2FwcwUAAABiX2dhcHMDAAAAbGVucwMAAABjbXAoAAAAACgAAAAA
cw0AAABnYXBfc29ydF9mdW5jGgAAAHMWAAAAAAESARIBAwATAQ8BAwATAQ8BFgEVAWMBAAAAEAAA cw8AAABTY3JpcHQgKFB5dGhvbilzDQAAAGdhcF9zb3J0X2Z1bmObAAAAcxIAAAAAAhIBEgEDABMB
ABQAAABDAAAAc0EBAAB4NgF0AAB0AQB8AABkAQCDAgCDAACDAQBEXRwBXAIAfQMAfQQAdAUAfAQA DwEDABMBDwFzBAAAAHNvcnRzDAAAAGFjY291bnRfdHlwZXMFAAAAYXNzZXRzCgAAAHJlY2VpdmFi
ZAIAgwIAcA0AAXQFAHwEAGQDAIMCAAxv7wABdAYAfAQAgwEAZAQAagIAbxQAAWQCAHQHAHwAAIMB bGVzHgAAAGdldEFjY291bnRUeXBlUmVsYXRlZFZhbHVlTGlzdHMHAAAAQWNjb3VudHMRAAAAc3Ry
AHwDADxxNQEBdAgAdAkAfAQAgwEAgwEAfQoAdAEAfAoAZAUAgwIAZAYAgwEAfQsAdAwAfAsAZAcA aWN0X21lbWJlcnNoaXBzCQAAAGxpYWJpbGl0eXMHAAAAcGF5YWJsZXMFAAAAZ2V0SWRzBAAAAGJh
gwIAfQ0AdA4AfA0AgwEAZAgAFn0PAHQMAHwNAGQAAHwPAIUCAIMCAH0KAHhDAHwPAHQOAHwNAIMB bmtzBQAAAHRpdGxlcwgAAABnZXRUaXRsZXMGAAAAdXBkYXRlcwgAAABub2RlX3VpZHMGAAAAZ2V0
AGoDAG8vAAF8CgBkCQB0DAB8DQB8DwB8DwBkCAAXhQIAgwIAFzd9CgB8DwBkCAA3fQ8AccsAAVdk VWlkcw8AAAAgICAlcyAqKlRPVEFMKipzCAAAAGdldEdhcElkcwIAAABpZHMPAAAAb3BlbmluZ19i
CgB8DQB0DAB8CwBkCwCDAgBmAgAWdAcAfAAAgwEAfAMAPHEZAAFxGQBXfAAAU2QAAFMoDAAAAE5z YWxhbmNlcw4AAABkZWJpdF9tb3ZlbWVudHMPAAAAY3JlZGl0X21vdmVtZW50cw8AAABjbG9zaW5n
BQAAAGl0ZW1zcwAAAAB1AAAAAGYDMC4wcwUAAABzcGxpdHMBAAAALmkAAAAAaQMAAABzAQAAACBz X2JhbGFuY2VzBgAAAGFwcGVuZHMJAAAAYXNDb250ZXh0KCsAAABzCAAAAERhdGVUaW1lcwQAAABt
BQAAACVzLiVzaQEAAAAoEAAAAHMJAAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0cl9zBAAAAGRpY3Rz YXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MCAAAAa3dzCQAAAGZyb21fZGF0ZXMJAAAAX2dldGl0
AQAAAGtzAQAAAHZzCQAAAHNhbWVfdHlwZXMFAAAAcm91bmRzBwAAAF93cml0ZV9zAwAAAHN0cnMF ZW1fcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0aW9uX2NhdGVnb3J5cwcAAABhdF9kYXRl
AAAAZmxvYXRzBQAAAHZhbHVlcwoAAAB2YWx1ZV9saXN0cwkAAABfZ2V0aXRlbV9zBwAAAGludGVn cwcAAABfd3JpdGVfcwcAAABjb250ZXh0cwwAAABnZXRJbnZlbnRvcnlzEAAAAGdldEludmVudG9y
ZXJzAwAAAGxlbnMBAAAAaSgQAAAAcwQAAABkaWN0cwkAAABfZ2V0aXRlcl9zCQAAAF9nZXRhdHRy eUxpc3RzDwAAAGV4cGFuZF9hY2NvdW50c3MIAAAAZ2FwX3Jvb3RzCAAAAGV4dHJhX2t3cwQAAABO
X3MBAAAAa3MBAAAAdnMJAAAAc2FtZV90eXBlcwUAAAByb3VuZHMHAAAAX3dyaXRlX3MDAAAAc3Ry b25lcw8AAABleHRyYV9mcm9tX2RhdGVzHAAAAGRpc3BsYXlfc3VtbWFyeV9hY2NvdW50X2xpbmVz
cwUAAABmbG9hdHMFAAAAdmFsdWVzCgAAAHZhbHVlX2xpc3RzCQAAAF9nZXRpdGVtX3MHAAAAaW50 DAAAAGZvcm1hdFZhbHVlc3MNAAAAb3JnYW5pc2F0aW9uc3MWAAAAZ2V0RGVmYXVsdENvbHVtblZh
ZWdlcnMDAAAAbGVucwEAAABpKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwwAAABmb3Jt bHVlc3McAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNjb3VudHMcAAAAZXhwYW5kVGhpcmRQYXJ0
YXRWYWx1ZXMlAAAAcyAAAAAAARkADAEhARMBFAMSARUBDwEQARUBAwATASEBDwErAWMBAAAAEwAA aWVzRm9yQWNjb3VudHMGAAAAYXBwZW5kcwgAAAAkYXBwZW5kMHMJAAAAX2dldGl0ZXJfcwcAAABf
ABsAAAALAAAAc94CAABnAAB9AgB0AQB0AQB0AQB0AgBkAQCDAgBkAgCDAgB0AwB8AQBkAwCDAgCD YXBwbHlfcwEAAABvcwgAAABhY2NvdW50c3MGAAAAZmlsdGVycw0AAABnYXBfc29ydF9mdW5jcyMA
AQBkBACDAgBkBQBkBgCDAAF9BgBnAAB9BwB4bAB0BwB8BgCDAQBEXV4AfQkAfAcAZwAABGkJAH0L AABhY2NvdW50c190b19leHBhbmRfYnlfdGhpcmRfcGFydGllc3MoAAAAYWNjb3VudHNfdG9fZXhw
AHQHAHQBAHwJAGQHAIMCAGQFAGQIAGcBAIMAAYMBAERdIgB9DAB8CwB8CQB0AQB8DABkCQCDAgCD YW5kX2J5X3RoaXJkX3BhcnRpZXNfZGljdHMHAAAAYWNjb3VudHMjAAAAYWNjb3VudHNfdG9fZXhw
AABmAgCDAQABcYQAfgsAN30HAHFSAFd4HwJ0BwB8BwCDAQBEXRECXAIAfQkAfQ0AaAAABGQKAHQB YW5kX2J5X2JhbmtfYWNjb3VudHNzKAAAAGFjY291bnRzX3RvX2V4cGFuZF9ieV9iYW5rX2FjY291
AHwAAGQLAIMCAIMAAAM8BGQMAGQNAHQBAHwAAGQOAIMCAIMAAHQBAHQDAHQBAHQBAHwJAGQPAIMC bnRzX2RpY3RzDAAAAHJlcG9ydF9pdGVtc3MHAAAAcmVzdWx0c3MQAAAAdmlydHVhbF9hY2NvdW50
AIMAAGQQAIMCAGQRAIMBAGQAAGQSAIUCAIMCAGQTAIMCAIMAAHQBAHQDAHQBAHQBAHwNAGQPAIMC c3MDAAAAbGVucwQAAABpdGVtKCwAAABzCQAAAHNlbGVjdGlvbnMCAAAAa3dzCAAAAERhdGVUaW1l
AIMAAGQQAIMCAGQRAIMBAGQAAGQSAIUCAIMCAGQTAIMCAIMAAGYDABYDPARkFABkFQB0AQB8AABk cwQAAABtYXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MJAAAAZnJvbV9kYXRlcwkAAABfZ2V0aXRl
DwCDAgCDAAB0AQB8CQBkDwCDAgCDAAB0AQB8DQBkDwCDAgCDAABmAwAWAzx9DgB0AQB8DQBkFgCD bV9zEAAAAHNpbXVsYXRpb25fc3RhdGVzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzBwAAAGF0X2RhdGVz
AgBkFwB0AQB8AABkCwCDAgCDAABnAQCDAAF0DwB8DgCDAQBkGAA8dAEAfA0AZBkAgwIAZBcAdAEA BwAAAF93cml0ZV9zBwAAAGNvbnRleHRzDAAAAGdldEludmVudG9yeXMQAAAAZ2V0SW52ZW50b3J5
fAAAZAsAgwIAgwAAZwEAgwABdA8AfA4AgwEAZBoAPHQDAHwOAGQYAIMCAHQDAHwOAGQaAIMCABh9 TGlzdHMPAAAAZXhwYW5kX2FjY291bnRzcwgAAABnYXBfcm9vdHMIAAAAZXh0cmFfa3dzBAAAAE5v
EAB8EABkGwBqBABvBAABfBAAcAQAAWQcAHQPAHwOAIMBAGQdADx8EABkGwBqAABvBQABfBAAC3AE bmVzDwAAAGV4dHJhX2Zyb21fZGF0ZXMcAAAAZGlzcGxheV9zdW1tYXJ5X2FjY291bnRfbGluZXMM
AAFkHAB0DwB8DgCDAQBkHgA8dAMAfA4AZBoAgwIAZBsAagMAcBMAAXQDAHwOAGQYAIMCAGQbAGoD AAAAZm9ybWF0VmFsdWVzcw0AAABvcmdhbmlzYXRpb25zcxYAAABnZXREZWZhdWx0Q29sdW1uVmFs
AG8vAAF0AQB8AgBkHwCDAgB0EQB0AQB8AABkIACDAgCIAAB8DgCDAQCNAQCDAQABccEAAXHBAFd8 dWVzcxwAAABleHBhbmRCYW5rQWNjb3VudHNGb3JBY2NvdW50cxwAAABleHBhbmRUaGlyZFBhcnRp
AgBTZAAAUyghAAAATnMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzEgAAAHJlc3RyaWN0ZWRUcmF2ZXJz ZXNGb3JBY2NvdW50cwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zBwAAAF9h
ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXMYAAAAZ2V0R3JvdXBSZWxhdGVkVmFs cHBseV9zAQAAAG9zCAAAAGFjY291bnRzcwYAAABmaWx0ZXJzDQAAAGdhcF9zb3J0X2Z1bmNzIwAA
dWVMaXN0cwsAAABwb3J0YWxfdHlwZXMMAAAAT3JnYW5pc2F0aW9ucwwAAABzZWFyY2hGb2xkZXJz AGFjY291bnRzX3RvX2V4cGFuZF9ieV90aGlyZF9wYXJ0aWVzcygAAABhY2NvdW50c190b19leHBh
DAAAAEJhbmsgQWNjb3VudHMJAAAAZ2V0T2JqZWN0cwMAAAB1aWRzBgAAAGdldFVpZHMCAAAAaWRz bmRfYnlfdGhpcmRfcGFydGllc19kaWN0cwcAAABhY2NvdW50cyMAAABhY2NvdW50c190b19leHBh
CAAAACVzLSVzLSVzcwgAAABnZXRHYXBJZHMIAAAAZ2V0VGl0bGVzBgAAAGRlY29kZXMEAAAAdXRm bmRfYnlfYmFua19hY2NvdW50c3MoAAAAYWNjb3VudHNfdG9fZXhwYW5kX2J5X2JhbmtfYWNjb3Vu
OGkIAAAAcwUAAAB1cHBlcnMFAAAAdGl0bGVzDAAAACVzICglcyAvICVzKXMbAAAAQmFua0FjY291 dHNfZGljdHMMAAAAcmVwb3J0X2l0ZW1zcwcAAAByZXN1bHRzcxAAAAB2aXJ0dWFsX2FjY291bnRz
bnRfc3RhdFNvdXJjZURlYml0cwgAAABub2RlX3VpZHMFAAAAZGViaXRzHAAAAEJhbmtBY2NvdW50 cwMAAABsZW5zBAAAAGl0ZW0oAAAAACgHAAAAcw0AAABvcmdhbmlzYXRpb25zcwkAAABmcm9tX2Rh
X3N0YXRTb3VyY2VDcmVkaXRzBgAAAGNyZWRpdGkAAAAAZgMwLjBzDQAAAGRlYml0X2JhbGFuY2Vz dGVzDAAAAGdldEludmVudG9yeXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMHAAAAYXRfZGF0ZXMWAAAA
DgAAAGNyZWRpdF9iYWxhbmNlcwYAAABhcHBlbmRzCQAAAGFzQ29udGV4dCgTAAAAcwwAAAB0bXBf Z2V0RGVmYXVsdENvbHVtblZhbHVlc3MMAAAAZm9ybWF0VmFsdWVzcw8AAABTY3JpcHQgKFB5dGhv
YWNjb3VudHNzCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMJAAAAX2dldGl0ZW1fcwIAAABrd3MN bilzKwAAAEFjY291bnRNb2R1bGVfZ2V0QWNjb3VudExpc3RGb3JUcmlhbEJhbGFuY2UBAAAAc5IA
AAAAb3JnYW5pc2F0aW9uc3MOAAAAb3JnYV9hbmRfYmFua3NzCQAAAF9nZXRpdGVyX3MEAAAAb3Jn AAAABQ0BCQIJAx4BDwEPAQ8BEAMkASQEGAMPAwYBHwEKAwYCCR4YARgEGB8SGRUYJgAlARICDAoQ
YXMGAAAAYXBwZW5kcwgAAAAkYXBwZW5kMHMBAAAAb3MEAAAAYmFua3MHAAAAYWNjb3VudHMQAAAA Ak4DNAYGAQ0ABgEgAjwDBgENAAYBIAIGAQYBDQAGASADEgEKARUCHgElBA0BJAIcAQ8BDQEaAjAC
dGhpc190bXBfYWNjb3VudHMHAAAAX3dyaXRlX3MHAAAAYmFsYW5jZXMHAAAAX2FwcGx5X3MMAAAA IAESAQoBFQIeASUEDQEkAhwBDwENARoCMAIfARQBKAEsAigBAAAAcysAAABBY2NvdW50TW9kdWxl
Zm9ybWF0VmFsdWVzKBMAAABzBwAAAGFjY291bnRzAgAAAGt3cwwAAAB0bXBfYWNjb3VudHNzCQAA X2dldEFjY291bnRMaXN0Rm9yVHJpYWxCYWxhbmNlKAEAAABzKwAAAEFjY291bnRNb2R1bGVfZ2V0
AF9nZXRhdHRyX3MHAAAAY29udGV4dHMJAAAAX2dldGl0ZW1fcw0AAABvcmdhbmlzYXRpb25zcw4A QWNjb3VudExpc3RGb3JUcmlhbEJhbGFuY2UoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilz
AABvcmdhX2FuZF9iYW5rc3MJAAAAX2dldGl0ZXJfcwQAAABvcmdhcwYAAABhcHBlbmRzCAAAACRh CAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
cHBlbmQwcwEAAABvcwQAAABiYW5rcxAAAAB0aGlzX3RtcF9hY2NvdW50cwcAAABfd3JpdGVfcwcA
AABiYWxhbmNlcwcAAABfYXBwbHlfcwwAAABmb3JtYXRWYWx1ZXMoAQAAAHMMAAAAZm9ybWF0VmFs
dWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMcAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNj
b3VudDcAAABzNgAAAAABBgEbAR4CBgENAAYBEwFJAQ0ADAEKARUBGwE5AToBEgEkAg8BIgEPASIC
HAEkASgBLAEwAWMBAAAAEQAAABwAAAALAAAAczkCAABnAAB9AgBnAAAEaQEAfQQAdAMAdAQAdAUA
ZAEAgwIAZAIAdAQAfAAAZAMAgwIAgwAAgwABgwEARF0cAH0IAHwEAHQEAHwIAGQEAIMCAIMAAIMB
AAFxOAB+BAB9CQB40QF0AwB8CQCDAQBEXcMBfQoAaAAABGQFAHQEAHwAAGQDAIMCAIMAAAM8BGQG
AGQHAHQEAHwAAGQIAIMCAIMAAHQEAHQKAHQEAHQEAHwKAGQJAIMCAIMAAGQKAIMCAGQLAIMBAGQA
AGQMAIUCAIMCAGQNAIMCAIMAAGYCABYDPARkDgBkDwB0BAB8AABkCQCDAgCDAAB0BAB8CgBkCQCD
AgCDAABmAgAWAzx9DAB0BAB8CgBkEACDAgBkAgB0BAB8AABkAwCDAgCDAABnAQCDAAF0DAB8DACD
AQBkEQA8dAQAfAoAZBIAgwIAZAIAdAQAfAAAZAMAgwIAgwAAZwEAgwABdAwAfAwAgwEAZBMAPHQK
AHwMAGQRAIMCAHQKAHwMAGQTAIMCABh9DgB8DgBkFABqBABvBAABfA4AcAQAAWQVAHQMAHwMAIMB
AGQWADx8DgBkFABqAABvBQABfA4AC3AEAAFkFQB0DAB8DACDAQBkFwA8dAoAfAwAZBMAgwIAZBQA
agMAcBMAAXQKAHwMAGQRAIMCAGQUAGoDAG8vAAF0BAB8AgBkGACDAgB0DgB0BAB8CgBkGQCDAgCI
AAB8DACDAQCNAQCDAQABcWoAAXFqAFd8AgBTZAAAUygaAAAATnMcAAAAQWNjb3VudF96RGlzdGlu
Y3RTZWN0aW9uTGlzdHMIAAAAbm9kZV91aWRzBgAAAGdldFVpZHMJAAAAZ2V0T2JqZWN0cwMAAAB1
aWRzAgAAAGlkcwUAAAAlcy0lc3MIAAAAZ2V0R2FwSWRzCAAAAGdldFRpdGxlcwYAAABkZWNvZGVz
BAAAAHV0ZjhpDAAAAHMFAAAAdXBwZXJzBQAAAHRpdGxlcwcAAAAlcyAoJXMpcxYAAABFbnRpdHlf
c3RhdFNvdXJjZURlYml0cwUAAABkZWJpdHMXAAAARW50aXR5X3N0YXRTb3VyY2VDcmVkaXRzBgAA
AGNyZWRpdGkAAAAAZgMwLjBzDQAAAGRlYml0X2JhbGFuY2VzDgAAAGNyZWRpdF9iYWxhbmNlcwYA
AABhcHBlbmRzCQAAAGFzQ29udGV4dCgQAAAAcwwAAAB0bXBfYWNjb3VudHNzBgAAAGFwcGVuZHMI
AAAAJGFwcGVuZDBzCQAAAF9nZXRpdGVyX3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcAAABh
Y2NvdW50cwEAAABvcwgAAABlbnRpdGllc3MGAAAAZW50aXR5cwkAAABfZ2V0aXRlbV9zEAAAAHRo
aXNfdG1wX2FjY291bnRzBwAAAF93cml0ZV9zBwAAAGJhbGFuY2VzBwAAAF9hcHBseV9zDAAAAGZv
cm1hdFZhbHVlcygRAAAAcwcAAABhY2NvdW50cwIAAABrd3MMAAAAdG1wX2FjY291bnRzcwYAAABh
cHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4
dHMBAAAAb3MIAAAAZW50aXRpZXNzBgAAAGVudGl0eXMJAAAAX2dldGl0ZW1fcxAAAAB0aGlzX3Rt
cF9hY2NvdW50cwcAAABfd3JpdGVfcwcAAABiYWxhbmNlcwcAAABfYXBwbHlfcwwAAABmb3JtYXRW
YWx1ZXMoAQAAAHMMAAAAZm9ybWF0VmFsdWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMcAAAA
ZXhwYW5kVGhpcmRQYXJ0aWVzRm9yQWNjb3VudFUAAABzKgAAAAABBgEQAUcBDQAGAQoBFQEbAToB
EgEVAgMBLgEDAS4CHAEkASgBLAEwAXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1
cnJlbmN5cwUAAABzcGxpdHMBAAAAL3MAAAAAcwYAAAAmbmJzcDtzLAAAACclcycgQVMgYWNjb3Vu
dGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cxEAAABzZWxlY3RfZXhwcmVzc2lvbnMOAAAA
cG9ydGFsX2NhdGFsb2dzCQAAAGdldE9iamVjdGMBAAAAAwAAAAMAAABDAAAAcxYAAAB0AAB8AABk
AQCDAgCDAAB0AgBqCQBTKAIAAABOcwgAAABnZXRHYXBJZCgDAAAAcwkAAABfZ2V0YXR0cl9zBwAA
AGFjY291bnRzBAAAAE5vbmUoAwAAAHMHAAAAYWNjb3VudHMJAAAAX2dldGF0dHJfcwQAAABOb25l
KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwsAAAA8bGFtYmRhLjg5PnoAAABzAAAAAHME
AAAAc29ydHMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzDAAAAGFjY291bnRfdHlwZXMFAAAAYXNzZXRz
CgAAAHJlY2VpdmFibGVzHgAAAGdldEFjY291bnRUeXBlUmVsYXRlZFZhbHVlTGlzdHMLAAAAcG9y
dGFsX3R5cGVzBwAAAEFjY291bnRzEQAAAHN0cmljdF9tZW1iZXJzaGlwcwkAAABsaWFiaWxpdHlz
BwAAAHBheWFibGVzBAAAAGJhbmtzBQAAAHRpdGxlcwgAAABnZXRUaXRsZXMFAAAAZGViaXRzGgAA
AFJlc291cmNlX3pHZXRJbnZlbnRvcnlfb2xkcwgAAABub2RlX3VpZHMGAAAAZ2V0VWlkcwoAAABv
bWl0X2lucHV0cw8AAABvbWl0X3NpbXVsYXRpb25zEAAAAHNpbXVsYXRpb25fc3RhdGVzHAAAAHRy
YW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzHAAAAHRyYW5z
YWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlzBwAAAGF0X2RhdGVzCAAAAHF1YW50aXR5ZgMwLjBzBgAA
AGNyZWRpdHMLAAAAb21pdF9vdXRwdXRzDwAAACAgICVzICoqVE9UQUwqKnMIAAAAZ2V0R2FwSWRz
AgAAAGlkcw0AAABkZWJpdF9iYWxhbmNlcw4AAABjcmVkaXRfYmFsYW5jZXMGAAAAYXBwZW5kcwkA
AABhc0NvbnRleHQoIwAAAHMEAAAAbWF0aHMDAAAATE9HcwkAAABfZ2V0YXR0cl9zAgAAAGt3cw8A
AABleHBhbmRfYWNjb3VudHNzCQAAAF9nZXRpdGVtX3MIAAAAZ2FwX3Jvb3RzCAAAAGV4dHJhX2t3
cwQAAABOb25lcwcAAABfd3JpdGVfcxwAAABkaXNwbGF5X3N1bW1hcnlfYWNjb3VudF9saW5lcw0A
AABnYXBfc29ydF9mdW5jcwwAAABmb3JtYXRWYWx1ZXNzHAAAAGV4cGFuZEJhbmtBY2NvdW50c0Zv
ckFjY291bnRzHAAAAGV4cGFuZFRoaXJkUGFydGllc0ZvckFjY291bnRzCAAAAGN1cnJlbmN5cwIA
AABpZHMIAAAAS2V5RXJyb3JzBgAAAGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAAAF9nZXRpdGVyX3MH
AAAAX2FwcGx5X3MHAAAAY29udGV4dHMBAAAAb3MIAAAAYWNjb3VudHNzBgAAAGZpbHRlcnMjAAAA
YWNjb3VudHNfdG9fZXhwYW5kX2J5X3RoaXJkX3BhcnRpZXNzIwAAAGFjY291bnRzX3RvX2V4cGFu
ZF9ieV9iYW5rX2FjY291bnRzcwwAAAByZXBvcnRfaXRlbXNzBwAAAHJlc3VsdHNzBwAAAGFjY291
bnRzEAAAAHZpcnR1YWxfYWNjb3VudHNzBAAAAGl0ZW1zAwAAAGxlbnMHAAAAYmFsYW5jZSgkAAAA
cwkAAABzZWxlY3Rpb25zAgAAAGt3cwQAAABtYXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MPAAAA
ZXhwYW5kX2FjY291bnRzcwkAAABfZ2V0aXRlbV9zCAAAAGdhcF9yb290cwgAAABleHRyYV9rd3ME
AAAATm9uZXMHAAAAX3dyaXRlX3McAAAAZGlzcGxheV9zdW1tYXJ5X2FjY291bnRfbGluZXMNAAAA
Z2FwX3NvcnRfZnVuY3MMAAAAZm9ybWF0VmFsdWVzcxwAAABleHBhbmRCYW5rQWNjb3VudHNGb3JB
Y2NvdW50cxwAAABleHBhbmRUaGlyZFBhcnRpZXNGb3JBY2NvdW50cwgAAABjdXJyZW5jeXMCAAAA
aWRzCAAAAEtleUVycm9ycwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zBwAA
AF9hcHBseV9zBwAAAGNvbnRleHRzAQAAAG9zCAAAAGFjY291bnRzcwYAAABmaWx0ZXJzIwAAAGFj
Y291bnRzX3RvX2V4cGFuZF9ieV90aGlyZF9wYXJ0aWVzcyMAAABhY2NvdW50c190b19leHBhbmRf
YnlfYmFua19hY2NvdW50c3MMAAAAcmVwb3J0X2l0ZW1zcwcAAAByZXN1bHRzcwcAAABhY2NvdW50
cxAAAAB2aXJ0dWFsX2FjY291bnRzcwQAAABpdGVtcwMAAABsZW5zBwAAAGJhbGFuY2UoAAAAACgB
AAAAcwwAAABmb3JtYXRWYWx1ZXNzDwAAAFNjcmlwdCAoUHl0aG9uKXMrAAAAQWNjb3VudE1vZHVs
ZV9nZXRBY2NvdW50TGlzdEZvclRyaWFsQmFsYW5jZQEAAABzygAAAAAFCQEJBhgDDwMGAR8BHQMG
AgkLCRIMHgwaAwEPASMBDgELAQgBCgEUAyYAJQEVARACTgM0BUIFBgEGAQ0ABgEUAxICCgEeAQ8B
HgMPAQ8BCQErAg8BHgMPAQ8BCQEfBA0BJAIcARwBJAElAQoBFwEwAhQBEgIKAR4BDwEeAw8BDwEJ
ASsDDwEeAw8BDwEJAR8EDQEkAhwBHAEkASUBCgEXATADCgEVAR4BDwEeAw8BDwEJASsDDwEeAw8B
DwEJAR8CHAEkASgBLAIoAQAAAHMrAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50TGlzdEZvclRy
aWFsQmFsYW5jZSgBAAAAcysAAABBY2NvdW50TW9kdWxlX2dldEFjY291bnRMaXN0Rm9yVHJpYWxC
YWxhbmNlKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAA
AA==</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
...@@ -502,7 +513,7 @@ AA==</string> </value> ...@@ -502,7 +513,7 @@ AA==</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/erp5_accounting/AccountModule_getAccountListForTrialBalance</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
...@@ -534,40 +545,48 @@ AA==</string> </value> ...@@ -534,40 +545,48 @@ AA==</string> </value>
<tuple> <tuple>
<string>selection</string> <string>selection</string>
<string>kw</string> <string>kw</string>
<string>DateTime</string>
<string>math</string> <string>math</string>
<string>LOG</string> <string>LOG</string>
<string>_getattr_</string> <string>_getattr_</string>
<string>expand_accounts</string> <string>from_date</string>
<string>_getitem_</string> <string>_getitem_</string>
<string>simulation_state</string>
<string>section_category</string>
<string>at_date</string>
<string>_write_</string>
<string>context</string>
<string>getInventory</string>
<string>getInventoryList</string>
<string>expand_accounts</string>
<string>gap_root</string> <string>gap_root</string>
<string>extra_kw</string> <string>extra_kw</string>
<string>None</string> <string>None</string>
<string>_write_</string> <string>extra_from_date</string>
<string>display_summary_account_line</string> <string>display_summary_account_line</string>
<string>gap_sort_func</string>
<string>formatValues</string> <string>formatValues</string>
<string>organisations</string>
<string>getDefaultColumnValues</string>
<string>expandBankAccountsForAccount</string> <string>expandBankAccountsForAccount</string>
<string>expandThirdPartiesForAccount</string> <string>expandThirdPartiesForAccount</string>
<string>currency</string>
<string>id</string>
<string>KeyError</string>
<string>append</string> <string>append</string>
<string>$append0</string> <string>$append0</string>
<string>_getiter_</string> <string>_getiter_</string>
<string>_apply_</string> <string>_apply_</string>
<string>context</string>
<string>o</string> <string>o</string>
<string>accounts</string> <string>accounts</string>
<string>filter</string> <string>filter</string>
<string>gap_sort_func</string>
<string>accounts_to_expand_by_third_parties</string> <string>accounts_to_expand_by_third_parties</string>
<string>accounts_to_expand_by_third_parties_dict</string>
<string>account</string>
<string>accounts_to_expand_by_bank_accounts</string> <string>accounts_to_expand_by_bank_accounts</string>
<string>accounts_to_expand_by_bank_accounts_dict</string>
<string>report_items</string> <string>report_items</string>
<string>results</string> <string>results</string>
<string>account</string>
<string>virtual_accounts</string> <string>virtual_accounts</string>
<string>item</string>
<string>len</string> <string>len</string>
<string>balance</string> <string>item</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
Get the report sections for account statement.\n
Account is the combination of :\n
- node (the Account in account module)\n
- destination_section (the Entity in organisation / person module)\n
- source_payment (the Bank account for the organisation)\n
"""\n
\n
from Products.ERP5Form.Report import ReportSection\n
request = context.REQUEST\n
\n
\n
at_date = request[\'at_date\']\n
transaction_section_category = request[\'transaction_section_category\']\n
account = request.get(\'account\', None)\n
destination_section = request.get(\'destination_section\', None)\n
source_payment = request.get(\'source_payment\', None)\n
transaction_simulation_state = request[\'transaction_simulation_state\']\n
from_date = request.get(\'from_date\', None)\n
omit_grouping_reference = request.get(\'omit_grouping_reference\', 0)\n
\n
params = {\n
\'at_date\' : at_date,\n
\'section_category\' : transaction_section_category,\n
\'transaction_section_category\' : transaction_section_category,\n
\'simulation_state\' : transaction_simulation_state,\n
\'accounting_transaction_line_currency\' : None,\n
\'omit_grouping_reference\' : omit_grouping_reference,\n
\'from_date_summary\' : 1\n
}\n
\n
preferences = {\n
\'preferred_accounting_transaction_at_date\' : at_date,\n
\'preferred_accounting_transaction_simulation_state\' :\n
transaction_simulation_state,\n
\'preferred_accounting_transaction_section_category\' :\n
transaction_section_category,\n
# XXX put omit_grouping_reference in preferences ?\n
\'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n
}\n
\n
if from_date:\n
params[\'from_date\'] = from_date\n
preferences[\'preferred_accounting_transaction_from_date\'] = from_date\n
if source_payment :\n
params[\'source_payment_uid\'] = context.restrictedTraverse(source_payment).getUid()\n
if destination_section :\n
params[\'destination_section_uid\'] = context.restrictedTraverse(destination_section).getUid()\n
if account:\n
params[\'node_uid\'] = context.restrictedTraverse(account).getUid()\n
\n
from Products.ERP5Type.Cache import clearCache\n
clearCache() # for preferences\n
\n
result = []\n
portal = context.portal_url.getPortalObject()\n
\n
account_columns = (\n
(\'delivery.start_date\', \'Accounting Operation Date\'),\n
(\'title\', \'Title\'),\n
# (\'translated_portal_type\', \'Type\'),\n
# (\'third_party\', \'Third Party\'),\n
# (\'translated_simulation_state_title\', \'State\'),\n
(\'source_debit\', \'Debit\'),\n
(\'source_credit\', \'Credit\'),\n
(\'reference\', \'Accounting Transaction Reference\'),\n
(\'net_balance\', \'Balance\'),\n
)\n
\n
return [ReportSection(\n
path = context.getPhysicalPath(),\n
#title = \'Account Statement Report\',\n
form_id = \'Account_viewAccountingTransactionList\',\n
selection_name = \'acount_preference_selection\',\n
selection_params = params,\n
selection_columns = account_columns,\n
listbox_display_mode = \'FlatListMode\',\n
selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n
preferences = preferences )]\n
# vim: syntax=python\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAABcAAAAZAAAAQwAA
AHPBAgAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE
AIMCAH0HAHQCAHwEAGQFAIMCAGQGAHQIAIMCAH0JAHQCAHwEAGQFAIMCAGQHAHQIAIMCAH0KAHQC
AHwEAGQFAIMCAGQIAHQIAIMCAH0LAHQFAHwEAGQJAIMCAH0MAHQCAHwEAGQFAIMCAGQKAHQIAIMC
AH0NAHQCAHwEAGQFAIMCAGQLAGQMAIMCAH0OAGgAAARkAwB8BgADPARkDQB8BwADPARkBAB8BwAD
PARkDgB8DAADPARkDwB0CAADPARkCwB8DgADPARkEABkEQADPH0PAGgAAARkEgB8BgADPARkEwB8
DAADPARkFAB8BwADPARkFQB8DgADPH0QAHwNAG8kAAF8DQB0EQB8DwCDAQBkCgA8fA0AdBEAfBAA
gwEAZBYAPG4BAAF8CwBvLwABdAIAdAIAdAMAZBcAgwIAfAsAgwEAZBgAgwIAgwAAdBEAfA8AgwEA
ZBkAPG4BAAF8CgBvLwABdAIAdAIAdAMAZBcAgwIAfAoAgwEAZBgAgwIAgwAAdBEAfA8AgwEAZBoA
PG4BAAF8CQBvLwABdAIAdAIAdAMAZBcAgwIAfAkAgwEAZBgAgwIAgwAAdBEAfA8AgwEAZBsAPG4B
AAFkHABrEgBsEwB9EwABfBMAgwAAAWcAAH0UAHQCAHQCAHQDAGQdAIMCAGQeAIMCAIMAAH0VAGQf
AGQgAGYCAGQhAGQiAGYCAGQjAGQkAGYCAGQlAGQmAGYCAGQnAGQoAGYCAGQpAGQqAGYCAGYGAH0W
AHwBAGQrAHQCAHQDAGQsAIMCAIMAAGQtAGQuAGQvAGQwAGQxAHwPAGQyAHwWAGQzAGQ0AGQ1AGQ2
AGQ3AGYCAGcBAGQ4AHwQAIMACGcBAFNkAABTKDkAAABOKAEAAABzDQAAAFJlcG9ydFNlY3Rpb25z
BwAAAFJFUVVFU1RzBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlz
AwAAAGdldHMHAAAAYWNjb3VudHMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMOAAAAc291cmNlX3Bh
eW1lbnRzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzCQAAAGZyb21fZGF0ZXMXAAAA
b21pdF9ncm91cGluZ19yZWZlcmVuY2VpAAAAAHMQAAAAc2VjdGlvbl9jYXRlZ29yeXMQAAAAc2lt
dWxhdGlvbl9zdGF0ZXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cxEA
AABmcm9tX2RhdGVfc3VtbWFyeWkBAAAAcygAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2Fj
dGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9zaW11bGF0
aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9zZWN0aW9uX2Nh
dGVnb3J5cywAAABwcmVmZXJyZWRfYWNjb3VudGluZ19vbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMq
AAAAcHJlZmVycmVkX2FjY291bnRpbmdfdHJhbnNhY3Rpb25fZnJvbV9kYXRlcxIAAAByZXN0cmlj
dGVkVHJhdmVyc2VzBgAAAGdldFVpZHMSAAAAc291cmNlX3BheW1lbnRfdWlkcxcAAABkZXN0aW5h
dGlvbl9zZWN0aW9uX3VpZHMIAAAAbm9kZV91aWQoAQAAAHMKAAAAY2xlYXJDYWNoZXMKAAAAcG9y
dGFsX3VybHMPAAAAZ2V0UG9ydGFsT2JqZWN0cxMAAABkZWxpdmVyeS5zdGFydF9kYXRlcxkAAABB
Y2NvdW50aW5nIE9wZXJhdGlvbiBEYXRlcwUAAAB0aXRsZXMFAAAAVGl0bGVzDAAAAHNvdXJjZV9k
ZWJpdHMFAAAARGViaXRzDQAAAHNvdXJjZV9jcmVkaXRzBgAAAENyZWRpdHMJAAAAcmVmZXJlbmNl
cyAAAABBY2NvdW50aW5nIFRyYW5zYWN0aW9uIFJlZmVyZW5jZXMLAAAAbmV0X2JhbGFuY2VzBwAA
AEJhbGFuY2VzBAAAAHBhdGhzDwAAAGdldFBoeXNpY2FsUGF0aHMHAAAAZm9ybV9pZHMlAAAAQWNj
b3VudF92aWV3QWNjb3VudGluZ1RyYW5zYWN0aW9uTGlzdHMOAAAAc2VsZWN0aW9uX25hbWVzGwAA
AGFjb3VudF9wcmVmZXJlbmNlX3NlbGVjdGlvbnMQAAAAc2VsZWN0aW9uX3BhcmFtc3MRAAAAc2Vs
ZWN0aW9uX2NvbHVtbnNzFAAAAGxpc3Rib3hfZGlzcGxheV9tb2RlcwwAAABGbGF0TGlzdE1vZGVz
FAAAAHNlbGVjdGlvbl9zb3J0X29yZGVycxIAAABkZWxpdmVyeS5zdG9wX2RhdGVzCQAAAGFzY2Vu
ZGluZ3MLAAAAcHJlZmVyZW5jZXMoFwAAAHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVwb3J0cw0A
AABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVlc3RzCQAA
AF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXME
AAAATm9uZXMHAAAAYWNjb3VudHMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMOAAAAc291cmNlX3Bh
eW1lbnRzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzCQAAAGZyb21fZGF0ZXMXAAAA
b21pdF9ncm91cGluZ19yZWZlcmVuY2VzBgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNzBwAAAF93
cml0ZV9zFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hlcwoAAABjbGVhckNhY2hlcwYAAAByZXN1
bHRzBgAAAHBvcnRhbHMPAAAAYWNjb3VudF9jb2x1bW5zKBcAAABzGAAAAFByb2R1Y3RzLkVSUDVG
b3JtLlJlcG9ydHMNAAAAUmVwb3J0U2VjdGlvbnMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcA
AAByZXF1ZXN0cwkAAABfZ2V0aXRlbV9zBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rp
b25fY2F0ZWdvcnlzBAAAAE5vbmVzBwAAAGFjY291bnRzEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25z
DgAAAHNvdXJjZV9wYXltZW50cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwkAAABm
cm9tX2RhdGVzFwAAAG9taXRfZ3JvdXBpbmdfcmVmZXJlbmNlcwYAAABwYXJhbXNzCwAAAHByZWZl
cmVuY2VzcwcAAABfd3JpdGVfcxcAAABQcm9kdWN0cy5FUlA1VHlwZS5DYWNoZXMKAAAAY2xlYXJD
YWNoZXMGAAAAcmVzdWx0cwYAAABwb3J0YWxzDwAAAGFjY291bnRfY29sdW1ucygAAAAAKAAAAABz
DwAAAFNjcmlwdCAoUHl0aG9uKXMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50
UmVwb3J0U2VjdGlvbkxpc3QBAAAAc2AAAAAACA0BDwMPAQ8BGAEYARgBDwEYARgCBwEJAQkBCQEJ
AQkBEQQHAQkCCQIJAggDBwEQARQBBwEvAQcBLwEHAS8CDQEHAgYBGwIAAQkBCQQJAQkBCQEPAwkB
GwQGAQwCDwEoAQAAAHMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50UmVwb3J0
U2VjdGlvbkxpc3QoAQAAAHMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50UmVw
b3J0U2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+
AQAAAHMAAAAA</string> </value>
</item>
<item>
<key> <string>_dav_writelocks</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>Products.ERP5Form.Report</string>
<string>ReportSection</string>
<string>_getattr_</string>
<string>context</string>
<string>request</string>
<string>_getitem_</string>
<string>at_date</string>
<string>transaction_section_category</string>
<string>None</string>
<string>account</string>
<string>destination_section</string>
<string>source_payment</string>
<string>transaction_simulation_state</string>
<string>from_date</string>
<string>omit_grouping_reference</string>
<string>params</string>
<string>preferences</string>
<string>_write_</string>
<string>Products.ERP5Type.Cache</string>
<string>clearCache</string>
<string>result</string>
<string>portal</string>
<string>account_columns</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>AccountModule_getAccountStatementReportSectionList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Persistence</string>
<string>PersistentMapping</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_container</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
if organisation == \'\' :\n
organisation = context.REQUEST.get(\'organisation\', None)\n
if organisation is None : \n
organisation = portal.portal_preferences.getPreferredAccountingTransactionSourceSection()\n
\n
organisation = portal.restrictedTraverse(organisation)\n
item_list = [(\'\', \'\')]\n
for bank in organisation.objectValues(portal_type = [\'Bank Account\', \'Cash Register\']):\n
item_list.append((bank.getTitle(), bank.getRelativeUrl()))\n
\n
return item_list\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGQBAGQCAIQBAFoAAGQAAFMoAwAAAE5zAAAAAGMBAAAACAAA
AA8AAABDAAAAc/wAAAB0AAB0AQBkAQCDAgCDAAB9AwB8AABkAgBqAgBvJQABdAAAdAAAdAEAZAMA
gwIAZAQAgwIAZAUAdAQAgwIAfQAAbgEAAXwAAHQEAGoIAG8fAAF0AAB0AAB8AwBkBgCDAgBkBwCD
AgCDAAB9AABuAQABdAAAfAMAZAgAgwIAfAAAgwEAfQAAZAIAZAIAZgIAZwEAfQUAeF0AdAYAdAAA
fAAAZAkAgwIAZAoAZAsAZAwAZwIAgwABgwEARF03AH0HAHQAAHwFAGQNAIMCAHQAAHwHAGQOAIMC
AIMAAHQAAHwHAGQPAIMCAIMAAGYCAIMBAAFxuQBXfAUAU2QAAFMoEAAAAE5zDwAAAGdldFBvcnRh
bE9iamVjdHMAAAAAcwcAAABSRVFVRVNUcwMAAABnZXRzDAAAAG9yZ2FuaXNhdGlvbnMSAAAAcG9y
dGFsX3ByZWZlcmVuY2Vzcy4AAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25Tb3Vy
Y2VTZWN0aW9ucxIAAAByZXN0cmljdGVkVHJhdmVyc2VzDAAAAG9iamVjdFZhbHVlc3MLAAAAcG9y
dGFsX3R5cGVzDAAAAEJhbmsgQWNjb3VudHMNAAAAQ2FzaCBSZWdpc3RlcnMGAAAAYXBwZW5kcwgA
AABnZXRUaXRsZXMOAAAAZ2V0UmVsYXRpdmVVcmwoCAAAAHMJAAAAX2dldGF0dHJfcwcAAABjb250
ZXh0cwYAAABwb3J0YWxzDAAAAG9yZ2FuaXNhdGlvbnMEAAAATm9uZXMJAAAAaXRlbV9saXN0cwkA
AABfZ2V0aXRlcl9zBAAAAGJhbmsoCAAAAHMMAAAAb3JnYW5pc2F0aW9ucwkAAABfZ2V0YXR0cl9z
BwAAAGNvbnRleHRzBgAAAHBvcnRhbHMEAAAATm9uZXMJAAAAaXRlbV9saXN0cwkAAABfZ2V0aXRl
cl9zBAAAAGJhbmsoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzJAAAAEFjY291bnRNb2R1
bGVfZ2V0QmFua0FjY291bnRJdGVtTGlzdAEAAABzFAAAABIBDQElAQ0BHwIVAQ8BJQAJATICKAEA
AABzJAAAAEFjY291bnRNb2R1bGVfZ2V0QmFua0FjY291bnRJdGVtTGlzdCgBAAAAcyQAAABBY2Nv
dW50TW9kdWxlX2dldEJhbmtBY2NvdW50SXRlbUxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5
dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getBankAccountItemList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>organisation = \'\'</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>organisation</string>
<string>_getattr_</string>
<string>context</string>
<string>portal</string>
<string>None</string>
<string>item_list</string>
<string>_getiter_</string>
<string>bank</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<string></string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>AccountModule_getBankAccountItemList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -91,6 +91,7 @@ params = {\n ...@@ -91,6 +91,7 @@ params = {\n
\'simulation_state\' : transaction_simulation_state,\n \'simulation_state\' : transaction_simulation_state,\n
\'accounting_transaction_line_currency\' : None,\n \'accounting_transaction_line_currency\' : None,\n
\'omit_grouping_reference\' : omit_grouping_reference,\n \'omit_grouping_reference\' : omit_grouping_reference,\n
\'from_date_summary\' : 1\n
}\n }\n
\n \n
preferences = {\n preferences = {\n
...@@ -100,42 +101,52 @@ preferences = {\n ...@@ -100,42 +101,52 @@ preferences = {\n
\'preferred_accounting_transaction_section_category\' :\n \'preferred_accounting_transaction_section_category\' :\n
transaction_section_category,\n transaction_section_category,\n
# XXX put omit_grouping_reference in preferences ?\n # XXX put omit_grouping_reference in preferences ?\n
\'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n #\'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n
}\n }\n
\n \n
if from_date:\n if from_date:\n
params[\'from_date\'] = from_date\n params[\'from_date\'] = from_date\n
preferences[\'preferred_accounting_transaction_from_date\'] = from_date\n preferences[\'preferred_accounting_transaction_from_date\'] = from_date\n
\n \n
## FIXME: issue in reporting famework in ERP5 \n
from Products.ERP5Type.Cache import clearCache\n
clearCache() # for preferences\n
\n
result = []\n result = []\n
portal = context.portal_url.getPortalObject()\n portal = context.portal_url.getPortalObject()\n
\n \n
account_columns = (\n account_columns = (\n
(\'source_reference\', \'Reference\'),\n # (\'source_reference\', \'Reference\'),\n
(\'delivery.stop_date\', \'Date\'),\n (\'delivery.start_date\', \'Date\'),\n
(\'title\', \'Title\'),\n (\'title\', \'Title\'),\n
(\'Type\', \'Type\'),\n (\'translated_portal_type\', \'Type\'),\n
(\'third_party\', \'Third Party\'),\n (\'third_party\', \'Third Party\'),\n
(\'simulation_state\', \'State\'),\n (\'translated_simulation_state_title\', \'State\'),\n
(\'source_debit\', \'Debit\'),\n (\'source_debit\', \'Debit\'),\n
(\'source_credit\', \'Credit\'),\n (\'source_credit\', \'Credit\'),\n
(\'source_balance\', \'Balance\'),\n (\'net_balance\', \'Balance\'),\n
)\n )\n
\n \n
if gap :\n if gap :\n
gap_root = [ portal.portal_categories.gap.restrictedTraverse(gap) ] +\\\n gap_value_list = [ portal.portal_categories.gap.restrictedTraverse(gap) ] +\\\n
portal.portal_categories.gap.restrictedTraverse(gap)\\\n portal.portal_categories.gap.restrictedTraverse(gap)\\\n
.Category_getSortedCategoryChildValueList()\n .Category_getSortedCategoryChildValueList()\n
else :\n else :\n
cat = context.portal_preferences.getPreferredAccountingTransactionGap() \\\n cat = \'gap/%s\'%context.portal_preferences.getPreferredAccountingTransactionGap() \\\n
or context.getPortalDefaultGapRoot()\n or context.getPortalDefaultGapRoot()\n
\n \n
gap_root = portal.portal_categories.resolveCategory(cat)\\\n gap_value_list = portal.portal_categories.resolveCategory(cat)\\\n
.Category_getSortedCategoryChildValueList()\n .Category_getSortedCategoryChildValueList()\n
\n \n
# we don\'t want to display accounts that don\'t have any transactions associated,\n
# so we use a cache to see if the account contains transaction or not ( regardless\n
# of from_date )\n
account_inventory_list_cache = {}\n account_inventory_list_cache = {}\n
account_inventory_list_cache_params = params.copy()\n
if account_inventory_list_cache_params.has_key(\'from_date\') :\n
del account_inventory_list_cache_params[\'from_date\']\n
\n \n
for c in gap_root :\n for c in gap_value_list :\n
account_list = c.getGapRelatedValueList(portal_type="Account")\n account_list = c.getGapRelatedValueList(portal_type="Account")\n
strict_account_list = c.getGapRelatedValueList(\n strict_account_list = c.getGapRelatedValueList(\n
portal_type="Account", strict_membership = 1)\n portal_type="Account", strict_membership = 1)\n
...@@ -144,8 +155,8 @@ for c in gap_root :\n ...@@ -144,8 +155,8 @@ for c in gap_root :\n
for account in account_list :\n for account in account_list :\n
if account.getUid() not in account_inventory_list_cache :\n if account.getUid() not in account_inventory_list_cache :\n
account_inventory_list_cache[account.getUid()] = len(portal.\\\n account_inventory_list_cache[account.getUid()] = len(portal.\\\n
portal_simulation.getInventoryList(\n portal_simulation.getInventoryList( omit_simulation = 1,\n
node_uid = account.getUid(), **params))\n node_uid = account.getUid(), **account_inventory_list_cache_params))\n
\n \n
if account_inventory_list_cache[account.getUid()] != 0 :\n if account_inventory_list_cache[account.getUid()] != 0 :\n
skip_branch = 0\n skip_branch = 0\n
...@@ -163,32 +174,54 @@ for c in gap_root :\n ...@@ -163,32 +174,54 @@ for c in gap_root :\n
level = len(c.getPhysicalPath()) - 4,\n level = len(c.getPhysicalPath()) - 4,\n
form_id = None) )\n form_id = None) )\n
\n \n
# TODO: detail for account_type as in trial balance\n
if len(strict_account_list):\n if len(strict_account_list):\n
for account in strict_account_list:\n for account in strict_account_list:\n
if account.getAccountTypeId() in (\'payable\', \'receivable\') :\n if account.getAccountTypeId() in (\'payable\', \'receivable\') :\n
# Entities\n for third_party_path in account.Account_getDestinationSectionList(\n
at_date = at_date,\n
simulation_state = transaction_simulation_state ) :\n
third_party_params = params.copy()\n
if third_party_path is not None :\n
third_party = context.getPortalObject().restrictedTraverse(third_party_path)\n
third_party_params[\'destination_section_uid\'] = third_party.getUid()\n
title = "%s: %s (%s)" % ( c.getId(),\n
account.getTitle(),\n
third_party.getTitle())\n
else :\n
third_party_params[\'no_destination_section_uid\'] = 1\n
title = "%s: %s" % ( c.getId(), account.getTitle())\n
result.append(ReportSection(\n result.append(ReportSection(\n
path = account.getPhysicalPath(),\n path = account.getPhysicalPath(),\n
title = "%s: %s" % (c.getId(), account.getTitle()),\n title = title,\n
level = 9,\n level = 9,\n
form_id = \'Account_viewAccountingTransactionList\',\n form_id = \'Account_viewAccountingTransactionList\',\n
selection_name = \'acount_selection\',\n selection_name = \'acount_preference_selection\',\n
selection_params = params,\n selection_params = third_party_params.copy(),\n
selection_columns = account_columns,\n selection_columns = account_columns,\n
listbox_display_mode = \'FlatListMode\',\n listbox_display_mode = \'FlatListMode\',\n
selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n
preferences = preferences ))\n preferences = preferences ))\n
\n \n
elif account.getAccountTypeId() == \'bank\' :\n elif account.getAccountTypeId() in (\'bank\', \'cash\') :\n
# Bank Account\n # Bank Account\n
for bank_account_path in account.Account_getSourcePaymentList() :\n
bank_params = params.copy()\n
if bank_account_path is not None :\n
bank_account = context.getPortalObject().restrictedTraverse(bank_account_path)\n
bank_params[\'source_payment_uid\'] = bank_account.getUid()\n
title = "%s: %s (%s)" % ( c.getId(),\n
account.getTitle(),\n
bank_account.getTitle())\n
else :\n
bank_params[\'no_source_payment_uid\'] = 1\n
title = "%s: %s" % ( c.getId(), account.getTitle())\n
result.append(ReportSection(\n result.append(ReportSection(\n
path = account.getPhysicalPath(),\n path = account.getPhysicalPath(),\n
title = "%s: %s" % (c.getId(), account.getTitle()),\n title = title,\n
level = 9,\n level = 9,\n
form_id = \'Account_viewAccountingTransactionList\',\n form_id = \'Account_viewAccountingTransactionList\',\n
selection_name = \'acount_selection\',\n selection_name = \'acount_preference_selection\',\n
selection_params = params,\n selection_params = bank_params.copy(),\n
selection_columns = account_columns,\n selection_columns = account_columns,\n
listbox_display_mode = \'FlatListMode\',\n listbox_display_mode = \'FlatListMode\',\n
selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n
...@@ -200,7 +233,7 @@ for c in gap_root :\n ...@@ -200,7 +233,7 @@ for c in gap_root :\n
title = "%s: %s" % (c.getId(), account.getTitle()),\n title = "%s: %s" % (c.getId(), account.getTitle()),\n
level = 9,\n level = 9,\n
form_id = \'Account_viewAccountingTransactionList\',\n form_id = \'Account_viewAccountingTransactionList\',\n
selection_name = \'acount_selection\',\n selection_name = \'acount_preference_selection\',\n
selection_params = params,\n selection_params = params,\n
selection_columns = account_columns,\n selection_columns = account_columns,\n
listbox_display_mode = \'FlatListMode\',\n listbox_display_mode = \'FlatListMode\',\n
...@@ -213,90 +246,113 @@ return result\n ...@@ -213,90 +246,113 @@ return result\n
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAACAAAABAAAAAQwAA <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAACoAAABOAAAAQwAA
AHNGBgAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE AHNeCAAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE
AIMCAH0HAHQFAHwEAGQFAIMCAH0IAHQCAHwEAGQGAIMCAGQHAHQJAIMCAH0KAHQCAHwEAGQGAIMC AIMCAH0HAHQFAHwEAGQFAIMCAH0IAHQCAHwEAGQGAIMCAGQHAHQJAIMCAH0KAHQCAHwEAGQGAIMC
AGQIAHQJAIMCAH0LAHQCAHwEAGQGAIMCAGQJAGQKAIMCAH0MAHQCAHwEAGQGAIMCAGQLAGQMAIMC AGQIAHQJAIMCAH0LAHQCAHwEAGQGAIMCAGQJAGQKAIMCAH0MAHQCAHwEAGQGAIMCAGQLAGQMAIMC
AH0NAHQCAHwEAGQGAIMCAGQNAGQMAIMCAH0OAGgAAARkAwB8BgADPARkDgB8BwADPARkBAB8BwAD AH0NAHQCAHwEAGQGAIMCAGQNAGQMAIMCAH0OAGgAAARkAwB8BgADPARkDgB8BwADPARkBAB8BwAD
PARkDwB8CAADPARkEAB0CQADPARkDQB8DgADPH0PAGgAAARkEQB8BgADPARkEgB8CAADPARkEwB8 PARkDwB8CAADPARkEAB0CQADPARkDQB8DgADPARkEQBkCgADPH0PAGgAAARkEgB8BgADPARkEwB8
BwADPARkFAB8DgADPH0QAHwKAG8kAAF8CgB0EQB8DwCDAQBkBwA8fAoAdBEAfBAAgwEAZBUAPG4B CAADPARkFAB8BwADPH0QAHwKAG8kAAF8CgB0EQB8DwCDAQBkBwA8fAoAdBEAfBAAgwEAZBUAPG4B
AAFnAAB9EgB0AgB0AgB0AwBkFgCDAgBkFwCDAgCDAAB9EwBkGABkGQBmAgBkGgBkGwBmAgBkHABk AAFkFgBrEgBsEwB9EwABfBMAgwAAAWcAAH0UAHQCAHQCAHQDAGQXAIMCAGQYAIMCAIMAAH0VAGQZ
HQBmAgBkHgBkHgBmAgBkHwBkIABmAgBkDwBkIQBmAgBkIgBkIwBmAgBkJABkJQBmAgBkJgBkJwBm AGQaAGYCAGQbAGQcAGYCAGQdAGQeAGYCAGQfAGQgAGYCAGQhAGQiAGYCAGQjAGQkAGYCAGQlAGQm
AgBmCQB9FAB8CwBvXwABdAIAdAIAdAIAfBMAZCgAgwIAZAgAgwIAZCkAgwIAfAsAgwEAZwEAdAIA AGYCAGQnAGQoAGYCAGYIAH0WAHwLAG9fAAF0AgB0AgB0AgB8FQBkKQCDAgBkCACDAgBkKgCDAgB8
dAIAdAIAdAIAfBMAZCgAgwIAZAgAgwIAZCkAgwIAfAsAgwEAZCoAgwIAgwAAF30VAG5ZAAF0AgB0 CwCDAQBnAQB0AgB0AgB0AgB0AgB8FQBkKQCDAgBkCACDAgBkKgCDAgB8CwCDAQBkKwCDAgCDAAAX
AgB0AwBkKwCDAgBkLACDAgCDAABwEAABdAIAdAMAZC0AgwIAgwAAfRYAdAIAdAIAdAIAfBMAZCgA fRcAbl0AAWQsAHQCAHQCAHQDAGQtAIMCAGQuAIMCAIMAABZwEAABdAIAdAMAZC8AgwIAgwAAfRgA
gwIAZC4AgwIAfBYAgwEAZCoAgwIAgwAAfRUAaAAAfRcAeK0DdBgAfBUAgwEARF2fA30ZAHQCAHwZ dAIAdAIAdAIAfBUAZCkAgwIAZDAAgwIAfBgAgwEAZCsAgwIAgwAAfRcAaAAAfRkAdAIAfA8AZDEA
AGQvAIMCAGQwAGQxAIMAAX0aAHQCAHwZAGQvAIMCAGQwAGQxAGQyAGQKAIMAAn0bAGQKAH0cAHiA gwIAgwAAfRoAdAIAfBoAZDIAgwIAZAcAgwEAbxEAAXQRAHwaAIMBAGQHAD1uAQABeH0FdBsAfBcA
AHQYAHwaAIMBAERdcgB9HQB0AgB8HQBkMwCDAgCDAAB8FwBqBwBvUwABdB4AdB8AdAIAdAIAfBMA gwEARF1vBX0cAHQCAHwcAGQzAIMCAGQ0AGQ1AIMAAX0dAHQCAHwcAGQzAIMCAGQ0AGQ1AGQ2AGQK
ZDQAgwIAZDUAgwIAZDYAdAIAfB0AZDMAgwIAgwAAfA8AjQEBgwEAdBEAfBcAgwEAdAIAfB0AZDMA AIMAAn0eAGQKAH0fAHiGAHQbAHwdAIMBAERdeAB9IAB0AgB8IABkNwCDAgCDAAB8GQBqBwBvWQAB
gwIAgwAAPHHqAgFx6gJXdAUAfBcAdAIAfB0AZDMAgwIAgwAAgwIAZAwAagMAbwoAAWQMAH0cAG4B dCEAdCIAdAIAdAIAfBUAZDgAgwIAZDkAgwIAZDoAZAoAZDsAdAIAfCAAZDcAgwIAgwAAfBoAjQEC
AAF8HABvBwABcZsCbgEAAXwNAG8dAAF0HgB8GgCDAQBvEAABdB4AfBsAgwEAZAoAagMAb3YAAXQC gwEAdBEAfBkAgwEAdAIAfCAAZDcAgwIAgwAAPHEyAwFxMgNXdAUAfBkAdAIAfCAAZDcAgwIAgwAA
AHwSAGQ3AIMCAHwBAGQ4AHQCAHwZAGQ5AIMCAIMAAGQcAGQ6AHQCAHwZAGQ7AIMCAIMAAHQCAHwZ gwIAZAwAagMAbwoAAWQMAH0fAG4BAAF8HwBvBwABceMCbgEAAXwNAG8dAAF0IQB8HQCDAQBvEAAB
AGQ8AIMCAIMAAGYCABZkPQB0HgB0AgB8GQBkOQCDAgCDAACDAQBkPgAYZD8AdAkAgwAEgwEAAW4B dCEAfB4AgwEAZAoAagMAb3YAAXQCAHwUAGQ8AIMCAHwBAGQ9AHQCAHwcAGQ+AIMCAIMAAGQbAGQ/
AAF0HgB8GwCDAQBv9gEBePMBdBgAfBsAgwEARF3hAX0dAHQCAHwdAGRAAIMCAIMAAGRBAGRCAGYC AHQCAHwcAGRAAIMCAIMAAHQCAHwcAGRBAIMCAIMAAGYCABZkQgB0IQB0AgB8HABkPgCDAgCDAACD
AGoGAG+NAAF0AgB8EgBkNwCDAgB8AQBkOAB0AgB8HQBkOQCDAgCDAABkHABkOgB0AgB8GQBkOwCD AQBkQwAYZEQAdAkAgwAEgwEAAW4BAAF0IQB8HgCDAQBvwAMBeL0DdBsAfB4AgwEARF2rA30gAHQC
AgCDAAB0AgB8HQBkPACDAgCDAABmAgAWZD0AZEMAZD8AZEQAZEUAZEYAZEcAfA8AZEgAfBQAZEkA AHwgAGRFAIMCAIMAAGRGAGRHAGYCAGoGAG91AQF4gwN0GwB0AgB8IABkSACDAgBkAwB8BgBkDwB8
ZEoAZEsAZBoAZEwAZgIAZwEAZE0AfBAAgwAKgwEAAXFRBAF0AgB8HQBkQACDAgCDAABkTgBqAgBv CACDAAKDAQBEXUgBfSMAdAIAfA8AZDEAgwIAgwAAfSQAfCMAdAkAagkAb3gAAXQCAHQCAHQDAGQY
jQABdAIAfBIAZDcAgwIAfAEAZDgAdAIAfB0AZDkAgwIAgwAAZBwAZDoAdAIAfBkAZDsAgwIAgwAA AIMCAIMAAGQqAIMCAHwjAIMBAH0lAHQCAHwlAGQ3AIMCAIMAAHQRAHwkAIMBAGRJADxkSgB0AgB8
dAIAfB0AZDwAgwIAgwAAZgIAFmQ9AGRDAGQ/AGREAGRFAGRGAGRHAHwPAGRIAHwUAGRJAGRKAGRL HABkQACDAgCDAAB0AgB8IABkQQCDAgCDAAB0AgB8JQBkQQCDAgCDAABmAwAWfSYAbjkAAWQKAHQR
AGQaAGRMAGYCAGcBAGRNAHwQAIMACoMBAAFxUQQBdAIAfBIAZDcAgwIAfAEAZDgAdAIAfB0AZDkA AHwkAIMBAGRLADxkPwB0AgB8HABkQACDAgCDAAB0AgB8IABkQQCDAgCDAABmAgAWfSYAdAIAfBQA
gwIAgwAAZBwAZDoAdAIAfBkAZDsAgwIAgwAAdAIAfB0AZDwAgwIAgwAAZgIAFmQ9AGRDAGQ/AGRE ZDwAgwIAfAEAZD0AdAIAfCAAZD4AgwIAgwAAZBsAfCYAZEIAZEwAZEQAZE0AZE4AZE8AZFAAdAIA
AGRFAGRGAGRHAHwPAGRIAHwUAGRJAGRKAGRLAGQaAGRMAGYCAGcBAGRNAHwQAIMACoMBAAFxUQRX fCQAZDEAgwIAgwAAZFEAfBYAZFIAZFMAZFQAZFUAZFYAZgIAZwEAZFcAfBAAgwAKgwEAAXHpBFdx
cZsCAXGbAld8EgBTZAAAUyhPAAAATigBAAAAcw0AAABSZXBvcnRTZWN0aW9ucwcAAABSRVFVRVNU nwQBdAIAfCAAZEUAgwIAgwAAZFgAZFkAZgIAagYAb2kBAXjvAXQbAHQCAHwgAGRaAIMCAIMAAIMB
cwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0aW9uX2NhdGVnb3J5cxwAAAB0cmFuc2Fj AERdSAF9JwB0AgB8DwBkMQCDAgCDAAB9KAB8JwB0CQBqCQBveAABdAIAdAIAdAMAZBgAgwIAgwAA
dGlvbl9zaW11bGF0aW9uX3N0YXRlcwMAAABnZXRzCQAAAGZyb21fZGF0ZXMDAAAAZ2FwcxMAAABv ZCoAgwIAfCcAgwEAfSkAdAIAfCkAZDcAgwIAgwAAdBEAfCgAgwEAZFsAPGRKAHQCAHwcAGRAAIMC
bWl0X2VtcHR5X2FjY291bnRzaQEAAABzEgAAAGRpc3BsYXlfY2F0ZWdvcmllc2kAAAAAcxcAAABv AIMAAHQCAHwgAGRBAIMCAIMAAHQCAHwpAGRBAIMCAIMAAGYDABZ9JgBuOQABZAoAdBEAfCgAgwEA
bWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMQAAAAc2ltdWxhdGlv ZFwAPGQ/AHQCAHwcAGRAAIMCAIMAAHQCAHwgAGRBAIMCAIMAAGYCABZ9JgB0AgB8FABkPACDAgB8
bl9zdGF0ZXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cygAAABwcmVm AQBkPQB0AgB8IABkPgCDAgCDAABkGwB8JgBkQgBkTABkRABkTQBkTgBkTwBkUAB0AgB8KABkMQCD
ZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3Vu AgCDAABkUQB8FgBkUgBkUwBkVABkVQBkVgBmAgBnAQBkVwB8EACDAAqDAQABcXEGV3GfBAF0AgB8
dGluZ190cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGlu FABkPACDAgB8AQBkPQB0AgB8IABkPgCDAgCDAABkGwBkPwB0AgB8HABkQACDAgCDAAB0AgB8IABk
Z190cmFuc2FjdGlvbl9zZWN0aW9uX2NhdGVnb3J5cywAAABwcmVmZXJyZWRfYWNjb3VudGluZ19v QQCDAgCDAABmAgAWZEIAZEwAZEQAZE0AZE4AZE8AZFAAfA8AZFEAfBYAZFIAZFMAZFQAZFUAZFYA
bWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMqAAAAcHJlZmVycmVkX2FjY291bnRpbmdfdHJhbnNhY3Rp ZgIAZwEAZFcAfBAAgwAKgwEAAXGfBFdx4wIBceMCV3wUAFNkAABTKF0AAABOKAEAAABzDQAAAFJl
b25fZnJvbV9kYXRlcwoAAABwb3J0YWxfdXJscw8AAABnZXRQb3J0YWxPYmplY3RzEAAAAHNvdXJj cG9ydFNlY3Rpb25zBwAAAFJFUVVFU1RzBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rp
ZV9yZWZlcmVuY2VzCQAAAFJlZmVyZW5jZXMSAAAAZGVsaXZlcnkuc3RvcF9kYXRlcwQAAABEYXRl b25fY2F0ZWdvcnlzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzAwAAAGdldHMJAAAA
cwUAAAB0aXRsZXMFAAAAVGl0bGVzBAAAAFR5cGVzCwAAAHRoaXJkX3BhcnR5cwsAAABUaGlyZCBQ ZnJvbV9kYXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNjb3VudHNpAQAAAHMSAAAAZGlzcGxh
YXJ0eXMFAAAAU3RhdGVzDAAAAHNvdXJjZV9kZWJpdHMFAAAARGViaXRzDQAAAHNvdXJjZV9jcmVk eV9jYXRlZ29yaWVzaQAAAABzFwAAAG9taXRfZ3JvdXBpbmdfcmVmZXJlbmNlcxAAAABzZWN0aW9u
aXRzBgAAAENyZWRpdHMOAAAAc291cmNlX2JhbGFuY2VzBwAAAEJhbGFuY2VzEQAAAHBvcnRhbF9j X2NhdGVnb3J5cxAAAABzaW11bGF0aW9uX3N0YXRlcyQAAABhY2NvdW50aW5nX3RyYW5zYWN0aW9u
YXRlZ29yaWVzcxIAAAByZXN0cmljdGVkVHJhdmVyc2VzKAAAAENhdGVnb3J5X2dldFNvcnRlZENh X2xpbmVfY3VycmVuY3lzEQAAAGZyb21fZGF0ZV9zdW1tYXJ5cygAAABwcmVmZXJyZWRfYWNjb3Vu
dGVnb3J5Q2hpbGRWYWx1ZUxpc3RzEgAAAHBvcnRhbF9wcmVmZXJlbmNlc3MkAAAAZ2V0UHJlZmVy dGluZ190cmFuc2FjdGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2Fj
cmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uR2FwcxcAAABnZXRQb3J0YWxEZWZhdWx0R2FwUm9vdHMP dGlvbl9zaW11bGF0aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlv
AAAAcmVzb2x2ZUNhdGVnb3J5cxYAAABnZXRHYXBSZWxhdGVkVmFsdWVMaXN0cwsAAABwb3J0YWxf bl9zZWN0aW9uX2NhdGVnb3J5cyoAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9m
dHlwZXMHAAAAQWNjb3VudHMRAAAAc3RyaWN0X21lbWJlcnNoaXBzBgAAAGdldFVpZHMRAAAAcG9y cm9tX2RhdGUoAQAAAHMKAAAAY2xlYXJDYWNoZXMKAAAAcG9ydGFsX3VybHMPAAAAZ2V0UG9ydGFs
dGFsX3NpbXVsYXRpb25zEAAAAGdldEludmVudG9yeUxpc3RzCAAAAG5vZGVfdWlkcwYAAABhcHBl T2JqZWN0cxMAAABkZWxpdmVyeS5zdGFydF9kYXRlcwQAAABEYXRlcwUAAAB0aXRsZXMFAAAAVGl0
bmRzBAAAAHBhdGhzDwAAAGdldFBoeXNpY2FsUGF0aHMGAAAAJXM6ICVzcwUAAABnZXRJZHMIAAAA bGVzFgAAAHRyYW5zbGF0ZWRfcG9ydGFsX3R5cGVzBAAAAFR5cGVzCwAAAHRoaXJkX3BhcnR5cwsA
Z2V0VGl0bGVzBQAAAGxldmVsaQQAAABzBwAAAGZvcm1faWRzEAAAAGdldEFjY291bnRUeXBlSWRz AABUaGlyZCBQYXJ0eXMhAAAAdHJhbnNsYXRlZF9zaW11bGF0aW9uX3N0YXRlX3RpdGxlcwUAAABT
BwAAAHBheWFibGVzCgAAAHJlY2VpdmFibGVpCQAAAHMlAAAAQWNjb3VudF92aWV3QWNjb3VudGlu dGF0ZXMMAAAAc291cmNlX2RlYml0cwUAAABEZWJpdHMNAAAAc291cmNlX2NyZWRpdHMGAAAAQ3Jl
Z1RyYW5zYWN0aW9uTGlzdHMOAAAAc2VsZWN0aW9uX25hbWVzEAAAAGFjb3VudF9zZWxlY3Rpb25z ZGl0cwsAAABuZXRfYmFsYW5jZXMHAAAAQmFsYW5jZXMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzEgAA
EAAAAHNlbGVjdGlvbl9wYXJhbXNzEQAAAHNlbGVjdGlvbl9jb2x1bW5zcxQAAABsaXN0Ym94X2Rp AHJlc3RyaWN0ZWRUcmF2ZXJzZXMoAAAAQ2F0ZWdvcnlfZ2V0U29ydGVkQ2F0ZWdvcnlDaGlsZFZh
c3BsYXlfbW9kZXMMAAAARmxhdExpc3RNb2RlcxQAAABzZWxlY3Rpb25fc29ydF9vcmRlcnMJAAAA bHVlTGlzdHMGAAAAZ2FwLyVzcxIAAABwb3J0YWxfcHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJl
YXNjZW5kaW5ncwsAAABwcmVmZXJlbmNlc3MEAAAAYmFuayggAAAAcxgAAABQcm9kdWN0cy5FUlA1 ZEFjY291bnRpbmdUcmFuc2FjdGlvbkdhcHMXAAAAZ2V0UG9ydGFsRGVmYXVsdEdhcFJvb3RzDwAA
Rm9ybS5SZXBvcnRzDQAAAFJlcG9ydFNlY3Rpb25zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMH AHJlc29sdmVDYXRlZ29yeXMEAAAAY29weXMHAAAAaGFzX2tleXMWAAAAZ2V0R2FwUmVsYXRlZFZh
AAAAcmVxdWVzdHMJAAAAX2dldGl0ZW1fcwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0 bHVlTGlzdHMLAAAAcG9ydGFsX3R5cGVzBwAAAEFjY291bnRzEQAAAHN0cmljdF9tZW1iZXJzaGlw
aW9uX2NhdGVnb3J5cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwQAAABOb25lcwkA cwYAAABnZXRVaWRzEQAAAHBvcnRhbF9zaW11bGF0aW9ucxAAAABnZXRJbnZlbnRvcnlMaXN0cw8A
AABmcm9tX2RhdGVzAwAAAGdhcHMTAAAAb21pdF9lbXB0eV9hY2NvdW50c3MSAAAAZGlzcGxheV9j AABvbWl0X3NpbXVsYXRpb25zCAAAAG5vZGVfdWlkcwYAAABhcHBlbmRzBAAAAHBhdGhzDwAAAGdl
YXRlZ29yaWVzcxcAAABvbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMGAAAAcGFyYW1zcwsAAABwcmVm dFBoeXNpY2FsUGF0aHMGAAAAJXM6ICVzcwUAAABnZXRJZHMIAAAAZ2V0VGl0bGVzBQAAAGxldmVs
ZXJlbmNlc3MHAAAAX3dyaXRlX3MGAAAAcmVzdWx0cwYAAABwb3J0YWxzDwAAAGFjY291bnRfY29s aQQAAABzBwAAAGZvcm1faWRzEAAAAGdldEFjY291bnRUeXBlSWRzBwAAAHBheWFibGVzCgAAAHJl
dW1uc3MIAAAAZ2FwX3Jvb3RzAwAAAGNhdHMcAAAAYWNjb3VudF9pbnZlbnRvcnlfbGlzdF9jYWNo Y2VpdmFibGVzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdHMXAAAAZGVzdGlu
ZXMJAAAAX2dldGl0ZXJfcwEAAABjcwwAAABhY2NvdW50X2xpc3RzEwAAAHN0cmljdF9hY2NvdW50 YXRpb25fc2VjdGlvbl91aWRzCwAAACVzOiAlcyAoJXMpcxoAAABub19kZXN0aW5hdGlvbl9zZWN0
X2xpc3RzCwAAAHNraXBfYnJhbmNocwcAAABhY2NvdW50cwMAAABsZW5zBwAAAF9hcHBseV8oIAAA aW9uX3VpZGkJAAAAcyUAAABBY2NvdW50X3ZpZXdBY2NvdW50aW5nVHJhbnNhY3Rpb25MaXN0cw4A
AHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVwb3J0cw0AAABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0 AABzZWxlY3Rpb25fbmFtZXMbAAAAYWNvdW50X3ByZWZlcmVuY2Vfc2VsZWN0aW9ucxAAAABzZWxl
YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVlc3RzCQAAAF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMc Y3Rpb25fcGFyYW1zcxEAAABzZWxlY3Rpb25fY29sdW1uc3MUAAAAbGlzdGJveF9kaXNwbGF5X21v
AAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXMcAAAAdHJhbnNhY3Rpb25fc2ltdWxhdGlv ZGVzDAAAAEZsYXRMaXN0TW9kZXMUAAAAc2VsZWN0aW9uX3NvcnRfb3JkZXJzEgAAAGRlbGl2ZXJ5
bl9zdGF0ZXMEAAAATm9uZXMJAAAAZnJvbV9kYXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNj LnN0b3BfZGF0ZXMJAAAAYXNjZW5kaW5ncwsAAABwcmVmZXJlbmNlc3MEAAAAYmFua3MEAAAAY2Fz
b3VudHNzEgAAAGRpc3BsYXlfY2F0ZWdvcmllc3MXAAAAb21pdF9ncm91cGluZ19yZWZlcmVuY2Vz aHMcAAAAQWNjb3VudF9nZXRTb3VyY2VQYXltZW50TGlzdHMSAAAAc291cmNlX3BheW1lbnRfdWlk
BgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNzBwAAAF93cml0ZV9zBgAAAHJlc3VsdHMGAAAAcG9y cxUAAABub19zb3VyY2VfcGF5bWVudF91aWQoKgAAAHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVw
dGFscw8AAABhY2NvdW50X2NvbHVtbnNzCAAAAGdhcF9yb290cwMAAABjYXRzHAAAAGFjY291bnRf b3J0cw0AAABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVl
aW52ZW50b3J5X2xpc3RfY2FjaGVzCQAAAF9nZXRpdGVyX3MBAAAAY3MMAAAAYWNjb3VudF9saXN0 c3RzCQAAAF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRl
cxMAAABzdHJpY3RfYWNjb3VudF9saXN0cwsAAABza2lwX2JyYW5jaHMHAAAAYWNjb3VudHMDAAAA Z29yeXMcAAAAdHJhbnNhY3Rpb25fc2ltdWxhdGlvbl9zdGF0ZXMEAAAATm9uZXMJAAAAZnJvbV9k
bGVucwcAAABfYXBwbHlfKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcy8AAABBY2NvdW50 YXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNjb3VudHNzEgAAAGRpc3BsYXlfY2F0ZWdvcmll
TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0aW9uTGlzdAEAAABzugAAAAADDQEPAg8B c3MXAAAAb21pdF9ncm91cGluZ19yZWZlcmVuY2VzBgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNz
DwEPARgBGAEYARgDGAMHAQkBCQEJAQkBCQEIAwcBCQIJAgkCCAMHARABFAIGARsCAAEJAQkBCQEJ BwAAAF93cml0ZV9zFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hlcwoAAABjbGVhckNhY2hlcwYA
AQkBCQEJAQkBDwMHATMBLAMfAQ8CKgMGAg0ABgEYAR4DBgENAAYBGQEhAjYCIgEKAwcBBwIHAQ0B AAByZXN1bHRzBgAAAHBvcnRhbHMPAAAAYWNjb3VudF9jb2x1bW5zcw4AAABnYXBfdmFsdWVfbGlz
FgESARIBJQEcAQ4DDQENAAYBIgISARIBNwQGAQwCDwEOAhwCEgESATcEBgEMAg8BEQMSARIBNwQG dHMDAAAAY2F0cxwAAABhY2NvdW50X2ludmVudG9yeV9saXN0X2NhY2hlcyMAAABhY2NvdW50X2lu
AQwCDwEWAigBAAAAcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0 dmVudG9yeV9saXN0X2NhY2hlX3BhcmFtc3MJAAAAX2dldGl0ZXJfcwEAAABjcwwAAABhY2NvdW50
aW9uTGlzdCgBAAAAcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0 X2xpc3RzEwAAAHN0cmljdF9hY2NvdW50X2xpc3RzCwAAAHNraXBfYnJhbmNocwcAAABhY2NvdW50
aW9uTGlzdCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAA cwMAAABsZW5zBwAAAF9hcHBseV9zEAAAAHRoaXJkX3BhcnR5X3BhdGhzEgAAAHRoaXJkX3BhcnR5
AAA=</string> </value> X3BhcmFtc3MLAAAAdGhpcmRfcGFydHlzBQAAAHRpdGxlcxEAAABiYW5rX2FjY291bnRfcGF0aHML
AAAAYmFua19wYXJhbXNzDAAAAGJhbmtfYWNjb3VudCgqAAAAcxgAAABQcm9kdWN0cy5FUlA1Rm9y
bS5SZXBvcnRzDQAAAFJlcG9ydFNlY3Rpb25zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMHAAAA
cmVxdWVzdHMJAAAAX2dldGl0ZW1fcwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0aW9u
X2NhdGVnb3J5cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwQAAABOb25lcwkAAABm
cm9tX2RhdGVzAwAAAGdhcHMTAAAAb21pdF9lbXB0eV9hY2NvdW50c3MSAAAAZGlzcGxheV9jYXRl
Z29yaWVzcxcAAABvbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMGAAAAcGFyYW1zcwsAAABwcmVmZXJl
bmNlc3MHAAAAX3dyaXRlX3MXAAAAUHJvZHVjdHMuRVJQNVR5cGUuQ2FjaGVzCgAAAGNsZWFyQ2Fj
aGVzBgAAAHJlc3VsdHMGAAAAcG9ydGFscw8AAABhY2NvdW50X2NvbHVtbnNzDgAAAGdhcF92YWx1
ZV9saXN0cwMAAABjYXRzHAAAAGFjY291bnRfaW52ZW50b3J5X2xpc3RfY2FjaGVzIwAAAGFjY291
bnRfaW52ZW50b3J5X2xpc3RfY2FjaGVfcGFyYW1zcwkAAABfZ2V0aXRlcl9zAQAAAGNzDAAAAGFj
Y291bnRfbGlzdHMTAAAAc3RyaWN0X2FjY291bnRfbGlzdHMLAAAAc2tpcF9icmFuY2hzBwAAAGFj
Y291bnRzAwAAAGxlbnMHAAAAX2FwcGx5X3MQAAAAdGhpcmRfcGFydHlfcGF0aHMSAAAAdGhpcmRf
cGFydHlfcGFyYW1zcwsAAAB0aGlyZF9wYXJ0eXMFAAAAdGl0bGVzEQAAAGJhbmtfYWNjb3VudF9w
YXRocwsAAABiYW5rX3BhcmFtc3MMAAAAYmFua19hY2NvdW50KAAAAAAoAAAAAHMPAAAAU2NyaXB0
IChQeXRob24pcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0aW9u
TGlzdAEAAABz7gAAAAADDQEPAg8BDwEPARgBGAEYARgDGAMHAQkBCQEJAQkBCQERBAcBCQIJAggF
BwEQARQDDQEHAgYBGwIAAgkBCQEJAQkBCQEJAQkBDwMHATMBLAMjAQ8CKgYGARUBFgEOAg0ABgEY
AR4DBgENAAYBGQEnAjYCIgEKAwcBBwIHAQ0BFgESARIBJQEcAQ4CDQENAAYBHwEVAQYBEAESAQ0B
IQEcARUBDwEXAhABKwESAQ8BGwQPAQwCDwESAh8CGQAGARIBDQEhARwBFQEPARcCEAErARIBDwEb
BA8BDAIPARUDEgESATcEBgEMAg8BFgIoAQAAAHMvAAAAQWNjb3VudE1vZHVsZV9nZXRHZW5lcmFs
TGVkZ2VyUmVwb3J0U2VjdGlvbkxpc3QoAQAAAHMvAAAAQWNjb3VudE1vZHVsZV9nZXRHZW5lcmFs
TGVkZ2VyUmVwb3J0U2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAA
ADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
...@@ -306,7 +362,7 @@ AAA=</string> </value> ...@@ -306,7 +362,7 @@ AAA=</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
...@@ -354,12 +410,15 @@ AAA=</string> </value> ...@@ -354,12 +410,15 @@ AAA=</string> </value>
<string>params</string> <string>params</string>
<string>preferences</string> <string>preferences</string>
<string>_write_</string> <string>_write_</string>
<string>Products.ERP5Type.Cache</string>
<string>clearCache</string>
<string>result</string> <string>result</string>
<string>portal</string> <string>portal</string>
<string>account_columns</string> <string>account_columns</string>
<string>gap_root</string> <string>gap_value_list</string>
<string>cat</string> <string>cat</string>
<string>account_inventory_list_cache</string> <string>account_inventory_list_cache</string>
<string>account_inventory_list_cache_params</string>
<string>_getiter_</string> <string>_getiter_</string>
<string>c</string> <string>c</string>
<string>account_list</string> <string>account_list</string>
...@@ -368,6 +427,13 @@ AAA=</string> </value> ...@@ -368,6 +427,13 @@ AAA=</string> </value>
<string>account</string> <string>account</string>
<string>len</string> <string>len</string>
<string>_apply_</string> <string>_apply_</string>
<string>third_party_path</string>
<string>third_party_params</string>
<string>third_party</string>
<string>title</string>
<string>bank_account_path</string>
<string>bank_params</string>
<string>bank_account</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
...@@ -73,7 +73,7 @@ name = selection.getName()\n ...@@ -73,7 +73,7 @@ name = selection.getName()\n
object = brain.getObject()\n object = brain.getObject()\n
object = object.getDestinationValue()\n object = object.getDestinationValue()\n
if object is None:\n if object is None:\n
url = "#"\n url = None\n
else:\n else:\n
url = object.absolute_url() + \'/view?selection_index=%s&selection_name=%s&reset=1\' % (index, name)\n url = object.absolute_url() + \'/view?selection_index=%s&selection_name=%s&reset=1\' % (index, name)\n
\n \n
...@@ -86,22 +86,22 @@ return url\n ...@@ -86,22 +86,22 @@ return url\n
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAAAgAAAAI <value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAAAgAAAAI
AAAAQwAAAHOHAAAAdAAAfAEAZAEAgwIAgwAAfQMAdAAAfAEAZAIAgwIAgwAAfQQAdAAAfAAAZAMA AAAAQwAAAHOHAAAAdAAAfAEAZAEAgwIAgwAAfQMAdAAAfAEAZAIAgwIAgwAAfQQAdAAAfAAAZAMA
gwIAgwAAfQUAdAAAfAUAZAQAgwIAgwAAfQUAfAUAdAYAaggAbwoAAWQFAH0HAG4hAAF0AAB8BQBk gwIAgwAAfQUAdAAAfAUAZAQAgwIAgwAAfQUAfAUAdAYAaggAbwoAAXQGAH0HAG4hAAF0AAB8BQBk
BgCDAgCDAABkBwB8AwB8BABmAgAWF30HAHwHAFNkAABTKAgAAABOcwgAAABnZXRJbmRleHMHAAAA BQCDAgCDAABkBgB8AwB8BABmAgAWF30HAHwHAFNkAABTKAcAAABOcwgAAABnZXRJbmRleHMHAAAA
Z2V0TmFtZXMJAAAAZ2V0T2JqZWN0cxMAAABnZXREZXN0aW5hdGlvblZhbHVlcwEAAAAjcwwAAABh Z2V0TmFtZXMJAAAAZ2V0T2JqZWN0cxMAAABnZXREZXN0aW5hdGlvblZhbHVlcwwAAABhYnNvbHV0
YnNvbHV0ZV91cmxzMgAAAC92aWV3P3NlbGVjdGlvbl9pbmRleD0lcyZzZWxlY3Rpb25fbmFtZT0l ZV91cmxzMgAAAC92aWV3P3NlbGVjdGlvbl9pbmRleD0lcyZzZWxlY3Rpb25fbmFtZT0lcyZyZXNl
cyZyZXNldD0xKAgAAABzCQAAAF9nZXRhdHRyX3MJAAAAc2VsZWN0aW9ucwUAAABpbmRleHMEAAAA dD0xKAgAAABzCQAAAF9nZXRhdHRyX3MJAAAAc2VsZWN0aW9ucwUAAABpbmRleHMEAAAAbmFtZXMF
bmFtZXMFAAAAYnJhaW5zBgAAAG9iamVjdHMEAAAATm9uZXMDAAAAdXJsKAgAAABzBQAAAGJyYWlu AAAAYnJhaW5zBgAAAG9iamVjdHMEAAAATm9uZXMDAAAAdXJsKAgAAABzBQAAAGJyYWlucwkAAABz
cwkAAABzZWxlY3Rpb25zCQAAAF9nZXRhdHRyX3MFAAAAaW5kZXhzBAAAAG5hbWVzBgAAAG9iamVj ZWxlY3Rpb25zCQAAAF9nZXRhdHRyX3MFAAAAaW5kZXhzBAAAAG5hbWVzBgAAAG9iamVjdHMEAAAA
dHMEAAAATm9uZXMDAAAAdXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcyEAAABBY2Nv Tm9uZXMDAAAAdXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcyEAAABBY2NvdW50TW9k
dW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwBAAAAcw4AAAASARIBEgESAQ0BCgIgAigCAAAA dWxlX2dldE1pcnJvckFjY291bnRVcmwBAAAAcw4AAAASARIBEgESAQ0BCgIgAigCAAAAcwQAAABO
cwQAAABOb25lcyEAAABBY2NvdW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwoAgAAAHMEAAAA b25lcyEAAABBY2NvdW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwoAgAAAHMEAAAATm9uZXMh
Tm9uZXMhAAAAQWNjb3VudE1vZHVsZV9nZXRNaXJyb3JBY2NvdW50VXJsKAAAAAAoAAAAAHMPAAAA AAAAQWNjb3VudE1vZHVsZV9nZXRNaXJyb3JBY2NvdW50VXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0
U2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value> IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_getMirrorAccountUrl</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
......
...@@ -94,7 +94,7 @@ except KeyError:\n ...@@ -94,7 +94,7 @@ except KeyError:\n
pass\n pass\n
\n \n
# build the query with portal_catalog\n # build the query with portal_catalog\n
query = context.portal_catalog.buildSQLQuery(**kw)\n query = context.portal_catalog.buildSQLQuery(**kw) #query_table = \'node\', **kw)\n
\n \n
if query.get(\'where_expression\'):\n if query.get(\'where_expression\'):\n
params[\'where_expression\'] = query[\'where_expression\']\n params[\'where_expression\'] = query[\'where_expression\']\n
...@@ -108,6 +108,7 @@ if selection.getReport() :\n ...@@ -108,6 +108,7 @@ if selection.getReport() :\n
if kw.get(\'closed_summary\'):\n if kw.get(\'closed_summary\'):\n
params[\'closed_summary\'] = kw[\'closed_summary\']\n params[\'closed_summary\'] = kw[\'closed_summary\']\n
if selection.isInvertMode() :\n if selection.isInvertMode() :\n
params[\'node_uid\'] = selection.getInvertModeUidList()\n
params[\'selection_uids\'] = selection.getInvertModeUidList()\n params[\'selection_uids\'] = selection.getInvertModeUidList()\n
\n \n
if kw.get(\'omit_input\'):\n if kw.get(\'omit_input\'):\n
...@@ -123,13 +124,17 @@ if row.quantity :\n ...@@ -123,13 +124,17 @@ if row.quantity :\n
total = row.quantity or 0.00\n total = row.quantity or 0.00\n
return total\n return total\n
\n \n
# vim: syntax=python\n # FIXME:\n
# here we have to buildSQLQuery on \'node\' catalog table alias and not catalog.\n
# currently this doesn\'t work.\n
context.log(\'SQL:\', context.portal_simulation.getInventory( src__=1, omit_simulation=1, **params ))\n
return context.portal_simulation.getInventory( omit_simulation=1, **params )\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAABYAAAAz <value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAABYAAAA7
AAAASwAAAHNxAwAAdAAAfAIAZAEAgwIAdAAAfAEAZAIAgwIAgwAAgwEAAWgAAH0EAGQDAIQAAH0F AAAASwAAAHPvAwAAdAAAfAIAZAEAgwIAdAAAfAEAZAIAgwIAgwAAgwEAAWgAAH0EAGQDAIQAAH0F
AHQAAHQAAHQFAGQEAIMCAIMAAGQFAIMCAH0HAHQAAHwHAGQGAIMCAIMAAH0IAHwIAG8UAAF8CAB0 AHQAAHQAAHQFAGQEAIMCAIMAAGQFAIMCAH0HAHQAAHwHAGQGAIMCAIMAAH0IAHwIAG8UAAF8CAB0
CAB8BACDAQBkBwA8bgEAAXQAAHwHAGQIAIMCAIMAAH0KAHwKAG8UAAF8CgB0CAB8BACDAQBkCQA8 CAB8BACDAQBkBwA8bgEAAXQAAHwHAGQIAIMCAIMAAH0KAHwKAG8UAAF8CgB0CAB8BACDAQBkCQA8
bgEAAXQAAHwHAGQKAIMCAIMAAH0LAHwLAG8UAAF8CwB0CAB8BACDAQBkCwA8bgEAAXQAAHwHAGQM bgEAAXQAAHwHAGQKAIMCAIMAAH0LAHwLAG8UAAF8CwB0CAB8BACDAQBkCwA8bgEAAXQAAHwHAGQM
...@@ -140,44 +145,47 @@ fRIAdAAAfBIAZBQAgwIAZBUAgwEAbx0AAXQMAHwSAGQVAIMCAHQIAHwEAIMBAGQVADxuAQABdAAA ...@@ -140,44 +145,47 @@ fRIAdAAAfBIAZBQAgwIAZBUAgwEAbx0AAXQMAHwSAGQVAIMCAHQIAHwEAIMBAGQVADxuAQABdAAA
fBIAZBQAgwIAZBYAgwEAbx0AAXQMAHwSAGQWAIMCAHQIAHwEAIMBAGQWADxuAQABdAAAfAEAZBcA fBIAZBQAgwIAZBYAgwEAbx0AAXQMAHwSAGQWAIMCAHQIAHwEAIMBAGQWADxuAQABdAAAfAEAZBcA
gwIAgwAAbyAAAXQAAHwBAGQXAIMCAIMAAHQIAHwEAIMBAGQYADxuAQABdAAAfAEAZBkAgwIAgwAA gwIAgwAAbyAAAXQAAHwBAGQXAIMCAIMAAHQIAHwEAIMBAGQYADxuAQABdAAAfAEAZBkAgwIAgwAA
byAAAXQAAHwBAGQZAIMCAIMAAHQIAHwEAIMBAGQaADxuAQABdAAAfAIAZBQAgwIAZBsAgwEAbx0A byAAAXQAAHwBAGQZAIMCAIMAAHQIAHwEAIMBAGQaADxuAQABdAAAfAIAZBQAgwIAZBsAgwEAbx0A
AXQMAHwCAGQbAIMCAHQIAHwEAIMBAGQbADxuAQABdAAAfAEAZBwAgwIAgwAAbyAAAXQAAHwBAGQd AXQMAHwCAGQbAIMCAHQIAHwEAIMBAGQbADxuAQABdAAAfAEAZBwAgwIAgwAAbzwAAXQAAHwBAGQd
AIMCAIMAAHQIAHwEAIMBAGQeADxuAQABdAAAfAIAZBQAgwIAZB8AgwEAbxQAAWQgAHQIAHwEAIMB AIMCAIMAAHQIAHwEAIMBAGQeADx0AAB8AQBkHQCDAgCDAAB0CAB8BACDAQBkHwA8bgEAAXQAAHwC
AGQfADxuAQABdAAAfAIAZBQAgwIAZCEAgwEAbxQAAWQgAHQIAHwEAIMBAGQhADxuAQABdBAAdAAA AGQUAIMCAGQgAIMBAG8UAAFkIQB0CAB8BACDAQBkIAA8bgEAAXQAAHwCAGQUAIMCAGQiAIMBAG8U
dAUAZCIAgwIAZCMAZCAAfAQAjQEBfRMAdAwAfBMAZCQAgwIAfRQAZCQAfRUAdAAAfBQAZCUAgwIA AAFkIQB0CAB8BACDAQBkIgA8bgEAAXQQAHQAAHQFAGQjAIMCAGQkAGQhAHwEAI0BAX0TAHQMAHwT
bxoAAXQAAHwUAGQlAIMCAHAEAAFkJgB9FQBuAQABfBUAU2QAAFMoJwAAAE5zBgAAAHVwZGF0ZXMJ AGQlAIMCAH0UAGQlAH0VAHQAAHwUAGQmAIMCAG8aAAF0AAB8FABkJgCDAgBwBAABZCcAfRUAbgEA
AAAAZ2V0UGFyYW1zYwEAAAADAAAAAwAAAEMAAABzFgAAAHQAAHQBAGQBAIMCAGQCAHwAAIMCAFMo AXwVAFN0AAB0BQBkKACDAgBkKQB0EAB0AAB0AAB0BQBkKgCDAgBkKwCDAgBkLABkIQBkJABkIQB8
AwAAAE5zAwAAAGxvZ3MZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZSgDAAAAcwkAAABfZ2V0 BACNAQKDAgABdBAAdAAAdAAAdAUAZCoAgwIAZCsAgwIAZCQAZCEAfAQAjQEBU2QAAFMoLQAAAE5z
YXR0cl9zBwAAAGNvbnRleHRzBwAAAG1lc3NhZ2UoAwAAAHMHAAAAbWVzc2FnZXMJAAAAX2dldGF0 BgAAAHVwZGF0ZXMJAAAAZ2V0UGFyYW1zYwEAAAADAAAAAwAAAEMAAABzFgAAAHQAAHQBAGQBAIMC
dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwoAAAA8bGFtYmRh AGQCAHwAAIMCAFMoAwAAAE5zAwAAAGxvZ3MZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZSgD
LjQ+AwAAAHMAAAAAcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9wcmVmZXJlbmNlc3Mp AAAAcwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAG1lc3NhZ2UoAwAAAHMHAAAAbWVzc2Fn
AAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uRnJvbURhdGVzCQAAAGZyb21fZGF0 ZXMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24p
ZXMnAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uQXREYXRlcwcAAABhdF9kYXRl cwoAAAA8bGFtYmRhLjc+AwAAAHMAAAAAcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9w
czQAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25TaW11bGF0aW9uU3RhdGVMaXN0 cmVmZXJlbmNlc3MpAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uRnJvbURhdGVz
cxAAAABzaW11bGF0aW9uX3N0YXRlczAAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rp CQAAAGZyb21fZGF0ZXMnAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uQXREYXRl
b25TZWN0aW9uQ2F0ZWdvcnlzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzJAAAAGFjY291bnRpbmdfdHJh cwcAAABhdF9kYXRlczQAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25TaW11bGF0
bnNhY3Rpb25fbGluZV9jdXJyZW5jeXMSAAAAcmVzdHJpY3RlZFRyYXZlcnNlcwYAAABnZXRVaWRz aW9uU3RhdGVMaXN0cxAAAABzaW11bGF0aW9uX3N0YXRlczAAAABnZXRQcmVmZXJyZWRBY2NvdW50
DAAAAHJlc291cmNlX3VpZHMOAAAAcG9ydGFsX2NhdGFsb2dzDQAAAGJ1aWxkU1FMUXVlcnlzAwAA aW5nVHJhbnNhY3Rpb25TZWN0aW9uQ2F0ZWdvcnlzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzJAAAAGFj
AGdldHMQAAAAd2hlcmVfZXhwcmVzc2lvbnMPAAAAZnJvbV90YWJsZV9saXN0cwkAAABnZXREb21h Y291bnRpbmdfdHJhbnNhY3Rpb25fbGluZV9jdXJyZW5jeXMSAAAAcmVzdHJpY3RlZFRyYXZlcnNl
aW5zEAAAAHNlbGVjdGlvbl9kb21haW5zCQAAAGdldFJlcG9ydHMQAAAAc2VsZWN0aW9uX3JlcG9y cwYAAABnZXRVaWRzDAAAAHJlc291cmNlX3VpZHMOAAAAcG9ydGFsX2NhdGFsb2dzDQAAAGJ1aWxk
dHMOAAAAY2xvc2VkX3N1bW1hcnlzDAAAAGlzSW52ZXJ0TW9kZXMUAAAAZ2V0SW52ZXJ0TW9kZVVp U1FMUXVlcnlzAwAAAGdldHMQAAAAd2hlcmVfZXhwcmVzc2lvbnMPAAAAZnJvbV90YWJsZV9saXN0
ZExpc3RzDgAAAHNlbGVjdGlvbl91aWRzcwoAAABvbWl0X2lucHV0aQEAAABzCwAAAG9taXRfb3V0 cwkAAABnZXREb21haW5zEAAAAHNlbGVjdGlvbl9kb21haW5zCQAAAGdldFJlcG9ydHMQAAAAc2Vs
cHV0cxcAAABSZXNvdXJjZV96U3RhdEludmVudG9yeXMPAAAAb21pdF9zaW11bGF0aW9uaQAAAABz ZWN0aW9uX3JlcG9ydHMOAAAAY2xvc2VkX3N1bW1hcnlzDAAAAGlzSW52ZXJ0TW9kZXMUAAAAZ2V0
CAAAAHF1YW50aXR5ZgMwLjAoFQAAAHMJAAAAX2dldGF0dHJfcwIAAABrd3MJAAAAc2VsZWN0aW9u SW52ZXJ0TW9kZVVpZExpc3RzCAAAAG5vZGVfdWlkcw4AAABzZWxlY3Rpb25fdWlkc3MKAAAAb21p
cwYAAABwYXJhbXNzAwAAAExPR3MHAAAAY29udGV4dHMKAAAAcHJlZmVyZW5jZXMJAAAAZnJvbV9k dF9pbnB1dGkBAAAAcwsAAABvbWl0X291dHB1dHMXAAAAUmVzb3VyY2VfelN0YXRJbnZlbnRvcnlz
YXRlcwcAAABfd3JpdGVfcwcAAABhdF9kYXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0 DwAAAG9taXRfc2ltdWxhdGlvbmkAAAAAcwgAAABxdWFudGl0eWYDMC4wcwMAAABsb2dzBAAAAFNR
aW9uX2NhdGVnb3J5cwkAAABfZ2V0aXRlbV9zAwAAAHVybHMIAAAAY3VycmVuY3lzCAAAAEtleUVy TDpzEQAAAHBvcnRhbF9zaW11bGF0aW9ucwwAAABnZXRJbnZlbnRvcnlzBQAAAHNyY19fKBUAAABz
cm9ycwcAAABfYXBwbHlfcwUAAABxdWVyeXMHAAAAcmVzdWx0c3MDAAAAcm93cwUAAAB0b3RhbCgW CQAAAF9nZXRhdHRyX3MCAAAAa3dzCQAAAHNlbGVjdGlvbnMGAAAAcGFyYW1zcwMAAABMT0dzBwAA
AAAAcwUAAABicmFpbnMJAAAAc2VsZWN0aW9ucwIAAABrd3MJAAAAX2dldGF0dHJfcwYAAABwYXJh AGNvbnRleHRzCgAAAHByZWZlcmVuY2VzCQAAAGZyb21fZGF0ZXMHAAAAX3dyaXRlX3MHAAAAYXRf
bXNzAwAAAExPR3MHAAAAY29udGV4dHMKAAAAcHJlZmVyZW5jZXMJAAAAZnJvbV9kYXRlcwcAAABf ZGF0ZXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMJAAAAX2dldGl0
d3JpdGVfcwcAAABhdF9kYXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0aW9uX2NhdGVn ZW1fcwMAAAB1cmxzCAAAAGN1cnJlbmN5cwgAAABLZXlFcnJvcnMHAAAAX2FwcGx5X3MFAAAAcXVl
b3J5cwkAAABfZ2V0aXRlbV9zAwAAAHVybHMIAAAAY3VycmVuY3lzCAAAAEtleUVycm9ycwcAAABf cnlzBwAAAHJlc3VsdHNzAwAAAHJvd3MFAAAAdG90YWwoFgAAAHMFAAAAYnJhaW5zCQAAAHNlbGVj
YXBwbHlfcwUAAABxdWVyeXMHAAAAcmVzdWx0c3MDAAAAcm93cwUAAAB0b3RhbCgAAAAAKAAAAABz dGlvbnMCAAAAa3dzCQAAAF9nZXRhdHRyX3MGAAAAcGFyYW1zcwMAAABMT0dzBwAAAGNvbnRleHRz
DwAAAFNjcmlwdCAoUHl0aG9uKXMZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZQEAAABzXAAA CgAAAHByZWZlcmVuY2VzCQAAAGZyb21fZGF0ZXMHAAAAX3dyaXRlX3MHAAAAYXRfZGF0ZXMQAAAA
AB8BBgEJAxsBEgEHARQBEgEHARQBEgEHARQBEgEHARQCAwEPAQcBFQEnAQ4BBQMkAhMBIAETASAC c2ltdWxhdGlvbl9zdGF0ZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMJAAAAX2dldGl0ZW1fcwMAAAB1
EAEjARABIwETASABEAEjAhMBFwETARQCFQEJAQ8BCQENARoBKAIAAABzBAAAAE5vbmVzGQAAAEFj cmxzCAAAAGN1cnJlbmN5cwgAAABLZXlFcnJvcnMHAAAAX2FwcGx5X3MFAAAAcXVlcnlzBwAAAHJl
Y291bnRNb2R1bGVfc3RhdEJhbGFuY2UoAgAAAHMEAAAATm9uZXMZAAAAQWNjb3VudE1vZHVsZV9z c3VsdHNzAwAAAHJvd3MFAAAAdG90YWwoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzGQAA
dGF0QmFsYW5jZSgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAA AEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2UBAAAAc2IAAAAfAQYBCQMbARIBBwEUARIBBwEUARIB
cwAAAAA=</string> </value> BwEUARIBBwEUAgMBDwEHARUBJwEOAQUDJAITASABEwEgAhABIwEQASMBEwEgARABHAEjAhMBFwET
ARQCFQEJAQ8BCQENARoBBwU6ASgCAAAAcwQAAABOb25lcxkAAABBY2NvdW50TW9kdWxlX3N0YXRC
YWxhbmNlKAIAAABzBAAAAE5vbmVzGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2UoAAAAACgA
AAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
......
...@@ -66,25 +66,25 @@ ...@@ -66,25 +66,25 @@
</item> </item>
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>return - context.AccountModule_statBalance(brain, selection, omit_output=1, **kw)\n <value> <string>return - context.AccountModule_statBalance(brain, selection, omit_input=1, **kw) or 0\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAIAAAA <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAIAAAA
SwAAAHMnAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAfAIAjQMBC1NkAABTKAQAAABOcxkA SwAAAHMuAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAfAIAjQMBC3AEAAFkBABTZAAAUygF
AABBY2NvdW50TW9kdWxlX3N0YXRCYWxhbmNlcwsAAABvbWl0X291dHB1dGkBAAAAKAYAAABzBwAA AAAATnMZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZXMKAAAAb21pdF9pbnB1dGkBAAAAaQAA
AF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMFAAAAYnJhaW5zCQAAAHNlbGVjdGlv AAAoBgAAAHMHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwUAAABicmFpbnMJ
bnMCAAAAa3coBgAAAHMJAAAAc2VsZWN0aW9ucwUAAABicmFpbnMCAAAAa3dzBwAAAF9hcHBseV9z AAAAc2VsZWN0aW9ucwIAAABrdygGAAAAcwkAAABzZWxlY3Rpb25zBQAAAGJyYWlucwIAAABrd3MH
CQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMj AAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0
AAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQBAAAAcwAAAAAoAgAAAHMEAAAA IChQeXRob24pcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdAEAAABzAAAA
Tm9uZXMjAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQoAgAAAHMEAAAATm9u ACgCAAAAcwQAAABOb25lcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdCgC
ZXMjAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQoAAAAACgAAAAAcw8AAABT AAAAcwQAAABOb25lcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdCgAAAAA
Y3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> KAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_statTotalSourceCredit</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
......
...@@ -66,21 +66,21 @@ ...@@ -66,21 +66,21 @@
</item> </item>
<item> <item>
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>return context.AccountModule_statBalance(brain, selection, omit_input=1, float_value=1, **kw)\n <value> <string>return context.AccountModule_statBalance(brain, selection, omit_output=1, float_value=1, **kw)\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAKAAAA <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAKAAAA
SwAAAHMsAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAZAQAZAMAfAIAjQMCU2QAAFMoBQAA SwAAAHMsAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAZAQAZAMAfAIAjQMCU2QAAFMoBQAA
AE5zGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2VzCgAAAG9taXRfaW5wdXRpAQAAAHMLAAAA AE5zGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2VzCwAAAG9taXRfb3V0cHV0aQEAAABzCwAA
ZmxvYXRfdmFsdWUoBgAAAHMHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwUA AGZsb2F0X3ZhbHVlKAYAAABzBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMF
AABicmFpbnMJAAAAc2VsZWN0aW9ucwIAAABrdygGAAAAcwkAAABzZWxlY3Rpb25zBQAAAGJyYWlu AAAAYnJhaW5zCQAAAHNlbGVjdGlvbnMCAAAAa3coBgAAAHMJAAAAc2VsZWN0aW9ucwUAAABicmFp
cwIAAABrd3MHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMP bnMCAAAAa3dzBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dCgAAAAAKAAAAABz
AAAAU2NyaXB0IChQeXRob24pcyIAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZURlYml0 DwAAAFNjcmlwdCAoUHl0aG9uKXMiAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VEZWJp
AQAAAHMAAAAAKAIAAABzBAAAAE5vbmVzIgAAAEFjY291bnRNb2R1bGVfc3RhdFRvdGFsU291cmNl dAEAAABzAAAAACgCAAAAcwQAAABOb25lcyIAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJj
RGViaXQoAgAAAHMEAAAATm9uZXMiAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VEZWJp ZURlYml0KAIAAABzBAAAAE5vbmVzIgAAAEFjY291bnRNb2R1bGVfc3RhdFRvdGFsU291cmNlRGVi
dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value> aXQoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
...@@ -90,7 +90,7 @@ dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string ...@@ -90,7 +90,7 @@ dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_statTotalSourceDebit</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
......
...@@ -65,7 +65,6 @@ ...@@ -65,7 +65,6 @@
<string>right</string> <string>right</string>
<string>center</string> <string>center</string>
<string>bottom</string> <string>bottom</string>
<string>hidden</string>
</list> </list>
</value> </value>
</item> </item>
...@@ -85,14 +84,6 @@ ...@@ -85,14 +84,6 @@
<list/> <list/>
</value> </value>
</item> </item>
<item>
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_preferred_gap_id</string>
</list>
</value>
</item>
<item> <item>
<key> <string>left</string> </key> <key> <string>left</string> </key>
<value> <value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Report</string>
<string>ERP5Report</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>Default</string>
<string>2</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>2</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>Default</string> </key>
<value>
<list>
<string>from_date</string>
<string>at_date</string>
<string>transaction_section_category</string>
<string>transaction_simulation_state</string>
<string>account</string>
<string>destination_section</string>
<string>source_payment</string>
<string>omit_grouping_reference</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>AccountModule_viewAccountStatementReport</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>AccountModule_viewAccountStatementReport</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>report_view</string> </value>
</item>
<item>
<key> <string>report_method</string> </key>
<value> <string>AccountModule_getAccountStatementReportSectionList</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Account Statement</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>AccountModule_viewAccountStatementReport</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>Default</string>
<string>left</string>
<string>bottom</string>
<string>diabled</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>Default</string> </key>
<value>
<list>
<string>my_transaction_section_category</string>
<string>my_from_date</string>
<string>my_at_date</string>
<string>my_portal_skin</string>
</list>
</value>
</item>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>my_account</string>
<string>my_destination_section</string>
<string>my_source_payment</string>
</list>
</value>
</item>
<item>
<key> <string>diabled</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_transaction_simulation_state</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>AccountModule_viewAccountStatementReportDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>AccountModule_viewGeneralLedgerReportDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Account Statement</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>account = None\n
if account == \'\' : \n
if (hasattr(context, \'getPortalType\') and context.getPortalType() == \'Account\') :\n
account = context\n
elif same_type(account, \'\') : \n
account = context.getPortalObject().restrictedTraverse(account)\n
\n
node_uid = None\n
if account is not None : \n
node_uid = account.getUid()\n
\n
ptype_translated_dict = {}\n
def translatePortalType(ptype) : \n
if not ptype_translated_dict.has_key(ptype) : \n
ptype_translated_dict[ptype] = context.Base_TranslateString(ptype)\n
return ptype_translated_dict[ptype]\n
\n
item_list = [("", "")]\n
for entity in context.Account_zDistinctSectionList(node_uid = node_uid): \n
item_list.append(("%s (%s)" % (entity[\'title\'], translatePortalType(entity[\'portal_type\'])), entity[\'relative_url\']))\n
\n
return item_list\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGQBAGQCAIQBAFoAAGQAAFMoAwAAAE5zAAAAAGMBAAAADQAA
ABMAAAADAAAAcz4BAAB0AAB9AAB8AABkAQBqAgBvNwABdAIAdAMAZAIAgwIAbxYAAXQEAHQDAGQC
AIMCAIMAAGQDAGoCAG8KAAF0AwB9AABxfwABbjYAAXQFAHwAAGQBAIMCAG8lAAF0BAB0BAB0AwBk
BACDAgCDAABkBQCDAgB8AACDAQB9AABuAQABdAAAfQYAfAAAdAAAagkAbxYAAXQEAHwAAGQGAIMC
AIMAAH0GAG4BAAFoAACJAACHAABkBwCGAAB9CABkAQBkAQBmAgBnAQB9CQB4agB0CgB0BAB0AwBk
CACDAgBkCQB8BgCDAAGDAQBEXUoAfQsAdAQAfAkAZAoAgwIAZAsAdAwAfAsAZAwAgwIAfAgAdAwA
fAsAZA0AgwIAgwEAZgIAFnQMAHwLAGQOAIMCAGYCAIMBAAFx6ABXfAkAU2QAAFMoDwAAAE5zAAAA
AHMNAAAAZ2V0UG9ydGFsVHlwZXMHAAAAQWNjb3VudHMPAAAAZ2V0UG9ydGFsT2JqZWN0cxIAAABy
ZXN0cmljdGVkVHJhdmVyc2VzBgAAAGdldFVpZGMBAAAABgAAAAcAAAADAAAAc0sAAAB0AACIAABk
AQCDAgB8AACDAQAMbyMAAXQAAHQDAGQCAIMCAHwAAIMBAHQEAIgAAIMBAHwAADxuAQABdAUAiAAA
fAAAgwIAU2QAAFMoAwAAAE5zBwAAAGhhc19rZXlzFAAAAEJhc2VfVHJhbnNsYXRlU3RyaW5nKAYA
AABzCQAAAF9nZXRhdHRyX3MVAAAAcHR5cGVfdHJhbnNsYXRlZF9kaWN0cwUAAABwdHlwZXMHAAAA
Y29udGV4dHMHAAAAX3dyaXRlX3MJAAAAX2dldGl0ZW1fKAYAAABzBQAAAHB0eXBlcwkAAABfZ2V0
YXR0cl9zFQAAAHB0eXBlX3RyYW5zbGF0ZWRfZGljdHMHAAAAY29udGV4dHMHAAAAX3dyaXRlX3MJ
AAAAX2dldGl0ZW1fKAEAAABzFQAAAHB0eXBlX3RyYW5zbGF0ZWRfZGljdCgAAAAAcw8AAABTY3Jp
cHQgKFB5dGhvbilzEwAAAHRyYW5zbGF0ZVBvcnRhbFR5cGUNAAAAcwYAAAAAARcBIwFzHAAAAEFj
Y291bnRfekRpc3RpbmN0U2VjdGlvbkxpc3RzCAAAAG5vZGVfdWlkcwYAAABhcHBlbmRzBwAAACVz
ICglcylzBQAAAHRpdGxlcwsAAABwb3J0YWxfdHlwZXMMAAAAcmVsYXRpdmVfdXJsKA0AAABzBAAA
AE5vbmVzBwAAAGFjY291bnRzBwAAAGhhc2F0dHJzBwAAAGNvbnRleHRzCQAAAF9nZXRhdHRyX3MJ
AAAAc2FtZV90eXBlcwgAAABub2RlX3VpZHMVAAAAcHR5cGVfdHJhbnNsYXRlZF9kaWN0cxMAAAB0
cmFuc2xhdGVQb3J0YWxUeXBlcwkAAABpdGVtX2xpc3RzCQAAAF9nZXRpdGVyX3MGAAAAZW50aXR5
cwkAAABfZ2V0aXRlbV8oDQAAAHMHAAAAYWNjb3VudHMEAAAATm9uZXMHAAAAaGFzYXR0cnMHAAAA
Y29udGV4dHMJAAAAX2dldGF0dHJfcwkAAABzYW1lX3R5cGVzCAAAAG5vZGVfdWlkcxUAAABwdHlw
ZV90cmFuc2xhdGVkX2RpY3RzEwAAAHRyYW5zbGF0ZVBvcnRhbFR5cGVzCQAAAGl0ZW1fbGlzdHMJ
AAAAX2dldGl0ZXJfcwYAAABlbnRpdHlzCQAAAF9nZXRpdGVtXygAAAAAKAEAAABzFQAAAHB0eXBl
X3RyYW5zbGF0ZWRfZGljdHMPAAAAU2NyaXB0IChQeXRob24pcyUAAABBY2NvdW50X2dldERlc3Rp
bmF0aW9uU2VjdGlvbkl0ZW1MaXN0AQAAAHMeAAAABgENASkBDgEQASUCBgENARYCBgEMBQ8BHwAJ
AUUCKAEAAABzJQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uSXRlbUxpc3QoAQAAAHMl
AAAAQWNjb3VudF9nZXREZXN0aW5hdGlvblNlY3Rpb25JdGVtTGlzdCgAAAAAKAAAAABzDwAAAFNj
cmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getDestinationSectionItemList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>account = \'\'</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>account</string>
<string>None</string>
<string>hasattr</string>
<string>context</string>
<string>_getattr_</string>
<string>same_type</string>
<string>node_uid</string>
<string>ptype_translated_dict</string>
<string>translatePortalType</string>
<string>item_list</string>
<string>_getiter_</string>
<string>entity</string>
<string>_getitem_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<string></string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Account_getDestinationSectionItemList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>account = context\n
destination_section_set = {}\n
\n
for line in account.Account_getAccountingTransactionList(**kw) :\n
movement_path = line.current_transaction_line_path\n
movement = context.restrictedTraverse(movement_path)\n
destination_section_set[movement.getDestinationSection()] = 1 \n
\n
return destination_section_set.keys()\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAsAAAAKAAAASwAA
AHOJAAAAdAAAfQIAaAAAfQMAeGYAdAMAdAQAdAUAfAIAZAEAgwIAfAAAjQEAgwEARF1GAH0HAHQF
AHwHAGQCAIMCAH0IAHQFAHQAAGQDAIMCAHwIAIMBAH0JAGQEAHQKAHwDAIMBAHQFAHwJAGQFAIMC
AIMAADxxKwBXdAUAfAMAZAYAgwIAgwAAU2QAAFMoBwAAAE5zJAAAAEFjY291bnRfZ2V0QWNjb3Vu
dGluZ1RyYW5zYWN0aW9uTGlzdHMdAAAAY3VycmVudF90cmFuc2FjdGlvbl9saW5lX3BhdGhzEgAA
AHJlc3RyaWN0ZWRUcmF2ZXJzZWkBAAAAcxUAAABnZXREZXN0aW5hdGlvblNlY3Rpb25zBAAAAGtl
eXMoCwAAAHMHAAAAY29udGV4dHMHAAAAYWNjb3VudHMXAAAAZGVzdGluYXRpb25fc2VjdGlvbl9z
ZXRzCQAAAF9nZXRpdGVyX3MHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwIAAABrd3MEAAAAbGlu
ZXMNAAAAbW92ZW1lbnRfcGF0aHMIAAAAbW92ZW1lbnRzBwAAAF93cml0ZV8oCwAAAHMCAAAAa3dz
BwAAAGNvbnRleHRzBwAAAGFjY291bnRzFwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25fc2V0cwkAAABf
Z2V0aXRlcl9zBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MEAAAAbGluZXMNAAAAbW92ZW1lbnRf
cGF0aHMIAAAAbW92ZW1lbnRzBwAAAF93cml0ZV8oAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhv
bilzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdAEAAABzDgAAAAYBBgIfAAYB
DwEVASACKAEAAABzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdCgBAAAAcyEA
AABBY2NvdW50X2dldERlc3RpbmF0aW9uU2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQg
KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getDestinationSectionList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>kw</string>
<string>context</string>
<string>account</string>
<string>destination_section_set</string>
<string>_getiter_</string>
<string>_apply_</string>
<string>_getattr_</string>
<string>line</string>
<string>movement_path</string>
<string>movement</string>
<string>_write_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Account_getDestinationSectionList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -73,26 +73,27 @@ current_gap = context.getPortalObject().portal_preferences.getPreferredAccountin ...@@ -73,26 +73,27 @@ current_gap = context.getPortalObject().portal_preferences.getPreferredAccountin
for gap in context.getGapValueList() : \n for gap in context.getGapValueList() : \n
if current_gap in gap.getPath() : \n if current_gap in gap.getPath() : \n
return gap.getId()\n return gap.getId()\n
return \'\'\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAUAAAALAAAAQwAA <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAUAAAALAAAAQwAA
AHN7AAAAdAAAdAAAdAAAdAEAZAEAgwIAgwAAZAIAgwIAZAMAgwIAgwAAfQIAeE0AdAMAdAAAdAEA AHN/AAAAdAAAdAAAdAAAdAEAZAEAgwIAgwAAZAIAgwIAZAMAgwIAgwAAfQIAeE0AdAMAdAAAdAEA
ZAQAgwIAgwAAgwEARF0zAH0EAHwCAHQAAHwEAGQFAIMCAIMAAGoGAG8UAAF0AAB8BABkBgCDAgCD ZAQAgwIAgwAAgwEARF0zAH0EAHwCAHQAAHwEAGQFAIMCAIMAAGoGAG8UAAF0AAB8BABkBgCDAgCD
AABTcUAAAXFAAFdkAABTKAcAAABOcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9wcmVm AABTcUAAAXFAAFdkBwBTZAAAUygIAAAATnMPAAAAZ2V0UG9ydGFsT2JqZWN0cxIAAABwb3J0YWxf
ZXJlbmNlc3MkAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uR2Fwcw8AAABnZXRH cHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJlZEFjY291bnRpbmdUcmFuc2FjdGlvbkdhcHMPAAAA
YXBWYWx1ZUxpc3RzBwAAAGdldFBhdGhzBQAAAGdldElkKAUAAABzCQAAAF9nZXRhdHRyX3MHAAAA Z2V0R2FwVmFsdWVMaXN0cwcAAABnZXRQYXRocwUAAABnZXRJZHMAAAAAKAUAAABzCQAAAF9nZXRh
Y29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2FwKAUAAABzCQAAAF9n dHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2FwKAUA
ZXRhdHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2Fw AABzCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVy
KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxAAAABBY2NvdW50X2dldEdhcElkAQAAAHMK X3MDAAAAZ2FwKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxAAAABBY2NvdW50X2dldEdh
AAAAAAInAhkABgEZASgBAAAAcxAAAABBY2NvdW50X2dldEdhcElkKAEAAABzEAAAAEFjY291bnRf cElkAQAAAHMMAAAAAAInAhkABgEZARgBKAEAAABzEAAAAEFjY291bnRfZ2V0R2FwSWQoAQAAAHMQ
Z2V0R2FwSWQoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMA AAAAQWNjb3VudF9nZXRHYXBJZCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1v
AAAA</string> </value> ZHVsZT4BAAAAcwAAAAA=</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/erp5_accounting/Account_getGapId</string> </value> <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getGapId</string> </value>
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
......
...@@ -77,34 +77,50 @@ try :\n ...@@ -77,34 +77,50 @@ try :\n
except KeyError :\n except KeyError :\n
raise\n raise\n
gap_root = context.getPortalDefaultGapRoot()\n gap_root = context.getPortalDefaultGapRoot()\n
obj = context.portal_categories.resolveCategory(gap_root)\n \n
return obj.getCategoryChildItemList(base=0, display_method=display, sort_method=sort)\n def getGapItemList(gap_root, portal_path) : \n
obj = context.portal_categories.resolveCategory(gap_root)\n
return obj.getCategoryChildItemList(base=0, display_method=display, sort_method=sort)\n
\n
from Products.ERP5Type.Cache import CachingMethod\n
getGapItemList = CachingMethod(getGapItemList, id=\'Account.getGapItemList\')\n
return getGapItemList(gap_root=gap_root, portal_path=context.portal_url())\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAcAAAAPAAAAAwAA <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAkAAAASAAAAAwAA
AHOjAAAAZAEAhAAAiQAAhwAAZAIAhgAAfQEAeR8AdAIAdAIAdAMAZAMAgwIAZAQAgwIAgwAAfQQA AHOwAAAAZAEAhAAAiQEAhwEAZAIAhgAAiQAAeR8AdAIAdAIAdAMAZAMAgwIAZAQAgwIAgwAAfQQA
V24oAAR0BQBqCgBvHAABAQEBggAAdAIAdAMAZAUAgwIAgwAAfQQAbgIAAVh0AgB0AgB0AwBkBgCD V24oAAR0BQBqCgBvHAABAQEBggAAdAIAdAMAZAUAgwIAgwAAfQQAbgIAAViHAACHAQBkBgCGAAB9
AgBkBwCDAgB8BACDAQB9BgB0AgB8BgBkCACDAgBkCQBkCgBkCwCIAABkDAB8AQCDAANTZAAAUygN BgBkBwBrBwBsCAB9CAABfAgAfAYAZAgAZAkAgwEBfQYAfAYAZAoAfAQAZAsAdAIAdAMAZAwAgwIA
AAAATmMBAAAAAgAAAAYAAABDAAAAcyoAAABkAQB0AAB8AABkAgCDAgCDAAB0AAB8AABkAwCDAgCD gwAAgwACU2QAAFMoDQAAAE5jAQAAAAIAAAAGAAAAQwAAAHMqAAAAZAEAdAAAfAAAZAIAgwIAgwAA
AABmAgAWU2QAAFMoBAAAAE5zBwAAACVzIC0gJXNzBQAAAGdldElkcwgAAABnZXRUaXRsZSgCAAAA dAAAfAAAZAMAgwIAgwAAZgIAFlNkAABTKAQAAABOcwcAAAAlcyAtICVzcwUAAABnZXRJZHMIAAAA
cwkAAABfZ2V0YXR0cl9zAQAAAHgoAgAAAHMBAAAAeHMJAAAAX2dldGF0dHJfKAAAAAAoAAAAAHMP Z2V0VGl0bGUoAgAAAHMJAAAAX2dldGF0dHJfcwEAAAB4KAIAAABzAQAAAHhzCQAAAF9nZXRhdHRy
AAAAU2NyaXB0IChQeXRob24pcwcAAABkaXNwbGF5AQAAAHMCAAAAAAFjAgAAAAQAAAAFAAAAAwAA XygAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMHAAAAZGlzcGxheQEAAABzAgAAAAABYwIA
AHMdAAAAdAAAiAAAfAAAgwEAiAAAfAEAgwEAgwIAU2QAAFMoAQAAAE4oBAAAAHMDAAAAY21wcwcA AAAEAAAABQAAAAMAAABzHQAAAHQAAIgAAHwAAIMBAIgAAHwBAIMBAIMCAFNkAABTKAEAAABOKAQA
AABkaXNwbGF5cwEAAAB4cwEAAAB5KAQAAABzAQAAAHhzAQAAAHlzAwAAAGNtcHMHAAAAZGlzcGxh AABzAwAAAGNtcHMHAAAAZGlzcGxheXMBAAAAeHMBAAAAeSgEAAAAcwEAAAB4cwEAAAB5cwMAAABj
eSgBAAAAcwcAAABkaXNwbGF5KAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMEAAAAc29ydAQAAABz bXBzBwAAAGRpc3BsYXkoAQAAAHMHAAAAZGlzcGxheSgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilz
AgAAAAABcxIAAABwb3J0YWxfcHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJlZEFjY291bnRpbmdU BAAAAHNvcnQEAAAAcwIAAAAAAXMSAAAAcG9ydGFsX3ByZWZlcmVuY2VzcyQAAABnZXRQcmVmZXJy
cmFuc2FjdGlvbkdhcHMXAAAAZ2V0UG9ydGFsRGVmYXVsdEdhcFJvb3RzEQAAAHBvcnRhbF9jYXRl ZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25HYXBzFwAAAGdldFBvcnRhbERlZmF1bHRHYXBSb290YwIA
Z29yaWVzcw8AAAByZXNvbHZlQ2F0ZWdvcnlzGAAAAGdldENhdGVnb3J5Q2hpbGRJdGVtTGlzdHME AAAHAAAACAAAAAMAAABzRAAAAHQAAHQAAHQBAGQBAIMCAGQCAIMCAHwAAIMBAH0EAHQAAHwEAGQD
AAAAYmFzZWkAAAAAcw4AAABkaXNwbGF5X21ldGhvZHMLAAAAc29ydF9tZXRob2QoBwAAAHMHAAAA AIMCAGQEAGQFAGQGAIgBAGQHAIgAAIMAA1NkAABTKAgAAABOcxEAAABwb3J0YWxfY2F0ZWdvcmll
ZGlzcGxheXMEAAAAc29ydHMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwgAAABnYXBfcm9vdHMI c3MPAAAAcmVzb2x2ZUNhdGVnb3J5cxgAAABnZXRDYXRlZ29yeUNoaWxkSXRlbUxpc3RzBAAAAGJh
AAAAS2V5RXJyb3JzAwAAAG9iaigHAAAAcwcAAABkaXNwbGF5cwQAAABzb3J0cwkAAABfZ2V0YXR0 c2VpAAAAAHMOAAAAZGlzcGxheV9tZXRob2RzCwAAAHNvcnRfbWV0aG9kKAYAAABzCQAAAF9nZXRh
cl9zBwAAAGNvbnRleHRzCAAAAGdhcF9yb290cwgAAABLZXlFcnJvcnMDAAAAb2JqKAAAAAAoAQAA dHRyX3MHAAAAY29udGV4dHMIAAAAZ2FwX3Jvb3RzAwAAAG9ianMHAAAAZGlzcGxheXMEAAAAc29y
AHMHAAAAZGlzcGxheXMPAAAAU2NyaXB0IChQeXRob24pcxYAAABBY2NvdW50X2dldEdhcEl0ZW1M dCgHAAAAcwgAAABnYXBfcm9vdHMLAAAAcG9ydGFsX3BhdGhzCQAAAF9nZXRhdHRyX3MHAAAAY29u
aXN0AQAAAHMQAAAACQMMAwMBHwEOAQMBFwEeASgBAAAAcxYAAABBY2NvdW50X2dldEdhcEl0ZW1M dGV4dHMDAAAAb2JqcwcAAABkaXNwbGF5cwQAAABzb3J0KAIAAABzBAAAAHNvcnRzBwAAAGRpc3Bs
aXN0KAEAAABzFgAAAEFjY291bnRfZ2V0R2FwSXRlbUxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQg YXkoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcw4AAABnZXRHYXBJdGVtTGlzdA0AAABzBAAAAAAB
KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> HgEoAQAAAHMNAAAAQ2FjaGluZ01ldGhvZHMCAAAAaWRzFgAAAEFjY291bnQuZ2V0R2FwSXRlbUxp
c3RzCAAAAGdhcF9yb290cwsAAABwb3J0YWxfcGF0aHMKAAAAcG9ydGFsX3VybCgJAAAAcwcAAABk
aXNwbGF5cwQAAABzb3J0cwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzCAAAAGdhcF9yb290cwgA
AABLZXlFcnJvcnMOAAAAZ2V0R2FwSXRlbUxpc3RzFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hl
cw0AAABDYWNoaW5nTWV0aG9kKAkAAABzBwAAAGRpc3BsYXlzBAAAAHNvcnRzCQAAAF9nZXRhdHRy
X3MHAAAAY29udGV4dHMIAAAAZ2FwX3Jvb3RzCAAAAEtleUVycm9ycw4AAABnZXRHYXBJdGVtTGlz
dHMXAAAAUHJvZHVjdHMuRVJQNVR5cGUuQ2FjaGVzDQAAAENhY2hpbmdNZXRob2QoAAAAACgCAAAA
cwQAAABzb3J0cwcAAABkaXNwbGF5cw8AAABTY3JpcHQgKFB5dGhvbilzFgAAAEFjY291bnRfZ2V0
R2FwSXRlbUxpc3QBAAAAcxQAAAAJAwwDAwEfAQ4BAwEXAg8EDQESASgBAAAAcxYAAABBY2NvdW50
X2dldEdhcEl0ZW1MaXN0KAEAAABzFgAAAEFjY291bnRfZ2V0R2FwSXRlbUxpc3QoAAAAACgAAAAA
cw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item> </item>
<item> <item>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
...@@ -144,7 +160,9 @@ KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> ...@@ -144,7 +160,9 @@ KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
<string>context</string> <string>context</string>
<string>gap_root</string> <string>gap_root</string>
<string>KeyError</string> <string>KeyError</string>
<string>obj</string> <string>getGapItemList</string>
<string>Products.ERP5Type.Cache</string>
<string>CachingMethod</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>account = context\n
\n
source_payment_set = {}\n
\n
for line in account.Account_getAccountingTransactionList() :\n
movement_path = line.current_transaction_line_path\n
movement = context.restrictedTraverse(movement_path)\n
source_payment_set[movement.getSourcePayment()] = 1\n
# if movement.getSourcePayment() is None : \n
# context.log(\'Movement getSourcePayment None \', movement.getPath())\n
return source_payment_set.keys()\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAkAAAAJAAAAQwAA
AHODAAAAdAAAfQEAaAAAfQIAeGAAdAMAdAQAfAEAZAEAgwIAgwAAgwEARF1GAH0FAHQEAHwFAGQC
AIMCAH0GAHQEAHQAAGQDAIMCAHwGAIMBAH0HAGQEAHQIAHwCAIMBAHQEAHwHAGQFAIMCAIMAADxx
JQBXdAQAfAIAZAYAgwIAgwAAU2QAAFMoBwAAAE5zJAAAAEFjY291bnRfZ2V0QWNjb3VudGluZ1Ry
YW5zYWN0aW9uTGlzdHMdAAAAY3VycmVudF90cmFuc2FjdGlvbl9saW5lX3BhdGhzEgAAAHJlc3Ry
aWN0ZWRUcmF2ZXJzZWkBAAAAcxAAAABnZXRTb3VyY2VQYXltZW50cwQAAABrZXlzKAkAAABzBwAA
AGNvbnRleHRzBwAAAGFjY291bnRzEgAAAHNvdXJjZV9wYXltZW50X3NldHMJAAAAX2dldGl0ZXJf
cwkAAABfZ2V0YXR0cl9zBAAAAGxpbmVzDQAAAG1vdmVtZW50X3BhdGhzCAAAAG1vdmVtZW50cwcA
AABfd3JpdGVfKAkAAABzBwAAAGNvbnRleHRzBwAAAGFjY291bnRzEgAAAHNvdXJjZV9wYXltZW50
X3NldHMJAAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0cl9zBAAAAGxpbmVzDQAAAG1vdmVtZW50X3Bh
dGhzCAAAAG1vdmVtZW50cwcAAABfd3JpdGVfKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24p
cxwAAABBY2NvdW50X2dldFNvdXJjZVBheW1lbnRMaXN0AQAAAHMOAAAABgIGAhkABgEPARUBIAMo
AQAAAHMcAAAAQWNjb3VudF9nZXRTb3VyY2VQYXltZW50TGlzdCgBAAAAcxwAAABBY2NvdW50X2dl
dFNvdXJjZVBheW1lbnRMaXN0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9k
dWxlPgEAAABzAAAAAA==</string> </value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getSourcePaymentList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>context</string>
<string>account</string>
<string>source_payment_set</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>line</string>
<string>movement_path</string>
<string>movement</string>
<string>_write_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Account_getSourcePaymentList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment