Merge lp:~jpakkane/grail/glue-reworking into lp:grail

Proposed by Jussi Pakkanen
Status: Rejected
Rejected by: Chase Douglas
Proposed branch: lp:~jpakkane/grail/glue-reworking
Merge into: lp:grail
Diff against target: 47441 lines (+45627/-1225)
36 files modified
include/grail-bits.h (+2/-0)
include/grail.h (+29/-25)
src/Makefile.am (+0/-7)
src/gestures-drag.c (+0/-135)
src/gestures-pinch.c (+0/-131)
src/gestures-rotate.c (+0/-130)
src/gestures-tapping.c (+0/-100)
src/gestures-touch.c (+0/-98)
src/grail-api.c (+7/-180)
src/grail-bits.c (+10/-0)
src/grail-frame.c (+98/-3)
src/grail-gestures.c (+0/-223)
src/grail-gestures.h (+0/-115)
src/grail-impl.h (+30/-0)
src/grail-init.c (+16/-3)
src/grail-inserter.c (+0/-33)
src/grail-inserter.h (+31/-2)
src/grail-legacy.c (+105/-0)
src/grail-recognizer.c (+344/-15)
src/grail-recognizer.h (+89/-5)
test/Makefile.am (+3/-0)
test/check-gestures.c (+230/-0)
test/check-grail.c (+3/-1)
test/check-mapping.c (+4/-2)
test/check-transform.c (+4/-2)
test/io/functional/drag-1.evemu (+3988/-0)
test/io/functional/drag-2.evemu (+3849/-0)
test/io/functional/drag-3.evemu (+16278/-0)
test/io/functional/drag-4.evemu (+8032/-0)
test/io/functional/hold-1.evemu (+1375/-0)
test/io/functional/pinch-2.evemu (+2457/-0)
test/io/functional/pinch-3.evemu (+4971/-0)
test/io/functional/rotate-2.evemu (+3073/-0)
test/io/functional/tap-1.evemu (+94/-0)
test/io/functional/tap-4.evemu (+388/-0)
tools/grail-gesture.c (+117/-15)
To merge this branch: bzr merge lp:~jpakkane/grail/glue-reworking
Reviewer Review Type Date Requested Status
Chase Douglas (community) Disapprove
Review via email: mp+63820@code.launchpad.net

Description of the change

This branch has Henrik's changes merged together with Grail 2.0.0. No testing has yet been done, just eyeballing and basic build.

Thus not merge ready yet, but put up for review and analysis.

To post a comment you must log in.
lp:~jpakkane/grail/glue-reworking updated
169. By Jussi Pakkanen

Unit tests now work if the build directory is different from the source directory.

170. By Jussi Pakkanen

Take verbosity from env var.

171. By Jussi Pakkanen

Renamed variables now that we live IN THE FUTURE and can use over 8 characters per name.

Revision history for this message
Jussi Pakkanen (jpakkane) wrote :

The reason the unit tests fail:

drag4 and rotate2: Grail detects something else in addition to the main event.
pinch2 and 3: Grail does not detect pinch even though there definitely is one. This is serious.

lp:~jpakkane/grail/glue-reworking updated
172. By Jussi Pakkanen

Textual description on failed unit tests.

Revision history for this message
Jussi Pakkanen (jpakkane) wrote :

Looking at the traces in event viewer gives the following detail:

Rotate2 is a rotation around one finger. This should probably not do anything else. Maybe it also produces drag?

One of the sub-events in drag 4 looks quite a lot like a pinch to me.

lp:~jpakkane/grail/glue-reworking updated
173. By Jussi Pakkanen

Changed drag4 test case.

174. By Jussi Pakkanen

Changed test for rotate-2.

Revision history for this message
Jussi Pakkanen (jpakkane) wrote :

I fixed the two cases where there are extraneous (drag) events by changing the test cases.

The remaining two are cases where the expected gesture is not detected even though it should be. These are bugs caused by the branch merge and need proper fixing.

lp:~jpakkane/grail/glue-reworking updated
175. By Jussi Pakkanen

Merged trunk changes.

176. By Jussi Pakkanen

Process test cases faster.

Revision history for this message
Jussi Pakkanen (jpakkane) wrote :

Merged trunk changes and made the test cases use the new fast forward feature.

Revision history for this message
Chase Douglas (chasedouglas) wrote :

We've skipped this grail implementation and have moved on to grail v3. I'm closing this proposal out.

review: Disapprove

Unmerged revisions

176. By Jussi Pakkanen

Process test cases faster.

175. By Jussi Pakkanen

Merged trunk changes.

174. By Jussi Pakkanen

Changed test for rotate-2.

173. By Jussi Pakkanen

Changed drag4 test case.

172. By Jussi Pakkanen

Textual description on failed unit tests.

171. By Jussi Pakkanen

Renamed variables now that we live IN THE FUTURE and can use over 8 characters per name.

170. By Jussi Pakkanen

Take verbosity from env var.

169. By Jussi Pakkanen

Unit tests now work if the build directory is different from the source directory.

168. By Jussi Pakkanen

Merged 2.0.0 release.

167. By Jussi Pakkanen

Merged trunk changes to this branch. Some tests fail still and slot_center might be missing some work.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'include/grail-bits.h'
--- include/grail-bits.h 2011-05-27 09:22:36 +0000
+++ include/grail-bits.h 2011-08-17 12:41:50 +0000
@@ -78,6 +78,8 @@
78void GRAIL_PUBLIC grail_mask_clear_mask(grail_mask_t *a, const grail_mask_t *b,78void GRAIL_PUBLIC grail_mask_clear_mask(grail_mask_t *a, const grail_mask_t *b,
79 int bytes);79 int bytes);
8080
81int GRAIL_PUBLIC grail_mask_inner(const grail_mask_t *a, const grail_mask_t *b,
82 int bytes);
81int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes);83int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes);
82int GRAIL_PUBLIC grail_mask_get_first(const grail_mask_t *mask, int bytes);84int GRAIL_PUBLIC grail_mask_get_first(const grail_mask_t *mask, int bytes);
83int GRAIL_PUBLIC grail_mask_get_next(int i, const grail_mask_t *mask,85int GRAIL_PUBLIC grail_mask_get_next(int i, const grail_mask_t *mask,
8486
=== modified file 'include/grail.h'
--- include/grail.h 2011-05-18 16:41:41 +0000
+++ include/grail.h 2011-08-17 12:41:50 +0000
@@ -169,6 +169,11 @@
169 * @drop_y_ms: vertical expect timeout (ms)169 * @drop_y_ms: vertical expect timeout (ms)
170 * @drop_scale_ms: scaling expect timeout (ms)170 * @drop_scale_ms: scaling expect timeout (ms)
171 * @drop_angle_ms: rotation expect timeout (ms)171 * @drop_angle_ms: rotation expect timeout (ms)
172<<<<<<< TREE
173 * @pivot_unbound: when true, the pivot is not bound to the contact area
174 * @tap_time_ms: maximum tap time (ms)
175=======
176>>>>>>> MERGE-SOURCE
172 *177 *
173 * The parameters are used to tune the behavior of the gesture recognition.178 * The parameters are used to tune the behavior of the gesture recognition.
174 *179 *
@@ -189,6 +194,8 @@
189 float drop_y_ms;194 float drop_y_ms;
190 float drop_scale_ms;195 float drop_scale_ms;
191 float drop_angle_ms;196 float drop_angle_ms;
197 int pivot_unbound;
198 float tap_time_ms;
192};199};
193200
194/**201/**
@@ -229,6 +236,8 @@
229 * @velocity: current center velocity (surface units per second)236 * @velocity: current center velocity (surface units per second)
230 * @radius: gesture radius from center (surface units)237 * @radius: gesture radius from center (surface units)
231 * @transform: the transformation matrix of the gesture238 * @transform: the transformation matrix of the gesture
239 * @moveness: fraction of center movement attributed to drag motion
240 * @pivot: current center of rotate and scale (surface units)
232 * @rotation_center: current instant center of rotation (surface units)241 * @rotation_center: current instant center of rotation (surface units)
233 * @drag: accumulated transformation displacement (surface units)242 * @drag: accumulated transformation displacement (surface units)
234 * @scale: accumulated scale (dimensionless)243 * @scale: accumulated scale (dimensionless)
@@ -256,6 +265,7 @@
256 int num_touches;265 int num_touches;
257 const struct utouch_contact **touches;266 const struct utouch_contact **touches;
258 grail_time_t start_time;267 grail_time_t start_time;
268 struct grail_coord start_center;
259 unsigned int expect_mask;269 unsigned int expect_mask;
260 unsigned int active_mask;270 unsigned int active_mask;
261 struct grail_coord center;271 struct grail_coord center;
@@ -352,21 +362,6 @@
352};362};
353363
354/**364/**
355 * grail_open - open a grail device
356 * @ge: the grail device to open
357 * @fd: file descriptor of the kernel device
358 *
359 * Initialize the internal grail structures and configure it by reading the
360 * protocol capabilities through the file descriptor.
361 *
362 * The callbacks, parameters and priv pointer should be set prior to this
363 * call.
364 *
365 * Returns zero on success, negative error number otherwise.
366 */
367int GRAIL_PUBLIC grail_open(struct grail *ge, int fd);
368
369/**
370 * grail_idle - check state of kernel device365 * grail_idle - check state of kernel device
371 * @ge: the grail device in use366 * @ge: the grail device in use
372 * @fd: file descriptor of the kernel device367 * @fd: file descriptor of the kernel device
@@ -394,16 +389,6 @@
394int GRAIL_PUBLIC grail_pull(struct grail *ge, int fd);389int GRAIL_PUBLIC grail_pull(struct grail *ge, int fd);
395390
396/**391/**
397 * grail_close - close the grail device
398 * @ge: the grail device to close
399 * @fd: file descriptor of the kernel device
400 *
401 * Deallocates all memory associated with grail, and clears the grail
402 * structure.
403 */
404void GRAIL_PUBLIC grail_close(struct grail *ge, int fd);
405
406/**
407 * grail_set_bbox - set the grail unit bounding box392 * grail_set_bbox - set the grail unit bounding box
408 * @ge: the grail device in use393 * @ge: the grail device in use
409 * @min: the minimum (lower-left) corner of the bounding box394 * @min: the minimum (lower-left) corner of the bounding box
@@ -447,6 +432,23 @@
447const struct utouch_frame GRAIL_PUBLIC *432const struct utouch_frame GRAIL_PUBLIC *
448grail_get_contact_frame(const struct grail *ge);433grail_get_contact_frame(const struct grail *ge);
449434
435/**
436 * grail_get_gesture_frame - get current gesture frame
437 * @ge: the grail device in use
438 *
439 * Return the gesture frame currently being processed. If called from
440 * within a gesture callback, it is guaranteed to return the frame
441 * corresponding to the gesture.
442 *
443 * The returned pointer can be NULL if no input has yet been extracted
444 * through the grail instance.
445 *
446 * The frame pointer is ABI agnostic, owned by the grail instance, and
447 * has grail scope.
448 */
449const struct grail_frame GRAIL_PUBLIC *
450grail_get_gesture_frame(const struct grail *ge);
451
450#ifndef GRAIL_NO_LEGACY_API452#ifndef GRAIL_NO_LEGACY_API
451453
452struct grail_contact {454struct grail_contact {
@@ -461,6 +463,8 @@
461 float pressure;463 float pressure;
462};464};
463465
466int GRAIL_PUBLIC grail_open(struct grail *ge, int fd);
467void GRAIL_PUBLIC grail_close(struct grail *ge, int fd);
464void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage);468void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage);
465469
466int GRAIL_PUBLIC grail_get_contacts(const struct grail *ge,470int GRAIL_PUBLIC grail_get_contacts(const struct grail *ge,
467471
=== modified file 'src/Makefile.am'
--- src/Makefile.am 2011-04-28 16:53:41 +0000
+++ src/Makefile.am 2011-08-17 12:41:50 +0000
@@ -14,13 +14,6 @@
14 grail-bits.c \14 grail-bits.c \
15 grail-inserter.c \15 grail-inserter.c \
16 grail-inserter.h \16 grail-inserter.h \
17 grail-gestures.c \
18 grail-gestures.h \
19 gestures-touch.c \
20 gestures-drag.c \
21 gestures-pinch.c \
22 gestures-rotate.c \
23 gestures-tapping.c \
24 grail-recognizer.c \17 grail-recognizer.c \
25 grail-recognizer.h \18 grail-recognizer.h \
26 grail-event.c \19 grail-event.c \
2720
=== removed file 'src/gestures-drag.c'
--- src/gestures-drag.c 2011-04-28 16:53:57 +0000
+++ src/gestures-drag.c 1970-01-01 00:00:00 +0000
@@ -1,135 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#include "grail-recognizer.h"
23#include <math.h>
24#include <stdio.h>
25
26static const int getype[DIM_TOUCH + 1] = {
27 -1,
28 GRAIL_TYPE_DRAG1,
29 GRAIL_TYPE_DRAG2,
30 GRAIL_TYPE_DRAG3,
31 GRAIL_TYPE_DRAG4,
32 GRAIL_TYPE_DRAG5,
33};
34
35static void set_props(const struct gesture_inserter *gin,
36 struct combo_model *s, const struct move_model *m,
37 const struct utouch_frame *frame)
38{
39 if (m->single) {
40 s->prop[GRAIL_PROP_DRAG_DX] = m->fm[FM_X].raw_delta;
41 s->prop[GRAIL_PROP_DRAG_DY] = m->fm[FM_Y].raw_delta;
42 } else {
43 s->prop[GRAIL_PROP_DRAG_DX] = m->fm[FM_X].action_delta;
44 s->prop[GRAIL_PROP_DRAG_DY] = m->fm[FM_Y].action_delta;
45 }
46 s->prop[GRAIL_PROP_DRAG_VX] = m->fm[FM_X].velocity;
47 s->prop[GRAIL_PROP_DRAG_VY] = m->fm[FM_Y].velocity;
48 s->prop[GRAIL_PROP_DRAG_X] = m->fm[FM_X].value;
49 s->prop[GRAIL_PROP_DRAG_Y] = m->fm[FM_Y].value;
50 s->nprop = 6;
51 s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
52}
53
54static const int fm_mask = 0x03;
55
56int gru_drag(struct grail *ge,
57 const struct utouch_frame *frame)
58{
59 struct gesture_recognizer *gru = ge->gru;
60 struct combo_model *state = &gru->drag;
61 struct move_model *move = &gru->move;
62 int mask = state->active ? (move->active & fm_mask) : fm_mask;
63 if (!move->multi && !move->single) {
64 if (state->active) {
65 gru_end(ge, state->gid, move,
66 state->prop, state->nprop);
67 state->active = 0;
68 }
69 }
70 if ((move->timeout & fm_mask) == fm_mask) {
71 if (state->active) {
72 gin_gid_timeout(ge, state->gid);
73 }
74 }
75 if (!state->active) {
76 int type = getype[move->ntouch];
77 if (type < 0)
78 return 0;
79 state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
80 state->active = 1;
81 }
82 if (!(move->tickle & mask))
83 return 0;
84 if (!(move->active & fm_mask))
85 return 0;
86 set_props(ge->gin, state, move, frame);
87 gru_event(ge, state->gid, move, state->prop, state->nprop);
88 return 1;
89}
90
91int gru_windrag(struct grail *ge,
92 const struct utouch_frame *frame)
93{
94 struct gesture_recognizer *gru = ge->gru;
95 struct combo_model *state = &gru->windrag;
96 struct move_model *move = &gru->move;
97 int mask = state->active ? (move->active & fm_mask) : fm_mask;
98 if (!move->multi && !move->single) {
99 if (state->active && out_of_bounds(state, move)) {
100 gru_end(ge, state->gid, move,
101 state->prop, state->nprop);
102 state->active = 0;
103 }
104 }
105 if ((move->timeout & fm_mask) == fm_mask) {
106 if (state->active) {
107 gin_gid_timeout(ge, state->gid);
108 }
109 }
110 if (!state->active) {
111 if (move->ntouch == 4) {
112 state->gid = gin_gid_begin(ge, GRAIL_TYPE_MDRAG,
113 PRIO_META, frame);
114 state->mintouch = 1;
115 state->maxtouch = 4;
116 state->active = 1;
117 } else if (move->ntouch == 3) {
118 state->gid = gin_gid_begin(ge, GRAIL_TYPE_EDRAG,
119 PRIO_ENV, frame);
120 state->mintouch = 1;
121 state->maxtouch = 3;
122 state->active = 1;
123 } else {
124 return 0;
125 }
126 }
127 if (!(move->tickle & mask))
128 return 0;
129 if (!(move->active & fm_mask))
130 return 0;
131 set_props(ge->gin, state, move, frame);
132 gru_event(ge, state->gid, move, state->prop, state->nprop);
133 return 1;
134}
135
1360
=== removed file 'src/gestures-pinch.c'
--- src/gestures-pinch.c 2011-06-06 14:42:39 +0000
+++ src/gestures-pinch.c 1970-01-01 00:00:00 +0000
@@ -1,131 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#include "grail-recognizer.h"
23#include <math.h>
24#include <stdio.h>
25
26static const int getype[DIM_TOUCH + 1] = {
27 0,
28 0,
29 GRAIL_TYPE_PINCH2,
30 GRAIL_TYPE_PINCH3,
31 GRAIL_TYPE_PINCH4,
32 GRAIL_TYPE_PINCH5,
33};
34
35static const int fm_mask = 0x04;
36
37static void set_props(const struct gesture_inserter *gin,
38 struct combo_model *s,
39 const struct move_model *m,
40 const struct utouch_frame *frame)
41{
42 s->prop[GRAIL_PROP_PINCH_DR] = m->fm[FM_R].action_delta;
43 s->prop[GRAIL_PROP_PINCH_VR] = m->fm[FM_R].velocity;
44 s->prop[GRAIL_PROP_PINCH_R] = m->fm[FM_R].value;
45 s->prop[GRAIL_PROP_PINCH_X] = m->fm[FM_X].value;
46 s->prop[GRAIL_PROP_PINCH_Y] = m->fm[FM_Y].value;
47 s->nprop = 5;
48 s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
49}
50
51int gru_pinch(struct grail *ge,
52 const struct utouch_frame *frame)
53{
54 struct gesture_recognizer *gru = ge->gru;
55 struct combo_model *state = &gru->pinch;
56 struct move_model *move = &gru->move;
57 int mask = state->active ? (move->active & fm_mask) : fm_mask;
58 if (!move->multi && !move->single) {
59 if (state->active) {
60 gru_end(ge, state->gid, move,
61 state->prop, state->nprop);
62 state->active = 0;
63 }
64 return 0;
65 }
66 if ((move->timeout & fm_mask) == fm_mask) {
67 if (state->active) {
68 gin_gid_timeout(ge, state->gid);
69 }
70 }
71 if (!(move->tickle & mask))
72 return 0;
73 if (!state->active) {
74 int type = getype[move->ntouch];
75 if (!type)
76 return 0;
77 state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
78 state->active = 1;
79 }
80 if (!(move->active & fm_mask))
81 return 0;
82 set_props(ge->gin, state, move, frame);
83 gru_event(ge, state->gid, move, state->prop, state->nprop);
84 return 1;
85}
86
87int gru_winpinch(struct grail *ge,
88 const struct utouch_frame *frame)
89{
90 struct gesture_recognizer *gru = ge->gru;
91 struct combo_model *state = &gru->winpinch;
92 struct move_model *move = &gru->move;
93 int mask = state->active ? (move->active & fm_mask) : fm_mask;
94 if (!move->multi) {
95 if (state->active && out_of_bounds(state, move)) {
96 gru_end(ge, state->gid, move,
97 state->prop, state->nprop);
98 state->active = 0;
99 }
100 return 0;
101 }
102 if ((move->timeout & fm_mask) == fm_mask) {
103 if (state->active) {
104 gin_gid_timeout(ge, state->gid);
105 }
106 }
107 if (!(move->tickle & mask))
108 return 0;
109 if (!state->active) {
110 if (move->ntouch == 4) {
111 state->gid = gin_gid_begin(ge, GRAIL_TYPE_MPINCH,
112 PRIO_META, frame);
113 state->mintouch = 2;
114 state->maxtouch = 4;
115 state->active = 1;
116 } else if (move->ntouch == 3) {
117 state->gid = gin_gid_begin(ge, GRAIL_TYPE_EPINCH,
118 PRIO_ENV, frame);
119 state->mintouch = 2;
120 state->maxtouch = 3;
121 state->active = 1;
122 } else {
123 return 0;
124 }
125 }
126 if (!(move->active & fm_mask))
127 return 0;
128 set_props(ge->gin, state, move, frame);
129 gru_event(ge, state->gid, move, state->prop, state->nprop);
130 return 1;
131}
1320
=== removed file 'src/gestures-rotate.c'
--- src/gestures-rotate.c 2011-06-03 12:54:23 +0000
+++ src/gestures-rotate.c 1970-01-01 00:00:00 +0000
@@ -1,130 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#include "grail-recognizer.h"
23#include <math.h>
24#include <stdio.h>
25
26static const int getype[DIM_TOUCH + 1] = {
27 0,
28 0,
29 GRAIL_TYPE_ROTATE2,
30 GRAIL_TYPE_ROTATE3,
31 GRAIL_TYPE_ROTATE4,
32 GRAIL_TYPE_ROTATE5,
33};
34
35static const int fm_mask = 0x08;
36
37static void set_props(const struct gesture_inserter *gin,
38 struct combo_model *s, const struct move_model *m,
39 const struct utouch_frame *frame)
40{
41 s->prop[GRAIL_PROP_ROTATE_DA] = m->fm[FM_A].action_delta;
42 s->prop[GRAIL_PROP_ROTATE_VA] = m->fm[FM_A].velocity;
43 s->prop[GRAIL_PROP_ROTATE_A] = m->fm[FM_A].value;
44 s->prop[GRAIL_PROP_ROTATE_X] = m->fm[FM_X].value;
45 s->prop[GRAIL_PROP_ROTATE_Y] = m->fm[FM_Y].value;
46 s->nprop = 5;
47 s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
48}
49
50int gru_rotate(struct grail *ge,
51 const struct utouch_frame *frame)
52{
53 struct gesture_recognizer *gru = ge->gru;
54 struct combo_model *state = &gru->rotate;
55 struct move_model *move = &gru->move;
56 int mask = state->active ? (move->active & fm_mask) : fm_mask;
57 if (!move->multi && !move->single) {
58 if (state->active) {
59 gru_end(ge, state->gid, move,
60 state->prop, state->nprop);
61 state->active = 0;
62 }
63 return 0;
64 }
65 if ((move->timeout & fm_mask) == fm_mask) {
66 if (state->active) {
67 gin_gid_timeout(ge, state->gid);
68 }
69 }
70 if (!(move->tickle & mask))
71 return 0;
72 if (!state->active) {
73 int type = getype[move->ntouch];
74 if (!type)
75 return 0;
76 state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
77 state->active = 1;
78 }
79 if (!(move->active & fm_mask))
80 return 0;
81 set_props(ge->gin, state, move, frame);
82 gru_event(ge, state->gid, move, state->prop, state->nprop);
83 return 1;
84}
85
86int gru_winrotate(struct grail *ge,
87 const struct utouch_frame *frame)
88{
89 struct gesture_recognizer *gru = ge->gru;
90 struct combo_model *state = &gru->winrotate;
91 struct move_model *move = &gru->move;
92 int mask = state->active ? (move->active & fm_mask) : fm_mask;
93 if (!move->multi) {
94 if (state->active && out_of_bounds(state, move)) {
95 gru_end(ge, state->gid, move,
96 state->prop, state->nprop);
97 state->active = 0;
98 }
99 return 0;
100 }
101 if ((move->timeout & fm_mask) == fm_mask) {
102 if (state->active) {
103 gin_gid_timeout(ge, state->gid);
104 }
105 }
106 if (!(move->tickle & mask))
107 return 0;
108 if (!state->active) {
109 if (move->ntouch == 4) {
110 state->gid = gin_gid_begin(ge, GRAIL_TYPE_MROTATE,
111 PRIO_META, frame);
112 state->mintouch = 2;
113 state->maxtouch = 4;
114 state->active = 1;
115 } else if (move->ntouch == 3) {
116 state->gid = gin_gid_begin(ge, GRAIL_TYPE_EROTATE,
117 PRIO_ENV, frame);
118 state->mintouch = 2;
119 state->maxtouch = 3;
120 state->active = 1;
121 } else {
122 return 0;
123 }
124 }
125 if (!(move->active & fm_mask))
126 return 0;
127 set_props(ge->gin, state, move, frame);
128 gru_event(ge, state->gid, move, state->prop, state->nprop);
129 return 1;
130}
1310
=== removed file 'src/gestures-tapping.c'
--- src/gestures-tapping.c 2011-04-28 16:53:57 +0000
+++ src/gestures-tapping.c 1970-01-01 00:00:00 +0000
@@ -1,100 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#include "grail-recognizer.h"
23#include <math.h>
24
25static const int fm_mask = 0x07;
26
27static void set_props(const struct gesture_inserter *gin,
28 struct tapping_model *s, const struct move_model *m,
29 const struct utouch_frame *frame)
30{
31 s->prop[GRAIL_PROP_TAP_DT] = m->time - s->start;
32 s->prop[GRAIL_PROP_TAP_X] = m->fm[FM_X].value;
33 s->prop[GRAIL_PROP_TAP_Y] = m->fm[FM_Y].value;
34 s->nprop = 3;
35 s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
36}
37
38int gru_tapping(struct grail *ge,
39 const struct utouch_frame *frame)
40{
41 struct gesture_recognizer *gru = ge->gru;
42 struct tapping_model *state = &gru->tapping;
43 struct move_model *move = &gru->move;
44 state->tap = 0;
45 if (frame->num_active && !frame->prev->num_active) {
46 state->mintouch = 0;
47 state->maxtouch = 0;
48 }
49 if (move->ntouch > state->maxtouch) {
50 if (state->active) {
51 gin_gid_discard(ge, state->gid);
52 state->active = 0;
53 }
54 state->start = move->time;
55 state->maxtouch = move->ntouch;
56 set_props(ge->gin, state, move, frame);
57 if (state->maxtouch <= 5) {
58 int type = GRAIL_TYPE_TAP1 + state->maxtouch - 1;
59 state->gid = gin_gid_begin(ge, type, PRIO_TAP, frame);
60 state->active = 1;
61 }
62 return 0;
63 }
64 if (!state->active) {
65 state->mintouch = move->ntouch;
66 state->maxtouch = move->ntouch;
67 return 0;
68 }
69 if (move->ntouch <= state->mintouch) {
70 int x = state->prop[GRAIL_PROP_TAP_X];
71 int y = state->prop[GRAIL_PROP_TAP_Y];
72 int t = move->time - state->start;
73 if (t > move->fm[FM_X].bar_ms) {
74 gin_gid_discard(ge, state->gid);
75 state->mintouch = move->ntouch;
76 state->maxtouch = move->ntouch;
77 state->active = 0;
78 return 0;
79 }
80 state->tap = state->maxtouch;
81 state->prop[GRAIL_PROP_TAP_DT] = t;
82 gin_gid_event(ge, state->gid, x, y, state->maxtouch,
83 state->prop, state->nprop, 1);
84 state->mintouch = move->ntouch;
85 state->maxtouch = move->ntouch;
86 state->active = 0;
87 return 1;
88 }
89 if (!move->ntouch)
90 return 0;
91 state->prop[GRAIL_PROP_TAP_DT] = move->time - state->start;
92 if ((move->active & fm_mask) ||
93 move->time - state->start > move->fm[FM_X].bar_ms) {
94 gin_gid_discard(ge, state->gid);
95 state->mintouch = move->ntouch;
96 state->maxtouch = move->ntouch;
97 state->active = 0;
98 }
99 return 0;
100}
1010
=== removed file 'src/gestures-touch.c'
--- src/gestures-touch.c 2011-04-04 17:27:38 +0000
+++ src/gestures-touch.c 1970-01-01 00:00:00 +0000
@@ -1,98 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010 Canonical Ltd.
6 * Copyright (C) 2010 Henrik Rydberg <rydberg@bitmath.org>
7 *
8 * This program is free software: you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program. If not, see <http://www.gnu.org/licenses/>.
20 *
21 ****************************************************************************/
22
23#include "grail-recognizer.h"
24#include <math.h>
25#include <stdio.h>
26
27static const int getype[DIM_TOUCH + 1] = {
28 -1,
29 GRAIL_TYPE_TOUCH1,
30 GRAIL_TYPE_TOUCH2,
31 GRAIL_TYPE_TOUCH3,
32 GRAIL_TYPE_TOUCH4,
33 GRAIL_TYPE_TOUCH5,
34};
35
36int gru_touch(struct grail *ge,
37 const struct utouch_frame *frame)
38{
39 struct gesture_recognizer *gru = ge->gru;
40 struct combo_model *state = &gru->touch;
41 struct move_model *move = &gru->move;
42 if (frame->slot_revision != frame->prev->slot_revision) {
43 if (state->active) {
44 gru_end(ge, state->gid, move,
45 state->prop, state->nprop);
46 state->active = 0;
47 }
48 }
49 if (!state->active) {
50 int type = getype[move->ntouch];
51 if (type <= 0)
52 return 0;
53 state->gid = gin_gid_begin(ge, type, -PRIO_GESTURE, frame);
54 state->active = 1;
55 }
56 if (move->time - move->fm[FM_X].original_ms <= move->fm[FM_X].hold_ms)
57 return 0;
58 state->nprop = gin_add_contact_props(ge->gin, state->prop, frame);
59 gru_event(ge, state->gid, move, state->prop, state->nprop);
60 return 1;
61}
62
63int gru_wintouch(struct grail *ge,
64 const struct utouch_frame *frame)
65{
66 struct gesture_recognizer *gru = ge->gru;
67 struct combo_model *state = &gru->wintouch;
68 struct move_model *move = &gru->move;
69 if (frame->slot_revision != frame->prev->slot_revision) {
70 if (state->active && out_of_bounds(state, move)) {
71 gru_end(ge, state->gid, move,
72 state->prop, state->nprop);
73 state->active = 0;
74 }
75 }
76 if (!state->active) {
77 if (move->ntouch == 4) {
78 state->gid = gin_gid_begin(ge, GRAIL_TYPE_MTOUCH,
79 -PRIO_META, frame);
80 state->mintouch = 1;
81 state->maxtouch = 4;
82 state->active = 1;
83 } else if (move->ntouch == 3) {
84 state->gid = gin_gid_begin(ge, GRAIL_TYPE_ETOUCH,
85 -PRIO_ENV, frame);
86 state->mintouch = 1;
87 state->maxtouch = 3;
88 state->active = 1;
89 } else {
90 return 0;
91 }
92 }
93 if (move->time - move->fm[FM_X].original_ms <= move->fm[FM_X].hold_ms)
94 return 0;
95 state->nprop = gin_add_contact_props(ge->gin, state->prop, frame);
96 gru_event(ge, state->gid, move, state->prop, state->nprop);
97 return 1;
98}
990
=== modified file 'src/grail-api.c'
--- src/grail-api.c 2011-08-09 10:03:32 +0000
+++ src/grail-api.c 2011-08-17 12:41:50 +0000
@@ -31,105 +31,11 @@
31#include <stdlib.h>31#include <stdlib.h>
32#include <sys/stat.h>32#include <sys/stat.h>
3333
34#define DIM_FRAMES 100
35#define FRAME_RATE 100
36
37unsigned int GRAIL_PUBLIC grail_get_version(void)34unsigned int GRAIL_PUBLIC grail_get_version(void)
38{35{
39 return GRAIL_VERSION;36 return GRAIL_VERSION;
40}37}
4138
42int GRAIL_PUBLIC grail_open(struct grail *ge, int fd)
43{
44 struct grail_impl *x;
45 struct stat fs;
46 int ret;
47
48 ret = fstat(fd, &fs);
49 if (ret)
50 return ret;
51
52 x = calloc(1, sizeof(*x));
53 if (!x)
54 return -ENOMEM;
55
56 if (!fs.st_rdev)
57 x->fptest = fdopen(fd, "r");
58
59 x->evemu = evemu_new(x->fptest ? "fptest" : 0);
60 if (!x->evemu) {
61 ret = -ENOMEM;
62 goto freemem;
63 }
64 if (x->fptest)
65 ret = evemu_read(x->evemu, x->fptest) <= 0;
66 else
67 ret = evemu_extract(x->evemu, fd);
68 if (ret)
69 goto freemem;
70 if (!utouch_frame_is_supported_mtdev(x->evemu)) {
71 ret = -ENODEV;
72 goto freemem;
73 }
74
75 if (!x->fptest) {
76 x->mtdev = mtdev_new_open(fd);
77 if (!x->mtdev) {
78 ret = -ENOMEM;
79 goto freemem;
80 }
81 }
82 x->fh = utouch_frame_new_engine(DIM_FRAMES, DIM_TOUCH, FRAME_RATE);
83 if (!x->fh) {
84 ret = -ENOMEM;
85 goto freedev;
86 }
87 ret = utouch_frame_init_mtdev(x->fh, x->evemu);
88 if (ret)
89 goto freeframe;
90
91 ge->impl = x;
92
93 ret = gin_init(ge);
94 if (ret)
95 goto freeframe;
96
97 ret = gru_init(ge);
98 if (ret)
99 goto freegin;
100
101 return 0;
102 freegin:
103 gin_destroy(ge);
104 freeframe:
105 utouch_frame_delete_engine(x->fh);
106 freedev:
107 if (x->mtdev)
108 mtdev_close_delete(x->mtdev);
109 freemem:
110 evemu_delete(x->evemu);
111 if (x->fptest)
112 fclose(x->fptest);
113 free(x);
114 ge->impl = 0;
115 return ret;
116}
117
118void GRAIL_PUBLIC grail_close(struct grail *ge, int fd)
119{
120 struct grail_impl *x = ge->impl;
121 gru_destroy(ge);
122 gin_destroy(ge);
123 utouch_frame_delete_engine(x->fh);
124 if (x->mtdev)
125 mtdev_close_delete(x->mtdev);
126 evemu_delete(x->evemu);
127 if (x->fptest)
128 fclose(x->fptest);
129 free(x);
130 ge->impl = 0;
131}
132
133int GRAIL_PUBLIC grail_idle(struct grail *ge, int fd, int ms)39int GRAIL_PUBLIC grail_idle(struct grail *ge, int fd, int ms)
134{40{
135 struct grail_impl *x = ge->impl;41 struct grail_impl *x = ge->impl;
@@ -156,6 +62,12 @@
156 return ge->impl->touch;62 return ge->impl->touch;
157}63}
15864
65const struct grail_frame GRAIL_PUBLIC *
66grail_get_gesture_frame(const struct grail *ge)
67{
68 return ge->impl->frame;
69}
70
159static void flush_events(struct grail *ge)71static void flush_events(struct grail *ge)
160{72{
161 struct grail_impl *impl = ge->impl;73 struct grail_impl *impl = ge->impl;
@@ -169,89 +81,6 @@
169 }81 }
170}82}
17183
172static int skip_event(const struct input_event *ev, int count)
173{
174 switch (ev->type) {
175 case EV_ABS:
176 return 1;
177 case EV_KEY:
178 return ev->code >= BTN_DIGI && ev->code < BTN_WHEEL;
179 case EV_SYN:
180 switch (ev->code) {
181 case SYN_MT_REPORT:
182 return 1;
183 case SYN_REPORT:
184 return count == 0;
185 default:
186 return 0;
187 }
188 default:
189 return 0;
190 }
191}
192
193static void flush_gestures(struct grail *ge)
194{
195 struct grail_impl *impl = ge->impl;
196 struct input_event iev;
197 struct grail_event gev;
198 int count = 0;
199
200 while (!evbuf_empty(&impl->evbuf)) {
201 evbuf_get(&impl->evbuf, &iev);
202 if (skip_event(&iev, count))
203 continue;
204 if (ge->event)
205 ge->event(ge, &iev);
206 if (iev.type == EV_SYN && iev.code == SYN_REPORT)
207 count = 0;
208 else
209 count++;
210 }
211 while (!grailbuf_empty(&impl->gbuf)) {
212 grailbuf_get(&impl->gbuf, &gev);
213 if (ge->gesture)
214 ge->gesture(ge, &gev);
215 }
216}
217
218static int gesture_timeout(struct grail *ge, const struct utouch_frame *frame)
219{
220 struct gesture_recognizer *gru = ge->gru;
221 struct gesture_inserter *gin = ge->gin;
222
223 return grail_mask_count(gin->used, sizeof(gin->used)) == 0 &&
224 frame->time - frame->mod_time > gru->move.fm[FM_X].hold_ms;
225}
226
227static void report_frame(struct grail *ge,
228 const struct utouch_frame *touch,
229 const struct input_event *syn)
230{
231 struct grail_impl *impl = ge->impl;
232 struct grail_event gev;
233
234 impl->touch = touch;
235
236 if (touch->num_active && !touch->prev->num_active) {
237 impl->ongoing = 1;
238 impl->gesture = 0;
239 }
240
241 if (!impl->ongoing)
242 return;
243
244 gin_frame_begin(ge, touch);
245 gru_recognize(ge, touch);
246 gin_frame_end(ge, touch);
247
248 if (!grailbuf_empty(&impl->gbuf))
249 impl->gesture = 1;
250
251 if (touch->num_active == 0 || gesture_timeout(ge, touch))
252 impl->ongoing &= impl->gesture;
253}
254
255static void grail_pump_mtdev(struct grail *ge, const struct input_event *ev)84static void grail_pump_mtdev(struct grail *ge, const struct input_event *ev)
256{85{
257 struct grail_impl *impl = ge->impl;86 struct grail_impl *impl = ge->impl;
@@ -262,14 +91,12 @@
262 if (ev->type == EV_SYN || ev->type == EV_ABS || ev->type == EV_KEY) {91 if (ev->type == EV_SYN || ev->type == EV_ABS || ev->type == EV_KEY) {
263 frame = utouch_frame_pump_mtdev(impl->fh, ev);92 frame = utouch_frame_pump_mtdev(impl->fh, ev);
264 if (frame)93 if (frame)
265 report_frame(ge, frame, ev);94 grail_pump_frame(ge, frame);
266 }95 }
26796
268 if (ev->type == EV_SYN) {97 if (ev->type == EV_SYN) {
269 if (!impl->ongoing)98 if (!impl->ongoing)
270 flush_events(ge);99 flush_events(ge);
271 if (impl->gesture)
272 flush_gestures(ge);
273 }100 }
274}101}
275102
276103
=== modified file 'src/grail-bits.c'
--- src/grail-bits.c 2011-04-28 16:53:57 +0000
+++ src/grail-bits.c 2011-08-17 12:41:50 +0000
@@ -59,6 +59,16 @@
59 *a++ &= ~*b++;59 *a++ &= ~*b++;
60}60}
6161
62int GRAIL_PUBLIC grail_mask_inner(const grail_mask_t *a, const grail_mask_t *b,
63 int bytes)
64{
65 int k;
66 for (k = 0; k < bytes; k++)
67 if (a[k] & b[k])
68 return 1;
69 return 0;
70}
71
62int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes)72int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes)
63{73{
64 int count = 0;74 int count = 0;
6575
=== modified file 'src/grail-frame.c'
--- src/grail-frame.c 2011-05-20 14:35:18 +0000
+++ src/grail-frame.c 2011-08-17 12:41:50 +0000
@@ -20,6 +20,8 @@
20 ****************************************************************************/20 ****************************************************************************/
2121
22#include "grail-impl.h"22#include "grail-impl.h"
23#include "grail-inserter.h"
24#include "grail-recognizer.h"
23#include <stdlib.h>25#include <stdlib.h>
24#include <string.h>26#include <string.h>
25#include <math.h>27#include <math.h>
@@ -106,6 +108,7 @@
106 slot->expect_mask = GRAIL_EXPECT_MASK;108 slot->expect_mask = GRAIL_EXPECT_MASK;
107 slot->active_mask = 0;109 slot->active_mask = 0;
108 slot->start_time = touch->time;110 slot->start_time = touch->time;
111 slot->start_center = slot->start_center;
109 set_center_velocity_and_radius(impl, slot);112 set_center_velocity_and_radius(impl, slot);
110 T[0] = T[4] = 1;113 T[0] = T[4] = 1;
111 T[1] = T[2] = T[3] = T[5] = 0;114 T[1] = T[2] = T[3] = T[5] = 0;
@@ -228,7 +231,7 @@
228 int i, j, n = impl->num_touches;231 int i, j, n = impl->num_touches;
229 struct grail_element *best = 0;232 struct grail_element *best = 0;
230233
231 if (touch->num_active < 3) {234 if (!touch->num_active) {
232 stop_slot(impl, slot);235 stop_slot(impl, slot);
233 return;236 return;
234 }237 }
@@ -258,6 +261,8 @@
258 best = s;261 best = s;
259 }262 }
260 }263 }
264 if (!best)
265 best = slots[0];
261266
262 update_slot(impl, slot, best->transform[1], best->transform[0]);267 update_slot(impl, slot, best->transform[1], best->transform[0]);
263}268}
@@ -385,14 +390,75 @@
385 }390 }
386}391}
387392
393static int skip_event(const struct input_event *ev, int count)
394{
395 switch (ev->type) {
396 case EV_ABS:
397 return 1;
398 case EV_KEY:
399 return ev->code >= BTN_DIGI && ev->code < BTN_WHEEL;
400 case EV_SYN:
401 switch (ev->code) {
402 case SYN_MT_REPORT:
403 return 1;
404 case SYN_REPORT:
405 return count == 0;
406 default:
407 return 0;
408 }
409 default:
410 return 0;
411 }
412}
413
414static void flush_gestures(struct grail *ge)
415{
416 struct grail_impl *impl = ge->impl;
417 struct input_event iev;
418 struct grail_event gev;
419 int count = 0;
420
421 while (!evbuf_empty(&impl->evbuf)) {
422 evbuf_get(&impl->evbuf, &iev);
423 if (skip_event(&iev, count))
424 continue;
425 if (ge->event)
426 ge->event(ge, &iev);
427 if (iev.type == EV_SYN && iev.code == SYN_REPORT)
428 count = 0;
429 else
430 count++;
431 }
432 while (!grailbuf_empty(&impl->gbuf)) {
433 grailbuf_get(&impl->gbuf, &gev);
434 if (ge->gesture)
435 ge->gesture(ge, &gev);
436 }
437}
438
439static int gesture_timeout(struct grail *ge, const struct utouch_frame *frame)
440{
441 struct gesture_inserter *gin = ge->gin;
442 struct grail_impl *impl = ge->impl;
443
444 return grail_mask_count(gin->used, sizeof(gin->used)) == 0 &&
445 frame->time - frame->mod_time > impl->ctl->drop_x_ms;
446}
447
388const struct grail_frame GRAIL_PUBLIC *448const struct grail_frame GRAIL_PUBLIC *
389grail_pump_frame(grail_handle ge, const struct utouch_frame *touch)449grail_pump_frame(grail_handle ge, const struct utouch_frame *touch)
390{450{
391 struct grail_impl *impl = ge->impl;451 struct grail_impl *impl = ge->impl;
392 struct grail_frame *frame = impl->frames[impl->nextframe];452 struct grail_frame *frame;
393 const struct grail_frame *prev = frame->prev;453 const struct grail_frame *prev;
394 int i;454 int i;
395455
456 if (!impl->frames)
457 return 0;
458
459 frame = impl->frames[impl->nextframe];
460 prev = frame->prev;
461
396 if (touch->slot_revision == touch->prev->slot_revision &&462 if (touch->slot_revision == touch->prev->slot_revision &&
397 !prev->num_ongoing)463 !prev->num_ongoing)
398 return 0;464 return 0;
@@ -407,5 +473,34 @@
407473
408 impl->nextframe = (impl->nextframe + 1) % impl->num_frames;474 impl->nextframe = (impl->nextframe + 1) % impl->num_frames;
409475
476 if (!ge->gesture)
477 return frame;
478
479 impl->touch = touch;
480 impl->frame = frame;
481
482 if (touch->num_active && !touch->prev->num_active) {
483 impl->ongoing = 1;
484 impl->gesture = 0;
485 }
486
487 if (!impl->ongoing)
488 return frame;
489
490 gin_frame_begin(ge, touch);
491
492 gru_recognize(ge, frame, touch);
493
494 gin_frame_end(ge, touch);
495
496 if (!grailbuf_empty(&impl->gbuf))
497 impl->gesture = 1;
498
499 if (touch->num_active == 0 || gesture_timeout(ge, touch))
500 impl->ongoing &= impl->gesture;
501
502 if (impl->gesture)
503 flush_gestures(ge);
504
410 return frame;505 return frame;
411}506}
412507
=== removed file 'src/grail-gestures.c'
--- src/grail-gestures.c 2011-08-11 19:31:50 +0000
+++ src/grail-gestures.c 1970-01-01 00:00:00 +0000
@@ -1,223 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#include "grail-recognizer.h"
23#include "grail-impl.h"
24#include <math.h>
25
26/* Units of mm or radians */
27static const float FM_SN[DIM_FM] = { 0.13, 0.13, 0.26, 2 * M_PI / 1000 };
28static const float FM_BAR[DIM_FM] = { 2.6, 2.6, 5.2, 2 * M_PI / 50 };
29
30/* Units of ms */
31static const grail_time_t FM_HOLD_MS[DIM_FM] = { 60, 60, 60, 60 };
32static const grail_time_t FM_BAR_MS[DIM_FM] = { 300, 300, 500, 500 };
33static const grail_time_t SAMPLE_MS = 10;
34
35static const float EPS = 1e-3;
36
37static void compute_position(float *x, float *y,
38 const struct utouch_frame *frame)
39{
40 int i, n = frame->num_active;
41 *x = 0;
42 *y = 0;
43 if (n < 1)
44 return;
45 for (i = 0; i < n; i++) {
46 const struct utouch_contact *t = frame->active[i];
47 *x += t->x;
48 *y += t->y;
49 }
50 *x /= n;
51 *y /= n;
52}
53
54static float compute_radius(float x, float y,
55 const struct utouch_frame *frame)
56{
57 int i, n = frame->num_active;
58 float r = 0, r2 = 0;
59 if (n < 2)
60 return r;
61 for (i = 0; i < n; i++) {
62 const struct utouch_contact *t = frame->active[i];
63 float dx = t->x - x;
64 float dy = t->y - y;
65 r2 += dx * dx + dy * dy;
66 }
67 r2 /= n;
68 r = sqrt(r2);
69 return r;
70}
71
72static float compute_rotation(float x, float y, float r,
73 const struct utouch_frame *frame)
74{
75 int i, n = frame->num_active;
76 float da = 0, darc2 = 0;
77 if (n < 2)
78 return da;
79 for (i = 0; i < n; i++) {
80 const struct utouch_contact *t = frame->active[i];
81 const struct utouch_contact *ot = t->prev;
82 float dx = t->x - x;
83 float dy = t->y - y;
84 float mx = t->x - ot->x;
85 float my = t->y - ot->y;
86 darc2 += dx * my - dy * mx;
87 }
88 darc2 /= n;
89 da = darc2 / (r * r);
90 return da;
91}
92
93static void move_reset(struct move_model *m, int i, float x, grail_time_t t)
94{
95 struct filter_model *fm = &m->fm[i];
96 fm->raw_delta = 0;
97 fm->action_delta = 0;
98 fm->velocity = 0;
99 fm->value = x;
100 fm->original = x;
101 fm->original_ms = t;
102 fm->sample = x;
103 fm->sample_ms = t;
104 m->tickle &= ~(1 << i);
105 m->active &= ~(1 << i);
106 m->timeout &= ~(1 << i);
107}
108
109static void move_update(struct move_model *m, int i, float x, grail_time_t t)
110{
111 struct filter_model *fm = &m->fm[i];
112 float dt = t - fm->sample_ms;
113
114 if (fabs(x - fm->value) < fm->fuzz)
115 return;
116
117 fm->raw_delta = x - fm->value;
118 fm->action_delta = fm->raw_delta;
119 fm->value = x;
120 if (dt > SAMPLE_MS) {
121 fm->velocity = (x - fm->sample) / dt;
122 fm->sample = x;
123 fm->sample_ms = t;
124 }
125 if (fabs(fm->raw_delta) > EPS)
126 m->tickle |= (1 << i);
127 else
128 m->tickle &= ~(1 << i);
129 if (m->active & (1 << i))
130 return;
131 fm->action_delta = 0;
132 if (fabs(x - fm->original) > fm->bar) {
133 if (t - fm->original_ms > fm->hold_ms) {
134 m->active |= (1 << i);
135 fm->action_delta = x - fm->original;
136 }
137 } else if (t - fm->original_ms > fm->bar_ms) {
138 m->timeout |= (1 << i);
139 }
140}
141
142void gru_init_motion(struct grail *ge)
143{
144 struct utouch_surface *s = utouch_frame_get_surface(ge->impl->fh);
145 struct gesture_recognizer *gru = ge->gru;
146 struct move_model *m = &gru->move;
147 float U[DIM_FM]; /* Device unit dimensions */
148 float P[DIM_FM]; /* Device physical dimensions */
149 int i;
150 U[FM_X] = s->mapped_max_x - s->mapped_min_x;
151 U[FM_Y] = s->mapped_max_y - s->mapped_min_y;
152 U[FM_R] = sqrt(U[FM_X] * U[FM_X] + U[FM_Y] * U[FM_Y]);
153 U[FM_A] = 2 * M_PI;
154 P[FM_X] = s->phys_width;
155 P[FM_Y] = s->phys_height;
156 P[FM_R] = sqrt(P[FM_X] * P[FM_X] + P[FM_Y] * P[FM_Y]);
157 P[FM_A] = 2 * M_PI;
158 for (i = 0; i < DIM_FM; i++) {
159 m->fm[i].fuzz = U[i] * FM_SN[i] / P[i];
160 m->fm[i].bar = U[i] * FM_BAR[i] / P[i];
161 m->fm[i].hold_ms = FM_HOLD_MS[i];
162 m->fm[i].bar_ms = FM_BAR_MS[i];
163 }
164}
165
166void gru_motion(struct grail *ge,
167 const struct utouch_frame *frame)
168{
169 const struct utouch_surface *s = utouch_frame_get_surface(ge->impl->fh);
170 struct gesture_recognizer *gru = ge->gru;
171 struct move_model *m = &gru->move;
172 grail_time_t t = frame->time;
173 float x, y, r, a;
174
175 compute_position(&x, &y, frame);
176 if (frame->prev->revision != frame->revision) {
177 r = compute_radius(x, y, frame);
178 a = 0;
179 move_reset(m, FM_X, x, t);
180 move_reset(m, FM_Y, y, t);
181 move_reset(m, FM_R, r, t);
182 move_reset(m, FM_A, a, t);
183 m->single = 0;
184 m->multi = 0;
185 } else if (frame->num_active < 2) {
186 r = 0;
187 a = 0;
188 move_update(m, FM_X, x, t);
189 move_update(m, FM_Y, y, t);
190 move_reset(m, FM_R, r, t);
191 move_reset(m, FM_A, a, t);
192 m->single = 1;
193 m->multi = 0;
194 } else {
195 r = compute_radius(x, y, frame);
196 a = m->fm[FM_A].value;
197 if (!s->is_semi_mt)
198 a += compute_rotation(x, y, r, frame);
199 move_update(m, FM_X, x, t);
200 move_update(m, FM_Y, y, t);
201 move_update(m, FM_R, r, t);
202 move_update(m, FM_A, a, t);
203 m->single = 0;
204 m->multi = 1;
205 }
206 m->ntouch = frame->num_active;
207 m->time = t;
208}
209
210void gru_event(struct grail *ge, int gid,
211 const struct move_model *m,
212 const grail_prop_t *prop, int nprop)
213{
214 gin_gid_event(ge, gid, m->fm[FM_X].value, m->fm[FM_Y].value, m->ntouch,
215 prop, nprop, 0);
216}
217
218void gru_end(struct grail *ge, int gid, const struct move_model *m,
219 const grail_prop_t *prop, int nprop)
220{
221 gin_gid_end(ge, gid, m->fm[FM_X].value, m->fm[FM_Y].value, m->ntouch,
222 prop, nprop);
223}
2240
=== removed file 'src/grail-gestures.h'
--- src/grail-gestures.h 2011-05-17 14:15:22 +0000
+++ src/grail-gestures.h 1970-01-01 00:00:00 +0000
@@ -1,115 +0,0 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ****************************************************************************/
21
22#ifndef GRAIL_GESTURES_H
23#define GRAIL_GESTURES_H
24
25#include "grail-inserter.h"
26
27#define PRIO_POINTER 1
28#define PRIO_GESTURE 2
29#define PRIO_ENV 3
30#define PRIO_META 4
31#define PRIO_TAP 5
32
33#define DIM_FM 4
34
35#define FM_X 0
36#define FM_Y 1
37#define FM_R 2
38#define FM_A 3
39
40struct filter_model {
41 float raw_delta;
42 float action_delta;
43 float velocity;
44 float value;
45 float original;
46 float sample;
47 float fuzz;
48 float bar;
49 grail_time_t original_ms;
50 grail_time_t sample_ms;
51 grail_time_t hold_ms;
52 grail_time_t bar_ms;
53};
54
55struct move_model {
56 struct filter_model fm[DIM_FM];
57 int tickle, active, timeout;
58 int single, multi, ntouch;
59 grail_time_t time;
60};
61
62void gru_init_motion(struct grail *ge);
63void gru_motion(struct grail *ge,
64 const struct utouch_frame *frame);
65void gru_event(struct grail *ge, int gid,
66 const struct move_model *move,
67 const grail_prop_t *prop, int nprop);
68void gru_end(struct grail *ge, int gid,
69 const struct move_model *move,
70 const grail_prop_t *prop, int nprop);
71
72struct combo_model {
73 int active, gid;
74 int mintouch, maxtouch;
75 int nprop;
76 grail_prop_t prop[DIM_GRAIL_PROP];
77};
78
79int gru_touch(struct grail *ge,
80 const struct utouch_frame *frame);
81int gru_drag(struct grail *ge,
82 const struct utouch_frame *frame);
83int gru_pinch(struct grail *ge,
84 const struct utouch_frame *frame);
85int gru_rotate(struct grail *ge,
86 const struct utouch_frame *frame);
87
88static inline int out_of_bounds(const struct combo_model *s,
89 const struct move_model *m)
90{
91 return m->ntouch < s->mintouch || m->ntouch > s->maxtouch;
92}
93
94int gru_wintouch(struct grail *ge,
95 const struct utouch_frame *frame);
96int gru_windrag(struct grail *ge,
97 const struct utouch_frame *frame);
98int gru_winpinch(struct grail *ge,
99 const struct utouch_frame *frame);
100int gru_winrotate(struct grail *ge,
101 const struct utouch_frame *frame);
102
103struct tapping_model {
104 grail_time_t start;
105 int mintouch, maxtouch;
106 int active, gid, tap;
107 int nprop;
108 grail_prop_t prop[DIM_GRAIL_PROP];
109};
110
111int gru_tapping(struct grail *ge,
112 const struct utouch_frame *frame);
113
114#endif
115
1160
=== modified file 'src/grail-impl.h'
--- src/grail-impl.h 2011-08-09 10:03:32 +0000
+++ src/grail-impl.h 2011-08-17 12:41:50 +0000
@@ -59,6 +59,35 @@
5959
60void destroy_grail2(struct grail_impl *x);60void destroy_grail2(struct grail_impl *x);
6161
62/*
63 * struct grail_impl - gesture engine state
64 * @evemu: evemu instance (grail1 only)
65 * @mtdev: mtdev instance (grail1 only)
66 * @fh: frame handler instance (grail1: owner, grail2: referenced)
67 * @touch: current touch frame
68 * @evbuf: input event buffer (grail1 only)
69 * @gbuf: gesture event buffer (grail1 only)
70 * @filter_abs: if true, abs events are filtered (grail1 only)
71 * @ongoing: if true, a gesture is ongoing (grail1 only)
72 * @gesture: if true, a gesture is active (events sent) (grail1 only)
73 * @fptest: file pointer used for data input from file (grail1 only)
74 * @ctl: mutable grail control structure
75 * @select: grail event secltion callback
76 * @num_frames: number of gestures frames in cyclic buffer
77 * @num_slots: number of allocated gesture element slots
78 * @num_touches: number of touches supported for frame instance
79 * @nextframe: index of next frame to be (re)used
80 * @seqid: next gesture frame sequence number
81 * @control_size: maximum number of bytes for grail_control struct
82 * @frame_size: maximum number of bytes for grail_frame struct
83 * @slot_size: maximum number of bytes for grail_element struct
84 * @frames: cyclic array of allocated gesture frames
85 * @frame: current gesture frame (grail1 only)
86 *
87 * The grail engine supports both the grail1 interface, with
88 * open/close and event pulling, and the grail2 interface, with
89 * new/delete, gesture frames and event pumping.
90 */
62struct grail_impl {91struct grail_impl {
63 struct evemu_device *evemu;92 struct evemu_device *evemu;
64 struct mtdev *mtdev;93 struct mtdev *mtdev;
@@ -83,6 +112,7 @@
83 unsigned int frame_size;112 unsigned int frame_size;
84 unsigned int slot_size;113 unsigned int slot_size;
85 struct grail_frame **frames;114 struct grail_frame **frames;
115 const struct grail_frame *frame;
86};116};
87117
88#endif118#endif
89119
=== modified file 'src/grail-init.c'
--- src/grail-init.c 2011-05-18 16:38:44 +0000
+++ src/grail-init.c 2011-08-17 12:41:50 +0000
@@ -34,12 +34,13 @@
34 c->glue_ms = 60;34 c->glue_ms = 60;
35 c->bar_drag_x = 0.03;35 c->bar_drag_x = 0.03;
36 c->bar_drag_y = 0.03;36 c->bar_drag_y = 0.03;
37 c->bar_scale = 0.3;37 c->bar_scale = 0.2;
38 c->bar_angle = 0.1;38 c->bar_angle = 0.2;
39 c->drop_x_ms = 300;39 c->drop_x_ms = 300;
40 c->drop_y_ms = 300;40 c->drop_y_ms = 300;
41 c->drop_scale_ms = 300;41 c->drop_scale_ms = 300;
42 c->drop_angle_ms = 300;42 c->drop_angle_ms = 300;
43 c->tap_time_ms = 300;
4344
44 return c;45 return c;
45}46}
@@ -204,6 +205,7 @@
204{205{
205 struct grail *ge;206 struct grail *ge;
206 struct grail_impl *x;207 struct grail_impl *x;
208 int ret;
207209
208 ge = calloc(1, sizeof(*ge));210 ge = calloc(1, sizeof(*ge));
209 if (!ge)211 if (!ge)
@@ -217,8 +219,17 @@
217 goto out;219 goto out;
218220
219 ge->impl = x;221 ge->impl = x;
222
223 ret = gin_init(ge);
224 if (ret)
225 goto out;
226 ret = gru_init(ge);
227 if (ret)
228 goto freegin;
229
220 return ge;230 return ge;
221231 freegin:
232 gin_destroy(ge);
222 out:233 out:
223 free(x);234 free(x);
224 free(ge);235 free(ge);
@@ -227,6 +238,8 @@
227238
228void GRAIL_PUBLIC grail_delete(grail_handle ge)239void GRAIL_PUBLIC grail_delete(grail_handle ge)
229{240{
241 gru_destroy(ge);
242 gin_destroy(ge);
230 destroy_grail2(ge->impl);243 destroy_grail2(ge->impl);
231 free(ge->impl);244 free(ge->impl);
232 free(ge);245 free(ge);
233246
=== modified file 'src/grail-inserter.c'
--- src/grail-inserter.c 2011-04-28 16:53:57 +0000
+++ src/grail-inserter.c 2011-08-17 12:41:50 +0000
@@ -19,7 +19,6 @@
19 *19 *
20 ****************************************************************************/20 ****************************************************************************/
2121
22#include "grail-gestures.h"
23#include "grail-inserter.h"22#include "grail-inserter.h"
24#include "grail-impl.h"23#include "grail-impl.h"
25#include <malloc.h>24#include <malloc.h>
@@ -38,18 +37,6 @@
38 return -1;37 return -1;
39}38}
4039
41static int mask_overlap(const grail_mask_t *a, const grail_mask_t *b,
42 int bytes)
43{
44 int i;
45
46 for (i = 0; i < bytes; i++)
47 if (a[i] & b[i])
48 return 1;
49
50 return 0;
51}
52
53// todo: spanning tree for multi-user case40// todo: spanning tree for multi-user case
54static void setup_new_gestures(struct grail *ge,41static void setup_new_gestures(struct grail *ge,
55 const struct utouch_frame *frame)42 const struct utouch_frame *frame)
@@ -158,15 +145,6 @@
158145
159 grail_mask_foreach(i, gin->used, sizeof(gin->used)) {146 grail_mask_foreach(i, gin->used, sizeof(gin->used)) {
160 struct slot_state *s = &gin->state[i];147 struct slot_state *s = &gin->state[i];
161 if (!s->timeout)
162 continue;
163 if (mask_overlap(keep, s->span, sizeof(keep)))
164 continue;
165 gin_gid_discard(ge, s->id);
166 }
167
168 grail_mask_foreach(i, gin->used, sizeof(gin->used)) {
169 struct slot_state *s = &gin->state[i];
170 struct gesture_event ev;148 struct gesture_event ev;
171 grail_mask_set(gin->types, s->type);149 grail_mask_set(gin->types, s->type);
172 if (s->priority < hold[s->slice] && !s->sent)150 if (s->priority < hold[s->slice] && !s->sent)
@@ -203,7 +181,6 @@
203 s->priority = priority;181 s->priority = priority;
204 s->slice = 0;182 s->slice = 0;
205 }183 }
206 s->timeout = 0;
207 s->sent = 0;184 s->sent = 0;
208 s->id = gin->gestureid++ & MAX_GESTURE_ID;185 s->id = gin->gestureid++ & MAX_GESTURE_ID;
209 s->status = GRAIL_STATUS_BEGIN;186 s->status = GRAIL_STATUS_BEGIN;
@@ -231,13 +208,6 @@
231 grail_mask_set(gin->unused, i);208 grail_mask_set(gin->unused, i);
232}209}
233210
234void gin_gid_timeout(struct grail *ge, int gid)
235{
236 int i = find_gslot(ge->gin, gid);
237 if (i >= 0)
238 ge->gin->state[i].timeout = 1;
239}
240
241void gin_gid_event(struct grail *ge, int gid,211void gin_gid_event(struct grail *ge, int gid,
242 float x, float y, int ntouch,212 float x, float y, int ntouch,
243 const grail_prop_t *prop, int nprop,213 const grail_prop_t *prop, int nprop,
@@ -298,7 +268,4 @@
298 s->mapped_min_y = tmin->y;268 s->mapped_min_y = tmin->y;
299 s->mapped_max_x = tmax->x;269 s->mapped_max_x = tmax->x;
300 s->mapped_max_y = tmax->y;270 s->mapped_max_y = tmax->y;
301
302 if (ge->gru)
303 gru_init_motion(ge);
304}271}
305272
=== modified file 'src/grail-inserter.h'
--- src/grail-inserter.h 2011-05-17 14:15:22 +0000
+++ src/grail-inserter.h 2011-08-17 12:41:50 +0000
@@ -33,11 +33,27 @@
3333
34#define DIM_CLIENT 3234#define DIM_CLIENT 32
3535
36/*
37 * struct slot_state - gesture state
38 * @type: gesture type of this gesture
39 * @priority: priority of this gesture
40 * @slice: 0: normal gesture, 1: touch gesture
41 * @sent: events have been sent for this gesture
42 * @id: unique identifier of this gesture
43 * @status: gesture status (begin, update, end)
44 * @nclient: number of clients listening to this gesture
45 * @client_id: array of clients listening to this gesture
46 * @span: bitmask of contact slots used in this gesture
47 * @buf: gesture event buffer
48 *
49 * This structure keeps track of an individual gesture, from the
50 * tentative state before being qualified as a gesture, through the
51 * beginning of the gesture to the end of the gesture.
52 */
36struct slot_state {53struct slot_state {
37 int type;54 int type;
38 int priority;55 int priority;
39 int slice;56 int slice;
40 int timeout;
41 int sent;57 int sent;
42 int id;58 int id;
43 int status;59 int status;
@@ -47,6 +63,20 @@
47 struct gebuf buf;63 struct gebuf buf;
48};64};
4965
66/*
67 * struct gesture_inserter - gesture inserter state
68 * @state: array of simultaneous gesture states
69 * @types: bitmask of ongoing gesture types
70 * @unused: bitmask of unused gesture slots
71 * @fresh: bitmask of slots initiated in this frame
72 * @used: bitmask of used gesture slots
73 * @time: time of current gesture frame
74 * @gestureid: next gesture id to be used
75 * @grab_active: used to signal an active system gesture grab
76 * @grab_client: the grabbing client
77 *
78 * This is the state of the gesture inserter.
79 */
50struct gesture_inserter {80struct gesture_inserter {
51 struct slot_state state[DIM_INSTANCE];81 struct slot_state state[DIM_INSTANCE];
52 grail_mask_t types[DIM_GRAIL_TYPE_BYTES];82 grail_mask_t types[DIM_GRAIL_TYPE_BYTES];
@@ -80,7 +110,6 @@
80int gin_gid_begin(struct grail *ge, int type, int priority,110int gin_gid_begin(struct grail *ge, int type, int priority,
81 const struct utouch_frame *frame);111 const struct utouch_frame *frame);
82void gin_gid_discard(struct grail *ge, int gid);112void gin_gid_discard(struct grail *ge, int gid);
83void gin_gid_timeout(struct grail *ge, int gid);
84113
85void gin_gid_event(struct grail *ge, int gid,114void gin_gid_event(struct grail *ge, int gid,
86 float x, float y, int ntouch,115 float x, float y, int ntouch,
87116
=== modified file 'src/grail-legacy.c'
--- src/grail-legacy.c 2011-04-28 16:53:57 +0000
+++ src/grail-legacy.c 2011-08-17 12:41:50 +0000
@@ -31,6 +31,111 @@
3131
32#ifndef GRAIL_NO_LEGACY_ABI32#ifndef GRAIL_NO_LEGACY_ABI
3333
34#define DIM_FRAMES 100
35#define FRAME_RATE 100
36
37int GRAIL_PUBLIC grail_open(struct grail *ge, int fd)
38{
39 struct grail_impl *x;
40 struct stat fs;
41 int ret;
42
43 ret = fstat(fd, &fs);
44 if (ret)
45 return ret;
46
47 x = calloc(1, sizeof(*x));
48 if (!x)
49 return -ENOMEM;
50
51 if (!fs.st_rdev)
52 x->fptest = fdopen(fd, "r");
53
54 x->evemu = evemu_new(x->fptest ? "fptest" : 0);
55 if (!x->evemu) {
56 ret = -ENOMEM;
57 goto freemem;
58 }
59 if (x->fptest)
60 ret = evemu_read(x->evemu, x->fptest) <= 0;
61 else
62 ret = evemu_extract(x->evemu, fd);
63 if (ret)
64 goto freemem;
65 if (!utouch_frame_is_supported_mtdev(x->evemu)) {
66 ret = -ENODEV;
67 goto freemem;
68 }
69
70 if (!x->fptest) {
71 x->mtdev = mtdev_new_open(fd);
72 if (!x->mtdev) {
73 ret = -ENOMEM;
74 goto freemem;
75 }
76 }
77 x->fh = utouch_frame_new_engine(DIM_FRAMES, DIM_TOUCH, FRAME_RATE);
78 if (!x->fh) {
79 ret = -ENOMEM;
80 goto freedev;
81 }
82 ret = utouch_frame_init_mtdev(x->fh, x->evemu);
83 if (ret)
84 goto freeframe;
85
86 ret = create_grail2(x, x->fh, DIM_FRAMES, NULL,
87 GRAIL_VERSION,
88 sizeof(struct grail_control),
89 sizeof(struct grail_frame),
90 sizeof(struct grail_element));
91 if (ret)
92 goto freeframe;
93
94 ge->impl = x;
95
96 ret = gin_init(ge);
97 if (ret)
98 goto freegrail2;
99
100 ret = gru_init(ge);
101 if (ret)
102 goto freegin;
103
104 return 0;
105 freegin:
106 gin_destroy(ge);
107 freegrail2:
108 destroy_grail2(x);
109 freeframe:
110 utouch_frame_delete_engine(x->fh);
111 freedev:
112 if (x->mtdev)
113 mtdev_close_delete(x->mtdev);
114 freemem:
115 evemu_delete(x->evemu);
116 if (x->fptest)
117 fclose(x->fptest);
118 free(x);
119 ge->impl = 0;
120 return ret;
121}
122
123void GRAIL_PUBLIC grail_close(struct grail *ge, int fd)
124{
125 struct grail_impl *x = ge->impl;
126 gru_destroy(ge);
127 gin_destroy(ge);
128 destroy_grail2(x);
129 utouch_frame_delete_engine(x->fh);
130 if (x->mtdev)
131 mtdev_close_delete(x->mtdev);
132 evemu_delete(x->evemu);
133 if (x->fptest)
134 fclose(x->fptest);
135 free(x);
136 ge->impl = 0;
137}
138
34void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage)139void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage)
35{140{
36 struct grail_impl *x = ge->impl;141 struct grail_impl *x = ge->impl;
37142
=== modified file 'src/grail-recognizer.c'
--- src/grail-recognizer.c 2011-04-28 16:53:57 +0000
+++ src/grail-recognizer.c 2011-08-17 12:41:50 +0000
@@ -23,6 +23,177 @@
23#include <string.h>23#include <string.h>
24#include <malloc.h>24#include <malloc.h>
25#include <errno.h>25#include <errno.h>
26#include <math.h>
27
28static const int MAX_TOUCH_GESTURE = 5;
29
30static void touch_props(const struct gesture_inserter *gin,
31 struct combo_model *s, const struct grail_element *m,
32 const struct utouch_frame *frame)
33{
34 s->nprop = 0;
35}
36
37static void drag_props(const struct gesture_inserter *gin,
38 struct combo_model *s, const struct grail_element *m,
39 const struct utouch_frame *frame)
40{
41 s->prop[GRAIL_PROP_DRAG_DX] = m->center.x - m->prev->center.x;
42 s->prop[GRAIL_PROP_DRAG_DY] = m->center.y - m->prev->center.y;
43 s->prop[GRAIL_PROP_DRAG_VX] = m->velocity.x;
44 s->prop[GRAIL_PROP_DRAG_VY] = m->velocity.y;
45 s->prop[GRAIL_PROP_DRAG_X] = m->center.x - m->start_center.x;
46 s->prop[GRAIL_PROP_DRAG_Y] = m->center.y - m->start_center.x;
47 s->nprop = 6;
48}
49
50static void pinch_props(const struct gesture_inserter *gin,
51 struct combo_model *s, const struct grail_element *m,
52 const struct utouch_frame *frame)
53{
54 s->prop[GRAIL_PROP_PINCH_DR] =
55 sqrt(m->radius2) - sqrt(m->prev->radius2);
56 s->prop[GRAIL_PROP_PINCH_VR] = 0;
57 s->prop[GRAIL_PROP_PINCH_R] = sqrt(m->radius2);
58 s->nprop = 3;
59}
60
61static void rotate_props(const struct gesture_inserter *gin,
62 struct combo_model *s, const struct grail_element *m,
63 const struct utouch_frame *frame)
64{
65 s->prop[GRAIL_PROP_ROTATE_DA] = m->angle - m->prev->angle;
66 s->prop[GRAIL_PROP_ROTATE_VA] = 0;
67 s->prop[GRAIL_PROP_ROTATE_A] = m->angle;
68 s->nprop = 3;
69}
70
71static void tap_props(const struct gesture_inserter *gin,
72 struct combo_model *s, const struct grail_element *m,
73 const struct utouch_frame *frame)
74{
75 s->prop[GRAIL_PROP_TAP_DT] = frame->time - s->start;
76 s->prop[GRAIL_PROP_TAP_X] = m->center.x;
77 s->prop[GRAIL_PROP_TAP_Y] = m->center.y;
78 s->nprop = 3;
79}
80
81static const struct gesture_handler touch_handler = {
82 0,
83 {
84 { -1, 0, 0, 0 },
85 { GRAIL_TYPE_TOUCH1, 1, 1, PRIO_DRAG },
86 { GRAIL_TYPE_TOUCH2, 2, 2, PRIO_DRAG },
87 { GRAIL_TYPE_TOUCH3, 3, 3, PRIO_DRAG },
88 { GRAIL_TYPE_TOUCH4, 4, 4, PRIO_DRAG },
89 { GRAIL_TYPE_TOUCH5, 5, 5, PRIO_DRAG }
90 },
91 touch_props
92};
93
94static const struct gesture_handler drag_handler = {
95 GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
96 {
97 { -1, 0, 0, 0 },
98 { GRAIL_TYPE_DRAG1, 1, 1, PRIO_DRAG },
99 { GRAIL_TYPE_DRAG2, 2, 2, PRIO_DRAG },
100 { GRAIL_TYPE_DRAG3, 3, 3, PRIO_DRAG },
101 { GRAIL_TYPE_DRAG4, 4, 4, PRIO_DRAG },
102 { GRAIL_TYPE_DRAG5, 5, 5, PRIO_DRAG }
103 },
104 drag_props
105};
106
107static const struct gesture_handler pinch_handler = {
108 GRAIL_EXPECT_SCALE,
109 {
110 { -1, 0, 0, 0 },
111 { -1, 0, 0, 0 },
112 { GRAIL_TYPE_PINCH2, 2, 2, PRIO_PINCH },
113 { GRAIL_TYPE_PINCH3, 3, 3, PRIO_PINCH },
114 { GRAIL_TYPE_PINCH4, 4, 4, PRIO_PINCH },
115 { GRAIL_TYPE_PINCH5, 5, 5, PRIO_PINCH }
116 },
117 pinch_props
118};
119
120static const struct gesture_handler rotate_handler = {
121 GRAIL_EXPECT_ANGLE,
122 {
123 { -1, 0, 0, 0 },
124 { -1, 0, 0, 0 },
125 { GRAIL_TYPE_ROTATE2, 2, 2, PRIO_ROTATE },
126 { GRAIL_TYPE_ROTATE3, 3, 3, PRIO_ROTATE },
127 { GRAIL_TYPE_ROTATE4, 4, 4, PRIO_ROTATE },
128 { GRAIL_TYPE_ROTATE5, 5, 5, PRIO_ROTATE }
129 },
130 rotate_props
131};
132
133static const struct gesture_handler tap_handler = {
134 GRAIL_EXPECT_MASK,
135 {
136 { -1, 0, 0, 0 },
137 { GRAIL_TYPE_TAP1, 1, 1, PRIO_TAP },
138 { GRAIL_TYPE_TAP2, 2, 2, PRIO_TAP },
139 { GRAIL_TYPE_TAP3, 3, 3, PRIO_TAP },
140 { GRAIL_TYPE_TAP4, 4, 4, PRIO_TAP },
141 { GRAIL_TYPE_TAP5, 5, 5, PRIO_TAP }
142 },
143 tap_props
144};
145
146static const struct gesture_handler wintouch_handler = {
147 0,
148 {
149 { -1, 0, 0, 0 },
150 { -1, 0, 0, 0 },
151 { -1, 0, 0, 0 },
152 { GRAIL_TYPE_ETOUCH, 1, 3, PRIO_EDRAG },
153 { GRAIL_TYPE_MTOUCH, 1, 4, PRIO_MDRAG },
154 { -1, 0, 0, 0 },
155 },
156 touch_props
157};
158
159static const struct gesture_handler windrag_handler = {
160 GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
161 {
162 { -1, 0, 0, 0 },
163 { -1, 0, 0, 0 },
164 { -1, 0, 0, 0 },
165 { GRAIL_TYPE_EDRAG, 1, 3, PRIO_EDRAG },
166 { GRAIL_TYPE_MDRAG, 1, 4, PRIO_MDRAG },
167 { -1, 0, 0, 0 },
168 },
169 drag_props
170};
171
172static const struct gesture_handler winpinch_handler = {
173 GRAIL_EXPECT_SCALE | GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
174 {
175 { -1, 0, 0, 0 },
176 { -1, 0, 0, 0 },
177 { -1, 0, 0, 0 },
178 { GRAIL_TYPE_EPINCH, 2, 3, PRIO_EPINCH },
179 { GRAIL_TYPE_MPINCH, 2, 4, PRIO_MPINCH },
180 { -1, 0, 0, 0 },
181 },
182 pinch_props
183};
184
185static const struct gesture_handler winrotate_handler = {
186 GRAIL_EXPECT_ANGLE | GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
187 {
188 { -1, 0, 0, 0 },
189 { -1, 0, 0, 0 },
190 { -1, 0, 0, 0 },
191 { GRAIL_TYPE_EROTATE, 2, 3, PRIO_EROTATE },
192 { GRAIL_TYPE_MROTATE, 2, 4, PRIO_MROTATE },
193 { -1, 0, 0, 0 },
194 },
195 rotate_props
196};
26197
27int gru_init(struct grail *ge)198int gru_init(struct grail *ge)
28{199{
@@ -30,8 +201,18 @@
30 gru = calloc(1, sizeof(struct gesture_recognizer));201 gru = calloc(1, sizeof(struct gesture_recognizer));
31 if (!gru)202 if (!gru)
32 return -ENOMEM;203 return -ENOMEM;
204
205 gru->touch.handler = &touch_handler;
206 gru->drag.handler = &drag_handler;
207 gru->pinch.handler = &pinch_handler;
208 gru->rotate.handler = &rotate_handler;
209 gru->tapping.handler = &tap_handler;
210 gru->wintouch.handler = &wintouch_handler;
211 gru->windrag.handler = &windrag_handler;
212 gru->winpinch.handler = &winpinch_handler;
213 gru->winrotate.handler = &winrotate_handler;
214
33 ge->gru = gru;215 ge->gru = gru;
34 gru_init_motion(ge);
35 return 0;216 return 0;
36}217}
37218
@@ -41,18 +222,166 @@
41 ge->gru = NULL;222 ge->gru = NULL;
42}223}
43224
44void gru_recognize(struct grail *ge, const struct utouch_frame *frame)225static void set_props(struct grail *ge,
45{226 struct combo_model *s,
46 if (!ge->gin || !ge->gru)227 const struct utouch_frame *frame)
47 return;228{
48 gru_motion(ge, frame);229 const struct gesture_handler *gh = s->handler;
49 gru_touch(ge, frame);230 gh->set_props(ge->gin, s, ge->gru->move, frame);
50 gru_drag(ge, frame);231 s->nprop += gin_add_contact_props(ge->gin, s->prop + s->nprop, frame);
51 gru_pinch(ge, frame);232}
52 gru_rotate(ge, frame);233
53 gru_wintouch(ge, frame);234static int gru_touch_handler(struct grail *ge,
54 gru_windrag(ge, frame);235 struct combo_model *state,
55 gru_winpinch(ge, frame);236 const struct utouch_frame *frame)
56 gru_winrotate(ge, frame);237{
57 gru_tapping(ge, frame);238 struct gesture_recognizer *gru = ge->gru;
239 struct gesture_inserter *gin = ge->gin;
240 struct grail_element *move = gru->move;
241 const struct gesture_handler *gh = state->handler;
242 int ntouch = move->num_touches;
243 if (frame->slot_revision != frame->prev->slot_revision) {
244 if (state->active) {
245 gin_gid_end(ge, state->gid, move->center.x,
246 move->center.y, ntouch,
247 state->prop, state->nprop);
248 state->active = 0;
249 }
250 }
251 if (ntouch > MAX_TOUCH_GESTURE)
252 return 0;
253 if (!state->active) {
254 struct gesture_head h = gh->getype[ntouch];
255 if (h.type < 0)
256 return 0;
257 state->gid = gin_gid_begin(ge, h.type, -h.priority, frame);
258 state->mintouch = h.mintouch;
259 state->maxtouch = h.maxtouch;
260 state->active = 1;
261 }
262 set_props(ge, state, frame);
263 gin_gid_event(ge, state->gid, move->center.x, move->center.y,
264 ntouch, state->prop, state->nprop, 0);
265 return 1;
266}
267
268static int gru_gesture_handler(struct grail *ge,
269 struct combo_model *state,
270 const struct utouch_frame *frame)
271{
272 struct gesture_recognizer *gru = ge->gru;
273 struct gesture_inserter *gin = ge->gin;
274 struct grail_element *move = gru->move;
275 const struct gesture_handler *gh = state->handler;
276 int expect = move->expect_mask & gh->fm_mask;
277 int active = move->active_mask & gh->fm_mask;
278 int ntouch = move->num_touches;
279 if (state->active &&
280 (!expect || ntouch < state->mintouch || ntouch > state->maxtouch)) {
281 gin_gid_end(ge, state->gid, move->center.x,
282 move->center.y, ntouch,
283 state->prop, state->nprop);
284 state->active = 0;
285 return 0;
286 }
287 if (!expect || ntouch > MAX_TOUCH_GESTURE)
288 return 0;
289 if (!state->active) {
290 struct gesture_head h = gh->getype[ntouch];
291 if (h.type < 0)
292 return 0;
293 state->gid = gin_gid_begin(ge, h.type, h.priority, frame);
294 state->mintouch = h.mintouch;
295 state->maxtouch = h.maxtouch;
296 state->active = 1;
297 }
298 if (!active)
299 return 0;
300 set_props(ge, state, frame);
301 gin_gid_event(ge, state->gid, move->center.x, move->center.y,
302 ntouch, state->prop, state->nprop, 0);
303 return 1;
304}
305
306static int gru_tap_handler(struct grail *ge,
307 struct combo_model *state,
308 const struct utouch_frame *frame)
309{
310 const struct grail_control *ctl = ge->impl->ctl;
311 struct gesture_recognizer *gru = ge->gru;
312 struct grail_element *move = gru->move;
313 const struct gesture_handler *gh = state->handler;
314 int active = move->active_mask & gh->fm_mask;
315 int ntouch = move->num_touches;
316 if (frame->num_active && !frame->prev->num_active) {
317 state->mintouch = 0;
318 state->maxtouch = 0;
319 }
320 if (ntouch > state->maxtouch) {
321 if (state->active) {
322 gin_gid_discard(ge, state->gid);
323 state->active = 0;
324 }
325 state->start = frame->time;
326 state->maxtouch = ntouch;
327 set_props(ge, state, frame);
328 if (state->maxtouch <= MAX_TOUCH_GESTURE) {
329 struct gesture_head h = gh->getype[ntouch];
330 if (h.type < 0)
331 return 0;
332 state->gid = gin_gid_begin(ge, h.type, h.priority,
333 frame);
334 state->active = 1;
335 }
336 return 0;
337 }
338 if (!state->active) {
339 state->mintouch = ntouch;
340 return 0;
341 }
342 if (active || frame->time - state->start > ctl->tap_time_ms) {
343 gin_gid_discard(ge, state->gid);
344 state->mintouch = ntouch;
345 state->maxtouch = ntouch;
346 state->active = 0;
347 return 0;
348 }
349 if (ntouch <= state->mintouch) {
350 float x = state->prop[GRAIL_PROP_TAP_X];
351 float y = state->prop[GRAIL_PROP_TAP_Y];
352 float t = frame->time - state->start;
353 state->prop[GRAIL_PROP_TAP_DT] = t;
354 gin_gid_event(ge, state->gid, x, y, state->maxtouch,
355 state->prop, state->nprop, 1);
356 state->mintouch = ntouch;
357 state->maxtouch = ntouch;
358 state->active = 0;
359 return 1;
360 }
361 if (!ntouch)
362 return 0;
363 state->prop[GRAIL_PROP_TAP_DT] = frame->time - state->start;
364 return 0;
365}
366
367void gru_recognize(struct grail *ge,
368 const struct grail_frame *frame,
369 const struct utouch_frame *touch)
370{
371 struct gesture_recognizer *gru = ge->gru;
372
373 if (frame && frame->num_ongoing)
374 gru->slot = frame->ongoing[frame->num_ongoing - 1]->slot;
375
376 gru->move = frame->slots[gru->slot];
377
378 gru_touch_handler(ge, &gru->touch, touch);
379 gru_gesture_handler(ge, &gru->drag, touch);
380 gru_gesture_handler(ge, &gru->pinch, touch);
381 gru_gesture_handler(ge, &gru->rotate, touch);
382 gru_touch_handler(ge, &gru->wintouch, touch);
383 gru_gesture_handler(ge, &gru->windrag, touch);
384 gru_gesture_handler(ge, &gru->winpinch, touch);
385 gru_gesture_handler(ge, &gru->winrotate, touch);
386 gru_tap_handler(ge, &gru->tapping, touch);
58}387}
59388
=== modified file 'src/grail-recognizer.h'
--- src/grail-recognizer.h 2011-05-17 14:15:22 +0000
+++ src/grail-recognizer.h 2011-08-17 12:41:50 +0000
@@ -22,10 +22,60 @@
22#ifndef GRAIL_RECOGNIZER_H22#ifndef GRAIL_RECOGNIZER_H
23#define GRAIL_RECOGNIZER_H23#define GRAIL_RECOGNIZER_H
2424
25#include "grail-gestures.h"25#include "grail-inserter.h"
2626
27#define PRIO_POINTER 1
28#define PRIO_PINCH 2
29#define PRIO_ROTATE 3
30#define PRIO_DRAG 3
31#define PRIO_EPINCH 4
32#define PRIO_EROTATE 5
33#define PRIO_EDRAG 5
34#define PRIO_MPINCH 6
35#define PRIO_MROTATE 7
36#define PRIO_MDRAG 7
37#define PRIO_TAP 8
38
39/*
40 * struct combo_model - gesture primitive state
41 * @start: time this primitive started
42 * @active: true if this primitive is active
43 * @gid: gesture slot used for this primitive
44 * @mintouch: number of touches below this value ends the primitive
45 * @maxtouch: number of touches above this value ends the primitive
46 * @nprop: number of properties of this primitive
47 * @handler: pointer to gesture handler for this primitive
48 *
49 * This structure keeps track of an individual gesture primitive.
50 */
51struct combo_model {
52 grail_time_t start;
53 int active, gid;
54 int mintouch, maxtouch;
55 int nprop;
56 grail_prop_t prop[DIM_GRAIL_PROP];
57 const struct gesture_handler *handler;
58};
59
60/*
61 * struct gesture_recognizer - gesture recognizer state
62 * @slot: touch slot of current touch frame
63 * @move: the grail element used for all gestures
64 * @touch: touch primitive state
65 * @drag: drag primitive state
66 * @pinch: pinch primitive state
67 * @rotate: rotate primitive state
68 * @wintouch: env/meta touch primitive state
69 * @windrag: env/meta drag primitive state
70 * @winpinch: env/meta pinch primitive state
71 * @winrotate: env/meta rotate primitive state
72 * @tapping: tapping gesture primitive state
73 *
74 * This is the state of the gesture recognizer.
75 */
27struct gesture_recognizer {76struct gesture_recognizer {
28 struct move_model move;77 int slot;
78 struct grail_element *move;
29 struct combo_model touch;79 struct combo_model touch;
30 struct combo_model drag;80 struct combo_model drag;
31 struct combo_model pinch;81 struct combo_model pinch;
@@ -34,11 +84,45 @@
34 struct combo_model windrag;84 struct combo_model windrag;
35 struct combo_model winpinch;85 struct combo_model winpinch;
36 struct combo_model winrotate;86 struct combo_model winrotate;
37 struct tapping_model tapping;87 struct combo_model tapping;
88};
89
90/*
91 * struct gesture_head - gesture type handler data
92 * @type: gesture type of this primitive
93 * @mintouch: minimum number of touches for this primitive
94 * @maxtouch: maximum number of touches for this primitive
95 * @priority: priority of this primitive
96 */
97struct gesture_head {
98 int type;
99 int mintouch;
100 int maxtouch;
101 int priority;
102};
103
104/*
105 * struct gesture_handler - gesture handler state
106 * @fm_mask: gesture frame expectation mask used in this handler
107 * @getype: array of gesture type data per number of touches
108 * @set_props: properties method for this handler
109 *
110 * This is the state of the gesture handler.
111 */
112struct gesture_handler {
113 int fm_mask;
114 struct gesture_head getype[DIM_TOUCH + 1];
115
116 void (*set_props)(const struct gesture_inserter *gin,
117 struct combo_model *state,
118 const struct grail_element *element,
119 const struct utouch_frame *frame);
38};120};
39121
40int gru_init(struct grail *ge);122int gru_init(struct grail *ge);
41void gru_recognize(struct grail *ge, const struct utouch_frame *frame);123void gru_recognize(struct grail *ge,
124 const struct grail_frame *frame,
125 const struct utouch_frame *touch);
42void gru_destroy(struct grail *ge);126void gru_destroy(struct grail *ge);
43127
44#endif128#endif
45129
=== modified file 'test/Makefile.am'
--- test/Makefile.am 2011-04-28 16:53:46 +0000
+++ test/Makefile.am 2011-08-17 12:41:50 +0000
@@ -10,9 +10,12 @@
10check_grail_SOURCES = \10check_grail_SOURCES = \
11 check-mapping.c \11 check-mapping.c \
12 check-transform.c \12 check-transform.c \
13 check-gestures.c \
13 check-grail.c14 check-grail.c
1415
15check_grail_CFLAGS = \16check_grail_CFLAGS = \
17 -DTEST_ROOT_DIR=\"$(abs_top_srcdir)/test\"\
18 -Wall -Wextra \
16 -Wall -Wextra \19 -Wall -Wextra \
17 -I$(top_srcdir) \20 -I$(top_srcdir) \
18 -I$(top_srcdir)/include \21 -I$(top_srcdir)/include \
1922
=== added file 'test/check-gestures.c'
--- test/check-gestures.c 1970-01-01 00:00:00 +0000
+++ test/check-gestures.c 2011-08-17 12:41:50 +0000
@@ -0,0 +1,230 @@
1#include <check.h>
2#include <grail.h>
3#include "../src/grail-impl.h"
4#include <string.h>
5#include <stdio.h>
6#include <unistd.h>
7#include <fcntl.h>
8#include <stdlib.h>
9#include <time.h>
10#include <math.h>
11
12#define TEST_TIME_MS 20000
13
14#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
15
16struct test_data {
17 struct grail ge;
18 int fd;
19 int begin_count[DIM_GRAIL_TYPE];
20 int update_count[DIM_GRAIL_TYPE];
21 int end_count[DIM_GRAIL_TYPE];
22};
23
24static int tp_get_clients(struct grail *ge,
25 struct grail_client_info *clients, int max_clients,
26 const struct grail_coord *coords, int num_coords,
27 const grail_mask_t *types, int type_bytes)
28{
29 memset(&clients[0], 0, sizeof(clients[0]));
30 clients[0].mask[0] = 255;
31 clients[0].mask[1] = 255;
32 clients[0].mask[2] = 255;
33 clients[0].mask[3] = 255;
34 clients[0].id.client = 345;
35 clients[0].id.root = 1;
36 clients[0].id.event = 2;
37 clients[0].id.child = 3;
38 ge = 0;
39 types = 0;
40 type_bytes = 0;
41 max_clients = 0;
42 coords = 0;
43 num_coords = 0;
44 return 1;
45}
46
47static void tp_event(struct grail *ge, const struct input_event *ev)
48{
49 ge = 0;
50 ev = 0;
51}
52
53static void tp_gesture(struct grail *ge, const struct grail_event *ev)
54{
55 struct test_data *data = ge->priv;
56
57 switch (ev->status) {
58 case GRAIL_STATUS_BEGIN:
59 data->begin_count[ev->type]++;
60 break;
61 case GRAIL_STATUS_UPDATE:
62 data->update_count[ev->type]++;
63 break;
64 case GRAIL_STATUS_END:
65 data->end_count[ev->type]++;
66 break;
67 }
68}
69
70static int init_test_data(struct test_data *data, const char *path)
71{
72 int ret;
73
74 memset(data, 0, sizeof(*data));
75
76 data->ge.get_clients = tp_get_clients;
77 data->ge.event = tp_event;
78 data->ge.gesture = tp_gesture;
79
80 data->fd = open(path, O_RDONLY | O_NONBLOCK);
81 ret = grail_open(&data->ge, data->fd);
82 data->ge.impl->fast_fileread = 1;
83 if(ret)
84 return ret;
85 return 0;
86}
87
88static void term_test_data(struct test_data *data)
89{
90 grail_close(&data->ge, data->fd);
91 close(data->fd);
92}
93
94static void test_gesture_type(const char *name, int type,
95 int expected_begin_events,
96 int expected_update_events,
97 int expected_other_type_events)
98{
99 struct test_data data;
100 char path[1024];
101 int type_count = 0;
102 int i;
103
104 sprintf(path, TEST_FILE("io/functional/%s"), name);
105 fail_if(init_test_data(&data, path));
106
107 data.ge.priv = &data;
108 grail_pull(&data.ge, data.fd);
109
110 for (i = 0; i < DIM_GRAIL_TYPE; i++) {
111 if (data.begin_count[i] || data.update_count[i] || data.end_count[i]) {
112 //fprintf(stderr, "type %d %d\n", i, data.begin[i]);
113 type_count++;
114 }
115 }
116
117 fail_unless(data.begin_count[type] == expected_begin_events,
118 "Event begin count was %d, expected %d.",
119 data.begin_count[type], expected_begin_events);
120 fail_unless(data.update_count[type] >= expected_update_events,
121 "Event update count was %d, expecter more than %d.",
122 data.update_count[type], expected_update_events);
123 fail_unless(data.end_count[type] == expected_begin_events,
124 "Event end count was %d, expected %d",
125 data.end_count[type], expected_begin_events);
126 fail_unless(type_count == 1 + expected_other_type_events,
127 "Detected %d types of gestures, expected %d.",
128 type_count, 1+expected_other_type_events);
129
130 term_test_data(&data);
131}
132
133
134START_TEST(drag_1)
135{
136 test_gesture_type("drag-1.evemu", GRAIL_TYPE_DRAG1, 4, 4, 0);
137}
138END_TEST
139
140START_TEST(drag_2)
141{
142 test_gesture_type("drag-2.evemu", GRAIL_TYPE_DRAG2, 3, 3, 0);
143}
144END_TEST
145
146START_TEST(drag_3)
147{
148 test_gesture_type("drag-3.evemu", GRAIL_TYPE_EDRAG, 2, 2, 1);
149}
150END_TEST
151
152START_TEST(drag_4)
153{
154 /*
155 * This test should have drag only, but the data has
156 * some rotation and the current algorithm detects that.
157 * If the detector is fine tuned, the test case can be
158 * changed to not allow anything else than drags.
159 */
160 test_gesture_type("drag-4.evemu", GRAIL_TYPE_MDRAG, 4, 4, 1);
161}
162END_TEST
163
164START_TEST(hold_1)
165{
166 test_gesture_type("hold-1.evemu", GRAIL_TYPE_DRAG1, 0, 0, -1);
167}
168END_TEST
169
170START_TEST(pinch_2)
171{
172 test_gesture_type("pinch-2.evemu", GRAIL_TYPE_PINCH2, 2, 2, 0);
173}
174END_TEST
175
176START_TEST(pinch_3)
177{
178 test_gesture_type("pinch-3.evemu", GRAIL_TYPE_EPINCH, 2, 2, 0);
179}
180END_TEST
181
182START_TEST(rotate_2)
183{
184 test_gesture_type("rotate-2.evemu", GRAIL_TYPE_ROTATE2, 4, 4, 1);
185 /* In a perfect world, rotation around one finger would not cause
186 * drags.
187 *
188 * When we reach that world, remove the following test.
189 */
190 test_gesture_type("rotate-2.evemu", GRAIL_TYPE_DRAG2, 4, 4, 1);
191}
192END_TEST
193
194START_TEST(tap_1)
195{
196 test_gesture_type("tap-1.evemu", GRAIL_TYPE_TAP1, 0, 1, 0);
197}
198END_TEST
199
200START_TEST(tap_4)
201{
202 test_gesture_type("tap-4.evemu", GRAIL_TYPE_TAP4, 0, 1, 0);
203}
204END_TEST
205
206#define ADD_TEST(suite, name) \
207 do { \
208 TCase *test = tcase_create(#name); \
209 tcase_set_timeout (test, TEST_TIME_MS / 1000); \
210 tcase_add_test(test, name); \
211 suite_add_tcase(suite, test); \
212 } while (0)
213
214Suite *make_gesture_suite()
215{
216 Suite *suite = suite_create("grail-gestures");
217
218 ADD_TEST(suite, drag_1);
219 ADD_TEST(suite, drag_2);
220 ADD_TEST(suite, drag_3);
221 ADD_TEST(suite, drag_4);
222 ADD_TEST(suite, hold_1);
223 ADD_TEST(suite, pinch_2);
224 ADD_TEST(suite, pinch_3);
225 ADD_TEST(suite, rotate_2);
226 ADD_TEST(suite, tap_1);
227 ADD_TEST(suite, tap_4);
228
229 return suite;
230}
0231
=== modified file 'test/check-grail.c'
--- test/check-grail.c 2011-04-28 16:53:46 +0000
+++ test/check-grail.c 2011-08-17 12:41:50 +0000
@@ -4,6 +4,7 @@
44
5extern Suite *make_mapping_suite();5extern Suite *make_mapping_suite();
6extern Suite *make_transform_suite();6extern Suite *make_transform_suite();
7extern Suite *make_gesture_suite();
78
8int main(int argc CK_ATTRIBUTE_UNUSED, char* argv[] CK_ATTRIBUTE_UNUSED)9int main(int argc CK_ATTRIBUTE_UNUSED, char* argv[] CK_ATTRIBUTE_UNUSED)
9{10{
@@ -13,10 +14,11 @@
1314
14 srunner_add_suite(sr, make_mapping_suite());15 srunner_add_suite(sr, make_mapping_suite());
15 srunner_add_suite(sr, make_transform_suite());16 srunner_add_suite(sr, make_transform_suite());
17 srunner_add_suite(sr, make_gesture_suite());
1618
17 srunner_set_log(sr, "check_grail.log");19 srunner_set_log(sr, "check_grail.log");
18 srunner_set_xml(sr, "check_grail.xml");20 srunner_set_xml(sr, "check_grail.xml");
19 srunner_run_all(sr, CK_NORMAL);21 srunner_run_all(sr, CK_ENV);
20 num_failed = srunner_ntests_failed(sr);22 num_failed = srunner_ntests_failed(sr);
2123
22 srunner_free(sr);24 srunner_free(sr);
2325
=== modified file 'test/check-mapping.c'
--- test/check-mapping.c 2011-03-17 09:47:52 +0000
+++ test/check-mapping.c 2011-08-17 12:41:50 +0000
@@ -8,6 +8,8 @@
8#include <time.h>8#include <time.h>
9#include <math.h>9#include <math.h>
1010
11#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
12
11struct test_data {13struct test_data {
12 struct grail ge;14 struct grail ge;
13 int fd;15 int fd;
@@ -83,7 +85,7 @@
83{85{
84 struct test_data data;86 struct test_data data;
8587
86 fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));88 fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
8789
88 data.ge.priv = &data;90 data.ge.priv = &data;
89 grail_pull(&data.ge, data.fd);91 grail_pull(&data.ge, data.fd);
@@ -99,7 +101,7 @@
99 static const struct grail_coord min = { 0, 0 }, max = { 1.6, 1 };101 static const struct grail_coord min = { 0, 0 }, max = { 1.6, 1 };
100 struct test_data data;102 struct test_data data;
101103
102 fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));104 fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
103 grail_set_bbox(&data.ge, &min, &max);105 grail_set_bbox(&data.ge, &min, &max);
104106
105 data.ge.priv = &data;107 data.ge.priv = &data;
106108
=== modified file 'test/check-transform.c'
--- test/check-transform.c 2011-04-28 16:53:46 +0000
+++ test/check-transform.c 2011-08-17 12:41:50 +0000
@@ -9,6 +9,8 @@
9#include <time.h>9#include <time.h>
10#include <math.h>10#include <math.h>
1111
12#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
13
12struct test_data {14struct test_data {
13 struct evemu_device *evemu;15 struct evemu_device *evemu;
14 utouch_frame_handle fh;16 utouch_frame_handle fh;
@@ -83,7 +85,7 @@
83 const struct grail_element *slot;85 const struct grail_element *slot;
84 struct grail_coord pos = { 0, 0 };86 struct grail_coord pos = { 0, 0 };
8587
86 fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));88 fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
8789
88 while (get_event(&data, &ev)) {90 while (get_event(&data, &ev)) {
89 slot = get_element(&data, &ev);91 slot = get_element(&data, &ev);
@@ -105,7 +107,7 @@
105 const struct grail_element *slot;107 const struct grail_element *slot;
106 struct grail_coord pos = { 0, 0 };108 struct grail_coord pos = { 0, 0 };
107109
108 fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));110 fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
109 grail_set_bbox(data.ge, &min, &max);111 grail_set_bbox(data.ge, &min, &max);
110112
111 while (get_event(&data, &ev)) {113 while (get_event(&data, &ev)) {
112114
=== added directory 'test/io/functional'
=== added file 'test/io/functional/drag-1.evemu'
--- test/io/functional/drag-1.evemu 1970-01-01 00:00:00 +0000
+++ test/io/functional/drag-1.evemu 2011-08-17 12:41:50 +0000
@@ -0,0 +1,3988 @@
1N: 3M-Microtouch
2I: 0003 0596 0502 0110
3P: 00 00 00 00 00 00 00 00
4B: 00 0b 00 00 00 00 00 00 00
5B: 01 00 00 00 00 00 00 00 00
6B: 01 00 00 00 00 00 00 00 00
7B: 01 00 00 00 00 00 00 00 00
8B: 01 00 00 00 00 00 00 00 00
9B: 01 00 00 00 00 00 00 00 00
10B: 01 00 04 00 00 00 00 00 00
11B: 01 00 00 00 00 00 00 00 00
12B: 01 00 00 00 00 00 00 00 00
13B: 01 00 00 00 00 00 00 00 00
14B: 01 00 00 00 00 00 00 00 00
15B: 01 00 00 00 00 00 00 00 00
16B: 01 00 00 00 00 00 00 00 00
17B: 02 00 00 00 00 00 00 00 00
18B: 03 03 00 00 00 00 80 73 02
19B: 04 00 00 00 00 00 00 00 00
20B: 05 00 00 00 00 00 00 00 00
21B: 11 00 00 00 00 00 00 00 00
22B: 12 00 00 00 00 00 00 00 00
23B: 15 00 00 00 00 00 00 00 00
24B: 15 00 00 00 00 00 00 00 00
25A: 00 0 32767 15 0
26A: 01 0 32767 15 0
27A: 2f 0 59 0 0
28A: 30 0 32767 255 0
29A: 31 0 32767 255 0
30A: 34 0 1 0 0
31A: 35 0 32767 15 0
32A: 36 0 32767 15 0
33A: 39 0 65535 0 0
34E: 1304510649.770760 0003 002f 0
35E: 1304510649.770775 0003 0039 135
36E: 1304510649.770778 0003 0035 16448
37E: 1304510649.770779 0003 0036 6505
38E: 1304510649.770782 0003 0030 1312
39E: 1304510649.770787 0001 014a 1
40E: 1304510649.770791 0003 0000 16448
41E: 1304510649.770792 0003 0001 6505
42E: 1304510649.770794 0000 0000 0
43E: 1304510649.775755 0003 0030 1348
44E: 1304510649.775775 0000 0000 0
45E: 1304510649.801747 0003 0036 6507
46E: 1304510649.801769 0000 0000 0
47E: 1304510649.806750 0003 0036 6509
48E: 1304510649.806771 0000 0000 0
49E: 1304510649.811749 0003 0036 6521
50E: 1304510649.811769 0003 0001 6513
51E: 1304510649.811771 0000 0000 0
52E: 1304510649.816750 0003 0036 6529
53E: 1304510649.816763 0003 0030 1220
54E: 1304510649.816771 0003 0001 6521
55E: 1304510649.816773 0000 0000 0
56E: 1304510649.821749 0003 0036 6559
57E: 1304510649.821762 0003 0030 1188
58E: 1304510649.821770 0003 0001 6559
59E: 1304510649.821772 0000 0000 0
60E: 1304510649.826749 0003 0036 6570
61E: 1304510649.826769 0003 0001 6561
62E: 1304510649.826771 0000 0000 0
63E: 1304510649.831749 0003 0036 6603
64E: 1304510649.831769 0003 0001 6603
65E: 1304510649.831771 0000 0000 0
66E: 1304510649.836750 0003 0036 6617
67E: 1304510649.836770 0003 0001 6606
68E: 1304510649.836772 0000 0000 0
69E: 1304510649.841749 0003 0036 6657
70E: 1304510649.841769 0003 0001 6657
71E: 1304510649.841771 0000 0000 0
72E: 1304510649.847750 0003 0036 6671
73E: 1304510649.847763 0003 0030 1322
74E: 1304510649.847771 0003 0001 6660
75E: 1304510649.847772 0000 0000 0
76E: 1304510649.852748 0003 0036 6715
77E: 1304510649.852761 0003 0030 1355
78E: 1304510649.852769 0003 0001 6715
79E: 1304510649.852771 0000 0000 0
80E: 1304510649.857749 0003 0036 6729
81E: 1304510649.857769 0003 0001 6718
82E: 1304510649.857771 0000 0000 0
83E: 1304510649.862749 0003 0036 6771
84E: 1304510649.862769 0003 0001 6771
85E: 1304510649.862771 0000 0000 0
86E: 1304510649.867749 0003 0036 6805
87E: 1304510649.867770 0003 0001 6805
88E: 1304510649.867772 0000 0000 0
89E: 1304510649.872746 0003 0035 16445
90E: 1304510649.872758 0003 0036 6873
91E: 1304510649.872768 0003 0001 6873
92E: 1304510649.872770 0000 0000 0
93E: 1304510649.877748 0003 0035 16443
94E: 1304510649.877761 0003 0036 6887
95E: 1304510649.877771 0003 0001 6876
96E: 1304510649.877773 0000 0000 0
97E: 1304510649.882747 0003 0035 16441
98E: 1304510649.882759 0003 0036 6969
99E: 1304510649.882768 0003 0000 16446
100E: 1304510649.882770 0003 0001 6969
101E: 1304510649.882771 0000 0000 0
102E: 1304510649.887748 0003 0035 16438
103E: 1304510649.887759 0003 0036 7035
104E: 1304510649.887769 0003 0000 16444
105E: 1304510649.887770 0003 0001 7035
106E: 1304510649.887772 0000 0000 0
107E: 1304510649.892747 0003 0036 7067
108E: 1304510649.892760 0003 0030 1223
109E: 1304510649.892769 0003 0001 7067
110E: 1304510649.892770 0000 0000 0
111E: 1304510649.897747 0003 0035 16436
112E: 1304510649.897759 0003 0036 7143
113E: 1304510649.897762 0003 0030 1190
114E: 1304510649.897769 0003 0000 16442
115E: 1304510649.897771 0003 0001 7143
116E: 1304510649.897773 0000 0000 0
117E: 1304510649.903736 0003 0035 16434
118E: 1304510649.903747 0003 0036 7207
119E: 1304510649.903756 0003 0000 16440
120E: 1304510649.903758 0003 0001 7207
121E: 1304510649.903760 0000 0000 0
122E: 1304510649.908748 0003 0036 7241
123E: 1304510649.908768 0003 0001 7241
124E: 1304510649.908770 0000 0000 0
125E: 1304510649.913735 0003 0035 16431
126E: 1304510649.913746 0003 0036 7311
127E: 1304510649.913756 0003 0000 16437
128E: 1304510649.913757 0003 0001 7311
129E: 1304510649.913759 0000 0000 0
130E: 1304510649.918747 0003 0035 16428
131E: 1304510649.918759 0003 0036 7383
132E: 1304510649.918762 0003 0030 1323
133E: 1304510649.918769 0003 0000 16434
134E: 1304510649.918771 0003 0001 7383
135E: 1304510649.918773 0000 0000 0
136E: 1304510649.923734 0003 0035 16426
137E: 1304510649.923745 0003 0036 7453
138E: 1304510649.923748 0003 0030 1356
139E: 1304510649.923756 0003 0000 16432
140E: 1304510649.923757 0003 0001 7453
141E: 1304510649.923759 0000 0000 0
142E: 1304510649.928747 0003 0035 16424
143E: 1304510649.928759 0003 0036 7485
144E: 1304510649.928768 0003 0000 16430
145E: 1304510649.928770 0003 0001 7485
146E: 1304510649.928771 0000 0000 0
147E: 1304510649.933734 0003 0035 16422
148E: 1304510649.933746 0003 0036 7557
149E: 1304510649.933755 0003 0000 16428
150E: 1304510649.933757 0003 0001 7557
151E: 1304510649.933759 0000 0000 0
152E: 1304510649.938748 0003 0035 16419
153E: 1304510649.938761 0003 0036 7623
154E: 1304510649.938770 0003 0000 16425
155E: 1304510649.938772 0003 0001 7623
156E: 1304510649.938773 0000 0000 0
157E: 1304510649.943735 0003 0035 16417
158E: 1304510649.943747 0003 0036 7655
159E: 1304510649.943756 0003 0000 16423
160E: 1304510649.943758 0003 0001 7655
161E: 1304510649.943759 0000 0000 0
162E: 1304510649.948766 0003 0035 16414
163E: 1304510649.948779 0003 0036 7723
164E: 1304510649.948788 0003 0000 16420
165E: 1304510649.948790 0003 0001 7723
166E: 1304510649.948792 0000 0000 0
167E: 1304510649.953738 0003 0035 16412
168E: 1304510649.953750 0003 0036 7791
169E: 1304510649.953753 0003 0030 1224
170E: 1304510649.953760 0003 0000 16418
171E: 1304510649.953762 0003 0001 7791
172E: 1304510649.953763 0000 0000 0
173E: 1304510649.958757 0003 0036 7823
174E: 1304510649.958771 0003 0030 1191
175E: 1304510649.958779 0003 0001 7823
176E: 1304510649.958780 0000 0000 0
177E: 1304510649.964759 0003 0036 7893
178E: 1304510649.964780 0003 0001 7893
179E: 1304510649.964782 0000 0000 0
180E: 1304510649.969754 0003 0035 16410
181E: 1304510649.969765 0003 0036 7965
182E: 1304510649.969776 0003 0000 16416
183E: 1304510649.969778 0003 0001 7965
184E: 1304510649.969779 0000 0000 0
185E: 1304510649.974758 0003 0035 16408
186E: 1304510649.974770 0003 0036 8037
187E: 1304510649.974779 0003 0000 16414
188E: 1304510649.974781 0003 0001 8037
189E: 1304510649.974783 0000 0000 0
190E: 1304510649.979758 0003 0036 8105
191E: 1304510649.979771 0003 0030 1323
192E: 1304510649.979779 0003 0001 8105
193E: 1304510649.979781 0000 0000 0
194E: 1304510649.984759 0003 0036 8137
195E: 1304510649.984771 0003 0030 1356
196E: 1304510649.984780 0003 0001 8137
197E: 1304510649.984782 0000 0000 0
198E: 1304510649.989751 0003 0036 8211
199E: 1304510649.989765 0003 0001 8211
200E: 1304510649.989767 0000 0000 0
201E: 1304510649.994736 0003 0035 16406
202E: 1304510649.994744 0003 0036 8283
203E: 1304510649.994757 0003 0000 16412
204E: 1304510649.994764 0003 0001 8283
205E: 1304510649.994766 0000 0000 0
206E: 1304510649.999738 0003 0036 8355
207E: 1304510649.999759 0003 0001 8355
208E: 1304510649.999764 0000 0000 0
209E: 1304510650.004602 0003 0036 8425
210E: 1304510650.004613 0003 0001 8425
211E: 1304510650.004613 0000 0000 0
212E: 1304510650.009715 0003 0035 16404
213E: 1304510650.009719 0003 0036 8493
214E: 1304510650.009727 0003 0000 16410
215E: 1304510650.009728 0003 0001 8493
216E: 1304510650.009728 0000 0000 0
217E: 1304510650.014589 0003 0036 8525
218E: 1304510650.014592 0003 0030 1224
219E: 1304510650.014598 0003 0001 8525
220E: 1304510650.014599 0000 0000 0
221E: 1304510650.020610 0003 0035 16402
222E: 1304510650.020619 0003 0036 8597
223E: 1304510650.020620 0003 0030 1191
224E: 1304510650.020622 0003 0000 16408
225E: 1304510650.020623 0003 0001 8597
226E: 1304510650.020623 0000 0000 0
227E: 1304510650.025601 0003 0036 8671
228E: 1304510650.025612 0003 0001 8671
229E: 1304510650.025613 0000 0000 0
230E: 1304510650.030604 0003 0036 8743
231E: 1304510650.030617 0003 0001 8743
232E: 1304510650.030617 0000 0000 0
233E: 1304510650.035594 0003 0036 8815
234E: 1304510650.035601 0003 0030 1323
235E: 1304510650.035603 0003 0001 8815
236E: 1304510650.035604 0000 0000 0
237E: 1304510650.040607 0003 0036 8891
238E: 1304510650.040615 0003 0030 1356
239E: 1304510650.040619 0003 0001 8891
240E: 1304510650.040619 0000 0000 0
241E: 1304510650.045605 0003 0036 8961
242E: 1304510650.045616 0003 0001 8961
243E: 1304510650.045616 0000 0000 0
244E: 1304510650.050606 0003 0036 9031
245E: 1304510650.050614 0003 0001 9031
246E: 1304510650.050618 0000 0000 0
247E: 1304510650.055591 0003 0036 9103
248E: 1304510650.055601 0003 0001 9103
249E: 1304510650.055602 0000 0000 0
250E: 1304510650.060606 0003 0036 9135
251E: 1304510650.060617 0003 0001 9135
252E: 1304510650.060618 0000 0000 0
253E: 1304510650.065595 0003 0036 9209
254E: 1304510650.065602 0003 0001 9209
255E: 1304510650.065605 0000 0000 0
256E: 1304510650.070607 0003 0036 9279
257E: 1304510650.070615 0003 0030 1224
258E: 1304510650.070618 0003 0001 9279
259E: 1304510650.070619 0000 0000 0
260E: 1304510650.076602 0003 0036 9351
261E: 1304510650.076610 0003 0030 1191
262E: 1304510650.076613 0003 0001 9351
263E: 1304510650.076614 0000 0000 0
264E: 1304510650.081604 0003 0036 9419
265E: 1304510650.081615 0003 0001 9419
266E: 1304510650.081615 0000 0000 0
267E: 1304510650.086607 0003 0036 9493
268E: 1304510650.086617 0003 0001 9493
269E: 1304510650.086618 0000 0000 0
270E: 1304510650.091607 0003 0036 9567
271E: 1304510650.091616 0003 0030 1323
272E: 1304510650.091619 0003 0001 9567
273E: 1304510650.091619 0000 0000 0
274E: 1304510650.096607 0003 0036 9635
275E: 1304510650.096616 0003 0030 1356
276E: 1304510650.096619 0003 0001 9635
277E: 1304510650.096619 0000 0000 0
278E: 1304510650.101602 0003 0036 9701
279E: 1304510650.101614 0003 0001 9701
280E: 1304510650.101614 0000 0000 0
281E: 1304510650.106599 0003 0036 9733
282E: 1304510650.106613 0003 0001 9733
283E: 1304510650.106614 0000 0000 0
284E: 1304510650.111603 0003 0035 16400
285E: 1304510650.111607 0003 0036 9801
286E: 1304510650.111614 0003 0000 16406
287E: 1304510650.111615 0003 0001 9801
288E: 1304510650.111615 0000 0000 0
289E: 1304510650.116667 0003 0035 16398
290E: 1304510650.116671 0003 0036 9833
291E: 1304510650.116675 0003 0000 16404
292E: 1304510650.116675 0003 0001 9833
293E: 1304510650.116676 0000 0000 0
294E: 1304510650.121598 0003 0035 16396
295E: 1304510650.121604 0003 0036 9903
296E: 1304510650.121611 0003 0000 16402
297E: 1304510650.121612 0003 0001 9903
298E: 1304510650.121612 0000 0000 0
299E: 1304510650.126602 0003 0036 9935
300E: 1304510650.126613 0003 0001 9935
301E: 1304510650.126614 0000 0000 0
302E: 1304510650.131602 0003 0035 16394
303E: 1304510650.131611 0003 0036 10013
304E: 1304510650.131612 0003 0030 1224
305E: 1304510650.131615 0003 0000 16400
306E: 1304510650.131616 0003 0001 10013
307E: 1304510650.131616 0000 0000 0
308E: 1304510650.137600 0003 0035 16392
309E: 1304510650.137605 0003 0036 10085
310E: 1304510650.137605 0003 0030 1191
311E: 1304510650.137608 0003 0000 16398
312E: 1304510650.137612 0003 0001 10085
313E: 1304510650.137613 0000 0000 0
314E: 1304510650.142604 0003 0035 16390
315E: 1304510650.142607 0003 0036 10161
316E: 1304510650.142614 0003 0000 16396
317E: 1304510650.142615 0003 0001 10161
318E: 1304510650.142616 0000 0000 0
319E: 1304510650.147598 0003 0035 16388
320E: 1304510650.147602 0003 0036 10233
321E: 1304510650.147607 0003 0030 1323
322E: 1304510650.147609 0003 0000 16394
323E: 1304510650.147610 0003 0001 10233
324E: 1304510650.147610 0000 0000 0
325E: 1304510650.152604 0003 0036 10301
326E: 1304510650.152612 0003 0030 1356
327E: 1304510650.152615 0003 0001 10301
328E: 1304510650.152616 0000 0000 0
329E: 1304510650.157605 0003 0035 16386
330E: 1304510650.157616 0003 0036 10333
331E: 1304510650.157620 0003 0000 16392
332E: 1304510650.157620 0003 0001 10333
333E: 1304510650.157621 0000 0000 0
334E: 1304510650.162597 0003 0036 10401
335E: 1304510650.162610 0003 0001 10401
336E: 1304510650.162610 0000 0000 0
337E: 1304510650.167601 0003 0035 16383
338E: 1304510650.167609 0003 0036 10471
339E: 1304510650.167612 0003 0000 16389
340E: 1304510650.167613 0003 0001 10471
341E: 1304510650.167614 0000 0000 0
342E: 1304510650.172601 0003 0035 16380
343E: 1304510650.172604 0003 0036 10545
344E: 1304510650.172612 0003 0000 16386
345E: 1304510650.172612 0003 0001 10545
346E: 1304510650.172613 0000 0000 0
347E: 1304510650.177599 0003 0035 16377
348E: 1304510650.177608 0003 0036 10611
349E: 1304510650.177611 0003 0000 16383
350E: 1304510650.177612 0003 0001 10611
351E: 1304510650.177612 0000 0000 0
352E: 1304510650.182604 0003 0035 16375
353E: 1304510650.182607 0003 0036 10645
354E: 1304510650.182610 0003 0000 16381
355E: 1304510650.182611 0003 0001 10645
356E: 1304510650.182612 0000 0000 0
357E: 1304510650.187606 0003 0035 16373
358E: 1304510650.187610 0003 0036 10677
359E: 1304510650.187617 0003 0000 16379
360E: 1304510650.187618 0003 0001 10677
361E: 1304510650.187618 0000 0000 0
362E: 1304510650.193603 0003 0035 16370
363E: 1304510650.193607 0003 0036 10747
364E: 1304510650.193608 0003 0030 1224
365E: 1304510650.193610 0003 0000 16376
366E: 1304510650.193611 0003 0001 10747
367E: 1304510650.193612 0000 0000 0
368E: 1304510650.198595 0003 0035 16367
369E: 1304510650.198598 0003 0036 10813
370E: 1304510650.198603 0003 0030 1191
371E: 1304510650.198606 0003 0000 16373
372E: 1304510650.198606 0003 0001 10813
373E: 1304510650.198607 0000 0000 0
374E: 1304510650.203604 0003 0035 16364
375E: 1304510650.203607 0003 0036 10883
376E: 1304510650.203611 0003 0000 16370
377E: 1304510650.203611 0003 0001 10883
378E: 1304510650.203612 0000 0000 0
379E: 1304510650.208600 0003 0035 16362
380E: 1304510650.208604 0003 0036 10955
381E: 1304510650.208605 0003 0030 1323
382E: 1304510650.208607 0003 0000 16368
383E: 1304510650.208608 0003 0001 10955
384E: 1304510650.208608 0000 0000 0
385E: 1304510650.213594 0003 0035 16359
386E: 1304510650.213598 0003 0036 11029
387E: 1304510650.213599 0003 0030 1356
388E: 1304510650.213601 0003 0000 16365
389E: 1304510650.213605 0003 0001 11029
390E: 1304510650.213606 0000 0000 0
391E: 1304510650.218600 0003 0035 16357
392E: 1304510650.218604 0003 0036 11059
393E: 1304510650.218609 0003 0000 16363
394E: 1304510650.218613 0003 0001 11059
395E: 1304510650.218613 0000 0000 0
396E: 1304510650.223597 0003 0035 16355
397E: 1304510650.223601 0003 0036 11129
398E: 1304510650.223604 0003 0000 16361
399E: 1304510650.223605 0003 0001 11129
400E: 1304510650.223605 0000 0000 0
401E: 1304510650.228597 0003 0035 16352
402E: 1304510650.228605 0003 0036 11201
403E: 1304510650.228606 0003 0031 968
404E: 1304510650.228609 0003 0000 16358
405E: 1304510650.228609 0003 0001 11201
406E: 1304510650.228610 0000 0000 0
407E: 1304510650.233596 0003 0035 16349
408E: 1304510650.233601 0003 0036 11269
409E: 1304510650.233602 0003 0031 1008
410E: 1304510650.233604 0003 0000 16355
411E: 1304510650.233605 0003 0001 11269
412E: 1304510650.233606 0000 0000 0
413E: 1304510650.238604 0003 0035 16346
414E: 1304510650.238608 0003 0036 11299
415E: 1304510650.238615 0003 0000 16352
416E: 1304510650.238616 0003 0001 11299
417E: 1304510650.238616 0000 0000 0
418E: 1304510650.243601 0003 0035 16343
419E: 1304510650.243605 0003 0036 11369
420E: 1304510650.243608 0003 0000 16349
421E: 1304510650.243609 0003 0001 11369
422E: 1304510650.243609 0000 0000 0
423E: 1304510650.248597 0003 0035 16340
424E: 1304510650.248600 0003 0036 11447
425E: 1304510650.248605 0003 0034 1
426E: 1304510650.248605 0003 0030 1299
427E: 1304510650.248608 0003 0000 16346
428E: 1304510650.248608 0003 0001 11447
429E: 1304510650.248609 0000 0000 0
430E: 1304510650.254598 0003 0035 16337
431E: 1304510650.254601 0003 0036 11517
432E: 1304510650.254606 0003 0030 1256
433E: 1304510650.254609 0003 0000 16343
434E: 1304510650.254610 0003 0001 11517
435E: 1304510650.254610 0000 0000 0
436E: 1304510650.259599 0003 0035 16333
437E: 1304510650.259608 0003 0036 11595
438E: 1304510650.259612 0003 0000 16340
439E: 1304510650.259612 0003 0001 11595
440E: 1304510650.259613 0000 0000 0
441E: 1304510650.264599 0003 0035 16330
442E: 1304510650.264608 0003 0036 11663
443E: 1304510650.264608 0003 0034 0
444E: 1304510650.264609 0003 0030 1306
445E: 1304510650.264612 0003 0000 16337
446E: 1304510650.264612 0003 0001 11663
447E: 1304510650.264613 0000 0000 0
448E: 1304510650.269601 0003 0035 16327
449E: 1304510650.269604 0003 0036 11731
450E: 1304510650.269610 0003 0030 1343
451E: 1304510650.269612 0003 0000 16334
452E: 1304510650.269613 0003 0001 11731
453E: 1304510650.269613 0000 0000 0
454E: 1304510650.274602 0003 0035 16324
455E: 1304510650.274605 0003 0036 11803
456E: 1304510650.274613 0003 0000 16331
457E: 1304510650.274613 0003 0001 11803
458E: 1304510650.274614 0000 0000 0
459E: 1304510650.279591 0003 0036 11877
460E: 1304510650.279597 0003 0000 16329
461E: 1304510650.279597 0003 0001 11877
462E: 1304510650.279598 0000 0000 0
463E: 1304510650.284598 0003 0035 16322
464E: 1304510650.284602 0003 0036 11947
465E: 1304510650.284605 0003 0000 16327
466E: 1304510650.284605 0003 0001 11947
467E: 1304510650.284606 0000 0000 0
468E: 1304510650.289602 0003 0035 16320
469E: 1304510650.289607 0003 0036 12025
470E: 1304510650.289614 0003 0000 16325
471E: 1304510650.289615 0003 0001 12025
472E: 1304510650.289615 0000 0000 0
473E: 1304510650.294599 0003 0035 16318
474E: 1304510650.294602 0003 0036 12097
475E: 1304510650.294610 0003 0000 16323
476E: 1304510650.294610 0003 0001 12097
477E: 1304510650.294611 0000 0000 0
478E: 1304510650.299597 0003 0035 16316
479E: 1304510650.299601 0003 0036 12169
480E: 1304510650.299606 0003 0034 1
481E: 1304510650.299606 0003 0030 1289
482E: 1304510650.299609 0003 0000 16321
483E: 1304510650.299609 0003 0001 12169
484E: 1304510650.299610 0000 0000 0
485E: 1304510650.304599 0003 0036 12243
486E: 1304510650.304604 0003 0030 1249
487E: 1304510650.304607 0003 0001 12243
488E: 1304510650.304611 0000 0000 0
489E: 1304510650.310596 0003 0035 16314
490E: 1304510650.310602 0003 0036 12311
491E: 1304510650.310610 0003 0000 16319
492E: 1304510650.310610 0003 0001 12311
493E: 1304510650.310611 0000 0000 0
494E: 1304510650.315595 0003 0035 16312
495E: 1304510650.315599 0003 0036 12387
496E: 1304510650.315604 0003 0034 0
497E: 1304510650.315605 0003 0030 1300
498E: 1304510650.315607 0003 0000 16317
499E: 1304510650.315608 0003 0001 12387
500E: 1304510650.315608 0000 0000 0
501E: 1304510650.320596 0003 0036 12461
502E: 1304510650.320605 0003 0030 1339
503E: 1304510650.320608 0003 0001 12461
504E: 1304510650.320608 0000 0000 0
505E: 1304510650.325597 0003 0036 12535
506E: 1304510650.325608 0003 0001 12535
507E: 1304510650.325609 0000 0000 0
508E: 1304510650.330598 0003 0036 12607
509E: 1304510650.330609 0003 0001 12607
510E: 1304510650.330610 0000 0000 0
511E: 1304510650.335605 0003 0036 12683
512E: 1304510650.335616 0003 0001 12683
513E: 1304510650.335617 0000 0000 0
514E: 1304510650.340583 0003 0036 12761
515E: 1304510650.340588 0003 0001 12761
516E: 1304510650.340588 0000 0000 0
517E: 1304510650.345597 0003 0036 12837
518E: 1304510650.345608 0003 0001 12837
519E: 1304510650.345609 0000 0000 0
520E: 1304510650.350595 0003 0036 12907
521E: 1304510650.350603 0003 0034 1
522E: 1304510650.350604 0003 0030 1286
523E: 1304510650.350607 0003 0001 12907
524E: 1304510650.350607 0000 0000 0
525E: 1304510650.355599 0003 0036 12977
526E: 1304510650.355607 0003 0030 1247
527E: 1304510650.355611 0003 0001 12977
528E: 1304510650.355611 0000 0000 0
529E: 1304510650.360596 0003 0036 13055
530E: 1304510650.360605 0003 0034 0
531E: 1304510650.360605 0003 0030 1208
532E: 1304510650.360609 0003 0001 13055
533E: 1304510650.360610 0000 0000 0
534E: 1304510650.366588 0003 0036 13133
535E: 1304510650.366592 0003 0030 1270
536E: 1304510650.366598 0003 0001 13133
537E: 1304510650.366598 0000 0000 0
538E: 1304510650.371595 0003 0036 13207
539E: 1304510650.371603 0003 0030 1316
540E: 1304510650.371606 0003 0001 13207
541E: 1304510650.371606 0000 0000 0
542E: 1304510650.376604 0003 0035 16314
543E: 1304510650.376612 0003 0036 13281
544E: 1304510650.376614 0003 0030 1351
545E: 1304510650.376617 0003 0001 13281
546E: 1304510650.376617 0000 0000 0
547E: 1304510650.381583 0003 0035 16316
548E: 1304510650.381586 0003 0036 13359
549E: 1304510650.381592 0003 0001 13359
550E: 1304510650.381592 0000 0000 0
551E: 1304510650.386599 0003 0035 16318
552E: 1304510650.386604 0003 0036 13433
553E: 1304510650.386611 0003 0001 13433
554E: 1304510650.386612 0000 0000 0
555E: 1304510650.391587 0003 0035 16320
556E: 1304510650.391589 0003 0036 13511
557E: 1304510650.391597 0003 0001 13511
558E: 1304510650.391597 0000 0000 0
559E: 1304510650.396603 0003 0035 16323
560E: 1304510650.396606 0003 0036 13593
561E: 1304510650.396611 0003 0030 1221
562E: 1304510650.396614 0003 0001 13593
563E: 1304510650.396615 0000 0000 0
564E: 1304510650.401591 0003 0035 16325
565E: 1304510650.401595 0003 0036 13669
566E: 1304510650.401600 0003 0030 1188
567E: 1304510650.401602 0003 0000 16319
568E: 1304510650.401603 0003 0001 13669
569E: 1304510650.401604 0000 0000 0
570E: 1304510650.406597 0003 0035 16328
571E: 1304510650.406601 0003 0036 13751
572E: 1304510650.406608 0003 0000 16321
573E: 1304510650.406609 0003 0001 13751
574E: 1304510650.406609 0000 0000 0
575E: 1304510650.411595 0003 0035 16336
576E: 1304510650.411603 0003 0036 13831
577E: 1304510650.411604 0003 0030 1322
578E: 1304510650.411607 0003 0000 16328
579E: 1304510650.411607 0003 0001 13831
580E: 1304510650.411608 0000 0000 0
581E: 1304510650.416593 0003 0035 16339
582E: 1304510650.416596 0003 0036 13911
583E: 1304510650.416601 0003 0030 1355
584E: 1304510650.416603 0003 0000 16330
585E: 1304510650.416604 0003 0001 13911
586E: 1304510650.416605 0000 0000 0
587E: 1304510650.421595 0003 0035 16346
588E: 1304510650.421598 0003 0036 13995
589E: 1304510650.421605 0003 0000 16338
590E: 1304510650.421606 0003 0001 13995
591E: 1304510650.421607 0000 0000 0
592E: 1304510650.427596 0003 0035 16349
593E: 1304510650.427600 0003 0036 14073
594E: 1304510650.427608 0003 0000 16340
595E: 1304510650.427608 0003 0001 14073
596E: 1304510650.427609 0000 0000 0
597E: 1304510650.432589 0003 0035 16352
598E: 1304510650.432592 0003 0036 14151
599E: 1304510650.432599 0003 0000 16343
600E: 1304510650.432599 0003 0001 14151
601E: 1304510650.432600 0000 0000 0
602E: 1304510650.437603 0003 0035 16355
603E: 1304510650.437607 0003 0036 14233
604E: 1304510650.437614 0003 0000 16346
605E: 1304510650.437615 0003 0001 14233
606E: 1304510650.437615 0000 0000 0
607E: 1304510650.442592 0003 0035 16358
608E: 1304510650.442595 0003 0036 14315
609E: 1304510650.442600 0003 0030 1223
610E: 1304510650.442602 0003 0000 16349
611E: 1304510650.442603 0003 0001 14315
612E: 1304510650.442604 0000 0000 0
613E: 1304510650.447600 0003 0035 16366
614E: 1304510650.447604 0003 0036 14395
615E: 1304510650.447608 0003 0030 1190
616E: 1304510650.447611 0003 0000 16357
617E: 1304510650.447612 0003 0001 14395
618E: 1304510650.447612 0000 0000 0
619E: 1304510650.452590 0003 0035 16369
620E: 1304510650.452599 0003 0036 14481
621E: 1304510650.452602 0003 0000 16360
622E: 1304510650.452603 0003 0001 14481
623E: 1304510650.452603 0000 0000 0
624E: 1304510650.457599 0003 0035 16372
625E: 1304510650.457603 0003 0036 14565
626E: 1304510650.457608 0003 0030 1323
627E: 1304510650.457611 0003 0000 16363
628E: 1304510650.457611 0003 0001 14565
629E: 1304510650.457612 0000 0000 0
630E: 1304510650.462602 0003 0035 16375
631E: 1304510650.462605 0003 0036 14651
632E: 1304510650.462611 0003 0030 1356
633E: 1304510650.462613 0003 0000 16366
634E: 1304510650.462614 0003 0001 14651
635E: 1304510650.462615 0000 0000 0
636E: 1304510650.467593 0003 0035 16378
637E: 1304510650.467597 0003 0036 14741
638E: 1304510650.467605 0003 0000 16369
639E: 1304510650.467605 0003 0001 14741
640E: 1304510650.467606 0000 0000 0
641E: 1304510650.472596 0003 0035 16381
642E: 1304510650.472604 0003 0036 14823
643E: 1304510650.472607 0003 0000 16372
644E: 1304510650.472608 0003 0001 14823
645E: 1304510650.472608 0000 0000 0
646E: 1304510650.477595 0003 0035 16384
647E: 1304510650.477599 0003 0036 14909
648E: 1304510650.477606 0003 0000 16375
649E: 1304510650.477607 0003 0001 14909
650E: 1304510650.477607 0000 0000 0
651E: 1304510650.482600 0003 0035 16387
652E: 1304510650.482603 0003 0036 14993
653E: 1304510650.482609 0003 0030 1224
654E: 1304510650.482612 0003 0000 16378
655E: 1304510650.482612 0003 0001 14993
656E: 1304510650.482613 0000 0000 0
657E: 1304510650.488595 0003 0035 16389
658E: 1304510650.488599 0003 0036 15075
659E: 1304510650.488605 0003 0030 1191
660E: 1304510650.488607 0003 0000 16380
661E: 1304510650.488608 0003 0001 15075
662E: 1304510650.488608 0000 0000 0
663E: 1304510650.493594 0003 0035 16391
664E: 1304510650.493597 0003 0036 15157
665E: 1304510650.493601 0003 0000 16382
666E: 1304510650.493601 0003 0001 15157
667E: 1304510650.493602 0000 0000 0
668E: 1304510650.498600 0003 0035 16398
669E: 1304510650.498604 0003 0036 15243
670E: 1304510650.498609 0003 0030 1323
671E: 1304510650.498612 0003 0000 16390
672E: 1304510650.498613 0003 0001 15243
673E: 1304510650.498614 0000 0000 0
674E: 1304510650.503583 0003 0035 16400
675E: 1304510650.503586 0003 0036 15329
676E: 1304510650.503586 0003 0030 1356
677E: 1304510650.503589 0003 0000 16392
678E: 1304510650.503589 0003 0001 15329
679E: 1304510650.503590 0000 0000 0
680E: 1304510650.508595 0003 0035 16402
681E: 1304510650.508604 0003 0036 15413
682E: 1304510650.508607 0003 0000 16394
683E: 1304510650.508608 0003 0001 15413
684E: 1304510650.508608 0000 0000 0
685E: 1304510650.513590 0003 0035 16404
686E: 1304510650.513594 0003 0036 15497
687E: 1304510650.513597 0003 0000 16396
688E: 1304510650.513604 0003 0001 15497
689E: 1304510650.513604 0000 0000 0
690E: 1304510650.518591 0003 0035 16406
691E: 1304510650.518597 0003 0036 15583
692E: 1304510650.518604 0003 0000 16398
693E: 1304510650.518604 0003 0001 15583
694E: 1304510650.518605 0000 0000 0
695E: 1304510650.523595 0003 0035 16408
696E: 1304510650.523598 0003 0036 15663
697E: 1304510650.523602 0003 0000 16400
698E: 1304510650.523602 0003 0001 15663
699E: 1304510650.523603 0000 0000 0
700E: 1304510650.528592 0003 0035 16410
701E: 1304510650.528596 0003 0036 15739
702E: 1304510650.528601 0003 0030 1224
703E: 1304510650.528603 0003 0000 16402
704E: 1304510650.528604 0003 0001 15739
705E: 1304510650.528604 0000 0000 0
706E: 1304510650.533597 0003 0035 16412
707E: 1304510650.533601 0003 0036 15823
708E: 1304510650.533602 0003 0030 1191
709E: 1304510650.533605 0003 0000 16404
710E: 1304510650.533606 0003 0001 15823
711E: 1304510650.533606 0000 0000 0
712E: 1304510650.538595 0003 0036 15913
713E: 1304510650.538606 0003 0000 16406
714E: 1304510650.538606 0003 0001 15913
715E: 1304510650.538607 0000 0000 0
716E: 1304510650.544594 0003 0035 16414
717E: 1304510650.544602 0003 0036 15991
718E: 1304510650.544603 0003 0030 1323
719E: 1304510650.544606 0003 0000 16408
720E: 1304510650.544606 0003 0001 15991
721E: 1304510650.544607 0000 0000 0
722E: 1304510650.549590 0003 0035 16416
723E: 1304510650.549596 0003 0036 16069
724E: 1304510650.549601 0003 0030 1356
725E: 1304510650.549604 0003 0000 16410
726E: 1304510650.549604 0003 0001 16069
727E: 1304510650.549605 0000 0000 0
728E: 1304510650.554589 0003 0036 16143
729E: 1304510650.554600 0003 0001 16143
730E: 1304510650.554601 0000 0000 0
731E: 1304510650.559595 0003 0036 16219
732E: 1304510650.559606 0003 0001 16219
733E: 1304510650.559607 0000 0000 0
734E: 1304510650.564589 0003 0035 16418
735E: 1304510650.564592 0003 0036 16299
736E: 1304510650.564599 0003 0000 16412
737E: 1304510650.564600 0003 0001 16299
738E: 1304510650.564600 0000 0000 0
739E: 1304510650.569595 0003 0036 16373
740E: 1304510650.569607 0003 0001 16373
741E: 1304510650.569607 0000 0000 0
742E: 1304510650.574584 0003 0036 16445
743E: 1304510650.574595 0003 0001 16445
744E: 1304510650.574596 0000 0000 0
745E: 1304510650.579603 0003 0036 16515
746E: 1304510650.579612 0003 0030 1224
747E: 1304510650.579616 0003 0001 16515
748E: 1304510650.579616 0000 0000 0
749E: 1304510650.584585 0003 0036 16585
750E: 1304510650.584592 0003 0030 1191
751E: 1304510650.584595 0003 0001 16585
752E: 1304510650.584595 0000 0000 0
753E: 1304510650.589596 0003 0036 16651
754E: 1304510650.589607 0003 0001 16651
755E: 1304510650.589607 0000 0000 0
756E: 1304510650.594594 0003 0035 16420
757E: 1304510650.594598 0003 0036 16717
758E: 1304510650.594605 0003 0000 16414
759E: 1304510650.594606 0003 0001 16717
760E: 1304510650.594606 0000 0000 0
761E: 1304510650.599594 0003 0035 16422
762E: 1304510650.599598 0003 0036 16785
763E: 1304510650.599606 0003 0000 16416
764E: 1304510650.599606 0003 0001 16785
765E: 1304510650.599607 0000 0000 0
766E: 1304510650.605591 0003 0036 16799
767E: 1304510650.605603 0003 0001 16788
768E: 1304510650.605604 0000 0000 0
769E: 1304510650.610593 0003 0036 16847
770E: 1304510650.610602 0003 0030 1323
771E: 1304510650.610605 0003 0001 16847
772E: 1304510650.610605 0000 0000 0
773E: 1304510650.615590 0003 0035 16424
774E: 1304510650.615593 0003 0036 16877
775E: 1304510650.615598 0003 0030 1356
776E: 1304510650.615600 0003 0000 16418
777E: 1304510650.615601 0003 0001 16877
778E: 1304510650.615601 0000 0000 0
779E: 1304510650.620599 0003 0036 16907
780E: 1304510650.620610 0003 0001 16907
781E: 1304510650.620611 0000 0000 0
782E: 1304510650.625583 0003 0035 16426
783E: 1304510650.625587 0003 0036 16939
784E: 1304510650.625595 0003 0000 16420
785E: 1304510650.625595 0003 0001 16939
786E: 1304510650.625596 0000 0000 0
787E: 1304510650.630596 0003 0036 16971
788E: 1304510650.630609 0003 0001 16971
789E: 1304510650.630610 0000 0000 0
790E: 1304510650.635591 0003 0036 16985
791E: 1304510650.635602 0003 0001 16974
792E: 1304510650.635602 0000 0000 0
793E: 1304510650.640593 0003 0036 17031
794E: 1304510650.640606 0003 0001 17031
795E: 1304510650.640606 0000 0000 0
796E: 1304510650.645582 0003 0036 17061
797E: 1304510650.645592 0003 0001 17061
798E: 1304510650.645593 0000 0000 0
799E: 1304510650.650594 0003 0036 17131
800E: 1304510650.650606 0003 0001 17131
801E: 1304510650.650607 0000 0000 0
802E: 1304510650.655591 0003 0036 17144
803E: 1304510650.655601 0003 0001 17134
804E: 1304510650.655602 0000 0000 0
805E: 1304510650.661592 0003 0036 17179
806E: 1304510650.661604 0003 0001 17179
807E: 1304510650.661604 0000 0000 0
808E: 1304510650.666588 0003 0036 17190
809E: 1304510650.666598 0003 0001 17181
810E: 1304510650.666599 0000 0000 0
811E: 1304510650.671593 0003 0036 17227
812E: 1304510650.671604 0003 0001 17227
813E: 1304510650.671605 0000 0000 0
814E: 1304510650.676593 0003 0036 17238
815E: 1304510650.676606 0003 0001 17229
816E: 1304510650.676607 0000 0000 0
817E: 1304510650.681593 0003 0036 17269
818E: 1304510650.681604 0003 0001 17269
819E: 1304510650.681605 0000 0000 0
820E: 1304510650.686589 0003 0036 17279
821E: 1304510650.686601 0003 0001 17271
822E: 1304510650.686601 0000 0000 0
823E: 1304510650.691597 0003 0036 17309
824E: 1304510650.691610 0003 0001 17309
825E: 1304510650.691610 0000 0000 0
826E: 1304510650.696585 0003 0036 17319
827E: 1304510650.696595 0003 0001 17311
828E: 1304510650.696595 0000 0000 0
829E: 1304510650.701592 0003 0036 17333
830E: 1304510650.701603 0003 0001 17322
831E: 1304510650.701604 0000 0000 0
832E: 1304510650.706578 0003 0036 17363
833E: 1304510650.706587 0003 0001 17363
834E: 1304510650.706588 0000 0000 0
835E: 1304510650.711595 0003 0036 17372
836E: 1304510650.711607 0003 0001 17365
837E: 1304510650.711607 0000 0000 0
838E: 1304510650.717594 0003 0036 17375
839E: 1304510650.717601 0003 0001 17367
840E: 1304510650.717602 0000 0000 0
841E: 1304510650.722591 0003 0036 17378
842E: 1304510650.722598 0003 0001 17369
843E: 1304510650.722599 0000 0000 0
844E: 1304510650.727591 0003 0036 17386
845E: 1304510650.727602 0003 0001 17377
846E: 1304510650.727603 0000 0000 0
847E: 1304510650.732591 0003 0036 17389
848E: 1304510650.732602 0003 0001 17380
849E: 1304510650.732603 0000 0000 0
850E: 1304510650.737590 0003 0036 17392
851E: 1304510650.737601 0003 0001 17383
852E: 1304510650.737601 0000 0000 0
853E: 1304510650.742591 0003 0036 17395
854E: 1304510650.742603 0003 0001 17386
855E: 1304510650.742603 0000 0000 0
856E: 1304510650.747575 0003 0036 17398
857E: 1304510650.747583 0003 0001 17389
858E: 1304510650.747583 0000 0000 0
859E: 1304510650.752592 0003 0036 17401
860E: 1304510650.752603 0003 0001 17392
861E: 1304510650.752604 0000 0000 0
862E: 1304510650.757587 0003 0036 17404
863E: 1304510650.757598 0003 0001 17395
864E: 1304510650.757599 0000 0000 0
865E: 1304510650.762594 0003 0036 17406
866E: 1304510650.762601 0003 0001 17397
867E: 1304510650.762602 0000 0000 0
868E: 1304510650.767584 0003 0036 17408
869E: 1304510650.767591 0003 0001 17399
870E: 1304510650.767595 0000 0000 0
871E: 1304510650.772601 0003 0036 17410
872E: 1304510650.772611 0003 0001 17401
873E: 1304510650.772611 0000 0000 0
874E: 1304510650.778599 0003 0036 17413
875E: 1304510650.778607 0003 0001 17404
876E: 1304510650.778608 0000 0000 0
877E: 1304510650.783591 0003 0036 17415
878E: 1304510650.783600 0003 0001 17406
879E: 1304510650.783600 0000 0000 0
880E: 1304510650.788598 0003 0036 17417
881E: 1304510650.788607 0003 0001 17408
882E: 1304510650.788608 0000 0000 0
883E: 1304510650.793591 0003 0036 17419
884E: 1304510650.793600 0003 0001 17410
885E: 1304510650.793601 0000 0000 0
886E: 1304510650.798597 0003 0036 17421
887E: 1304510650.798606 0003 0001 17412
888E: 1304510650.798606 0000 0000 0
889E: 1304510650.803590 0003 0036 17423
890E: 1304510650.803599 0003 0001 17414
891E: 1304510650.803600 0000 0000 0
892E: 1304510650.808602 0003 0001 17416
893E: 1304510650.808609 0000 0000 0
894E: 1304510650.813591 0003 0036 17425
895E: 1304510650.813600 0003 0001 17418
896E: 1304510650.813600 0000 0000 0
897E: 1304510650.818601 0003 0001 17419
898E: 1304510650.818607 0000 0000 0
899E: 1304510650.854591 0003 0030 1224
900E: 1304510650.854596 0000 0000 0
901E: 1304510650.859598 0003 0030 1191
902E: 1304510650.859607 0000 0000 0
903E: 1304510650.864596 0003 0036 17412
904E: 1304510650.864604 0003 0001 17417
905E: 1304510650.864605 0000 0000 0
906E: 1304510650.869597 0003 0036 17377
907E: 1304510650.869606 0003 0001 17377
908E: 1304510650.869606 0000 0000 0
909E: 1304510650.874596 0003 0036 17364
910E: 1304510650.874604 0003 0001 17373
911E: 1304510650.874605 0000 0000 0
912E: 1304510650.879591 0003 0036 17323
913E: 1304510650.879600 0003 0030 1323
914E: 1304510650.879603 0003 0001 17323
915E: 1304510650.879604 0000 0000 0
916E: 1304510650.884710 0003 0036 17291
917E: 1304510650.884718 0003 0030 1356
918E: 1304510650.884729 0003 0001 17291
919E: 1304510650.884731 0000 0000 0
920E: 1304510650.889723 0003 0036 17277
921E: 1304510650.889743 0003 0001 17287
922E: 1304510650.889745 0000 0000 0
923E: 1304510650.895587 0003 0036 17195
924E: 1304510650.895599 0003 0001 17195
925E: 1304510650.895600 0000 0000 0
926E: 1304510650.900591 0003 0036 17129
927E: 1304510650.900602 0003 0001 17129
928E: 1304510650.900603 0000 0000 0
929E: 1304510650.905585 0003 0036 17059
930E: 1304510650.905599 0003 0001 17059
931E: 1304510650.905600 0000 0000 0
932E: 1304510650.910589 0003 0036 17029
933E: 1304510650.910600 0003 0030 1224
934E: 1304510650.910603 0003 0001 17029
935E: 1304510650.910603 0000 0000 0
936E: 1304510650.915584 0003 0036 16961
937E: 1304510650.915592 0003 0030 1191
938E: 1304510650.915595 0003 0001 16961
939E: 1304510650.915596 0000 0000 0
940E: 1304510650.920587 0003 0036 16891
941E: 1304510650.920597 0003 0001 16891
942E: 1304510650.920598 0000 0000 0
943E: 1304510650.925587 0003 0036 16821
944E: 1304510650.925598 0003 0001 16821
945E: 1304510650.925599 0000 0000 0
946E: 1304510650.930586 0003 0036 16755
947E: 1304510650.930597 0003 0001 16755
948E: 1304510650.930598 0000 0000 0
949E: 1304510650.935586 0003 0036 16689
950E: 1304510650.935599 0003 0001 16689
951E: 1304510650.935600 0000 0000 0
952E: 1304510650.940588 0003 0036 16621
953E: 1304510650.940596 0003 0030 1323
954E: 1304510650.940599 0003 0001 16621
955E: 1304510650.940600 0000 0000 0
956E: 1304510650.945592 0003 0036 16589
957E: 1304510650.945598 0003 0030 1356
958E: 1304510650.945601 0003 0001 16589
959E: 1304510650.945607 0000 0000 0
960E: 1304510650.951584 0003 0036 16515
961E: 1304510650.951594 0003 0001 16515
962E: 1304510650.951595 0000 0000 0
963E: 1304510650.956584 0003 0036 16445
964E: 1304510650.956595 0003 0001 16445
965E: 1304510650.956595 0000 0000 0
966E: 1304510650.961588 0003 0036 16373
967E: 1304510650.961599 0003 0001 16373
968E: 1304510650.961599 0000 0000 0
969E: 1304510650.966573 0003 0036 16303
970E: 1304510650.966577 0003 0030 1224
971E: 1304510650.966583 0003 0001 16303
972E: 1304510650.966584 0000 0000 0
973E: 1304510650.971589 0003 0036 16233
974E: 1304510650.971598 0003 0030 1191
975E: 1304510650.971602 0003 0001 16233
976E: 1304510650.971602 0000 0000 0
977E: 1304510650.976582 0003 0036 16151
978E: 1304510650.976593 0003 0001 16151
979E: 1304510650.976594 0000 0000 0
980E: 1304510650.981590 0003 0036 16071
981E: 1304510650.981602 0003 0001 16071
982E: 1304510650.981602 0000 0000 0
983E: 1304510650.986585 0003 0036 15985
984E: 1304510650.986594 0003 0030 1323
985E: 1304510650.986597 0003 0001 15985
986E: 1304510650.986597 0000 0000 0
987E: 1304510650.991582 0003 0036 15903
988E: 1304510650.991593 0003 0030 1356
989E: 1304510650.991596 0003 0001 15903
990E: 1304510650.991597 0000 0000 0
991E: 1304510650.996583 0003 0036 15819
992E: 1304510650.996594 0003 0001 15819
993E: 1304510650.996594 0000 0000 0
994E: 1304510651.001590 0003 0036 15733
995E: 1304510651.001601 0003 0001 15733
996E: 1304510651.001601 0000 0000 0
997E: 1304510651.006580 0003 0036 15647
998E: 1304510651.006589 0003 0030 1224
999E: 1304510651.006592 0003 0001 15647
1000E: 1304510651.006593 0000 0000 0
1001E: 1304510651.012590 0003 0036 15567
1002E: 1304510651.012599 0003 0030 1191
1003E: 1304510651.012602 0003 0001 15567
1004E: 1304510651.012603 0000 0000 0
1005E: 1304510651.017592 0003 0036 15481
1006E: 1304510651.017604 0003 0001 15481
1007E: 1304510651.017605 0000 0000 0
1008E: 1304510651.022587 0003 0036 15397
1009E: 1304510651.022598 0003 0001 15397
1010E: 1304510651.022599 0000 0000 0
1011E: 1304510651.027589 0003 0036 15317
1012E: 1304510651.027597 0003 0030 1323
1013E: 1304510651.027600 0003 0001 15317
1014E: 1304510651.027600 0000 0000 0
1015E: 1304510651.032586 0003 0036 15233
1016E: 1304510651.032594 0003 0030 1356
1017E: 1304510651.032597 0003 0001 15233
1018E: 1304510651.032597 0000 0000 0
1019E: 1304510651.037583 0003 0035 16424
1020E: 1304510651.037589 0003 0036 15155
1021E: 1304510651.037592 0003 0001 15155
1022E: 1304510651.037597 0000 0000 0
1023E: 1304510651.042583 0003 0035 16422
1024E: 1304510651.042592 0003 0036 15081
1025E: 1304510651.042596 0003 0001 15081
1026E: 1304510651.042596 0000 0000 0
1027E: 1304510651.047582 0003 0035 16420
1028E: 1304510651.047586 0003 0036 15005
1029E: 1304510651.047594 0003 0001 15005
1030E: 1304510651.047594 0000 0000 0
1031E: 1304510651.052592 0003 0035 16418
1032E: 1304510651.052600 0003 0036 14933
1033E: 1304510651.052607 0003 0001 14933
1034E: 1304510651.052608 0000 0000 0
1035E: 1304510651.057587 0003 0035 16416
1036E: 1304510651.057595 0003 0036 14857
1037E: 1304510651.057596 0003 0030 1224
1038E: 1304510651.057599 0003 0001 14857
1039E: 1304510651.057599 0000 0000 0
1040E: 1304510651.062586 0003 0036 14785
1041E: 1304510651.062590 0003 0030 1191
1042E: 1304510651.062593 0003 0001 14785
1043E: 1304510651.062594 0000 0000 0
1044E: 1304510651.068589 0003 0036 14703
1045E: 1304510651.068601 0003 0001 14703
1046E: 1304510651.068602 0000 0000 0
1047E: 1304510651.073586 0003 0035 16414
1048E: 1304510651.073590 0003 0036 14625
1049E: 1304510651.073594 0003 0001 14625
1050E: 1304510651.073598 0000 0000 0
1051E: 1304510651.078582 0003 0036 14543
1052E: 1304510651.078592 0003 0030 1323
1053E: 1304510651.078594 0003 0001 14543
1054E: 1304510651.078595 0000 0000 0
1055E: 1304510651.083580 0003 0035 16412
1056E: 1304510651.083584 0003 0036 14455
1057E: 1304510651.083585 0003 0030 1356
1058E: 1304510651.083588 0003 0000 16418
1059E: 1304510651.083588 0003 0001 14455
1060E: 1304510651.083589 0000 0000 0
1061E: 1304510651.088582 0003 0035 16410
1062E: 1304510651.088586 0003 0036 14369
1063E: 1304510651.088593 0003 0000 16416
1064E: 1304510651.088594 0003 0001 14369
1065E: 1304510651.088594 0000 0000 0
1066E: 1304510651.093585 0003 0035 16407
1067E: 1304510651.093589 0003 0036 14287
1068E: 1304510651.093592 0003 0000 16413
1069E: 1304510651.093592 0003 0001 14287
1070E: 1304510651.093593 0000 0000 0
1071E: 1304510651.098568 0003 0035 16404
1072E: 1304510651.098571 0003 0036 14201
1073E: 1304510651.098572 0003 0030 1224
1074E: 1304510651.098577 0003 0000 16410
1075E: 1304510651.098578 0003 0001 14201
1076E: 1304510651.098578 0000 0000 0
1077E: 1304510651.103585 0003 0035 16401
1078E: 1304510651.103589 0003 0036 14107
1079E: 1304510651.103590 0003 0030 1191
1080E: 1304510651.103593 0003 0000 16407
1081E: 1304510651.103593 0003 0001 14107
1082E: 1304510651.103594 0000 0000 0
1083E: 1304510651.108575 0003 0035 16398
1084E: 1304510651.108578 0003 0036 14011
1085E: 1304510651.108585 0003 0000 16404
1086E: 1304510651.108586 0003 0001 14011
1087E: 1304510651.108586 0000 0000 0
1088E: 1304510651.113586 0003 0035 16395
1089E: 1304510651.113591 0003 0036 13921
1090E: 1304510651.113592 0003 0030 1323
1091E: 1304510651.113595 0003 0000 16401
1092E: 1304510651.113595 0003 0001 13921
1093E: 1304510651.113596 0000 0000 0
1094E: 1304510651.118584 0003 0035 16391
1095E: 1304510651.118589 0003 0036 13831
1096E: 1304510651.118590 0003 0030 1356
1097E: 1304510651.118592 0003 0000 16398
1098E: 1304510651.118595 0003 0001 13831
1099E: 1304510651.118596 0000 0000 0
1100E: 1304510651.124590 0003 0035 16383
1101E: 1304510651.124594 0003 0036 13745
1102E: 1304510651.124597 0003 0000 16390
1103E: 1304510651.124600 0003 0001 13745
1104E: 1304510651.124601 0000 0000 0
1105E: 1304510651.129568 0003 0035 16380
1106E: 1304510651.129571 0003 0036 13655
1107E: 1304510651.129578 0003 0000 16387
1108E: 1304510651.129578 0003 0001 13655
1109E: 1304510651.129578 0000 0000 0
1110E: 1304510651.134582 0003 0035 16376
1111E: 1304510651.134586 0003 0036 13563
1112E: 1304510651.134593 0003 0000 16384
1113E: 1304510651.134594 0003 0001 13563
1114E: 1304510651.134594 0000 0000 0
1115E: 1304510651.139578 0003 0035 16368
1116E: 1304510651.139583 0003 0036 13473
1117E: 1304510651.139588 0003 0034 1
1118E: 1304510651.139588 0003 0030 1299
1119E: 1304510651.139591 0003 0000 16376
1120E: 1304510651.139592 0003 0001 13473
1121E: 1304510651.139593 0000 0000 0
1122E: 1304510651.144581 0003 0035 16365
1123E: 1304510651.144585 0003 0036 13383
1124E: 1304510651.144590 0003 0030 1256
1125E: 1304510651.144592 0003 0000 16373
1126E: 1304510651.144593 0003 0001 13383
1127E: 1304510651.144594 0000 0000 0
1128E: 1304510651.149583 0003 0035 16357
1129E: 1304510651.149587 0003 0036 13291
1130E: 1304510651.149594 0003 0000 16365
1131E: 1304510651.149595 0003 0001 13291
1132E: 1304510651.149596 0000 0000 0
1133E: 1304510651.154588 0003 0035 16354
1134E: 1304510651.154598 0003 0036 13195
1135E: 1304510651.154599 0003 0034 0
1136E: 1304510651.154600 0003 0030 1306
1137E: 1304510651.154603 0003 0000 16362
1138E: 1304510651.154604 0003 0001 13195
1139E: 1304510651.154604 0000 0000 0
1140E: 1304510651.159587 0003 0035 16351
1141E: 1304510651.159591 0003 0036 13107
1142E: 1304510651.159596 0003 0030 1343
1143E: 1304510651.159599 0003 0000 16359
1144E: 1304510651.159599 0003 0001 13107
1145E: 1304510651.159600 0000 0000 0
1146E: 1304510651.164588 0003 0035 16348
1147E: 1304510651.164593 0003 0036 13017
1148E: 1304510651.164600 0003 0000 16356
1149E: 1304510651.164601 0003 0001 13017
1150E: 1304510651.164601 0000 0000 0
1151E: 1304510651.169570 0003 0035 16344
1152E: 1304510651.169577 0003 0036 12931
1153E: 1304510651.169580 0003 0000 16353
1154E: 1304510651.169580 0003 0001 12931
1155E: 1304510651.169581 0000 0000 0
1156E: 1304510651.174584 0003 0035 16340
1157E: 1304510651.174592 0003 0036 12851
1158E: 1304510651.174596 0003 0000 16349
1159E: 1304510651.174596 0003 0001 12851
1160E: 1304510651.174597 0000 0000 0
1161E: 1304510651.179581 0003 0035 16336
1162E: 1304510651.179585 0003 0036 12775
1163E: 1304510651.179592 0003 0000 16345
1164E: 1304510651.179593 0003 0001 12775
1165E: 1304510651.179594 0000 0000 0
1166E: 1304510651.185588 0003 0035 16328
1167E: 1304510651.185592 0003 0036 12697
1168E: 1304510651.185597 0003 0034 1
1169E: 1304510651.185598 0003 0030 1289
1170E: 1304510651.185601 0003 0000 16336
1171E: 1304510651.185601 0003 0001 12697
1172E: 1304510651.185602 0000 0000 0
1173E: 1304510651.190567 0003 0035 16325
1174E: 1304510651.190574 0003 0036 12617
1175E: 1304510651.190575 0003 0030 1249
1176E: 1304510651.190577 0003 0000 16333
1177E: 1304510651.190577 0003 0001 12617
1178E: 1304510651.190578 0000 0000 0
1179E: 1304510651.195586 0003 0035 16322
1180E: 1304510651.195590 0003 0036 12533
1181E: 1304510651.195597 0003 0000 16330
1182E: 1304510651.195598 0003 0001 12533
1183E: 1304510651.195598 0000 0000 0
1184E: 1304510651.200572 0003 0035 16319
1185E: 1304510651.200580 0003 0036 12451
1186E: 1304510651.200583 0003 0000 16327
1187E: 1304510651.200583 0003 0001 12451
1188E: 1304510651.200584 0000 0000 0
1189E: 1304510651.205583 0003 0035 16316
1190E: 1304510651.205587 0003 0036 12365
1191E: 1304510651.205587 0003 0034 0
1192E: 1304510651.205588 0003 0030 1300
1193E: 1304510651.205591 0003 0000 16324
1194E: 1304510651.205591 0003 0001 12365
1195E: 1304510651.205592 0000 0000 0
1196E: 1304510651.210583 0003 0035 16313
1197E: 1304510651.210587 0003 0036 12283
1198E: 1304510651.210593 0003 0030 1339
1199E: 1304510651.210596 0003 0000 16321
1200E: 1304510651.210596 0003 0001 12283
1201E: 1304510651.210597 0000 0000 0
1202E: 1304510651.215582 0003 0035 16310
1203E: 1304510651.215586 0003 0036 12199
1204E: 1304510651.215593 0003 0000 16318
1205E: 1304510651.215594 0003 0001 12199
1206E: 1304510651.215595 0000 0000 0
1207E: 1304510651.220578 0003 0035 16302
1208E: 1304510651.220581 0003 0036 12109
1209E: 1304510651.220589 0003 0000 16310
1210E: 1304510651.220589 0003 0001 12109
1211E: 1304510651.220590 0000 0000 0
1212E: 1304510651.225581 0003 0035 16293
1213E: 1304510651.225585 0003 0036 12015
1214E: 1304510651.225589 0003 0034 1
1215E: 1304510651.225590 0003 0030 1286
1216E: 1304510651.225593 0003 0000 16301
1217E: 1304510651.225593 0003 0001 12015
1218E: 1304510651.225594 0000 0000 0
1219E: 1304510651.230574 0003 0035 16285
1220E: 1304510651.230582 0003 0036 11921
1221E: 1304510651.230583 0003 0030 1247
1222E: 1304510651.230586 0003 0000 16293
1223E: 1304510651.230587 0003 0001 11921
1224E: 1304510651.230587 0000 0000 0
1225E: 1304510651.235581 0003 0035 16282
1226E: 1304510651.235585 0003 0036 11825
1227E: 1304510651.235590 0003 0034 0
1228E: 1304510651.235590 0003 0030 1299
1229E: 1304510651.235593 0003 0000 16290
1230E: 1304510651.235593 0003 0001 11825
1231E: 1304510651.235594 0000 0000 0
1232E: 1304510651.241581 0003 0035 16280
1233E: 1304510651.241589 0003 0036 11723
1234E: 1304510651.241590 0003 0030 1338
1235E: 1304510651.241593 0003 0000 16287
1236E: 1304510651.241593 0003 0001 11723
1237E: 1304510651.241594 0000 0000 0
1238E: 1304510651.246582 0003 0035 16278
1239E: 1304510651.246586 0003 0036 11631
1240E: 1304510651.246590 0003 0000 16284
1241E: 1304510651.246594 0003 0001 11631
1242E: 1304510651.246594 0000 0000 0
1243E: 1304510651.251571 0003 0035 16238
1244E: 1304510651.251574 0003 0036 11531
1245E: 1304510651.251576 0003 0000 16238
1246E: 1304510651.251577 0003 0001 11531
1247E: 1304510651.251577 0000 0000 0
1248E: 1304510651.256580 0003 0035 16204
1249E: 1304510651.256584 0003 0036 11431
1250E: 1304510651.256589 0003 0034 1
1251E: 1304510651.256589 0003 0030 1286
1252E: 1304510651.256592 0003 0000 16204
1253E: 1304510651.256593 0003 0001 11431
1254E: 1304510651.256593 0000 0000 0
1255E: 1304510651.261582 0003 0035 16190
1256E: 1304510651.261586 0003 0036 11325
1257E: 1304510651.261587 0003 0030 1247
1258E: 1304510651.261589 0003 0000 16200
1259E: 1304510651.261590 0003 0001 11325
1260E: 1304510651.261597 0000 0000 0
1261E: 1304510651.266581 0003 0035 16187
1262E: 1304510651.266584 0003 0036 11223
1263E: 1304510651.266592 0003 0000 16196
1264E: 1304510651.266592 0003 0001 11223
1265E: 1304510651.266593 0000 0000 0
1266E: 1304510651.271578 0003 0035 16185
1267E: 1304510651.271585 0003 0036 11121
1268E: 1304510651.271589 0003 0000 16193
1269E: 1304510651.271589 0003 0001 11121
1270E: 1304510651.271590 0000 0000 0
1271E: 1304510651.276583 0003 0035 16170
1272E: 1304510651.276587 0003 0036 11029
1273E: 1304510651.276587 0003 0034 0
1274E: 1304510651.276588 0003 0030 1299
1275E: 1304510651.276591 0003 0000 16181
1276E: 1304510651.276596 0003 0001 11029
1277E: 1304510651.276597 0000 0000 0
1278E: 1304510651.281565 0003 0036 10933
1279E: 1304510651.281573 0003 0030 1338
1280E: 1304510651.281574 0003 0000 16178
1281E: 1304510651.281575 0003 0001 10933
1282E: 1304510651.281575 0000 0000 0
1283E: 1304510651.286579 0003 0035 16140
1284E: 1304510651.286582 0003 0036 10831
1285E: 1304510651.286590 0003 0000 16140
1286E: 1304510651.286590 0003 0001 10831
1287E: 1304510651.286591 0000 0000 0
1288E: 1304510651.291572 0003 0035 16130
1289E: 1304510651.291580 0003 0036 10735
1290E: 1304510651.291583 0003 0000 16137
1291E: 1304510651.291583 0003 0001 10735
1292E: 1304510651.291584 0000 0000 0
1293E: 1304510651.296583 0003 0035 16098
1294E: 1304510651.296587 0003 0036 10639
1295E: 1304510651.296591 0003 0034 1
1296E: 1304510651.296592 0003 0030 1286
1297E: 1304510651.296595 0003 0000 16098
1298E: 1304510651.296595 0003 0001 10639
1299E: 1304510651.296596 0000 0000 0
1300E: 1304510651.302588 0003 0036 10535
1301E: 1304510651.302593 0003 0030 1247
1302E: 1304510651.302596 0003 0001 10535
1303E: 1304510651.302601 0000 0000 0
1304E: 1304510651.307584 0003 0035 16095
1305E: 1304510651.307588 0003 0036 10431
1306E: 1304510651.307596 0003 0001 10431
1307E: 1304510651.307596 0000 0000 0
1308E: 1304510651.312577 0003 0036 10327
1309E: 1304510651.312584 0003 0034 0
1310E: 1304510651.312585 0003 0030 1299
1311E: 1304510651.312588 0003 0001 10327
1312E: 1304510651.312588 0000 0000 0
1313E: 1304510651.317584 0003 0035 16087
1314E: 1304510651.317588 0003 0036 10225
1315E: 1304510651.317593 0003 0030 1338
1316E: 1304510651.317596 0003 0000 16095
1317E: 1304510651.317596 0003 0001 10225
1318E: 1304510651.317597 0000 0000 0
1319E: 1304510651.322579 0003 0035 16074
1320E: 1304510651.322587 0003 0036 10123
1321E: 1304510651.322590 0003 0000 16084
1322E: 1304510651.322591 0003 0001 10123
1323E: 1304510651.322591 0000 0000 0
1324E: 1304510651.327574 0003 0035 16060
1325E: 1304510651.327578 0003 0036 10017
1326E: 1304510651.327583 0003 0030 1276
1327E: 1304510651.327583 0003 0031 843
1328E: 1304510651.327586 0003 0000 16072
1329E: 1304510651.327586 0003 0001 10017
1330E: 1304510651.327587 0000 0000 0
1331E: 1304510651.332577 0003 0036 9909
1332E: 1304510651.332585 0003 0030 1230
1333E: 1304510651.332586 0003 0031 801
1334E: 1304510651.332588 0003 0000 16069
1335E: 1304510651.332589 0003 0001 9909
1336E: 1304510651.332589 0000 0000 0
1337E: 1304510651.337579 0003 0035 16049
1338E: 1304510651.337582 0003 0036 9803
1339E: 1304510651.337588 0003 0030 1195
1340E: 1304510651.337590 0003 0000 16059
1341E: 1304510651.337591 0003 0001 9803
1342E: 1304510651.337591 0000 0000 0
1343E: 1304510651.342574 0003 0035 16036
1344E: 1304510651.342578 0003 0036 9695
1345E: 1304510651.342583 0003 0030 1325
1346E: 1304510651.342585 0003 0000 16047
1347E: 1304510651.342586 0003 0001 9695
1348E: 1304510651.342586 0000 0000 0
1349E: 1304510651.347579 0003 0035 16025
1350E: 1304510651.347583 0003 0036 9585
1351E: 1304510651.347584 0003 0030 1357
1352E: 1304510651.347585 0003 0031 965
1353E: 1304510651.347587 0003 0000 16036
1354E: 1304510651.347588 0003 0001 9585
1355E: 1304510651.347593 0000 0000 0
1356E: 1304510651.352581 0003 0036 9477
1357E: 1304510651.352589 0003 0031 821
1358E: 1304510651.352592 0003 0000 16033
1359E: 1304510651.352593 0003 0001 9477
1360E: 1304510651.352593 0000 0000 0
1361E: 1304510651.358582 0003 0035 16021
1362E: 1304510651.358586 0003 0036 9369
1363E: 1304510651.358591 0003 0031 785
1364E: 1304510651.358593 0003 0000 16030
1365E: 1304510651.358594 0003 0001 9369
1366E: 1304510651.358594 0000 0000 0
1367E: 1304510651.363574 0003 0035 16010
1368E: 1304510651.363579 0003 0036 9267
1369E: 1304510651.363580 0003 0030 1224
1370E: 1304510651.363582 0003 0000 16020
1371E: 1304510651.363583 0003 0001 9267
1372E: 1304510651.363583 0000 0000 0
1373E: 1304510651.368576 0003 0035 16000
1374E: 1304510651.368580 0003 0036 9167
1375E: 1304510651.368584 0003 0030 1191
1376E: 1304510651.368587 0003 0000 16010
1377E: 1304510651.368588 0003 0001 9167
1378E: 1304510651.368588 0000 0000 0
1379E: 1304510651.373572 0003 0035 15990
1380E: 1304510651.373576 0003 0036 9067
1381E: 1304510651.373579 0003 0000 16000
1382E: 1304510651.373580 0003 0001 9067
1383E: 1304510651.373580 0000 0000 0
1384E: 1304510651.378586 0003 0035 15981
1385E: 1304510651.378591 0003 0036 8957
1386E: 1304510651.378596 0003 0030 1323
1387E: 1304510651.378599 0003 0000 15990
1388E: 1304510651.378599 0003 0001 8957
1389E: 1304510651.378600 0000 0000 0
1390E: 1304510651.383563 0003 0036 8855
1391E: 1304510651.383566 0003 0030 1356
1392E: 1304510651.383568 0003 0000 15987
1393E: 1304510651.383568 0003 0001 8855
1394E: 1304510651.383569 0000 0000 0
1395E: 1304510651.388579 0003 0035 15990
1396E: 1304510651.388583 0003 0036 8751
1397E: 1304510651.388591 0003 0001 8751
1398E: 1304510651.388591 0000 0000 0
1399E: 1304510651.393568 0003 0035 15999
1400E: 1304510651.393571 0003 0036 8647
1401E: 1304510651.393574 0003 0000 15990
1402E: 1304510651.393575 0003 0001 8647
1403E: 1304510651.393575 0000 0000 0
1404E: 1304510651.398583 0003 0035 16006
1405E: 1304510651.398586 0003 0036 8547
1406E: 1304510651.398591 0003 0030 1224
1407E: 1304510651.398594 0003 0000 15998
1408E: 1304510651.398595 0003 0001 8547
1409E: 1304510651.398595 0000 0000 0
1410E: 1304510651.403573 0003 0035 16004
1411E: 1304510651.403577 0003 0036 8443
1412E: 1304510651.403578 0003 0030 1191
1413E: 1304510651.403580 0003 0001 8443
1414E: 1304510651.403581 0000 0000 0
1415E: 1304510651.408581 0003 0036 8337
1416E: 1304510651.408593 0003 0001 8337
1417E: 1304510651.408593 0000 0000 0
1418E: 1304510651.414567 0003 0036 8229
1419E: 1304510651.414574 0003 0030 1323
1420E: 1304510651.414577 0003 0001 8229
1421E: 1304510651.414577 0000 0000 0
1422E: 1304510651.419580 0003 0035 16002
1423E: 1304510651.419584 0003 0036 8117
1424E: 1304510651.419589 0003 0030 1356
1425E: 1304510651.419592 0003 0001 8117
1426E: 1304510651.419593 0000 0000 0
1427E: 1304510651.424575 0003 0036 8013
1428E: 1304510651.424586 0003 0001 8013
1429E: 1304510651.424587 0000 0000 0
1430E: 1304510651.429580 0003 0035 15994
1431E: 1304510651.429583 0003 0036 7909
1432E: 1304510651.429591 0003 0001 7909
1433E: 1304510651.429591 0000 0000 0
1434E: 1304510651.434574 0003 0036 7805
1435E: 1304510651.434582 0003 0030 1224
1436E: 1304510651.434585 0003 0001 7805
1437E: 1304510651.434586 0000 0000 0
1438E: 1304510651.439578 0003 0036 7703
1439E: 1304510651.439586 0003 0030 1191
1440E: 1304510651.439590 0003 0001 7703
1441E: 1304510651.439590 0000 0000 0
1442E: 1304510651.444593 0003 0035 15991
1443E: 1304510651.444600 0003 0036 7599
1444E: 1304510651.444607 0003 0000 15996
1445E: 1304510651.444608 0003 0001 7599
1446E: 1304510651.444608 0000 0000 0
1447E: 1304510651.449581 0003 0035 15980
1448E: 1304510651.449585 0003 0036 7485
1449E: 1304510651.449590 0003 0030 1323
1450E: 1304510651.449593 0003 0000 15988
1451E: 1304510651.449593 0003 0001 7485
1452E: 1304510651.449594 0000 0000 0
1453E: 1304510651.454564 0003 0035 15970
1454E: 1304510651.454567 0003 0036 7379
1455E: 1304510651.454568 0003 0030 1356
1456E: 1304510651.454573 0003 0000 15979
1457E: 1304510651.454574 0003 0001 7379
1458E: 1304510651.454574 0000 0000 0
1459E: 1304510651.459579 0003 0035 15959
1460E: 1304510651.459583 0003 0036 7275
1461E: 1304510651.459590 0003 0000 15969
1462E: 1304510651.459591 0003 0001 7275
1463E: 1304510651.459591 0000 0000 0
1464E: 1304510651.464572 0003 0036 7171
1465E: 1304510651.464583 0003 0000 15966
1466E: 1304510651.464583 0003 0001 7171
1467E: 1304510651.464584 0000 0000 0
1468E: 1304510651.469578 0003 0036 7069
1469E: 1304510651.469589 0003 0000 15964
1470E: 1304510651.469589 0003 0001 7069
1471E: 1304510651.469590 0000 0000 0
1472E: 1304510651.475577 0003 0036 6965
1473E: 1304510651.475586 0003 0030 1224
1474E: 1304510651.475589 0003 0001 6965
1475E: 1304510651.475589 0000 0000 0
1476E: 1304510651.480588 0003 0036 6855
1477E: 1304510651.480597 0003 0030 1191
1478E: 1304510651.480600 0003 0001 6855
1479E: 1304510651.480601 0000 0000 0
1480E: 1304510651.485562 0003 0036 6745
1481E: 1304510651.485565 0003 0030 1323
1482E: 1304510651.485571 0003 0001 6745
1483E: 1304510651.485571 0000 0000 0
1484E: 1304510651.490575 0003 0036 6641
1485E: 1304510651.490580 0003 0030 1356
1486E: 1304510651.490582 0003 0001 6641
1487E: 1304510651.490583 0000 0000 0
1488E: 1304510651.495575 0003 0035 15949
1489E: 1304510651.495581 0003 0036 6539
1490E: 1304510651.495584 0003 0000 15956
1491E: 1304510651.495585 0003 0001 6539
1492E: 1304510651.495585 0000 0000 0
1493E: 1304510651.500579 0003 0035 15941
1494E: 1304510651.500582 0003 0036 6439
1495E: 1304510651.500589 0003 0000 15948
1496E: 1304510651.500590 0003 0001 6439
1497E: 1304510651.500590 0000 0000 0
1498E: 1304510651.505572 0003 0035 15937
1499E: 1304510651.505580 0003 0036 6341
1500E: 1304510651.505583 0003 0000 15945
1501E: 1304510651.505583 0003 0001 6341
1502E: 1304510651.505584 0000 0000 0
1503E: 1304510651.510574 0003 0035 15926
1504E: 1304510651.510579 0003 0036 6235
1505E: 1304510651.510584 0003 0030 1224
1506E: 1304510651.510586 0003 0000 15935
1507E: 1304510651.510587 0003 0001 6235
1508E: 1304510651.510587 0000 0000 0
1509E: 1304510651.515574 0003 0035 15917
1510E: 1304510651.515577 0003 0036 6125
1511E: 1304510651.515582 0003 0030 1191
1512E: 1304510651.515584 0003 0000 15926
1513E: 1304510651.515585 0003 0001 6125
1514E: 1304510651.515585 0000 0000 0
1515E: 1304510651.520577 0003 0035 15907
1516E: 1304510651.520583 0003 0036 6015
1517E: 1304510651.520588 0003 0030 1323
1518E: 1304510651.520591 0003 0000 15916
1519E: 1304510651.520591 0003 0001 6015
1520E: 1304510651.520592 0000 0000 0
1521E: 1304510651.525567 0003 0035 15897
1522E: 1304510651.525570 0003 0036 5909
1523E: 1304510651.525575 0003 0030 1356
1524E: 1304510651.525578 0003 0000 15906
1525E: 1304510651.525578 0003 0001 5909
1526E: 1304510651.525579 0000 0000 0
1527E: 1304510651.531583 0003 0035 15885
1528E: 1304510651.531588 0003 0036 5809
1529E: 1304510651.531591 0003 0000 15895
1530E: 1304510651.531592 0003 0001 5809
1531E: 1304510651.531593 0000 0000 0
1532E: 1304510651.536562 0003 0035 15870
1533E: 1304510651.536564 0003 0036 5711
1534E: 1304510651.536571 0003 0000 15882
1535E: 1304510651.536572 0003 0001 5711
1536E: 1304510651.536572 0000 0000 0
1537E: 1304510651.541580 0003 0035 15840
1538E: 1304510651.541584 0003 0036 5613
1539E: 1304510651.541591 0003 0000 15840
1540E: 1304510651.541592 0003 0001 5613
1541E: 1304510651.541592 0000 0000 0
1542E: 1304510651.546575 0003 0035 15831
1543E: 1304510651.546579 0003 0036 5509
1544E: 1304510651.546584 0003 0030 1224
1545E: 1304510651.546586 0003 0000 15837
1546E: 1304510651.546587 0003 0001 5509
1547E: 1304510651.546587 0000 0000 0
1548E: 1304510651.551575 0003 0035 15819
1549E: 1304510651.551585 0003 0036 5405
1550E: 1304510651.551586 0003 0030 1191
1551E: 1304510651.551588 0003 0000 15828
1552E: 1304510651.551589 0003 0001 5405
1553E: 1304510651.551589 0000 0000 0
1554E: 1304510651.556571 0003 0035 15805
1555E: 1304510651.556574 0003 0036 5299
1556E: 1304510651.556579 0003 0030 1323
1557E: 1304510651.556582 0003 0000 15816
1558E: 1304510651.556582 0003 0001 5299
1559E: 1304510651.556583 0000 0000 0
1560E: 1304510651.561580 0003 0035 15790
1561E: 1304510651.561584 0003 0036 5197
1562E: 1304510651.561585 0003 0030 1356
1563E: 1304510651.561588 0003 0000 15803
1564E: 1304510651.561589 0003 0001 5197
1565E: 1304510651.561589 0000 0000 0
1566E: 1304510651.566574 0003 0035 15777
1567E: 1304510651.566577 0003 0036 5097
1568E: 1304510651.566585 0003 0000 15790
1569E: 1304510651.566585 0003 0001 5097
1570E: 1304510651.566586 0000 0000 0
1571E: 1304510651.571578 0003 0035 15740
1572E: 1304510651.571586 0003 0036 5003
1573E: 1304510651.571589 0003 0000 15740
1574E: 1304510651.571590 0003 0001 5003
1575E: 1304510651.571590 0000 0000 0
1576E: 1304510651.576562 0003 0035 15730
1577E: 1304510651.576565 0003 0036 4909
1578E: 1304510651.576570 0003 0000 15737
1579E: 1304510651.576571 0003 0001 4909
1580E: 1304510651.576571 0000 0000 0
1581E: 1304510651.581575 0003 0035 15716
1582E: 1304510651.581584 0003 0036 4813
1583E: 1304510651.581585 0003 0030 1224
1584E: 1304510651.581588 0003 0000 15726
1585E: 1304510651.581589 0003 0001 4813
1586E: 1304510651.581589 0000 0000 0
1587E: 1304510651.586564 0003 0035 15684
1588E: 1304510651.586567 0003 0036 4705
1589E: 1304510651.586568 0003 0030 1191
1590E: 1304510651.586570 0003 0000 15684
1591E: 1304510651.586571 0003 0001 4705
1592E: 1304510651.586571 0000 0000 0
1593E: 1304510651.592579 0003 0035 15676
1594E: 1304510651.592585 0003 0036 4599
1595E: 1304510651.592590 0003 0030 1323
1596E: 1304510651.592593 0003 0000 15682
1597E: 1304510651.592593 0003 0001 4599
1598E: 1304510651.592594 0000 0000 0
1599E: 1304510651.597572 0003 0035 15664
1600E: 1304510651.597576 0003 0036 4493
1601E: 1304510651.597580 0003 0030 1356
1602E: 1304510651.597583 0003 0000 15673
1603E: 1304510651.597583 0003 0001 4493
1604E: 1304510651.597584 0000 0000 0
1605E: 1304510651.602577 0003 0035 15626
1606E: 1304510651.602585 0003 0036 4387
1607E: 1304510651.602588 0003 0000 15626
1608E: 1304510651.602589 0003 0001 4387
1609E: 1304510651.602590 0000 0000 0
1610E: 1304510651.607614 0003 0035 15616
1611E: 1304510651.607617 0003 0036 4285
1612E: 1304510651.607624 0003 0000 15623
1613E: 1304510651.607625 0003 0001 4285
1614E: 1304510651.607625 0000 0000 0
1615E: 1304510651.612575 0003 0035 15584
1616E: 1304510651.612579 0003 0036 4183
1617E: 1304510651.612586 0003 0000 15584
1618E: 1304510651.612587 0003 0001 4183
1619E: 1304510651.612587 0000 0000 0
1620E: 1304510651.617565 0003 0035 15573
1621E: 1304510651.617569 0003 0036 4075
1622E: 1304510651.617574 0003 0030 1224
1623E: 1304510651.617576 0003 0000 15581
1624E: 1304510651.617576 0003 0001 4075
1625E: 1304510651.617577 0000 0000 0
1626E: 1304510651.622577 0003 0035 15536
1627E: 1304510651.622581 0003 0036 3965
1628E: 1304510651.622585 0003 0030 1191
1629E: 1304510651.622588 0003 0000 15536
1630E: 1304510651.622589 0003 0001 3965
1631E: 1304510651.622589 0000 0000 0
1632E: 1304510651.627579 0003 0035 15506
1633E: 1304510651.627583 0003 0036 3853
1634E: 1304510651.627584 0003 0030 1323
1635E: 1304510651.627586 0003 0000 15506
1636E: 1304510651.627586 0003 0001 3853
1637E: 1304510651.627587 0000 0000 0
1638E: 1304510651.632578 0003 0035 15472
1639E: 1304510651.632582 0003 0036 3739
1640E: 1304510651.632583 0003 0030 1356
1641E: 1304510651.632586 0003 0000 15472
1642E: 1304510651.632586 0003 0001 3739
1643E: 1304510651.632587 0000 0000 0
1644E: 1304510651.637580 0003 0035 15438
1645E: 1304510651.637584 0003 0036 3633
1646E: 1304510651.637592 0003 0000 15438
1647E: 1304510651.637592 0003 0001 3633
1648E: 1304510651.637593 0000 0000 0
1649E: 1304510651.642573 0003 0035 15404
1650E: 1304510651.642581 0003 0036 3521
1651E: 1304510651.642585 0003 0000 15404
1652E: 1304510651.642585 0003 0001 3521
1653E: 1304510651.642586 0000 0000 0
1654E: 1304510651.648572 0003 0035 15370
1655E: 1304510651.648576 0003 0036 3405
1656E: 1304510651.648581 0003 0030 1224
1657E: 1304510651.648583 0003 0000 15370
1658E: 1304510651.648584 0003 0001 3405
1659E: 1304510651.648585 0000 0000 0
1660E: 1304510651.653572 0003 0035 15340
1661E: 1304510651.653577 0003 0036 3287
1662E: 1304510651.653578 0003 0030 1191
1663E: 1304510651.653580 0003 0000 15340
1664E: 1304510651.653581 0003 0001 3287
1665E: 1304510651.653581 0000 0000 0
1666E: 1304510651.658578 0003 0035 15326
1667E: 1304510651.658583 0003 0036 3171
1668E: 1304510651.658588 0003 0030 1323
1669E: 1304510651.658591 0003 0000 15336
1670E: 1304510651.658592 0003 0001 3171
1671E: 1304510651.658592 0000 0000 0
1672E: 1304510651.663568 0003 0035 15280
1673E: 1304510651.663573 0003 0036 3049
1674E: 1304510651.663574 0003 0030 1356
1675E: 1304510651.663577 0003 0000 15280
1676E: 1304510651.663577 0003 0001 3049
1677E: 1304510651.663578 0000 0000 0
1678E: 1304510651.668574 0003 0035 15248
1679E: 1304510651.668583 0003 0036 2927
1680E: 1304510651.668586 0003 0000 15248
1681E: 1304510651.668587 0003 0001 2927
1682E: 1304510651.668587 0000 0000 0
1683E: 1304510651.673576 0003 0035 15216
1684E: 1304510651.673580 0003 0036 2805
1685E: 1304510651.673581 0003 0030 1224
1686E: 1304510651.673584 0003 0000 15216
1687E: 1304510651.673585 0003 0001 2805
1688E: 1304510651.673585 0000 0000 0
1689E: 1304510651.678565 0003 0035 15172
1690E: 1304510651.678568 0003 0036 2679
1691E: 1304510651.678573 0003 0030 1191
1692E: 1304510651.678575 0003 0000 15172
1693E: 1304510651.678576 0003 0001 2679
1694E: 1304510651.678576 0000 0000 0
1695E: 1304510651.683580 0003 0035 15124
1696E: 1304510651.683585 0003 0036 2551
1697E: 1304510651.683588 0003 0000 15124
1698E: 1304510651.683589 0003 0001 2551
1699E: 1304510651.683590 0000 0000 0
1700E: 1304510651.688579 0003 0035 15076
1701E: 1304510651.688584 0003 0036 2427
1702E: 1304510651.688585 0003 0030 1323
1703E: 1304510651.688588 0003 0000 15076
1704E: 1304510651.688588 0003 0001 2427
1705E: 1304510651.688589 0000 0000 0
1706E: 1304510651.693582 0003 0035 15024
1707E: 1304510651.693615 0003 0036 2309
1708E: 1304510651.693616 0003 0030 1356
1709E: 1304510651.693619 0003 0000 15024
1710E: 1304510651.693623 0003 0001 2309
1711E: 1304510651.693623 0000 0000 0
1712E: 1304510651.698609 0003 0035 14968
1713E: 1304510651.698615 0003 0036 2185
1714E: 1304510651.698617 0003 0030 1224
1715E: 1304510651.698625 0003 0000 14968
1716E: 1304510651.698626 0003 0001 2185
1717E: 1304510651.698627 0000 0000 0
1718E: 1304510651.703613 0003 0039 -1
1719E: 1304510651.703621 0001 014a 0
1720E: 1304510651.703627 0000 0000 0
1721E: 1304510652.695704 0003 0039 136
1722E: 1304510652.695720 0003 0035 16944
1723E: 1304510652.695722 0003 0036 16837
1724E: 1304510652.695725 0003 0030 1282
1725E: 1304510652.695727 0003 0031 957
1726E: 1304510652.695730 0001 014a 1
1727E: 1304510652.695734 0003 0000 16944
1728E: 1304510652.695736 0003 0001 16837
1729E: 1304510652.695737 0000 0000 0
1730E: 1304510652.700700 0003 0030 1325
1731E: 1304510652.700711 0003 0031 1000
1732E: 1304510652.700720 0000 0000 0
1733E: 1304510652.706696 0003 0030 1357
1734E: 1304510652.706708 0003 0031 1032
1735E: 1304510652.706716 0000 0000 0
1736E: 1304510652.736695 0003 0036 16835
1737E: 1304510652.736716 0000 0000 0
1738E: 1304510652.741695 0003 0036 16833
1739E: 1304510652.741716 0000 0000 0
1740E: 1304510652.746694 0003 0036 16830
1741E: 1304510652.746714 0003 0001 16835
1742E: 1304510652.746716 0000 0000 0
1743E: 1304510652.751695 0003 0036 16827
1744E: 1304510652.751707 0003 0034 1
1745E: 1304510652.751708 0003 0030 1300
1746E: 1304510652.751716 0003 0001 16833
1747E: 1304510652.751718 0000 0000 0
1748E: 1304510652.756694 0003 0036 16814
1749E: 1304510652.756707 0003 0030 1257
1750E: 1304510652.756715 0003 0001 16823
1751E: 1304510652.756717 0000 0000 0
1752E: 1304510652.762696 0003 0036 16779
1753E: 1304510652.762709 0003 0030 1225
1754E: 1304510652.762717 0003 0001 16779
1755E: 1304510652.762719 0000 0000 0
1756E: 1304510652.767696 0003 0036 16769
1757E: 1304510652.767719 0003 0001 16776
1758E: 1304510652.767721 0000 0000 0
1759E: 1304510652.772695 0003 0036 16731
1760E: 1304510652.772715 0003 0001 16731
1761E: 1304510652.772717 0000 0000 0
1762E: 1304510652.777693 0003 0035 16946
1763E: 1304510652.777705 0003 0036 16718
1764E: 1304510652.777715 0003 0001 16727
1765E: 1304510652.777717 0000 0000 0
1766E: 1304510652.782694 0003 0036 16675
1767E: 1304510652.782715 0003 0001 16675
1768E: 1304510652.782717 0000 0000 0
1769E: 1304510652.787694 0003 0036 16605
1770E: 1304510652.787706 0003 0034 0
1771E: 1304510652.787708 0003 0030 1282
1772E: 1304510652.787716 0003 0001 16605
1773E: 1304510652.787718 0000 0000 0
1774E: 1304510652.792702 0003 0036 16575
1775E: 1304510652.792714 0003 0030 1325
1776E: 1304510652.792723 0003 0001 16575
1777E: 1304510652.792724 0000 0000 0
1778E: 1304510652.797694 0003 0035 16912
1779E: 1304510652.797706 0003 0036 16495
1780E: 1304510652.797709 0003 0030 1357
1781E: 1304510652.797716 0003 0000 16912
1782E: 1304510652.797718 0003 0001 16495
1783E: 1304510652.797719 0000 0000 0
1784E: 1304510652.802692 0003 0035 16878
1785E: 1304510652.802704 0003 0036 16429
1786E: 1304510652.802713 0003 0000 16878
1787E: 1304510652.802714 0003 0001 16429
1788E: 1304510652.802716 0000 0000 0
1789E: 1304510652.807684 0003 0035 16874
1790E: 1304510652.807691 0003 0036 16397
1791E: 1304510652.807701 0003 0001 16397
1792E: 1304510652.807703 0000 0000 0
1793E: 1304510652.812694 0003 0035 16834
1794E: 1304510652.812706 0003 0036 16327
1795E: 1304510652.812715 0003 0000 16834
1796E: 1304510652.812717 0003 0001 16327
1797E: 1304510652.812719 0000 0000 0
1798E: 1304510652.817692 0003 0035 16820
1799E: 1304510652.817703 0003 0036 16243
1800E: 1304510652.817705 0003 0034 1
1801E: 1304510652.817707 0003 0030 1300
1802E: 1304510652.817714 0003 0000 16830
1803E: 1304510652.817716 0003 0001 16243
1804E: 1304510652.817718 0000 0000 0
1805E: 1304510652.823703 0003 0035 16786
1806E: 1304510652.823715 0003 0036 16167
1807E: 1304510652.823718 0003 0030 1257
1808E: 1304510652.823725 0003 0000 16786
1809E: 1304510652.823726 0003 0001 16167
1810E: 1304510652.823728 0000 0000 0
1811E: 1304510652.828691 0003 0035 16776
1812E: 1304510652.828703 0003 0036 16089
1813E: 1304510652.828705 0003 0034 0
1814E: 1304510652.828707 0003 0030 1306
1815E: 1304510652.828714 0003 0000 16783
1816E: 1304510652.828715 0003 0001 16089
1817E: 1304510652.828717 0000 0000 0
1818E: 1304510652.833696 0003 0035 16762
1819E: 1304510652.833708 0003 0036 16011
1820E: 1304510652.833711 0003 0030 1343
1821E: 1304510652.833718 0003 0000 16772
1822E: 1304510652.833720 0003 0001 16011
1823E: 1304510652.833721 0000 0000 0
1824E: 1304510652.838691 0003 0035 16730
1825E: 1304510652.838703 0003 0036 15923
1826E: 1304510652.838712 0003 0000 16730
1827E: 1304510652.838714 0003 0001 15923
1828E: 1304510652.838715 0000 0000 0
1829E: 1304510652.843697 0003 0035 16720
1830E: 1304510652.843709 0003 0036 15839
1831E: 1304510652.843713 0003 0031 1000
1832E: 1304510652.843719 0003 0000 16727
1833E: 1304510652.843721 0003 0001 15839
1834E: 1304510652.843723 0000 0000 0
1835E: 1304510652.848691 0003 0035 16706
1836E: 1304510652.848703 0003 0036 15761
1837E: 1304510652.848712 0003 0000 16716
1838E: 1304510652.848714 0003 0001 15761
1839E: 1304510652.848716 0000 0000 0
1840E: 1304510652.853704 0003 0035 16692
1841E: 1304510652.853716 0003 0036 15679
1842E: 1304510652.853725 0003 0000 16704
1843E: 1304510652.853727 0003 0001 15679
1844E: 1304510652.853729 0000 0000 0
1845E: 1304510652.858693 0003 0035 16678
1846E: 1304510652.858705 0003 0036 15603
1847E: 1304510652.858707 0003 0030 1280
1848E: 1304510652.858714 0003 0000 16691
1849E: 1304510652.858716 0003 0001 15603
1850E: 1304510652.858718 0000 0000 0
1851E: 1304510652.863708 0003 0035 16648
1852E: 1304510652.863718 0003 0036 15513
1853E: 1304510652.863721 0003 0030 1233
1854E: 1304510652.863729 0003 0000 16648
1855E: 1304510652.863733 0003 0001 15513
1856E: 1304510652.863735 0000 0000 0
1857E: 1304510652.868678 0003 0035 16645
1858E: 1304510652.868686 0003 0036 15425
1859E: 1304510652.868692 0003 0030 1288
1860E: 1304510652.868700 0003 0001 15425
1861E: 1304510652.868702 0000 0000 0
1862E: 1304510652.873703 0003 0035 16634
1863E: 1304510652.873711 0003 0036 15335
1864E: 1304510652.873714 0003 0030 1330
1865E: 1304510652.873721 0003 0000 16644
1866E: 1304510652.873724 0003 0001 15335
1867E: 1304510652.873726 0000 0000 0
1868E: 1304510652.879551 0003 0035 16625
1869E: 1304510652.879554 0003 0036 15251
1870E: 1304510652.879562 0003 0000 16634
1871E: 1304510652.879563 0003 0001 15251
1872E: 1304510652.879563 0000 0000 0
1873E: 1304510652.884553 0003 0035 16613
1874E: 1304510652.884557 0003 0036 15161
1875E: 1304510652.884561 0003 0000 16623
1876E: 1304510652.884565 0003 0001 15161
1877E: 1304510652.884565 0000 0000 0
1878E: 1304510652.889544 0003 0035 16602
1879E: 1304510652.889548 0003 0036 15071
1880E: 1304510652.889556 0003 0000 16612
1881E: 1304510652.889556 0003 0001 15071
1882E: 1304510652.889557 0000 0000 0
1883E: 1304510652.894555 0003 0035 16592
1884E: 1304510652.894560 0003 0036 14989
1885E: 1304510652.894563 0003 0000 16602
1886E: 1304510652.894564 0003 0001 14989
1887E: 1304510652.894564 0000 0000 0
1888E: 1304510652.899545 0003 0035 16588
1889E: 1304510652.899548 0003 0036 14901
1890E: 1304510652.899552 0003 0030 1270
1891E: 1304510652.899555 0003 0000 16598
1892E: 1304510652.899555 0003 0001 14901
1893E: 1304510652.899556 0000 0000 0
1894E: 1304510652.904552 0003 0035 16580
1895E: 1304510652.904557 0003 0036 14813
1896E: 1304510652.904558 0003 0030 1225
1897E: 1304510652.904561 0003 0000 16589
1898E: 1304510652.904566 0003 0001 14813
1899E: 1304510652.904567 0000 0000 0
1900E: 1304510652.909555 0003 0035 16576
1901E: 1304510652.909560 0003 0036 14721
1902E: 1304510652.909565 0003 0030 1282
1903E: 1304510652.909568 0003 0000 16585
1904E: 1304510652.909568 0003 0001 14721
1905E: 1304510652.909569 0000 0000 0
1906E: 1304510652.914550 0003 0035 16568
1907E: 1304510652.914554 0003 0036 14627
1908E: 1304510652.914559 0003 0030 1325
1909E: 1304510652.914561 0003 0000 16576
1910E: 1304510652.914562 0003 0001 14627
1911E: 1304510652.914563 0000 0000 0
1912E: 1304510652.919544 0003 0035 16565
1913E: 1304510652.919547 0003 0036 14531
1914E: 1304510652.919552 0003 0030 1357
1915E: 1304510652.919555 0003 0000 16573
1916E: 1304510652.919555 0003 0001 14531
1917E: 1304510652.919556 0000 0000 0
1918E: 1304510652.924546 0003 0035 16557
1919E: 1304510652.924550 0003 0036 14441
1920E: 1304510652.924558 0003 0000 16565
1921E: 1304510652.924558 0003 0001 14441
1922E: 1304510652.924559 0000 0000 0
1923E: 1304510652.929549 0003 0035 16553
1924E: 1304510652.929555 0003 0036 14355
1925E: 1304510652.929562 0003 0000 16562
1926E: 1304510652.929563 0003 0001 14355
1927E: 1304510652.929563 0000 0000 0
1928E: 1304510652.935550 0003 0035 16550
1929E: 1304510652.935554 0003 0036 14271
1930E: 1304510652.935561 0003 0000 16559
1931E: 1304510652.935562 0003 0001 14271
1932E: 1304510652.935563 0000 0000 0
1933E: 1304510652.940543 0003 0035 16547
1934E: 1304510652.940551 0003 0036 14181
1935E: 1304510652.940552 0003 0030 1224
1936E: 1304510652.940555 0003 0000 16556
1937E: 1304510652.940555 0003 0001 14181
1938E: 1304510652.940556 0000 0000 0
1939E: 1304510652.945554 0003 0035 16544
1940E: 1304510652.945562 0003 0036 14093
1941E: 1304510652.945563 0003 0030 1191
1942E: 1304510652.945566 0003 0000 16553
1943E: 1304510652.945567 0003 0001 14093
1944E: 1304510652.945567 0000 0000 0
1945E: 1304510652.950541 0003 0036 14003
1946E: 1304510652.950551 0003 0000 16550
1947E: 1304510652.950551 0003 0001 14003
1948E: 1304510652.950552 0000 0000 0
1949E: 1304510652.955555 0003 0036 13911
1950E: 1304510652.955564 0003 0030 1323
1951E: 1304510652.955567 0003 0001 13911
1952E: 1304510652.955567 0000 0000 0
1953E: 1304510652.960546 0003 0036 13823
1954E: 1304510652.960554 0003 0030 1356
1955E: 1304510652.960557 0003 0001 13823
1956E: 1304510652.960558 0000 0000 0
1957E: 1304510652.965555 0003 0035 16541
1958E: 1304510652.965558 0003 0036 13733
1959E: 1304510652.965565 0003 0000 16547
1960E: 1304510652.965566 0003 0001 13733
1961E: 1304510652.965566 0000 0000 0
1962E: 1304510652.970549 0003 0035 16537
1963E: 1304510652.970553 0003 0036 13635
1964E: 1304510652.970560 0003 0000 16544
1965E: 1304510652.970561 0003 0001 13635
1966E: 1304510652.970561 0000 0000 0
1967E: 1304510652.975555 0003 0035 16533
1968E: 1304510652.975559 0003 0036 13543
1969E: 1304510652.975566 0003 0000 16541
1970E: 1304510652.975567 0003 0001 13543
1971E: 1304510652.975567 0000 0000 0
1972E: 1304510652.980543 0003 0035 16529
1973E: 1304510652.980546 0003 0036 13447
1974E: 1304510652.980551 0003 0030 1224
1975E: 1304510652.980554 0003 0000 16538
1976E: 1304510652.980554 0003 0001 13447
1977E: 1304510652.980555 0000 0000 0
1978E: 1304510652.985546 0003 0035 16526
1979E: 1304510652.985555 0003 0036 13353
1980E: 1304510652.985556 0003 0030 1191
1981E: 1304510652.985558 0003 0000 16535
1982E: 1304510652.985559 0003 0001 13353
1983E: 1304510652.985560 0000 0000 0
1984E: 1304510652.990544 0003 0035 16523
1985E: 1304510652.990552 0003 0036 13251
1986E: 1304510652.990553 0003 0030 1323
1987E: 1304510652.990555 0003 0000 16532
1988E: 1304510652.990556 0003 0001 13251
1989E: 1304510652.990556 0000 0000 0
1990E: 1304510652.996550 0003 0035 16519
1991E: 1304510652.996558 0003 0036 13149
1992E: 1304510652.996559 0003 0030 1356
1993E: 1304510652.996561 0003 0000 16528
1994E: 1304510652.996562 0003 0001 13149
1995E: 1304510652.996563 0000 0000 0
1996E: 1304510653.001538 0003 0035 16515
1997E: 1304510653.001542 0003 0036 13049
1998E: 1304510653.001545 0003 0000 16524
1999E: 1304510653.001545 0003 0001 13049
2000E: 1304510653.001546 0000 0000 0
2001E: 1304510653.006552 0003 0035 16511
2002E: 1304510653.006556 0003 0036 12953
2003E: 1304510653.006563 0003 0000 16520
2004E: 1304510653.006564 0003 0001 12953
2005E: 1304510653.006565 0000 0000 0
2006E: 1304510653.011541 0003 0035 16507
2007E: 1304510653.011545 0003 0036 12855
2008E: 1304510653.011550 0003 0030 1224
2009E: 1304510653.011553 0003 0000 16516
2010E: 1304510653.011553 0003 0001 12855
2011E: 1304510653.011554 0000 0000 0
2012E: 1304510653.016548 0003 0035 16504
2013E: 1304510653.016551 0003 0036 12757
2014E: 1304510653.016556 0003 0030 1191
2015E: 1304510653.016559 0003 0000 16513
2016E: 1304510653.016560 0003 0001 12757
2017E: 1304510653.016560 0000 0000 0
2018E: 1304510653.021544 0003 0035 16501
2019E: 1304510653.021549 0003 0036 12659
2020E: 1304510653.021556 0003 0000 16510
2021E: 1304510653.021556 0003 0001 12659
2022E: 1304510653.021557 0000 0000 0
2023E: 1304510653.026552 0003 0035 16498
2024E: 1304510653.026556 0003 0036 12555
2025E: 1304510653.026560 0003 0030 1323
2026E: 1304510653.026563 0003 0000 16507
2027E: 1304510653.026564 0003 0001 12555
2028E: 1304510653.026564 0000 0000 0
2029E: 1304510653.031542 0003 0035 16496
2030E: 1304510653.031545 0003 0036 12453
2031E: 1304510653.031550 0003 0030 1356
2032E: 1304510653.031553 0003 0000 16504
2033E: 1304510653.031553 0003 0001 12453
2034E: 1304510653.031554 0000 0000 0
2035E: 1304510653.036544 0003 0035 16494
2036E: 1304510653.036552 0003 0036 12345
2037E: 1304510653.036556 0003 0000 16501
2038E: 1304510653.036556 0003 0001 12345
2039E: 1304510653.036557 0000 0000 0
2040E: 1304510653.041548 0003 0035 16492
2041E: 1304510653.041556 0003 0036 12251
2042E: 1304510653.041560 0003 0000 16498
2043E: 1304510653.041561 0003 0001 12251
2044E: 1304510653.041561 0000 0000 0
2045E: 1304510653.046543 0003 0035 16489
2046E: 1304510653.046546 0003 0036 12149
2047E: 1304510653.046550 0003 0030 1224
2048E: 1304510653.046553 0003 0000 16495
2049E: 1304510653.046554 0003 0001 12149
2050E: 1304510653.046554 0000 0000 0
2051E: 1304510653.052551 0003 0035 16486
2052E: 1304510653.052556 0003 0036 12049
2053E: 1304510653.052561 0003 0030 1191
2054E: 1304510653.052564 0003 0000 16492
2055E: 1304510653.052565 0003 0001 12049
2056E: 1304510653.052565 0000 0000 0
2057E: 1304510653.057552 0003 0035 16483
2058E: 1304510653.057556 0003 0036 11949
2059E: 1304510653.057564 0003 0000 16489
2060E: 1304510653.057564 0003 0001 11949
2061E: 1304510653.057565 0000 0000 0
2062E: 1304510653.062536 0003 0035 16479
2063E: 1304510653.062543 0003 0036 11849
2064E: 1304510653.062544 0003 0030 1323
2065E: 1304510653.062546 0003 0000 16486
2066E: 1304510653.062547 0003 0001 11849
2067E: 1304510653.062548 0000 0000 0
2068E: 1304510653.067549 0003 0035 16476
2069E: 1304510653.067554 0003 0036 11745
2070E: 1304510653.067559 0003 0030 1356
2071E: 1304510653.067561 0003 0000 16483
2072E: 1304510653.067562 0003 0001 11745
2073E: 1304510653.067563 0000 0000 0
2074E: 1304510653.072545 0003 0035 16472
2075E: 1304510653.072548 0003 0036 11643
2076E: 1304510653.072556 0003 0000 16480
2077E: 1304510653.072556 0003 0001 11643
2078E: 1304510653.072557 0000 0000 0
2079E: 1304510653.077596 0003 0035 16468
2080E: 1304510653.077600 0003 0036 11541
2081E: 1304510653.077603 0003 0000 16477
2082E: 1304510653.077604 0003 0001 11541
2083E: 1304510653.077604 0000 0000 0
2084E: 1304510653.082532 0003 0035 16465
2085E: 1304510653.082534 0003 0036 11443
2086E: 1304510653.082540 0003 0000 16474
2087E: 1304510653.082541 0003 0001 11443
2088E: 1304510653.082541 0000 0000 0
2089E: 1304510653.087551 0003 0035 16462
2090E: 1304510653.087560 0003 0036 11339
2091E: 1304510653.087561 0003 0030 1224
2092E: 1304510653.087564 0003 0000 16471
2093E: 1304510653.087565 0003 0001 11339
2094E: 1304510653.087565 0000 0000 0
2095E: 1304510653.092537 0003 0035 16459
2096E: 1304510653.092545 0003 0036 11235
2097E: 1304510653.092546 0003 0030 1191
2098E: 1304510653.092549 0003 0000 16468
2099E: 1304510653.092549 0003 0001 11235
2100E: 1304510653.092550 0000 0000 0
2101E: 1304510653.097549 0003 0035 16456
2102E: 1304510653.097559 0003 0036 11131
2103E: 1304510653.097560 0003 0030 1323
2104E: 1304510653.097563 0003 0000 16465
2105E: 1304510653.097568 0003 0001 11131
2106E: 1304510653.097569 0000 0000 0
2107E: 1304510653.102546 0003 0035 16453
2108E: 1304510653.102555 0003 0036 11027
2109E: 1304510653.102556 0003 0030 1356
2110E: 1304510653.102558 0003 0000 16462
2111E: 1304510653.102559 0003 0001 11027
2112E: 1304510653.102560 0000 0000 0
2113E: 1304510653.108550 0003 0035 16449
2114E: 1304510653.108553 0003 0036 10923
2115E: 1304510653.108561 0003 0000 16458
2116E: 1304510653.108561 0003 0001 10923
2117E: 1304510653.108562 0000 0000 0
2118E: 1304510653.113557 0003 0035 16446
2119E: 1304510653.113561 0003 0036 10821
2120E: 1304510653.113564 0003 0000 16455
2121E: 1304510653.113564 0003 0001 10821
2122E: 1304510653.113565 0000 0000 0
2123E: 1304510653.118552 0003 0035 16444
2124E: 1304510653.118557 0003 0036 10723
2125E: 1304510653.118565 0003 0000 16452
2126E: 1304510653.118565 0003 0001 10723
2127E: 1304510653.118566 0000 0000 0
2128E: 1304510653.123556 0003 0035 16441
2129E: 1304510653.123559 0003 0036 10623
2130E: 1304510653.123560 0003 0030 1224
2131E: 1304510653.123563 0003 0000 16449
2132E: 1304510653.123563 0003 0001 10623
2133E: 1304510653.123564 0000 0000 0
2134E: 1304510653.128552 0003 0035 16438
2135E: 1304510653.128558 0003 0036 10515
2136E: 1304510653.128559 0003 0030 1191
2137E: 1304510653.128562 0003 0000 16446
2138E: 1304510653.128563 0003 0001 10515
2139E: 1304510653.128563 0000 0000 0
2140E: 1304510653.133546 0003 0035 16436
2141E: 1304510653.133548 0003 0036 10409
2142E: 1304510653.133549 0003 0030 1323
2143E: 1304510653.133551 0003 0000 16443
2144E: 1304510653.133552 0003 0001 10409
2145E: 1304510653.133552 0000 0000 0
2146E: 1304510653.138547 0003 0035 16434
2147E: 1304510653.138551 0003 0036 10301
2148E: 1304510653.138556 0003 0030 1356
2149E: 1304510653.138558 0003 0000 16440
2150E: 1304510653.138559 0003 0001 10301
2151E: 1304510653.138559 0000 0000 0
2152E: 1304510653.143558 0003 0035 16432
2153E: 1304510653.143560 0003 0036 10199
2154E: 1304510653.143564 0003 0000 16438
2155E: 1304510653.143564 0003 0001 10199
2156E: 1304510653.143565 0000 0000 0
2157E: 1304510653.148549 0003 0035 16429
2158E: 1304510653.148553 0003 0036 10093
2159E: 1304510653.148560 0003 0000 16435
2160E: 1304510653.148561 0003 0001 10093
2161E: 1304510653.148561 0000 0000 0
2162E: 1304510653.153555 0003 0035 16426
2163E: 1304510653.153559 0003 0036 9993
2164E: 1304510653.153562 0003 0000 16432
2165E: 1304510653.153563 0003 0001 9993
2166E: 1304510653.153563 0000 0000 0
2167E: 1304510653.158562 0003 0035 16424
2168E: 1304510653.158567 0003 0036 9889
2169E: 1304510653.158569 0003 0030 1224
2170E: 1304510653.158572 0003 0000 16430
2171E: 1304510653.158572 0003 0001 9889
2172E: 1304510653.158573 0000 0000 0
2173E: 1304510653.163550 0003 0035 16421
2174E: 1304510653.163555 0003 0036 9783
2175E: 1304510653.163556 0003 0030 1191
2176E: 1304510653.163558 0003 0000 16427
2177E: 1304510653.163558 0003 0001 9783
2178E: 1304510653.163559 0000 0000 0
2179E: 1304510653.169544 0003 0035 16418
2180E: 1304510653.169548 0003 0036 9679
2181E: 1304510653.169555 0003 0000 16424
2182E: 1304510653.169556 0003 0001 9679
2183E: 1304510653.169557 0000 0000 0
2184E: 1304510653.174539 0003 0035 16415
2185E: 1304510653.174544 0003 0036 9575
2186E: 1304510653.174545 0003 0030 1323
2187E: 1304510653.174547 0003 0000 16421
2188E: 1304510653.174550 0003 0001 9575
2189E: 1304510653.174551 0000 0000 0
2190E: 1304510653.179546 0003 0035 16411
2191E: 1304510653.179551 0003 0036 9473
2192E: 1304510653.179557 0003 0030 1356
2193E: 1304510653.179559 0003 0000 16418
2194E: 1304510653.179560 0003 0001 9473
2195E: 1304510653.179560 0000 0000 0
2196E: 1304510653.184540 0003 0035 16402
2197E: 1304510653.184544 0003 0036 9373
2198E: 1304510653.184551 0003 0000 16410
2199E: 1304510653.184552 0003 0001 9373
2200E: 1304510653.184552 0000 0000 0
2201E: 1304510653.189546 0003 0035 16398
2202E: 1304510653.189550 0003 0036 9273
2203E: 1304510653.189557 0003 0000 16407
2204E: 1304510653.189558 0003 0001 9273
2205E: 1304510653.189558 0000 0000 0
2206E: 1304510653.194533 0003 0035 16389
2207E: 1304510653.194537 0003 0036 9175
2208E: 1304510653.194537 0003 0030 1224
2209E: 1304510653.194539 0003 0000 16398
2210E: 1304510653.194540 0003 0001 9175
2211E: 1304510653.194540 0000 0000 0
2212E: 1304510653.199548 0003 0035 16380
2213E: 1304510653.199553 0003 0036 9067
2214E: 1304510653.199558 0003 0034 1
2215E: 1304510653.199561 0003 0000 16389
2216E: 1304510653.199561 0003 0001 9067
2217E: 1304510653.199562 0000 0000 0
2218E: 1304510653.204541 0003 0035 16371
2219E: 1304510653.204543 0003 0036 8963
2220E: 1304510653.204548 0003 0034 0
2221E: 1304510653.204548 0003 0030 1282
2222E: 1304510653.204549 0003 0031 1032
2223E: 1304510653.204551 0003 0000 16380
2224E: 1304510653.204552 0003 0001 8963
2225E: 1304510653.204552 0000 0000 0
2226E: 1304510653.209548 0003 0035 16361
2227E: 1304510653.209552 0003 0036 8857
2228E: 1304510653.209553 0003 0030 1325
2229E: 1304510653.209556 0003 0000 16370
2230E: 1304510653.209557 0003 0001 8857
2231E: 1304510653.209557 0000 0000 0
2232E: 1304510653.214528 0003 0035 16352
2233E: 1304510653.214531 0003 0036 8757
2234E: 1304510653.214531 0003 0030 1357
2235E: 1304510653.214535 0003 0000 16361
2236E: 1304510653.214535 0003 0001 8757
2237E: 1304510653.214536 0000 0000 0
2238E: 1304510653.219546 0003 0035 16342
2239E: 1304510653.219550 0003 0036 8659
2240E: 1304510653.219557 0003 0000 16351
2241E: 1304510653.219558 0003 0001 8659
2242E: 1304510653.219558 0000 0000 0
2243E: 1304510653.225541 0003 0035 16288
2244E: 1304510653.225544 0003 0036 8557
2245E: 1304510653.225545 0003 0034 1
2246E: 1304510653.225546 0003 0030 1300
2247E: 1304510653.225548 0003 0000 16288
2248E: 1304510653.225551 0003 0001 8557
2249E: 1304510653.225552 0000 0000 0
2250E: 1304510653.230545 0003 0035 16248
2251E: 1304510653.230554 0003 0036 8457
2252E: 1304510653.230555 0003 0030 1257
2253E: 1304510653.230558 0003 0000 16248
2254E: 1304510653.230558 0003 0001 8457
2255E: 1304510653.230559 0000 0000 0
2256E: 1304510653.235541 0003 0035 16214
2257E: 1304510653.235549 0003 0036 8347
2258E: 1304510653.235550 0003 0030 1225
2259E: 1304510653.235553 0003 0000 16214
2260E: 1304510653.235553 0003 0001 8347
2261E: 1304510653.235554 0000 0000 0
2262E: 1304510653.240541 0003 0036 8239
2263E: 1304510653.240549 0003 0034 0
2264E: 1304510653.240549 0003 0030 1282
2265E: 1304510653.240552 0003 0001 8239
2266E: 1304510653.240553 0000 0000 0
2267E: 1304510653.245547 0003 0035 16211
2268E: 1304510653.245551 0003 0036 8133
2269E: 1304510653.245556 0003 0030 1325
2270E: 1304510653.245559 0003 0001 8133
2271E: 1304510653.245560 0000 0000 0
2272E: 1304510653.250545 0003 0035 16170
2273E: 1304510653.250548 0003 0036 8027
2274E: 1304510653.250553 0003 0030 1357
2275E: 1304510653.250556 0003 0000 16170
2276E: 1304510653.250556 0003 0001 8027
2277E: 1304510653.250557 0000 0000 0
2278E: 1304510653.255545 0003 0035 16140
2279E: 1304510653.255548 0003 0036 7921
2280E: 1304510653.255549 0003 0031 855
2281E: 1304510653.255554 0003 0000 16140
2282E: 1304510653.255554 0003 0001 7921
2283E: 1304510653.255555 0000 0000 0
2284E: 1304510653.260546 0003 0035 16127
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches