4 |
MANAKAI_LIB_MANAKAI_DIR = $(MANAKAI_LIB_DIR)manakai/ |
MANAKAI_LIB_MANAKAI_DIR = $(MANAKAI_LIB_DIR)manakai/ |
5 |
|
|
6 |
DIS_SUFFIX = .dis |
DIS_SUFFIX = .dis |
7 |
DAC_SUFFIX = .dae |
DAEM_SUFFIX = .dafm |
8 |
DAEM_SUFFIX = .daem |
DAFX_SUFFIX = .dafx |
9 |
PM_SUFFIX = .pm |
PM_SUFFIX = .pm |
10 |
|
|
11 |
CD = cd |
CD = cd |
12 |
MAKE = make |
MAKE = make |
13 |
RM = rm |
RM = rm |
14 |
|
RMALL = $(RM) -fv |
15 |
PERL = perl |
PERL = perl |
16 |
PERL_OPTIONS = |
PERL_OPTIONS = |
17 |
PERL_OPTIONS_ALL = $(PERL_OPTIONS) -I$(MANAKAI_LIB_DIR) |
PERL_OPTIONS_ALL = $(PERL_OPTIONS) -I$(MANAKAI_LIB_DIR) |
35 |
DIS_OPTIONS_ALL = $(DIS_OPTIONS) \ |
DIS_OPTIONS_ALL = $(DIS_OPTIONS) \ |
36 |
--search-path-catalog-file-name="$(MANAKAI_LIB_DIR)manakai/dis-catalog" \ |
--search-path-catalog-file-name="$(MANAKAI_LIB_DIR)manakai/dis-catalog" \ |
37 |
--dis-file-suffix="$(DIS_SUFFIX)" \ |
--dis-file-suffix="$(DIS_SUFFIX)" \ |
38 |
--daem-file-suffix="$(DAEM_SUFFIX)" |
--daem-file-suffix="$(DAEM_SUFFIX)" \ |
39 |
|
--dafx-file-suffix="$(DAFX_SUFFIX)" |
40 |
|
|
41 |
DAC_OPTIONS = |
DAF_OPTIONS = |
42 |
DAC_PL = $(MANAKAI_BIN_DIR)dac.pl |
DAF_PL = $(MANAKAI_BIN_DIR)daf.pl |
43 |
DAC = $(PERL_) $(DAC_PL) $(DAC_OPTIONS) $(DIS_OPTIONS_ALL) \ |
DAF = $(PERL_) $(DAF_PL) $(DAF_OPTIONS) $(DIS_OPTIONS_ALL) |
|
--db-base-directory-path="$(MANAKAI_ROOT_DIR)" \ |
|
|
--output-file-name= |
|
|
|
|
|
DAC2PM_OPTIONS3 = --enable-assert |
|
|
DAC2PM_OPTIONS = $(DAC2PM_OPTIONS3) |
|
|
DAC2PM_PL = $(MANAKAI_BIN_DIR)dac2pm.pl |
|
|
DAC2PM = $(PERL_) $(DAC2PM_PL) $(DAC2PM_OPTIONS) $(DIS_OPTIONS_ALL) |
|
|
|
|
|
CORE_DAC_FILE = $(MANAKAI_LIB_DIR)manakai/all$(DAC_SUFFIX) |
|
|
DOM_CORE_DAC_FILE = $(MANAKAI_LIB_DIR)Message/DOM/core$(DAC_SUFFIX) |
|
|
SWCFG_DAC_FILE = $(MANAKAI_LIB_DIR)Message/Markup/all$(DAC_SUFFIX) |
|
44 |
|
|
45 |
UTIL_CORE_DIS_FILES = ManakaiNode.dis Error/DOMException.dis Error/Core.dis \ |
UTIL_CORE_DIS_FILES = ManakaiNode.dis Error/DOMException.dis Error/Core.dis \ |
46 |
Formatter/Muf2003$(DIS_SUFFIX) |
Formatter/Muf2003$(DIS_SUFFIX) |
59 |
$(DIS_DOC_DIS_FILES) $(DIS_DUMP_DIS_FILES) $(DIS_TEST_DIS_FILES) \ |
$(DIS_DOC_DIS_FILES) $(DIS_DUMP_DIS_FILES) $(DIS_TEST_DIS_FILES) \ |
60 |
$(PC_DIS_FILES) $(UTIL_DIS_COMMON_DIS_FILE) |
$(PC_DIS_FILES) $(UTIL_DIS_COMMON_DIS_FILE) |
61 |
|
|
62 |
|
NS_UTIL_PM_FILES = \ |
63 |
|
ManakaiNode$(PM_SUFFIX) ManakaiNodeTest$(PM_SUFFIX) \ |
64 |
|
PerlCode$(PM_SUFFIX) \ |
65 |
|
DIS$(PM_SUFFIX) |
66 |
|
NS_UTIL_ERR_PM_FILES = \ |
67 |
|
Error/DOMException$(PM_SUFFIX) |
68 |
|
NS_UTIL_DIS_PM_FILES = \ |
69 |
|
DIS/DNLite$(PM_SUFFIX) DIS/Value$(PM_SUFFIX) \ |
70 |
|
DIS/DPG$(PM_SUFFIX) \ |
71 |
|
DIS/Perl$(PM_SUFFIX) DIS/DISDoc$(PM_SUFFIX) DIS/DISDump$(PM_SUFFIX) \ |
72 |
|
DIS/Test$(PM_SUFFIX) |
73 |
|
|
74 |
GENERATED_FILES = \ |
GENERATED_FILES = \ |
75 |
core$(DAC_SUFFIX) ManakaiNode$(PM_SUFFIX) Error/DOMException$(PM_SUFFIX) \ |
$(NS_UTIL_PM_FILES) $(NS_UTIL_ERR_PM_FILES) $(NS_UTIL_DIS_PM_FILES) |
|
coretest$(DAC_SUFFIX) ManakaiNodeTest$(PM_SUFFIX) \ |
|
|
pc$(DAC_SUFFIX) PerlCode$(PM_SUFFIX) \ |
|
|
discore$(DAC_SUFFIX) DIS$(PM_SUFFIX) \ |
|
|
DIS/Perl$(PM_SUFFIX) DIS/Value$(PM_SUFFIX) \ |
|
|
DIS/DNLite$(PM_SUFFIX) DIS/DPG$(PM_SUFFIX) \ |
|
|
disdoc$(DAC_SUFFIX) DIS/DISDoc$(PM_SUFFIX) \ |
|
|
disdump$(DAC_SUFFIX) DIS/DISDump$(PM_SUFFIX) \ |
|
|
distest$(DAC_SUFFIX) DIS/Test$(PM_SUFFIX) |
|
|
GENERATED_DAC_FILES = core$(DAC_SUFFIX) coretest$(DAC_SUFFIX) \ |
|
|
discore$(DAC_SUFFIX) \ |
|
|
disdoc$(DAC_SUFFIX) disdump$(DAC_SUFFIX) distest$(DAC_SUFFIX) \ |
|
|
dpg$(DAC_SUFFIX) |
|
76 |
|
|
77 |
all: PerlCode$(PM_SUFFIX) .discore$(PM_SUFFIX) $(GENERATED_FILES) |
all: PerlCode$(PM_SUFFIX) .discore$(PM_SUFFIX) $(GENERATED_FILES) |
78 |
|
|
79 |
core$(DAC_SUFFIX): $(CORE_DAC_FILE) $(UTIL_CORE_DIS_FILES) $(DAC_PL) |
$(NS_UTIL_PM_FILES): %$(PM_SUFFIX): %$(DIS_SUFFIX) $(DAF_PL) |
80 |
$(DAC)$@.1.tmp --input-db-file-name="$<" ManakaiNode.dis |
$(DAF) --create-perl-module="$(NS_UTIL)$* $@" |
|
$(DAC)$@ --input-db-file-name="$@.1.tmp" Error/DOMException.dis |
|
|
$(RM) $@.1.tmp |
|
|
|
|
|
coretest$(DAC_SUFFIX): core$(DAC_SUFFIX) $(UTIL_TEST_DIS_FILES) $(DAC_PL) |
|
|
$(DAC)$@ --input-db-file-name="$<" ManakaiNodeTest.dis |
|
|
|
|
|
pc$(DAC_SUFFIX): $(SWCFG_DAC_FILE) $(PC_DIS_FILES) $(DAC_PL) |
|
|
$(DAC)$@ --input-db-file-name="$<" PerlCode$(DIS_SUFFIX) |
|
|
|
|
|
discore$(DAC_SUFFIX): pc$(DAC_SUFFIX) $(DIS_CORE_DIS_FILES) $(DAC_PL) \ |
|
|
$(UTIL_DIS_COMMON_DIS_FILE) |
|
|
$(DAC)$@ --input-db-file-name="$<" DIS/DNLite.dis |
|
|
|
|
|
disdoc$(DAC_SUFFIX): discore$(DAC_SUFFIX) $(DIS_DOC_DIS_FILES) $(DAC_PL) \ |
|
|
$(UTIL_DIS_COMMON_DIS_FILE) |
|
|
$(DAC)$@ --input-db-file-name="$<" DIS/DISDoc.dis |
|
|
|
|
|
disdump$(DAC_SUFFIX): $(DOM_CORE_DAC_FILE) $(DIS_DUMP_DIS_FILES) $(DAC_PL) \ |
|
|
$(UTIL_DIS_COMMON_DIS_FILE) |
|
|
$(DAC)$@ --input-db-file-name="$<" DIS/DISDump.dis |
|
|
|
|
|
distest$(DAC_SUFFIX): $(DOM_CORE_DAC_FILE) $(DIS_TEST_DIS_FILES) $(DAC_PL) \ |
|
|
$(UTIL_DIS_COMMON_DIS_FILE) |
|
|
$(DAC)$@ --input-db-file-name="$<" DIS/Test.dis |
|
|
|
|
|
ManakaiNode$(PM_SUFFIX): core$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL)ManakaiNode" \ |
|
|
--output-file-path="$@" |
|
|
$(PERL_CHK) $@ |
|
|
|
|
|
Error/DOMException$(PM_SUFFIX): core$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL_ERR)DOMException" \ |
|
|
--output-file-path="$@" |
|
81 |
$(PERL_CHK) $@ |
$(PERL_CHK) $@ |
82 |
|
|
83 |
$(UTIL_TEST_DIS_FILES:$(DIS_SUFFIX)=$(PM_SUFFIX)): \ |
$(NS_UTIL_ERR_PM_FILES): %$(PM_SUFFIX): %$(DIS_SUFFIX) $(DAF_PL) |
84 |
%$(PM_SUFFIX): coretest$(DAC_SUFFIX) \ |
$(DAF) --create-perl-module="$(NS_UTIL_ERR)$(*:Error/%=%) $@" |
|
$(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL)$*" \ |
|
|
--output-file-path="$@" |
|
85 |
$(PERL_CHK) $@ |
$(PERL_CHK) $@ |
86 |
|
|
87 |
$(DIS_CORE_DIS_FILES_:.dis=$(PM_SUFFIX)): %$(PM_SUFFIX): discore$(DAC_SUFFIX) \ |
$(NS_UTIL_DIS_PM_FILES): %$(PM_SUFFIX): %$(DIS_SUFFIX) $(DAF_PL) |
88 |
$(DAC2PM_PL) |
$(DAF) --create-perl-module="$(NS_UTIL_DIS)$(*:DIS/%=%) $@" |
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL)$*" \ |
|
|
--output-file-path="$@" |
|
89 |
$(PERL_CHK) $@ |
$(PERL_CHK) $@ |
90 |
|
|
91 |
$(DIS_CORE_DIS_FILES_DIS:.dis=$(PM_SUFFIX)): %$(PM_SUFFIX): \ |
.discore$(PM_SUFFIX): $(DIS_CORE_DIS_FILES) $(DAF_PL) |
92 |
discore$(DAC_SUFFIX) $(DAC2PM_PL) |
$(DAF) \ |
93 |
$(DAC2PM) $< \ |
--create-perl-module="$(NS_UTIL)DIS DIS$(PM_SUFFIX)" \ |
94 |
--module-uri="$(NS_UTIL_DIS)$(*:DIS/%=%)" \ |
--create-perl-module="$(NS_UTIL_DIS)Value DIS/Value$(PM_SUFFIX)" \ |
95 |
--output-file-path="$@" |
--create-perl-module="$(NS_UTIL_DIS)Perl DIS/Perl$(PM_SUFFIX)" \ |
96 |
$(PERL_CHK) $@ |
--create-perl-module="$(NS_UTIL_DIS)DPG DIS/DPG$(PM_SUFFIX)" \ |
|
|
|
|
.discore$(PM_SUFFIX): discore$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--create-perl-module="$(NS_UTIL)DIS DIS$(PM_SUFFIX)" \ |
|
|
--create-perl-module="$(NS_UTIL_DIS)Value DIS/Value$(PM_SUFFIX)" \ |
|
|
--create-perl-module="$(NS_UTIL_DIS)Perl DIS/Perl$(PM_SUFFIX)" \ |
|
|
--create-perl-module="$(NS_UTIL_DIS)DPG DIS/DPG$(PM_SUFFIX)" \ |
|
97 |
--create-perl-module="$(NS_UTIL_DIS)DNLite DIS/DNLite$(PM_SUFFIX)" |
--create-perl-module="$(NS_UTIL_DIS)DNLite DIS/DNLite$(PM_SUFFIX)" |
98 |
$(PERL_CHK) DIS$(PM_SUFFIX) |
$(PERL_CHK) DIS$(PM_SUFFIX) |
99 |
$(PERL_CHK) DIS/Value$(PM_SUFFIX) |
$(PERL_CHK) DIS/Value$(PM_SUFFIX) |
102 |
$(PERL_CHK) DIS/DPG$(PM_SUFFIX) |
$(PERL_CHK) DIS/DPG$(PM_SUFFIX) |
103 |
$(TOUCH) $@ |
$(TOUCH) $@ |
104 |
|
|
105 |
$(PC_DIS_FILES:$(DIS_SUFFIX)=$(PM_SUFFIX)): %$(PM_SUFFIX): \ |
.discore-all$(PM_SUFFIX): $(DIS_CORE_DIS_FILES) $(DAF_PL) |
106 |
pc$(DAC_SUFFIX) $(DAC2PM_PL) |
$(DAF) \ |
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL)$*" \ |
|
|
--output-file-path="$@" |
|
|
$(PERL_CHK) $@ |
|
|
|
|
|
.discore-all$(PM_SUFFIX): discore$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
107 |
--create-perl-module="$(NS_UTIL)ManakaiNode ManakaiNode$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL)ManakaiNode ManakaiNode$(PM_SUFFIX)" \ |
108 |
--create-perl-module="$(NS_UTIL_ERR)DOMException Error/DOMException$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL_ERR)DOMException Error/DOMException$(PM_SUFFIX)" \ |
109 |
--create-perl-module="$(NS_MARKUP)SuikaWikiConfig21 ../Markup/SuikaWikiConfig21$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MARKUP)SuikaWikiConfig21 ../Markup/SuikaWikiConfig21$(PM_SUFFIX)" \ |
110 |
--create-perl-module="$(NS_UTIL)DIS DIS$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL)DIS DIS$(PM_SUFFIX)" \ |
111 |
--create-perl-module="$(NS_UTIL_DIS)Value DIS/Value$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL_DIS)Value DIS/Value$(PM_SUFFIX)" \ |
112 |
--create-perl-module="$(NS_UTIL_DIS)Perl DIS/Perl$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL_DIS)Perl DIS/Perl$(PM_SUFFIX)" \ |
113 |
|
--create-perl-module="$(NS_UTIL_DIS)DPG DIS/DPG$(PM_SUFFIX)" \ |
114 |
--create-perl-module="$(NS_UTIL_DIS)DNLite DIS/DNLite$(PM_SUFFIX)" |
--create-perl-module="$(NS_UTIL_DIS)DNLite DIS/DNLite$(PM_SUFFIX)" |
115 |
$(PERL_CHK) ../Markup/SuikaWikiConfig21$(PM_SUFFIX) |
$(PERL_CHK) ../Markup/SuikaWikiConfig21$(PM_SUFFIX) |
116 |
$(PERL_CHK) DIS$(PM_SUFFIX) |
$(PERL_CHK) DIS$(PM_SUFFIX) |
117 |
$(PERL_CHK) DIS/Value$(PM_SUFFIX) |
$(PERL_CHK) DIS/Value$(PM_SUFFIX) |
118 |
$(PERL_CHK) DIS/Perl$(PM_SUFFIX) |
$(PERL_CHK) DIS/Perl$(PM_SUFFIX) |
119 |
|
$(PERL_CHK) DIS/DPG$(PM_SUFFIX) |
120 |
$(PERL_CHK) DIS/DNLite$(PM_SUFFIX) |
$(PERL_CHK) DIS/DNLite$(PM_SUFFIX) |
121 |
$(DAC2PM) $< \ |
$(TOUCH) .discore$(PM_SUFFIX) |
122 |
|
$(DAF) \ |
123 |
--create-perl-module="$(NS_UTIL)PerlCode PerlCode$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_UTIL)PerlCode PerlCode$(PM_SUFFIX)" \ |
|
--create-perl-module="$(NS_UTIL_DIS)DPG DIS/DPG$(PM_SUFFIX)" \ |
|
124 |
--create-perl-module="$(NS_MDOM)DOMFeature ../DOM/DOMFeature$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)DOMFeature ../DOM/DOMFeature$(PM_SUFFIX)" \ |
125 |
--create-perl-module="$(NS_MDOM)GenericLS ../DOM/GenericLS$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)GenericLS ../DOM/GenericLS$(PM_SUFFIX)" \ |
126 |
--create-perl-module="$(NS_MDOM)DOMMain ../DOM/DOMMain$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)DOMMain ../DOM/DOMMain$(PM_SUFFIX)" \ |
127 |
--create-perl-module="$(NS_MDOM)DOMCore ../DOM/DOMCore$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)DOMCore ../DOM/DOMCore$(PM_SUFFIX)" \ |
128 |
--create-perl-module="$(NS_MDOM)Tree ../DOM/Tree$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)Tree ../DOM/Tree$(PM_SUFFIX)" \ |
129 |
--create-perl-module="$(NS_MDOM)DOMXML ../DOM/DOMXML$(PM_SUFFIX)" \ |
--create-perl-module="$(NS_MDOM)DOMXML ../DOM/DOMXML$(PM_SUFFIX)" \ |
130 |
--create-perl-module="$(NS_MDOMXDoctype ../DOM/XDoctype$(PM_SUFFIX)" |
--create-perl-module="$(NS_MDOM)XDoctype ../DOM/XDoctype$(PM_SUFFIX)" |
131 |
$(PERL_CHK) PerlCode$(PM_SUFFIX) |
$(PERL_CHK) PerlCode$(PM_SUFFIX) |
|
$(PERL_CHK) DIS/DPG$(PM_SUFFIX) |
|
132 |
$(PERL_CHK) ../DOM/DOMFeature$(PM_SUFFIX) |
$(PERL_CHK) ../DOM/DOMFeature$(PM_SUFFIX) |
133 |
$(PERL_CHK) ../DOM/GenericLS$(PM_SUFFIX) |
$(PERL_CHK) ../DOM/GenericLS$(PM_SUFFIX) |
134 |
$(PERL_CHK) ../DOM/DOMMain$(PM_SUFFIX) |
$(PERL_CHK) ../DOM/DOMMain$(PM_SUFFIX) |
137 |
$(PERL_CHK) ../DOM/DOMXML$(PM_SUFFIX) |
$(PERL_CHK) ../DOM/DOMXML$(PM_SUFFIX) |
138 |
$(PERL_CHK) ../DOM/XDoctype$(PM_SUFFIX) |
$(PERL_CHK) ../DOM/XDoctype$(PM_SUFFIX) |
139 |
$(TOUCH) $@ |
$(TOUCH) $@ |
140 |
|
$(TOUCH) ../DOM/.core$(PM_SUFFIX) |
|
DIS/DISDoc$(PM_SUFFIX): disdoc$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL_DIS)DISDoc" \ |
|
|
--output-file-path="$@" |
|
|
$(PERL_CHK) $@ |
|
|
|
|
|
DIS/DISDump$(PM_SUFFIX): disdump$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL_DIS)DISDump" \ |
|
|
--output-file-path="$@" |
|
|
$(PERL_CHK) $@ |
|
|
|
|
|
DIS/Test$(PM_SUFFIX): distest$(DAC_SUFFIX) $(DAC2PM_PL) |
|
|
$(DAC2PM) $< \ |
|
|
--module-uri="$(NS_UTIL_DIS)Test" \ |
|
|
--output-file-path="$@" |
|
|
$(PERL_CHK) $@ |
|
|
|
|
|
# $(CORE_DAC_FILE) |
|
|
$(MANAKAI_LIB_DIR)manakai/all$(DAC_SUFFIX): dummy |
|
|
$(CD) $(MANAKAI_LIB_DIR)manakai/ && $(MAKE) all$(DAC_SUFFIX) |
|
|
|
|
|
# $(SWCFG_DAC_FILE) |
|
|
$(MANAKAI_LIB_DIR)Message/Markup/all$(DAC_SUFFIX): dummy |
|
|
$(CD) $(MANAKAI_LIB_DIR)Message/Markup/ && $(MAKE) all$(DAC_SUFFIX) |
|
|
|
|
|
# $(DOM_CORE_DAC_FILE) |
|
|
$(MANAKAI_LIB_DIR)Message/DOM/core$(DAC_SUFFIX): dummy |
|
|
$(CD) $(MANAKAI_LIB_DIR)Message/DOM/ && $(MAKE) core$(DAC_SUFFIX) |
|
|
|
|
|
dummy: |
|
141 |
|
|
142 |
clean: |
clean: |
143 |
$(RM) $(GENERATED_FILES) |
$(RMALL) $(GENERATED_FILES) |
144 |
$(RM) .*.tmp .discore$(PM_SUFFIX) .discore-all$(PM_SUFFIX) |
$(RMALL) .*.tmp *~ .*~ .discore$(PM_SUFFIX) .discore-all$(PM_SUFFIX) |
145 |
|
$(RMALL) Error/*~ Error/.*~ |
146 |
|
$(RMALL) Formatter/*~ Formatter/.*~ |
147 |
|
$(RMALL) DIS/*~ DIS/.*~ |
148 |
|
|
149 |
|
distclean: clean |
150 |
|
$(RMALL) *$(DAEM_SUFFIX) *$(DAFX_SUFFIX) |
151 |
|
$(RMALL) Error/*$(DAEM_SUFFIX) Error/*$(DAFX_SUFFIX) |
152 |
|
$(RMALL) Formatter/*$(DAEM_SUFFIX) Formatter/*$(DAFX_SUFFIX) |
153 |
|
$(RMALL) DIS/*$(DAEM_SUFFIX) DIS/*$(DAFX_SUFFIX) |
154 |
|
|
155 |
|
## $Date$ |
156 |
|
## License: Public Domain. |