@@ 0,0 1,76 @@
+Mercurial autosync extension
+----------------------------
+
+**This project is not maintained anymore (2015-03-31). Let me know if
+you want to continue working on this.**
+
+*Requires Mercurial ≥ 2.0 (older versions may work too, but tests have
+been run for 2.0)*
+
+### Automated duplex synchronization with another repository
+
+The idea of this extension is to use Mercurial as a synchronization
+engine to keep files in sync across work stations.
+
+This extension provides the *autosync* command which automatically and
+continuously commits working copy changes, fetches (pull, merge, commit)
+changes from another repository and pushes local changes back to the
+other repository. Think of configuration files or to-do lists as
+examples for things to synchronize. On a higher level the *autosync*
+command not only synchronizes repositories but working copies. A central
+repository (usually without a working copy) must be used as
+synchronization hub:
+
+
+
+Running the autosync command in *work* and *home* ensures the working
+copies (!) of both repositories stay in sync (as long as they are no
+conflicting changes).
+
+Errors and merge conflicts which cannot be resolved automatically are
+highlighted in the output. Additionally an alert tool can be specified
+to run on errors and conflicts. The alerter is supposed to notify errors
+to a human. In any case the command keeps running and retries after the
+next interval, hoping things get fixed externally.
+
+When running in daemon mode, any output gets logged into the file
+*autosync.log* within the repository's *.hg* directory (use
+*\--daemon-log* to set a different file).
+
+This command denies to run in a virgin repository as this may unrelate
+repositories which were supposed to get synchronized. Before running
+autosync, pull or commit something first manually.
+
+### Installation
+
+Download or clone *hg-autosync* to some place, then enable the extension
+in your *hgrc* file:
+
+ [extensions]
+ autosync = /path/to/autosync.py
+
+### Configuration
+
+ [autosync]
+ merge = ...
+ alert = ...
+
+By default Mercurial's internal non-interactive merger *internal:merge*
+is used when fetching from another repository (i.e. option *ui → merge*
+and *HGMERGE* are ignored). Option *autosync → merge* can be used to set
+another merge tool (e.g. *inernal:local* to let local changes
+automatically win on conflicts).
+
+The option *autosync → alert* may point to a program to call on problems
+to notify them to a human. The repository path and an error message are
+passed as arguments to the alerter program. Example alert tools can be
+found in the directory
+*[alerter](https://hg.sr.ht/~obensonne/hg-autosync/browse/default/alerter)*.
+
+### Usage
+
+Typically you run *hg autosync -D* in each repository clone you want to
+be synchronized.
+
+Inspect *hg help autosync* to get more detailed information and
+available options.
@@ 0,0 1,426 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="repo-setup.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.95024319"
+ inkscape:cx="338.12195"
+ inkscape:cy="701.41534"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1126"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:0.15352697;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3368"
+ width="676.66888"
+ height="443.04446"
+ x="33.675591"
+ y="138.9118"
+ inkscape:export-filename="/home/mondai/data/Projects/ObenSonne/website/res/images/autosync-ss.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ rx="10"
+ ry="10" />
+ <g
+ id="g3370"
+ transform="translate(-12.628354,0.5262032)">
+ <rect
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ style="opacity:1;fill:#fcaf3e;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299999;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2405"
+ width="162.06378"
+ height="98.922043"
+ x="303.60648"
+ y="175.74448"
+ rx="10"
+ ry="10" />
+ <text
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="384.66278"
+ y="219.77216"
+ id="text2407"><tspan
+ id="tspan2417"
+ sodipodi:role="line"
+ x="384.66278"
+ y="219.77216">online hub</tspan><tspan
+ id="tspan2423"
+ sodipodi:role="line"
+ x="384.66278"
+ y="244.77216">repository</tspan></text>
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ id="g2471">
+ <rect
+ style="opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299999;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2389"
+ width="162.06378"
+ height="98.922043"
+ x="95.764961"
+ y="340.96533"
+ rx="10"
+ ry="10" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="176.42151"
+ y="368.99301"
+ id="text2391"><tspan
+ sodipodi:role="line"
+ id="tspan2393"
+ x="176.42151"
+ y="368.99301">local clone</tspan><tspan
+ sodipodi:role="line"
+ x="176.42151"
+ y="393.99301"
+ id="tspan2395">at home</tspan></text>
+ <text
+ id="text2425"
+ y="414.99301"
+ x="176.42151"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ y="414.99301"
+ x="176.42151"
+ sodipodi:role="line"
+ id="tspan2433">autosync extension</tspan><tspan
+ y="431.24301"
+ x="176.42151"
+ sodipodi:role="line"
+ id="tspan2437">is running</tspan></text>
+ </g>
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ transform="translate(-6.8403473,0)"
+ id="g2480">
+ <rect
+ ry="10"
+ rx="10"
+ y="340.96533"
+ x="310.44684"
+ height="98.922043"
+ width="162.06378"
+ id="rect2439"
+ style="opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299999;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text2441"
+ y="368.99301"
+ x="391.10339"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ y="368.99301"
+ x="391.10339"
+ id="tspan2443"
+ sodipodi:role="line">local clone</tspan><tspan
+ y="393.99301"
+ x="391.10339"
+ sodipodi:role="line"
+ id="tspan2453">at work</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="391.10339"
+ y="414.99301"
+ id="text2447"><tspan
+ id="tspan2449"
+ sodipodi:role="line"
+ x="391.10339"
+ y="414.99301">autosync extension</tspan><tspan
+ id="tspan2451"
+ sodipodi:role="line"
+ x="391.10339"
+ y="431.24301">is running</tspan></text>
+ </g>
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ id="g2489">
+ <rect
+ style="opacity:1;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299999;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2457"
+ width="162.06378"
+ height="98.922043"
+ x="511.44803"
+ y="340.96533"
+ rx="10"
+ ry="10" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="592.10455"
+ y="368.99301"
+ id="text2459"><tspan
+ sodipodi:role="line"
+ id="tspan2461"
+ x="592.10455"
+ y="368.99301">local clone</tspan><tspan
+ id="tspan2463"
+ sodipodi:role="line"
+ x="592.10455"
+ y="393.99301">at ...</tspan></text>
+ <text
+ id="text2465"
+ y="414.99301"
+ x="592.10455"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ y="414.99301"
+ x="592.10455"
+ sodipodi:role="line"
+ id="tspan2467">autosync extension</tspan><tspan
+ y="431.24301"
+ x="592.10455"
+ sodipodi:role="line"
+ id="tspan2469">is running</tspan></text>
+ </g>
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ inkscape:connection-end="#g2471"
+ inkscape:connection-start="#rect2405"
+ inkscape:connector-type="polyline"
+ id="path2498"
+ d="M 320.5106,276.18302 L 240.92462,339.44883"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ inkscape:connection-end="#g2480"
+ inkscape:connection-start="#rect2405"
+ inkscape:connector-type="polyline"
+ id="path2500"
+ d="M 384.63837,276.18302 L 384.63838,339.44883"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ inkscape:connection-end="#g2489"
+ inkscape:connection-start="#rect2405"
+ inkscape:connector-type="polyline"
+ id="path2502"
+ d="M 448.76615,276.18302 L 528.35214,339.44883"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ id="g3301">
+ <rect
+ ry="9.999999"
+ rx="10"
+ y="464.09167"
+ x="95.764961"
+ height="79.979515"
+ width="162.06378"
+ id="rect2506"
+ style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text2508"
+ y="492.11938"
+ x="176.42151"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ id="tspan2512"
+ y="492.11938"
+ x="176.42151"
+ sodipodi:role="line">working copy</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="176.42151"
+ y="512.11938"
+ id="text2514"><tspan
+ id="tspan2516"
+ sodipodi:role="line"
+ x="176.42151"
+ y="512.11938">synchronized by</tspan><tspan
+ sodipodi:role="line"
+ x="176.42151"
+ y="528.36938"
+ id="tspan2529">autosync extension</tspan><tspan
+ id="tspan2518"
+ sodipodi:role="line"
+ x="176.42151"
+ y="544.61938" /></text>
+ </g>
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ inkscape:connection-end="#g3301"
+ inkscape:connection-start="#g2471"
+ inkscape:connector-type="polyline"
+ id="path3310"
+ d="M 176.79685,441.40387 L 176.79685,462.57517"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ transform="translate(207.84153,0)"
+ id="g3312">
+ <rect
+ style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3314"
+ width="162.06378"
+ height="79.979515"
+ x="95.764961"
+ y="464.09167"
+ rx="10"
+ ry="9.999999" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="176.42151"
+ y="492.11938"
+ id="text3316"><tspan
+ sodipodi:role="line"
+ x="176.42151"
+ y="492.11938"
+ id="tspan3318">working copy</tspan></text>
+ <text
+ id="text3320"
+ y="512.11938"
+ x="176.42151"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ y="512.11938"
+ x="176.42151"
+ sodipodi:role="line"
+ id="tspan3322">synchronized by</tspan><tspan
+ id="tspan3324"
+ y="528.36938"
+ x="176.42151"
+ sodipodi:role="line">autosync extension</tspan><tspan
+ y="544.61938"
+ x="176.42151"
+ sodipodi:role="line"
+ id="tspan3326" /></text>
+ </g>
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 384.63838,441.40387 L 384.63838,462.57517"
+ id="path3328"
+ inkscape:connector-type="polyline" />
+ <g
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ id="g3330"
+ transform="translate(415.68307,0)">
+ <rect
+ ry="9.999999"
+ rx="10"
+ y="464.09167"
+ x="95.764961"
+ height="79.979515"
+ width="162.06378"
+ id="rect3332"
+ style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.03299975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text3334"
+ y="492.11938"
+ x="176.42151"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ xml:space="preserve"><tspan
+ id="tspan3336"
+ y="492.11938"
+ x="176.42151"
+ sodipodi:role="line">working copy</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:AlMateen;-inkscape-font-specification:AlMateen Bold"
+ x="176.42151"
+ y="512.11938"
+ id="text3338"><tspan
+ id="tspan3340"
+ sodipodi:role="line"
+ x="176.42151"
+ y="512.11938">synchronized by</tspan><tspan
+ sodipodi:role="line"
+ x="176.42151"
+ y="528.36938"
+ id="tspan3342">autosync extension</tspan><tspan
+ id="tspan3344"
+ sodipodi:role="line"
+ x="176.42151"
+ y="544.61938" /></text>
+ </g>
+ <path
+ inkscape:export-ydpi="62.042271"
+ inkscape:export-xdpi="62.042271"
+ inkscape:export-filename="/home/mondai/data/Projects/Mercurial/hg-autosync.wiki/images/repo-setup.png"
+ inkscape:connector-type="polyline"
+ id="path3346"
+ d="M 592.47992,441.40387 L 592.47992,462.57517"
+ style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>