Commit ce5abab
authored
Update feature/perf from master (#6167)
And solve conflicts.
The conflict resolution can be reviewed locally with this command if you
have a new enough version of `git`:
```
git log --remerge-diff -1 81146d223d3d5cd449105ecef713cfd57e2c1853
```
The conflicts are mostly due to:
* with_tracing being removed from the Http library
* the xapi_periodic_scheduler being moved to xapi-stdext-threads
* a slightly different version of the concurrent PR being merged between
the 2 branches (`vm` instead of `vm'`)
For convenience here is the output of that command:
```diff
commit 81146d223d3d5cd449105ecef713cfd57e2c1853
Merge: 59da2e0 d8baca7
Author: Edwin Török <edwin.torok@cloud.com>
Date: Tue Dec 10 13:43:23 2024 +0000
Merge master into feature/perf
Fix conflicts in http.ml (with_tracing got moved),
and periodic scheduler (got moved to xapi-stdext-threads).
Signed-off-by: Edwin Török <edwin.torok@cloud.com>
diff --git a/ocaml/libs/http-lib/http.ml b/ocaml/libs/http-lib/http.ml
remerge CONFLICT (content): Merge conflict in ocaml/libs/http-lib/http.ml
index ca635e2ba0..c979e1f 100644
--- a/ocaml/libs/http-lib/http.ml
+++ b/ocaml/libs/http-lib/http.ml
@@ -132,16 +132,8 @@ module Hdr = struct
let location = "location"
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let originator = "originator"
- let traceparent = "traceparent"
-
-||||||| 77dd474
- let traceparent = "traceparent"
-
-=======
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
let hsts = "strict-transport-security"
end
@@ -684,7 +676,6 @@ module Request = struct
let headers, body = to_headers_and_body x in
let frame_header = if x.frame then make_frame_header headers else "" in
frame_header ^ headers ^ body
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let with_originator_of req f =
Option.iter
@@ -693,55 +684,6 @@ module Request = struct
f originator
)
req
-
- let traceparent_of req =
- let open Tracing in
- let ( let* ) = Option.bind in
- let* traceparent = req.traceparent in
- let* span_context = SpanContext.of_traceparent traceparent in
- let span = Tracer.span_of_span_context span_context req.uri in
- Some span
-
- let with_tracing ?attributes ~name req f =
- let open Tracing in
- let parent = traceparent_of req in
- with_child_trace ?attributes parent ~name (fun (span : Span.t option) ->
- match span with
- | Some span ->
- let traceparent =
- Some (span |> Span.get_context |> SpanContext.to_traceparent)
- in
- let req = {req with traceparent} in
- f req
- | None ->
- f req
- )
-||||||| 77dd474
-
- let traceparent_of req =
- let open Tracing in
- let ( let* ) = Option.bind in
- let* traceparent = req.traceparent in
- let* span_context = SpanContext.of_traceparent traceparent in
- let span = Tracer.span_of_span_context span_context req.uri in
- Some span
-
- let with_tracing ?attributes ~name req f =
- let open Tracing in
- let parent = traceparent_of req in
- with_child_trace ?attributes parent ~name (fun (span : Span.t option) ->
- match span with
- | Some span ->
- let traceparent =
- Some (span |> Span.get_context |> SpanContext.to_traceparent)
- in
- let req = {req with traceparent} in
- f req
- | None ->
- f req
- )
-=======
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
end
module Response = struct
diff --git a/ocaml/libs/http-lib/http.mli b/ocaml/libs/http-lib/http.mli
remerge CONFLICT (content): Merge conflict in ocaml/libs/http-lib/http.mli
index e77a9ebd5a..114ddbc 100644
--- a/ocaml/libs/http-lib/http.mli
+++ b/ocaml/libs/http-lib/http.mli
@@ -126,22 +126,8 @@ module Request : sig
val to_wire_string : t -> string
(** [to_wire_string t] returns a string which could be sent to a server *)
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
val with_originator_of : t option -> (string option -> unit) -> unit
-
- val traceparent_of : t -> Tracing.Span.t option
-
- val with_tracing :
- ?attributes:(string * string) list -> name:string -> t -> (t -> 'a) -> 'a
-||||||| 77dd474
-
- val traceparent_of : t -> Tracing.Span.t option
-
- val with_tracing :
- ?attributes:(string * string) list -> name:string -> t -> (t -> 'a) -> 'a
-=======
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
end
(** Parsed form of the HTTP response *)
diff --git a/ocaml/tests/dune b/ocaml/tests/dune
index b51bbca..ce8fe96 100644
--- a/ocaml/tests/dune
+++ b/ocaml/tests/dune
@@ -118,6 +118,7 @@
xapi-types
xapi-stdext-date
xapi-stdext-threads
+ xapi-stdext-threads.scheduler
xapi-stdext-unix
xml-light2
yojson
diff --git a/ocaml/tests/test_event.ml b/ocaml/tests/test_event.ml
index d36dba9..821bb3b 100644
--- a/ocaml/tests/test_event.ml
+++ b/ocaml/tests/test_event.ml
@@ -287,7 +287,7 @@ let test_short_oneshot () =
started := true ;
Condition.broadcast cond ;
Mutex.unlock m ;
- Xapi_periodic_scheduler.loop ()
+ Xapi_stdext_threads_scheduler.Scheduler.loop ()
in
ignore (Thread.create scheduler ()) ;
(* ensure scheduler sees an empty queue , by waiting for it to start *)
@@ -303,8 +303,8 @@ let test_short_oneshot () =
let fired = Atomic.make false in
let fire () = Atomic.set fired true in
let task = "test_oneshot" in
- Xapi_periodic_scheduler.add_to_queue task Xapi_periodic_scheduler.OneShot 1.
- fire ;
+ Xapi_stdext_threads_scheduler.Scheduler.add_to_queue task
+ Xapi_stdext_threads_scheduler.Scheduler.OneShot 1. fire ;
Thread.delay 2. ;
assert (Atomic.get fired)
diff --git a/ocaml/xapi-storage-script/main.ml b/ocaml/xapi-storage-script/main.ml
remerge CONFLICT (content): Merge conflict in ocaml/xapi-storage-script/main.ml
index 1ec4d9dcb1..cba7ec8 100644
--- a/ocaml/xapi-storage-script/main.ml
+++ b/ocaml/xapi-storage-script/main.ml
@@ -66,7 +66,6 @@ let backend_backtrace_error name args backtrace =
let missing_uri () =
backend_error "MISSING_URI" ["Please include a URI in the device-config"]
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
(** return a unique 'domain' string for Dom0, so that we can plug disks
multiple times (e.g. for copy).
@@ -84,26 +83,6 @@ let domain_of ~dp ~vm =
| _ ->
vm
-||||||| 77dd474
-=======
-(** return a unique 'domain' string for Dom0, so that we can plug disks
- multiple times (e.g. for copy).
-
- XAPI should give us a unique 'dp' (datapath) string, e.g. a UUID for storage migration,
- or vbd/domid/device.
- For regular guests keep the domain as passed by XAPI (an integer).
- *)
-let domain_of ~dp ~vm' =
- let vm = Storage_interface.Vm.string_of vm' in
- match vm with
- | "0" ->
- (* SM tries to use this in filesystem paths, so cannot have /,
- and systemd might be a bit unhappy with - *)
- "u0-" ^ dp |> String.map (function '/' | '-' -> '_' | c -> c)
- | _ ->
- vm
-
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(** Functions to wrap calls to the above client modules and convert their
exceptions and errors into SMAPIv2 errors of type
[Storage_interface.Exception.exnty]. The above client modules should only
@@ -1476,21 +1455,9 @@ let bind ~volume_script_dir =
|> wrap
in
S.VDI.introduce vdi_introduce_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_attach3_impl dbg dp sr vdi' vm _readwrite =
-||||||| 77dd474
- let vdi_attach3_impl dbg _dp sr vdi' vm' _readwrite =
-=======
- let vdi_attach3_impl dbg dp sr vdi' vm' _readwrite =
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(let vdi = Storage_interface.Vdi.string_of vdi' in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let domain = domain_of ~dp ~vm in
-||||||| 77dd474
- let domain = Storage_interface.Vm.string_of vm' in
-=======
- let domain = domain_of ~dp ~vm' in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
vdi_attach_common dbg sr vdi domain >>>= fun response ->
let convert_implementation = function
| Xapi_storage.Data.XenDisk {params; extra; backend_type} ->
@@ -1512,21 +1479,9 @@ let bind ~volume_script_dir =
|> wrap
in
S.VDI.attach3 vdi_attach3_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_activate_common dbg dp sr vdi' vm readonly =
-||||||| 77dd474
- let vdi_activate_common dbg sr vdi' vm' readonly =
-=======
- let vdi_activate_common dbg dp sr vdi' vm' readonly =
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(let vdi = Storage_interface.Vdi.string_of vdi' in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let domain = domain_of ~dp ~vm in
-||||||| 77dd474
- let domain = Storage_interface.Vm.string_of vm' in
-=======
- let domain = domain_of ~dp ~vm' in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
Attached_SRs.find sr >>>= fun sr ->
(* Discover the URIs using Volume.stat *)
stat ~dbg ~sr ~vdi >>>= fun response ->
@@ -1551,45 +1506,17 @@ let bind ~volume_script_dir =
)
|> wrap
in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_activate3_impl dbg dp sr vdi' vm =
vdi_activate_common dbg dp sr vdi' vm false
-||||||| 77dd474
- let vdi_activate3_impl dbg _dp sr vdi' vm' =
- vdi_activate_common dbg sr vdi' vm' false
-=======
- let vdi_activate3_impl dbg dp sr vdi' vm' =
- vdi_activate_common dbg dp sr vdi' vm' false
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
in
S.VDI.activate3 vdi_activate3_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_activate_readonly_impl dbg dp sr vdi' vm =
vdi_activate_common dbg dp sr vdi' vm true
-||||||| 77dd474
- let vdi_activate_readonly_impl dbg _dp sr vdi' vm' =
- vdi_activate_common dbg sr vdi' vm' true
-=======
- let vdi_activate_readonly_impl dbg dp sr vdi' vm' =
- vdi_activate_common dbg dp sr vdi' vm' true
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
in
S.VDI.activate_readonly vdi_activate_readonly_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_deactivate_impl dbg dp sr vdi' vm =
-||||||| 77dd474
- let vdi_deactivate_impl dbg _dp sr vdi' vm' =
-=======
- let vdi_deactivate_impl dbg dp sr vdi' vm' =
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(let vdi = Storage_interface.Vdi.string_of vdi' in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let domain = domain_of ~dp ~vm in
-||||||| 77dd474
- let domain = Storage_interface.Vm.string_of vm' in
-=======
- let domain = domain_of ~dp ~vm' in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
Attached_SRs.find sr >>>= fun sr ->
(* Discover the URIs using Volume.stat *)
stat ~dbg ~sr ~vdi >>>= fun response ->
@@ -1610,21 +1537,9 @@ let bind ~volume_script_dir =
|> wrap
in
S.VDI.deactivate vdi_deactivate_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let vdi_detach_impl dbg dp sr vdi' vm =
-||||||| 77dd474
- let vdi_detach_impl dbg _dp sr vdi' vm' =
-=======
- let vdi_detach_impl dbg dp sr vdi' vm' =
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(let vdi = Storage_interface.Vdi.string_of vdi' in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let domain = domain_of ~dp ~vm in
-||||||| 77dd474
- let domain = Storage_interface.Vm.string_of vm' in
-=======
- let domain = domain_of ~dp ~vm' in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
Attached_SRs.find sr >>>= fun sr ->
(* Discover the URIs using Volume.stat *)
stat ~dbg ~sr ~vdi >>>= fun response ->
@@ -1732,21 +1647,9 @@ let bind ~volume_script_dir =
S.VDI.epoch_end vdi_epoch_end_impl ;
let vdi_set_persistent_impl _dbg _sr _vdi _persistent = return () |> wrap in
S.VDI.set_persistent vdi_set_persistent_impl ;
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let dp_destroy2 dbg dp sr vdi' vm _allow_leak =
-||||||| 77dd474
- let dp_destroy2 dbg _dp sr vdi' vm' _allow_leak =
-=======
- let dp_destroy2 dbg dp sr vdi' vm' _allow_leak =
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
(let vdi = Storage_interface.Vdi.string_of vdi' in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let domain = domain_of ~dp ~vm in
-||||||| 77dd474
- let domain = Storage_interface.Vm.string_of vm' in
-=======
- let domain = domain_of ~dp ~vm' in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
Attached_SRs.find sr >>>= fun sr ->
(* Discover the URIs using Volume.stat *)
stat ~dbg ~sr ~vdi >>>= fun response ->
@@ -1888,17 +1791,7 @@ let rec diff a b =
| a :: aa ->
if List.mem a b then diff aa b else a :: diff aa b
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let concurrent = ref true
-||||||| 77dd474
-(* default false due to bugs in SMAPIv3 plugins,
- once they are fixed this should be set to true *)
-let concurrent = ref false
-=======
-(* default false due to bugs in SMAPIv3 plugins,
- once they are fixed this should be set to true *)
-let concurrent = ref true
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
type reload = All | Files of string list | Nothing
diff --git a/ocaml/xapi/helpers.ml b/ocaml/xapi/helpers.ml
remerge CONFLICT (content): Merge conflict in ocaml/xapi/helpers.ml
index ca57afb8d8..1175b6a 100644
--- a/ocaml/xapi/helpers.ml
+++ b/ocaml/xapi/helpers.ml
@@ -410,20 +410,14 @@ let make_rpc ~__context rpc : Rpc.response =
let subtask_of = Ref.string_of (Context.get_task_id __context) in
let open Xmlrpc_client in
let tracing = Context.set_client_span __context in
-<<<<<<< 59da2e0 (CA-388564: move qemu-dm to vm.slice (#6150))
let dorpc, path =
if !Xapi_globs.use_xmlrpc then
(XMLRPC_protocol.rpc, "/")
else
(JSONRPC_protocol.rpc, "/jsonrpc")
in
- let http = xmlrpc ~subtask_of ~version:"1.1" path ~tracing in
-||||||| 77dd474
- let http = xmlrpc ~subtask_of ~version:"1.1" "/" ~tracing in
-=======
- let http = xmlrpc ~subtask_of ~version:"1.1" "/" in
+ let http = xmlrpc ~subtask_of ~version:"1.1" path in
let http = TraceHelper.inject_span_into_req tracing http in
->>>>>>> d8baca7 (CA-390025: do not override SR's client-set metadata on update (#6165))
let transport =
if Pool_role.is_master () then
Unix Xapi_globs.unix_domain_socket
diff --git a/ocaml/xapi/xapi_periodic_scheduler_init.ml b/ocaml/xapi/xapi_periodic_scheduler_init.ml
index 6300f89db2..1bd13d5 100644
--- a/ocaml/xapi/xapi_periodic_scheduler_init.ml
+++ b/ocaml/xapi/xapi_periodic_scheduler_init.ml
@@ -129,9 +129,10 @@ let register ~__context =
)
) ;
let stunnel_period = !Stunnel_cache.max_idle /. 2. in
- Xapi_periodic_scheduler.add_to_queue "Check stunnel cache expiry"
- (Xapi_periodic_scheduler.Periodic stunnel_period) stunnel_period
- Stunnel_cache.gc ;
+ Xapi_stdext_threads_scheduler.Scheduler.add_to_queue
+ "Check stunnel cache expiry"
+ (Xapi_stdext_threads_scheduler.Scheduler.Periodic stunnel_period)
+ stunnel_period Stunnel_cache.gc ;
if
master
&& Db.Pool.get_update_sync_enabled ~__context
```File tree
122 files changed
+2622
-3769
lines changed- .github/workflows
- go-ci
- doc/content
- design
- toolstack/features/NUMA
- xcp-rrdd/design
- ocaml
- idl
- libs
- http-lib
- tracing
- xapi-rrd
- lib_test
- test_data
- lib
- unix
- xapi-stdext/lib/xapi-stdext-threads
- perftest
- sdk-gen
- csharp/autogen
- XenServerTest
- src
- go/autogen/src
- java/autogen/xen-api
- src
- main/java/com/xensource/xenapi
- test/java
- tests
- common
- xapi-cli-server
- xapi-consts
- xapi
- xcp-rrdd
- bin
- rrddump
- rrdd
- rrdp-netdev
- transport-rw
- lib
- plugin
- transport/base
- scripts/rrdd
- test
- rrdd
- transport
- xe-cli
- xenopsd/xc
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
122 files changed
+2622
-3769
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
27 | 35 | | |
28 | 36 | | |
29 | 37 | | |
| |||
54 | 62 | | |
55 | 63 | | |
56 | 64 | | |
| 65 | + | |
57 | 66 | | |
58 | 67 | | |
59 | 68 | | |
| |||
110 | 119 | | |
111 | 120 | | |
112 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
113 | 130 | | |
114 | 131 | | |
115 | 132 | | |
| |||
138 | 155 | | |
139 | 156 | | |
140 | 157 | | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
141 | 173 | | |
142 | 174 | | |
143 | 175 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
17 | 22 | | |
18 | 23 | | |
19 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
99 | | - | |
| 99 | + | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
197 | | - | |
198 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
52 | | - | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | | - | |
68 | | - | |
| 67 | + | |
| 68 | + | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | | - | |
75 | | - | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
76 | 81 | | |
77 | 82 | | |
78 | 83 | | |
79 | 84 | | |
80 | 85 | | |
81 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
82 | 99 | | |
83 | | - | |
| 100 | + | |
| 101 | + | |
84 | 102 | | |
85 | | - | |
| 103 | + | |
86 | 104 | | |
87 | | - | |
| 105 | + | |
88 | 106 | | |
89 | 107 | | |
90 | 108 | | |
91 | 109 | | |
92 | | - | |
93 | | - | |
| 110 | + | |
| 111 | + | |
94 | 112 | | |
95 | 113 | | |
96 | 114 | | |
97 | 115 | | |
| 116 | + | |
| 117 | + | |
98 | 118 | | |
99 | 119 | | |
100 | 120 | | |
| |||
110 | 130 | | |
111 | 131 | | |
112 | 132 | | |
113 | | - | |
| 133 | + | |
114 | 134 | | |
115 | 135 | | |
116 | 136 | | |
117 | 137 | | |
118 | | - | |
| 138 | + | |
119 | 139 | | |
120 | 140 | | |
121 | 141 | | |
122 | 142 | | |
123 | | - | |
| 143 | + | |
124 | 144 | | |
125 | | - | |
| 145 | + | |
126 | 146 | | |
127 | 147 | | |
128 | 148 | | |
| |||
139 | 159 | | |
140 | 160 | | |
141 | 161 | | |
142 | | - | |
| 162 | + | |
143 | 163 | | |
144 | 164 | | |
145 | 165 | | |
| |||
149 | 169 | | |
150 | 170 | | |
151 | 171 | | |
152 | | - | |
| 172 | + | |
153 | 173 | | |
154 | 174 | | |
155 | 175 | | |
| |||
166 | 186 | | |
167 | 187 | | |
168 | 188 | | |
169 | | - | |
| 189 | + | |
170 | 190 | | |
171 | 191 | | |
172 | 192 | | |
173 | 193 | | |
174 | 194 | | |
175 | 195 | | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
181 | 201 | | |
182 | 202 | | |
183 | 203 | | |
| |||
0 commit comments