About the Execution of ITS-Tools for ResAllocation-PT-R002C002
Execution Summary | |||||
Max Memory Used (MB) |
Time wait (ms) | CPU Usage (ms) | I/O Wait (ms) | Computed Result | Execution Status |
293.880 | 4076.00 | 7952.00 | 143.90 | TTFTFFTTFTTTTTFT | normal |
Execution Chart
We display below the execution chart for this examination (boot time has been removed).
Trace from the execution
Formatting '/mnt/tpsp/fkordon/mcc2019-input.r151-ebro-155286406000005.qcow2', fmt=qcow2 size=4294967296 backing_file='/mnt/tpsp/fkordon/mcc2019-input.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
Waiting for the VM to be ready (probing ssh)
........................
=====================================================================
Generated by BenchKit 2-3954
Executing tool itstools
Input is ResAllocation-PT-R002C002, examination is CTLFireability
Time confinement is 3600 seconds
Memory confinement is 16384 MBytes
Number of cores is 4
Run identifier is r151-ebro-155286406000005
=====================================================================
--------------------
preparation of the directory to be used:
/home/mcc/execution
total 164K
-rw-r--r-- 1 mcc users 3.7K Feb 12 14:28 CTLCardinality.txt
-rw-r--r-- 1 mcc users 19K Feb 12 14:28 CTLCardinality.xml
-rw-r--r-- 1 mcc users 2.4K Feb 8 16:23 CTLFireability.txt
-rw-r--r-- 1 mcc users 14K Feb 8 16:23 CTLFireability.xml
-rw-r--r-- 1 mcc users 4.0K Mar 10 17:31 GenericPropertiesDefinition.xml
-rw-r--r-- 1 mcc users 6.3K Mar 10 17:31 GenericPropertiesVerdict.xml
-rw-r--r-- 1 mcc users 112 Feb 24 15:05 GlobalProperties.txt
-rw-r--r-- 1 mcc users 350 Feb 24 15:05 GlobalProperties.xml
-rw-r--r-- 1 mcc users 2.4K Feb 5 01:09 LTLCardinality.txt
-rw-r--r-- 1 mcc users 9.5K Feb 5 01:09 LTLCardinality.xml
-rw-r--r-- 1 mcc users 1.9K Feb 4 22:47 LTLFireability.txt
-rw-r--r-- 1 mcc users 7.7K Feb 4 22:47 LTLFireability.xml
-rw-r--r-- 1 mcc users 3.3K Feb 4 16:37 ReachabilityCardinality.txt
-rw-r--r-- 1 mcc users 15K Feb 4 16:37 ReachabilityCardinality.xml
-rw-r--r-- 1 mcc users 2.6K Feb 1 12:58 ReachabilityFireability.txt
-rw-r--r-- 1 mcc users 14K Feb 1 12:58 ReachabilityFireability.xml
-rw-r--r-- 1 mcc users 1.8K Feb 4 22:30 UpperBounds.txt
-rw-r--r-- 1 mcc users 3.8K Feb 4 22:30 UpperBounds.xml
-rw-r--r-- 1 mcc users 6 Jan 29 09:35 equiv_col
-rw-r--r-- 1 mcc users 9 Jan 29 09:35 instance
-rw-r--r-- 1 mcc users 6 Jan 29 09:35 iscolored
-rw-r--r-- 1 mcc users 8.9K Mar 10 17:31 model.pnml
--------------------
content from stdout:
=== Data for post analysis generated by BenchKit (invocation template)
The expected result is a vector of booleans
BOOL_VECTOR
here is the order used to build the result vector(from text file)
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-00
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-01
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-02
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-03
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-04
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-05
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-06
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-07
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-08
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-09
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-10
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-11
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-12
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-13
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-14
FORMULA_NAME ResAllocation-PT-R002C002-CTLFireability-15
=== Now, execution of the tool begins
BK_START 1553105258325
Invoking ITS tools like this :CommandLine [args=[/home/mcc/BenchKit/itstools/plugins/fr.lip6.move.gal.itstools.binaries_1.0.0.201903111103/bin/its-ctl-linux64, --gc-threshold, 2000000, --quiet, -i, /home/mcc/execution/CTLFireability.pnml.gal, -t, CGAL, -ctl, /home/mcc/execution/CTLFireability.ctl], workingDir=/home/mcc/execution]
its-ctl command run as :
/home/mcc/BenchKit/itstools/plugins/fr.lip6.move.gal.itstools.binaries_1.0.0.201903111103/bin/its-ctl-linux64 --gc-threshold 2000000 --quiet -i /home/mcc/execution/CTLFireability.pnml.gal -t CGAL -ctl /home/mcc/execution/CTLFireability.ctl
No direction supplied, using forward translation only.
Parsed 16 CTL formulae.
Model ,|S| ,Time ,Mem(kb) ,fin. SDD ,fin. DDD ,peak SDD ,peak DDD ,SDD Hom ,SDD cache peak ,DDD Hom ,DDD cachepeak ,SHom cache
reachable,8,0.013208,4208,2,16,5,77,6,0,41,57,0
Converting to forward existential form...Done !
original formula: EG(!(EX((((r_1_1>=1)&&(r_0_1>=1))&&(r_0_0>=1)))))
=> equivalent forward existential formula: [FwdG(Init,!(EX((((r_1_1>=1)&&(r_0_1>=1))&&(r_0_0>=1)))))] != FALSE
Reverse transition relation is NOT exact ! Due to transitions t_0_2, t_1_0, Intersection with reachable at each step enabled. (destroyed/reverse/intersect/total) :0/4/2/6
(forward)formula 0,1,0.017357,5040,1,0,27,196,34,17,229,253,29
FORMULA ResAllocation-PT-R002C002-CTLFireability-00 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: (!(A(!((p_0_1>=1)) U ((p_0_1>=1)||(p_1_0>=1)))) * EX(!(AX((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))))))
=> equivalent forward existential formula: [(EY(EY((Init * !(!((E(!(((p_0_1>=1)||(p_1_0>=1))) U (!(!((p_0_1>=1))) * !(((p_0_1>=1)||(p_1_0>=1))))) + EG(!(((p_0_1>=1)||(p_1_0>=1)))))))))) * !((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))))] != FALSE
(forward)formula 1,1,0.020672,5308,1,0,35,226,45,27,241,325,61
FORMULA ResAllocation-PT-R002C002-CTLFireability-01 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: AF(AX(AF(((r_1_1>=1)&&(r_0_1>=1)))))
=> equivalent forward existential formula: [FwdG(Init,!(!(EX(!(!(EG(!(((r_1_1>=1)&&(r_0_1>=1))))))))))] = FALSE
(forward)formula 2,0,0.02226,5308,1,0,48,260,54,44,244,431,104
FORMULA ResAllocation-PT-R002C002-CTLFireability-02 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: AX(((r_0_0>=1) + !(AF((r_0_0>=1)))))
=> equivalent forward existential formula: [((EY(Init) * !((r_0_0>=1))) * !(EG(!((r_0_0>=1)))))] = FALSE
(forward)formula 3,1,0.023764,5308,1,0,60,298,60,58,244,518,140
FORMULA ResAllocation-PT-R002C002-CTLFireability-03 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: AX((r_0_0>=1))
=> equivalent forward existential formula: [(EY(Init) * !((r_0_0>=1)))] = FALSE
(forward)formula 4,0,0.0242,5308,1,0,60,298,60,58,244,518,140
FORMULA ResAllocation-PT-R002C002-CTLFireability-04 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: !((AF(((((r_1_1>=1)&&(r_0_1>=1))||(p_1_0>=1))||((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))||(p_1_0>=1)))) * !(EG(!((r_0_0>=1))))))
=> equivalent forward existential formula: ([FwdG(Init,!(((((r_1_1>=1)&&(r_0_1>=1))||(p_1_0>=1))||((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))||(p_1_0>=1)))))] != FALSE + [FwdG(Init,!((r_0_0>=1)))] != FALSE)
(forward)formula 5,0,0.02636,5308,1,0,61,300,72,60,251,529,141
FORMULA ResAllocation-PT-R002C002-CTLFireability-05 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: ((r_1_1>=1)&&(r_0_1>=1))
=> equivalent forward existential formula: [(Init * ((r_1_1>=1)&&(r_0_1>=1)))] != FALSE
(forward)formula 6,1,0.027145,5308,1,0,61,300,72,60,251,529,142
FORMULA ResAllocation-PT-R002C002-CTLFireability-06 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: !((((EX((r_0_0>=1)) + ((!(r_0_0>=1))&&(p_0_1>=1))) * (p_1_0>=1)) * E((p_0_1>=1) U (r_0_0>=1))))
=> equivalent forward existential formula: (([((Init * !(((!(r_0_0>=1))&&(p_0_1>=1)))) * !(EX((r_0_0>=1))))] != FALSE + [(Init * !((p_1_0>=1)))] != FALSE) + [(Init * !(E((p_0_1>=1) U (r_0_0>=1))))] != FALSE)
(forward)formula 7,1,0.028355,5308,1,0,65,309,76,64,253,554,148
FORMULA ResAllocation-PT-R002C002-CTLFireability-07 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: E((p_1_0>=1) U E((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)) U (p_0_1>=1)))
=> equivalent forward existential formula: [(FwdU(FwdU(Init,(p_1_0>=1)),(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))) * (p_0_1>=1))] != FALSE
Hit Full ! (commute/partial/dont) 4/0/2
Hit Full ! (commute/partial/dont) 1/7/5
(forward)formula 8,0,0.029384,5308,1,0,67,309,88,65,286,555,154
FORMULA ResAllocation-PT-R002C002-CTLFireability-08 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: ((AF(((p_0_0>=1)&&(r_0_1>=1))) * (E((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)) U (r_0_0>=1)) * !(((!(p_0_1>=1))&&((r_0_0>=1)&&(p_0_1>=1)))))) + (EF((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))) + !((((p_0_0>=1)&&(r_0_1>=1))&&(p_1_0>=1)))))
=> equivalent forward existential formula: ([FwdG((Init * !((E(TRUE U (((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))) + !((((p_0_0>=1)&&(r_0_1>=1))&&(p_1_0>=1)))))),!(((p_0_0>=1)&&(r_0_1>=1))))] = FALSE * ([((Init * !((E(TRUE U (((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))) + !((((p_0_0>=1)&&(r_0_1>=1))&&(p_1_0>=1)))))) * !(E((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)) U (r_0_0>=1))))] = FALSE * [((Init * !((E(TRUE U (((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))) + !((((p_0_0>=1)&&(r_0_1>=1))&&(p_1_0>=1)))))) * ((!(p_0_1>=1))&&((r_0_0>=1)&&(p_0_1>=1))))] = FALSE))
(forward)formula 9,1,0.035389,5308,1,0,69,319,106,70,300,602,174
FORMULA ResAllocation-PT-R002C002-CTLFireability-09 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: EF(((!(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))||(((r_1_1>=1)&&(r_0_1>=1))&&((p_0_0>=1)&&(r_0_1>=1)))))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * ((!(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))||(((r_1_1>=1)&&(r_0_1>=1))&&((p_0_0>=1)&&(r_0_1>=1)))))] != FALSE
(forward)formula 10,1,0.037498,5308,1,0,69,319,107,71,302,613,175
FORMULA ResAllocation-PT-R002C002-CTLFireability-10 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: !(((p_1_0>=1) * EG(AX(((r_1_1>=1)&&(r_0_1>=1))))))
=> equivalent forward existential formula: ([(Init * !((p_1_0>=1)))] != FALSE + [(Init * !(EG(!(EX(!(((r_1_1>=1)&&(r_0_1>=1))))))))] != FALSE)
(forward)formula 11,1,0.037765,5308,1,0,69,319,107,71,302,613,175
FORMULA ResAllocation-PT-R002C002-CTLFireability-11 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: (((p_0_1>=1) + EG(((p_0_0>=1)&&(r_0_1>=1)))) + EX(((p_0_0>=1)&&(r_0_1>=1))))
=> equivalent forward existential formula: (([(Init * (p_0_1>=1))] != FALSE + [FwdG(Init,((p_0_0>=1)&&(r_0_1>=1)))] != FALSE) + [(EY(Init) * ((p_0_0>=1)&&(r_0_1>=1)))] != FALSE)
(forward)formula 12,1,0.039057,5308,1,0,69,319,112,73,304,615,177
FORMULA ResAllocation-PT-R002C002-CTLFireability-12 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: EG(!((((((p_0_0>=1)&&(r_0_1>=1))||(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))||(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))&&(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))))
=> equivalent forward existential formula: [FwdG(Init,!((((((p_0_0>=1)&&(r_0_1>=1))||(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))||(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))&&(((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1)))))] != FALSE
Hit Full ! (commute/partial/dont) 0/0/6
(forward)formula 13,1,0.041599,5308,1,0,70,325,120,76,317,663,181
FORMULA ResAllocation-PT-R002C002-CTLFireability-13 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: (p_1_0>=1)
=> equivalent forward existential formula: [(Init * (p_1_0>=1))] != FALSE
(forward)formula 14,0,0.041888,5308,1,0,70,325,120,76,317,663,182
FORMULA ResAllocation-PT-R002C002-CTLFireability-14 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: (!(EG(((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))||((p_0_0>=1)&&(r_0_1>=1))))) + AG((p_1_0>=1)))
=> equivalent forward existential formula: [(FwdU((Init * !(!(EG(((((r_1_0>=1)&&(p_1_1>=1))&&(r_0_0>=1))||((p_0_0>=1)&&(r_0_1>=1))))))),TRUE) * !((p_1_0>=1)))] = FALSE
(forward)formula 15,1,0.043301,5308,1,0,72,328,125,79,317,673,190
FORMULA ResAllocation-PT-R002C002-CTLFireability-15 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
BK_STOP 1553105262401
--------------------
content from stderr:
+ export BINDIR=/home/mcc/BenchKit/
+ BINDIR=/home/mcc/BenchKit/
++ pwd
+ export MODEL=/home/mcc/execution
+ MODEL=/home/mcc/execution
+ [[ CTLFireability = StateSpace ]]
+ /home/mcc/BenchKit//runeclipse.sh /home/mcc/execution CTLFireability -its -ltsminpath /home/mcc/BenchKit//lts_install_dir/ -smt
+ ulimit -s 65536
+ [[ -z '' ]]
+ export LTSMIN_MEM_SIZE=8589934592
+ LTSMIN_MEM_SIZE=8589934592
+ /home/mcc/BenchKit//itstools/its-tools -data /home/mcc/execution/workspace -pnfolder /home/mcc/execution -examination CTLFireability -z3path /home/mcc/BenchKit//z3/bin/z3 -yices2path /home/mcc/BenchKit//yices/bin/yices -its -ltsminpath /home/mcc/BenchKit//lts_install_dir/ -smt -vmargs -Dosgi.locking=none -Declipse.stateSaveDelayInterval=-1 -Dosgi.configuration.area=/tmp/.eclipse -Xss8m -Xms40m -Xmx8192m -Dfile.encoding=UTF-8 -Dosgi.requiredJavaVersion=1.6
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.application.Application start
INFO: Running its-tools with arguments : [-pnfolder, /home/mcc/execution, -examination, CTLFireability, -z3path, /home/mcc/BenchKit//z3/bin/z3, -yices2path, /home/mcc/BenchKit//yices/bin/yices, -its, -ltsminpath, /home/mcc/BenchKit//lts_install_dir/, -smt]
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.application.MccTranslator transformPNML
INFO: Parsing pnml file : /home/mcc/execution/model.pnml
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.nupn.PTNetReader loadFromXML
INFO: Load time of PNML (sax parser for PT used): 43 ms
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.pnml.togal.PTGALTransformer handlePage
INFO: Transformed 8 places.
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.pnml.togal.PTGALTransformer handlePage
INFO: Transformed 6 transitions.
Mar 20, 2019 6:07:41 PM fr.lip6.move.serialization.SerializationUtil systemToFile
INFO: Time to serialize gal into /home/mcc/execution/model.pnml.img.gal : 8 ms
Mar 20, 2019 6:07:41 PM fr.lip6.move.gal.instantiate.GALRewriter flatten
INFO: Flatten gal took : 23 ms
Mar 20, 2019 6:07:41 PM fr.lip6.move.serialization.SerializationUtil systemToFile
INFO: Time to serialize gal into /home/mcc/execution/CTLFireability.pnml.gal : 1 ms
Mar 20, 2019 6:07:41 PM fr.lip6.move.serialization.SerializationUtil serializePropertiesForITSCTLTools
INFO: Time to serialize properties into /home/mcc/execution/CTLFireability.ctl : 5 ms
Sequence of Actions to be Executed by the VM
This is useful if one wants to reexecute the tool in the VM from the submitted image disk.
set -x
# this is for BenchKit: configuration of major elements for the test
export BK_INPUT="ResAllocation-PT-R002C002"
export BK_EXAMINATION="CTLFireability"
export BK_TOOL="itstools"
export BK_RESULT_DIR="/tmp/BK_RESULTS/OUTPUTS"
export BK_TIME_CONFINEMENT="3600"
export BK_MEMORY_CONFINEMENT="16384"
# this is specific to your benchmark or test
export BIN_DIR="$HOME/BenchKit/bin"
# remove the execution directoty if it exists (to avoid increse of .vmdk images)
if [ -d execution ] ; then
rm -rf execution
fi
# this is for BenchKit: explicit launching of the test
echo "====================================================================="
echo " Generated by BenchKit 2-3954"
echo " Executing tool itstools"
echo " Input is ResAllocation-PT-R002C002, examination is CTLFireability"
echo " Time confinement is $BK_TIME_CONFINEMENT seconds"
echo " Memory confinement is 16384 MBytes"
echo " Number of cores is 4"
echo " Run identifier is r151-ebro-155286406000005"
echo "====================================================================="
echo
echo "--------------------"
echo "preparation of the directory to be used:"
tar xzf /home/mcc/BenchKit/INPUTS/ResAllocation-PT-R002C002.tgz
mv ResAllocation-PT-R002C002 execution
cd execution
if [ "CTLFireability" = "GlobalProperties" ] ; then
rm -f GenericPropertiesVerdict.xml
fi
if [ "CTLFireability" = "UpperBounds" ] ; then
rm -f GenericPropertiesVerdict.xml
fi
pwd
ls -lh
echo
echo "--------------------"
echo "content from stdout:"
echo
echo "=== Data for post analysis generated by BenchKit (invocation template)"
echo
if [ "CTLFireability" = "UpperBounds" ] ; then
echo "The expected result is a vector of positive values"
echo NUM_VECTOR
elif [ "CTLFireability" != "StateSpace" ] ; then
echo "The expected result is a vector of booleans"
echo BOOL_VECTOR
else
echo "no data necessary for post analysis"
fi
echo
if [ -f "CTLFireability.txt" ] ; then
echo "here is the order used to build the result vector(from text file)"
for x in $(grep Property CTLFireability.txt | cut -d ' ' -f 2 | sort -u) ; do
echo "FORMULA_NAME $x"
done
elif [ -f "CTLFireability.xml" ] ; then # for cunf (txt files deleted;-)
echo echo "here is the order used to build the result vector(from xml file)"
for x in $(grep '
echo "FORMULA_NAME $x"
done
fi
echo
echo "=== Now, execution of the tool begins"
echo
echo -n "BK_START "
date -u +%s%3N
echo
timeout -s 9 $BK_TIME_CONFINEMENT bash -c "/home/mcc/BenchKit/BenchKit_head.sh 2> STDERR ; echo ; echo -n \"BK_STOP \" ; date -u +%s%3N"
if [ $? -eq 137 ] ; then
echo
echo "BK_TIME_CONFINEMENT_REACHED"
fi
echo
echo "--------------------"
echo "content from stderr:"
echo
cat STDERR ;