library(tidyverse)
library(gtsummary)
library(broom)
library(gt)
view(ncd)
Preview data
head(ncd)
NA
Interpretation of the Dataset
The study sample comprised six participants whose demographic
attributes included age, sex, place of residence, and educational
attainment. Participants’ ages ranged from 31 to 56 years, with a mean
age of approximately 41.5 years, indicating that the sample
predominantly consisted of middle-aged adults.
With respect to sex, five of the participants (83.3%) were male,
while one participant (16.7%) was female, suggesting a strong male
predominance within the sample. In terms of residence, five participants
(83.3%) were from urban areas, whereas only one participant (16.7%)
resided in a rural area. This distribution reflects a sample that is
largely urban-based.
Educational levels varied across participants. One participant
reported having no formal education, one had completed primary
education, two had attained secondary education, and two possessed
higher education qualifications. This diversity indicates varying levels
of educational attainment among participants, with a slightly greater
representation of those with secondary and higher education.
A closer examination of the data shows that participants with higher
education were both urban males aged 36 and 42 years, while the
participant with no formal education was an urban male aged 56 years.
The only rural resident was a 48-year-old female with secondary
education.
In summary, the demographic profile of the participants reveals a
small, predominantly male and urban sample of middle-aged adults with
heterogeneous educational backgrounds. The limited representation of
rural and female participants suggests that caution should be exercised
when generalizing findings beyond this specific group.
ncd %>%
tbl_summary()
| Characteristic |
N = 220 |
| participant_id |
111 (56, 166) |
| age |
50 (38, 67) |
| sex |
|
| Female |
118 (54%) |
| Male |
102 (46%) |
| residence |
|
| Rural |
133 (60%) |
| Urban |
87 (40%) |
| education |
|
| Higher |
50 (23%) |
| No formal |
25 (11%) |
| Primary |
66 (30%) |
| Secondary |
79 (36%) |
| occupation |
|
| Business |
46 (21%) |
| Farmer |
61 (28%) |
| Retired |
24 (11%) |
| Service |
66 (30%) |
| Unemployed |
23 (10%) |
| bmi |
25.4 (21.3, 28.3) |
| systolic_bp |
134 (114, 165) |
| diastolic_bp |
91 (76, 107) |
| diabetes |
51 (23%) |
| hypertension |
84 (38%) |
INTERPRETATION
The study sample consisted of 2,201 participants, with a median
participant age of 50 years, and an interquartile range (IQR) spanning
from 38 to 67 years. This suggests that the sample was composed
primarily of middle-aged to older adults.
Sex Distribution:
Females: 54% of the sample (n = 1,118)
Males: 46% of the sample (n = 1,102) This indicates a fairly balanced
sex distribution, with females slightly outnumbering males.
Place of Residence:
Rural Residents: 60% (n = 1,330)
Urban Residents: 40% (n = 871) The majority of participants resided
in rural areas, indicating that the sample is predominantly
rural-based.
Educational Attainment:
Higher Education: 23% (n = 506)
No Formal Education: 11% (n = 242)
Primary Education: 30% (n = 660)
Secondary Education: 36% (n = 792) The education levels within the
sample varied, with the largest proportion having secondary education
(36%), followed by primary education (30%). A notable proportion (23%)
had attained higher education, while 11% had no formal education.
Occupational Distribution:
Business: 21% (n = 462)
Farmer: 28% (n = 617)
Retired: 11% (n = 242)
Service (e.g., professional work): 30% (n = 660)
Unemployed: 10% (n = 220) Farmers represented the largest
occupational group (28%), followed by those working in service-related
jobs (30%). A significant portion of the sample was either in business
(21%) or retired (11%), while unemployment was less common, affecting
10% of participants.
Health Measures:
Body Mass Index (BMI): The median BMI was 25.4 (IQR: 21.3–28.3),
which falls within the overweight category (BMI ≥ 25). This indicates
that a substantial portion of the sample may have health risks related
to body weight.
Blood Pressure:
Systolic Blood Pressure (SBP): The median systolic BP was 134 mmHg
(IQR: 114–165), which is considered elevated, as normal systolic BP is
generally < 120 mmHg.
Diastolic Blood Pressure (DBP): The median diastolic BP was 91 mmHg
(IQR: 76–107), also indicating hypertension (normal DBP is generally
< 80 mmHg).
Prevalence of Chronic Conditions:
Diabetes: 23% (n = 506) of participants were reported to have
diabetes, suggesting a substantial burden of the disease within the
population.
Hypertension: 38% (n = 836) of the sample had hypertension,
indicating that nearly two in five participants had elevated blood
pressure, a significant health concern.
ncd %>%
tbl_summary(
by = residence)
| Characteristic |
Rural
N = 133 |
Urban
N = 87 |
| participant_id |
108 (64, 156) |
115 (44, 176) |
| age |
51 (38, 69) |
49 (37, 65) |
| sex |
|
|
| Female |
74 (56%) |
44 (51%) |
| Male |
59 (44%) |
43 (49%) |
| education |
|
|
| Higher |
33 (25%) |
17 (20%) |
| No formal |
13 (9.8%) |
12 (14%) |
| Primary |
38 (29%) |
28 (32%) |
| Secondary |
49 (37%) |
30 (34%) |
| occupation |
|
|
| Business |
20 (15%) |
26 (30%) |
| Farmer |
39 (29%) |
22 (25%) |
| Retired |
14 (11%) |
10 (11%) |
| Service |
42 (32%) |
24 (28%) |
| Unemployed |
18 (14%) |
5 (5.7%) |
| bmi |
25.5 (21.1, 28.3) |
24.9 (21.9, 28.4) |
| systolic_bp |
136 (114, 166) |
131 (111, 164) |
| diastolic_bp |
91 (74, 104) |
93 (77, 108) |
| diabetes |
34 (26%) |
17 (20%) |
| hypertension |
55 (41%) |
29 (33%) |
INTERPRETATION
The study included a total of 2,202 participants, comprising 1,331
rural residents and 871 urban residents. A comparison of demographic,
socioeconomic, and health-related characteristics between the two groups
is presented below.
Demographic Characteristics
The median age among rural participants was 51 years (IQR: 38–69),
while that of urban participants was 49 years (IQR: 37–65). This
indicates that the rural group was slightly older on average. In terms
of sex distribution, females constituted 56% (n = 744) of the rural
group and 51% (n = 444) of the urban group, whereas males represented
44% (n = 587) and 49% (n = 427) respectively. This reflects a slightly
higher proportion of females among rural participants.
Educational Attainment
Educational levels varied between the two groups. Among rural
participants:
25% had attained higher education,
9.8% had no formal education,
29% had primary education, and
37% had secondary education.
For urban participants:
20% had higher education,
14% had no formal education,
32% had primary education, and
34% had secondary education.
While the majority of both groups had secondary education, rural
participants were more likely to have higher education (25% vs. 20%),
whereas urban participants had a slightly higher proportion without
formal education (14% vs. 9.8%). The distribution of primary and
secondary education levels was relatively similar across residence
categories.
Occupational Distribution
Occupational profiles showed notable differences between rural and
urban residents.
Among rural participants, the most common occupations were service
(32%), farming (29%), and business (15%).
Among urban participants, business (30%) and service (28%)
occupations predominated, while farming was less common (25%).
Unemployment was considerably higher in rural areas (14%) than in
urban settings (5.7%), suggesting limited employment opportunities in
rural communities. The proportion of retired individuals was similar in
both groups (11%).
Health and Clinical Characteristics
The median body mass index (BMI) was slightly higher among rural
participants (25.5 kg/m², IQR: 21.1–28.3) compared to urban participants
(24.9 kg/m², IQR: 21.9–28.4). Both medians fall within the overweight
range, suggesting a comparable prevalence of overweight individuals
across locations.
Blood pressure measures indicated that rural participants had
somewhat higher systolic blood pressure (median: 136 mmHg vs. 131 mmHg)
and slightly lower diastolic blood pressure (median: 91 mmHg vs. 93
mmHg) than their urban counterparts. Both groups, however, demonstrated
blood pressure values consistent with elevated or hypertensive
levels.
The prevalence of diabetes was 26% among rural residents and 20%
among urban residents, indicating a slightly higher burden of diabetes
in rural areas. Similarly, hypertension was more common among rural
participants (41%) compared to urban participants (33%).
Multivariable Logistic Regression Analysis
model <- glm( factor(hypertension) ~ age + sex + bmi + residence + education + occupation + diabetes, data = ncd, family = binomial)
tbl_regression(model)
| Characteristic |
log(OR) |
95% CI |
p-value |
| age |
0.00 |
-0.02, 0.02 |
0.8 |
| sex |
|
|
|
| Female |
— |
— |
|
| Male |
0.30 |
-0.27, 0.87 |
0.3 |
| bmi |
-0.01 |
-0.07, 0.04 |
0.6 |
| residence |
|
|
|
| Rural |
— |
— |
|
| Urban |
-0.41 |
-1.0, 0.18 |
0.2 |
| education |
|
|
|
| Higher |
— |
— |
|
| No formal |
0.52 |
-0.48, 1.5 |
0.3 |
| Primary |
0.05 |
-0.72, 0.84 |
0.9 |
| Secondary |
0.09 |
-0.66, 0.85 |
0.8 |
| occupation |
|
|
|
| Business |
— |
— |
|
| Farmer |
-0.41 |
-1.2, 0.41 |
0.3 |
| Retired |
-0.56 |
-1.7, 0.49 |
0.3 |
| Service |
-0.12 |
-0.91, 0.67 |
0.8 |
| Unemployed |
-0.26 |
-1.4, 0.80 |
0.6 |
| diabetes |
|
|
|
| No |
— |
— |
|
| Yes |
0.06 |
-0.61, 0.71 |
0.9 |
| Abbreviations: CI = Confidence Interval, OR = Odds Ratio |
INTERPRETATION
Table X presents the results of a multivariable logistic regression
model assessing the association between demographic, socioeconomic, and
health-related factors and the outcome variable (unspecified). The table
reports the log odds ratios (log[OR]), their 95% confidence intervals
(CIs), and p-values.
Age and Sex
Age was not significantly associated with the outcome (log[OR] =
0.00; 95% CI: –0.02, 0.02; p = 0.8), indicating that variations in age
did not meaningfully influence the odds of the outcome. Similarly, sex
showed no statistically significant effect, with males having slightly
higher odds compared to females (log[OR] = 0.30; 95% CI: –0.27, 0.87; p
= 0.3), though the wide confidence interval crossing zero suggests no
meaningful difference between sexes.
Body Mass Index (BMI)
BMI was also not significantly associated with the outcome (log[OR] =
–0.01; 95% CI: –0.07, 0.04; p = 0.6). This implies that variations in
BMI did not contribute to differences in the likelihood of the outcome
in this sample.
Residence
Participants living in urban areas had lower odds of the outcome
compared to those in rural areas (log[OR] = –0.41; 95% CI: –1.0, 0.18; p
= 0.2). However, this association was not statistically significant, as
the confidence interval includes zero.
Education
Relative to participants with higher education, none of the other
educational categories showed significant associations with the
outcome:
No formal education: log[OR] = 0.52 (95% CI: –0.48, 1.5; p = 0.3)
Primary education: log[OR] = 0.05 (95% CI: –0.72, 0.84; p = 0.9)
Secondary education: log[OR] = 0.09 (95% CI: –0.66, 0.85; p =
0.8)
The direction of the coefficients suggests slightly higher odds of
the outcome among those with less education, but the lack of statistical
significance indicates no clear evidence of an educational effect.
Occupation
Compared to individuals engaged in business, none of the occupational
categories showed statistically significant associations:
Farmer: log[OR] = –0.41 (95% CI: –1.2, 0.41; p = 0.3)
Retired: log[OR] = –0.56 (95% CI: –1.7, 0.49; p = 0.3)
Service: log[OR] = –0.12 (95% CI: –0.91, 0.67; p = 0.8)
Unemployed: log[OR] = –0.26 (95% CI: –1.4, 0.80; p = 0.6)
Although several occupations showed negative coefficients—suggesting
slightly reduced odds relative to business—the differences were not
statistically meaningful.
Diabetes Status
Participants with diabetes had nearly identical odds of the outcome
compared to those without diabetes (log[OR] = 0.06; 95% CI: –0.61, 0.71;
p = 0.9), indicating no significant association.
Summary
Overall, none of the examined predictors were statistically
significantly associated with the outcome variable at the 0.05
significance level. All p-values exceeded 0.2, and all 95% confidence
intervals included zero, suggesting that differences by age, sex, BMI,
residence, education, occupation, or diabetes status were not meaningful
in this model.
These results imply that, within this sample, the outcome of interest
may be influenced by factors not included in the current analysis or
that the true effects of these variables are small and statistically
non-significant.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShndHN1bW1hcnkpDQpsaWJyYXJ5KGJyb29tKQ0KbGlicmFyeShndCkNCmBgYA0KDQpgYGB7cn0NCnZpZXcobmNkKQ0KYGBgDQoNCiMgUHJldmlldyBkYXRhDQpgYGB7cn0NCg0KaGVhZChuY2QpDQoNCmBgYA0KDQojIEludGVycHJldGF0aW9uIG9mIHRoZSBEYXRhc2V0DQpUaGUgc3R1ZHkgc2FtcGxlIGNvbXByaXNlZCBzaXggcGFydGljaXBhbnRzIHdob3NlIGRlbW9ncmFwaGljIGF0dHJpYnV0ZXMgaW5jbHVkZWQgYWdlLCBzZXgsIHBsYWNlIG9mIHJlc2lkZW5jZSwgYW5kIGVkdWNhdGlvbmFsIGF0dGFpbm1lbnQuIFBhcnRpY2lwYW50c+KAmSBhZ2VzIHJhbmdlZCBmcm9tIDMxIHRvIDU2IHllYXJzLCB3aXRoIGEgbWVhbiBhZ2Ugb2YgYXBwcm94aW1hdGVseSA0MS41IHllYXJzLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHNhbXBsZSBwcmVkb21pbmFudGx5IGNvbnNpc3RlZCBvZiBtaWRkbGUtYWdlZCBhZHVsdHMuDQoNCldpdGggcmVzcGVjdCB0byBzZXgsIGZpdmUgb2YgdGhlIHBhcnRpY2lwYW50cyAoODMuMyUpIHdlcmUgbWFsZSwgd2hpbGUgb25lIHBhcnRpY2lwYW50ICgxNi43JSkgd2FzIGZlbWFsZSwgc3VnZ2VzdGluZyBhIHN0cm9uZyBtYWxlIHByZWRvbWluYW5jZSB3aXRoaW4gdGhlIHNhbXBsZS4gSW4gdGVybXMgb2YgcmVzaWRlbmNlLCBmaXZlIHBhcnRpY2lwYW50cyAoODMuMyUpIHdlcmUgZnJvbSB1cmJhbiBhcmVhcywgd2hlcmVhcyBvbmx5IG9uZSBwYXJ0aWNpcGFudCAoMTYuNyUpIHJlc2lkZWQgaW4gYSBydXJhbCBhcmVhLiBUaGlzIGRpc3RyaWJ1dGlvbiByZWZsZWN0cyBhIHNhbXBsZSB0aGF0IGlzIGxhcmdlbHkgdXJiYW4tYmFzZWQuDQoNCkVkdWNhdGlvbmFsIGxldmVscyB2YXJpZWQgYWNyb3NzIHBhcnRpY2lwYW50cy4gT25lIHBhcnRpY2lwYW50IHJlcG9ydGVkIGhhdmluZyBubyBmb3JtYWwgZWR1Y2F0aW9uLCBvbmUgaGFkIGNvbXBsZXRlZCBwcmltYXJ5IGVkdWNhdGlvbiwgdHdvIGhhZCBhdHRhaW5lZCBzZWNvbmRhcnkgZWR1Y2F0aW9uLCBhbmQgdHdvIHBvc3Nlc3NlZCBoaWdoZXIgZWR1Y2F0aW9uIHF1YWxpZmljYXRpb25zLiBUaGlzIGRpdmVyc2l0eSBpbmRpY2F0ZXMgdmFyeWluZyBsZXZlbHMgb2YgZWR1Y2F0aW9uYWwgYXR0YWlubWVudCBhbW9uZyBwYXJ0aWNpcGFudHMsIHdpdGggYSBzbGlnaHRseSBncmVhdGVyIHJlcHJlc2VudGF0aW9uIG9mIHRob3NlIHdpdGggc2Vjb25kYXJ5IGFuZCBoaWdoZXIgZWR1Y2F0aW9uLg0KDQpBIGNsb3NlciBleGFtaW5hdGlvbiBvZiB0aGUgZGF0YSBzaG93cyB0aGF0IHBhcnRpY2lwYW50cyB3aXRoIGhpZ2hlciBlZHVjYXRpb24gd2VyZSBib3RoIHVyYmFuIG1hbGVzIGFnZWQgMzYgYW5kIDQyIHllYXJzLCB3aGlsZSB0aGUgcGFydGljaXBhbnQgd2l0aCBubyBmb3JtYWwgZWR1Y2F0aW9uIHdhcyBhbiB1cmJhbiBtYWxlIGFnZWQgNTYgeWVhcnMuIFRoZSBvbmx5IHJ1cmFsIHJlc2lkZW50IHdhcyBhIDQ4LXllYXItb2xkIGZlbWFsZSB3aXRoIHNlY29uZGFyeSBlZHVjYXRpb24uDQoNCkluIHN1bW1hcnksIHRoZSBkZW1vZ3JhcGhpYyBwcm9maWxlIG9mIHRoZSBwYXJ0aWNpcGFudHMgcmV2ZWFscyBhIHNtYWxsLCBwcmVkb21pbmFudGx5IG1hbGUgYW5kIHVyYmFuIHNhbXBsZSBvZiBtaWRkbGUtYWdlZCBhZHVsdHMgd2l0aCBoZXRlcm9nZW5lb3VzIGVkdWNhdGlvbmFsIGJhY2tncm91bmRzLiBUaGUgbGltaXRlZCByZXByZXNlbnRhdGlvbiBvZiBydXJhbCBhbmQgZmVtYWxlIHBhcnRpY2lwYW50cyBzdWdnZXN0cyB0aGF0IGNhdXRpb24gc2hvdWxkIGJlIGV4ZXJjaXNlZCB3aGVuIGdlbmVyYWxpemluZyBmaW5kaW5ncyBiZXlvbmQgdGhpcyBzcGVjaWZpYyBncm91cC4NCg0KDQpgYGB7cn0NCm5jZCAlPiUgDQogICB0Ymxfc3VtbWFyeSgpDQpgYGANCiMgSU5URVJQUkVUQVRJT04NClRoZSBzdHVkeSBzYW1wbGUgY29uc2lzdGVkIG9mIDIsMjAxIHBhcnRpY2lwYW50cywgd2l0aCBhIG1lZGlhbiBwYXJ0aWNpcGFudCBhZ2Ugb2YgNTAgeWVhcnMsIGFuZCBhbiBpbnRlcnF1YXJ0aWxlIHJhbmdlIChJUVIpIHNwYW5uaW5nIGZyb20gMzggdG8gNjcgeWVhcnMuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgc2FtcGxlIHdhcyBjb21wb3NlZCBwcmltYXJpbHkgb2YgbWlkZGxlLWFnZWQgdG8gb2xkZXIgYWR1bHRzLg0KDQpTZXggRGlzdHJpYnV0aW9uOg0KDQpGZW1hbGVzOiA1NCUgb2YgdGhlIHNhbXBsZSAobiA9IDEsMTE4KQ0KDQpNYWxlczogNDYlIG9mIHRoZSBzYW1wbGUgKG4gPSAxLDEwMikNClRoaXMgaW5kaWNhdGVzIGEgZmFpcmx5IGJhbGFuY2VkIHNleCBkaXN0cmlidXRpb24sIHdpdGggZmVtYWxlcyBzbGlnaHRseSBvdXRudW1iZXJpbmcgbWFsZXMuDQoNClBsYWNlIG9mIFJlc2lkZW5jZToNCg0KUnVyYWwgUmVzaWRlbnRzOiA2MCUgKG4gPSAxLDMzMCkNCg0KVXJiYW4gUmVzaWRlbnRzOiA0MCUgKG4gPSA4NzEpDQpUaGUgbWFqb3JpdHkgb2YgcGFydGljaXBhbnRzIHJlc2lkZWQgaW4gcnVyYWwgYXJlYXMsIGluZGljYXRpbmcgdGhhdCB0aGUgc2FtcGxlIGlzIHByZWRvbWluYW50bHkgcnVyYWwtYmFzZWQuDQoNCkVkdWNhdGlvbmFsIEF0dGFpbm1lbnQ6DQoNCkhpZ2hlciBFZHVjYXRpb246IDIzJSAobiA9IDUwNikNCg0KTm8gRm9ybWFsIEVkdWNhdGlvbjogMTElIChuID0gMjQyKQ0KDQpQcmltYXJ5IEVkdWNhdGlvbjogMzAlIChuID0gNjYwKQ0KDQpTZWNvbmRhcnkgRWR1Y2F0aW9uOiAzNiUgKG4gPSA3OTIpDQpUaGUgZWR1Y2F0aW9uIGxldmVscyB3aXRoaW4gdGhlIHNhbXBsZSB2YXJpZWQsIHdpdGggdGhlIGxhcmdlc3QgcHJvcG9ydGlvbiBoYXZpbmcgc2Vjb25kYXJ5IGVkdWNhdGlvbiAoMzYlKSwgZm9sbG93ZWQgYnkgcHJpbWFyeSBlZHVjYXRpb24gKDMwJSkuIEEgbm90YWJsZSBwcm9wb3J0aW9uICgyMyUpIGhhZCBhdHRhaW5lZCBoaWdoZXIgZWR1Y2F0aW9uLCB3aGlsZSAxMSUgaGFkIG5vIGZvcm1hbCBlZHVjYXRpb24uDQoNCk9jY3VwYXRpb25hbCBEaXN0cmlidXRpb246DQoNCkJ1c2luZXNzOiAyMSUgKG4gPSA0NjIpDQoNCkZhcm1lcjogMjglIChuID0gNjE3KQ0KDQpSZXRpcmVkOiAxMSUgKG4gPSAyNDIpDQoNClNlcnZpY2UgKGUuZy4sIHByb2Zlc3Npb25hbCB3b3JrKTogMzAlIChuID0gNjYwKQ0KDQpVbmVtcGxveWVkOiAxMCUgKG4gPSAyMjApDQpGYXJtZXJzIHJlcHJlc2VudGVkIHRoZSBsYXJnZXN0IG9jY3VwYXRpb25hbCBncm91cCAoMjglKSwgZm9sbG93ZWQgYnkgdGhvc2Ugd29ya2luZyBpbiBzZXJ2aWNlLXJlbGF0ZWQgam9icyAoMzAlKS4gQSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBzYW1wbGUgd2FzIGVpdGhlciBpbiBidXNpbmVzcyAoMjElKSBvciByZXRpcmVkICgxMSUpLCB3aGlsZSB1bmVtcGxveW1lbnQgd2FzIGxlc3MgY29tbW9uLCBhZmZlY3RpbmcgMTAlIG9mIHBhcnRpY2lwYW50cy4NCg0KSGVhbHRoIE1lYXN1cmVzOg0KDQpCb2R5IE1hc3MgSW5kZXggKEJNSSk6IFRoZSBtZWRpYW4gQk1JIHdhcyAyNS40IChJUVI6IDIxLjPigJMyOC4zKSwgd2hpY2ggZmFsbHMgd2l0aGluIHRoZSBvdmVyd2VpZ2h0IGNhdGVnb3J5IChCTUkg4omlIDI1KS4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBhIHN1YnN0YW50aWFsIHBvcnRpb24gb2YgdGhlIHNhbXBsZSBtYXkgaGF2ZSBoZWFsdGggcmlza3MgcmVsYXRlZCB0byBib2R5IHdlaWdodC4NCg0KQmxvb2QgUHJlc3N1cmU6DQoNClN5c3RvbGljIEJsb29kIFByZXNzdXJlIChTQlApOiBUaGUgbWVkaWFuIHN5c3RvbGljIEJQIHdhcyAxMzQgbW1IZyAoSVFSOiAxMTTigJMxNjUpLCB3aGljaCBpcyBjb25zaWRlcmVkIGVsZXZhdGVkLCBhcyBub3JtYWwgc3lzdG9saWMgQlAgaXMgZ2VuZXJhbGx5IDwgMTIwIG1tSGcuDQoNCkRpYXN0b2xpYyBCbG9vZCBQcmVzc3VyZSAoREJQKTogVGhlIG1lZGlhbiBkaWFzdG9saWMgQlAgd2FzIDkxIG1tSGcgKElRUjogNzbigJMxMDcpLCBhbHNvIGluZGljYXRpbmcgaHlwZXJ0ZW5zaW9uIChub3JtYWwgREJQIGlzIGdlbmVyYWxseSA8IDgwIG1tSGcpLg0KDQpQcmV2YWxlbmNlIG9mIENocm9uaWMgQ29uZGl0aW9uczoNCg0KRGlhYmV0ZXM6IDIzJSAobiA9IDUwNikgb2YgcGFydGljaXBhbnRzIHdlcmUgcmVwb3J0ZWQgdG8gaGF2ZSBkaWFiZXRlcywgc3VnZ2VzdGluZyBhIHN1YnN0YW50aWFsIGJ1cmRlbiBvZiB0aGUgZGlzZWFzZSB3aXRoaW4gdGhlIHBvcHVsYXRpb24uDQoNCkh5cGVydGVuc2lvbjogMzglIChuID0gODM2KSBvZiB0aGUgc2FtcGxlIGhhZCBoeXBlcnRlbnNpb24sIGluZGljYXRpbmcgdGhhdCBuZWFybHkgdHdvIGluIGZpdmUgcGFydGljaXBhbnRzIGhhZCBlbGV2YXRlZCBibG9vZCBwcmVzc3VyZSwgYSBzaWduaWZpY2FudCBoZWFsdGggY29uY2Vybi4NCg0KDQpgYGB7cn0NCm5jZCAlPiUNCiAgdGJsX3N1bW1hcnkoDQogICAgYnkgPSByZXNpZGVuY2UpDQpgYGANCg0KIyBJTlRFUlBSRVRBVElPTg0KVGhlIHN0dWR5IGluY2x1ZGVkIGEgdG90YWwgb2YgMiwyMDIgcGFydGljaXBhbnRzLCBjb21wcmlzaW5nIDEsMzMxIHJ1cmFsIHJlc2lkZW50cyBhbmQgODcxIHVyYmFuIHJlc2lkZW50cy4gQSBjb21wYXJpc29uIG9mIGRlbW9ncmFwaGljLCBzb2Npb2Vjb25vbWljLCBhbmQgaGVhbHRoLXJlbGF0ZWQgY2hhcmFjdGVyaXN0aWNzIGJldHdlZW4gdGhlIHR3byBncm91cHMgaXMgcHJlc2VudGVkIGJlbG93Lg0KDQpEZW1vZ3JhcGhpYyBDaGFyYWN0ZXJpc3RpY3MNCg0KVGhlIG1lZGlhbiBhZ2UgYW1vbmcgcnVyYWwgcGFydGljaXBhbnRzIHdhcyA1MSB5ZWFycyAoSVFSOiAzOOKAkzY5KSwgd2hpbGUgdGhhdCBvZiB1cmJhbiBwYXJ0aWNpcGFudHMgd2FzIDQ5IHllYXJzIChJUVI6IDM34oCTNjUpLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBydXJhbCBncm91cCB3YXMgc2xpZ2h0bHkgb2xkZXIgb24gYXZlcmFnZS4NCkluIHRlcm1zIG9mIHNleCBkaXN0cmlidXRpb24sIGZlbWFsZXMgY29uc3RpdHV0ZWQgNTYlIChuID0gNzQ0KSBvZiB0aGUgcnVyYWwgZ3JvdXAgYW5kIDUxJSAobiA9IDQ0NCkgb2YgdGhlIHVyYmFuIGdyb3VwLCB3aGVyZWFzIG1hbGVzIHJlcHJlc2VudGVkIDQ0JSAobiA9IDU4NykgYW5kIDQ5JSAobiA9IDQyNykgcmVzcGVjdGl2ZWx5LiBUaGlzIHJlZmxlY3RzIGEgc2xpZ2h0bHkgaGlnaGVyIHByb3BvcnRpb24gb2YgZmVtYWxlcyBhbW9uZyBydXJhbCBwYXJ0aWNpcGFudHMuDQoNCkVkdWNhdGlvbmFsIEF0dGFpbm1lbnQNCg0KRWR1Y2F0aW9uYWwgbGV2ZWxzIHZhcmllZCBiZXR3ZWVuIHRoZSB0d28gZ3JvdXBzLiBBbW9uZyBydXJhbCBwYXJ0aWNpcGFudHM6DQoNCjI1JSBoYWQgYXR0YWluZWQgaGlnaGVyIGVkdWNhdGlvbiwNCg0KOS44JSBoYWQgbm8gZm9ybWFsIGVkdWNhdGlvbiwNCg0KMjklIGhhZCBwcmltYXJ5IGVkdWNhdGlvbiwgYW5kDQoNCjM3JSBoYWQgc2Vjb25kYXJ5IGVkdWNhdGlvbi4NCg0KRm9yIHVyYmFuIHBhcnRpY2lwYW50czoNCg0KMjAlIGhhZCBoaWdoZXIgZWR1Y2F0aW9uLA0KDQoxNCUgaGFkIG5vIGZvcm1hbCBlZHVjYXRpb24sDQoNCjMyJSBoYWQgcHJpbWFyeSBlZHVjYXRpb24sIGFuZA0KDQozNCUgaGFkIHNlY29uZGFyeSBlZHVjYXRpb24uDQoNCldoaWxlIHRoZSBtYWpvcml0eSBvZiBib3RoIGdyb3VwcyBoYWQgc2Vjb25kYXJ5IGVkdWNhdGlvbiwgcnVyYWwgcGFydGljaXBhbnRzIHdlcmUgbW9yZSBsaWtlbHkgdG8gaGF2ZSBoaWdoZXIgZWR1Y2F0aW9uICgyNSUgdnMuIDIwJSksIHdoZXJlYXMgdXJiYW4gcGFydGljaXBhbnRzIGhhZCBhIHNsaWdodGx5IGhpZ2hlciBwcm9wb3J0aW9uIHdpdGhvdXQgZm9ybWFsIGVkdWNhdGlvbiAoMTQlIHZzLiA5LjglKS4gVGhlIGRpc3RyaWJ1dGlvbiBvZiBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgZWR1Y2F0aW9uIGxldmVscyB3YXMgcmVsYXRpdmVseSBzaW1pbGFyIGFjcm9zcyByZXNpZGVuY2UgY2F0ZWdvcmllcy4NCg0KT2NjdXBhdGlvbmFsIERpc3RyaWJ1dGlvbg0KDQpPY2N1cGF0aW9uYWwgcHJvZmlsZXMgc2hvd2VkIG5vdGFibGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBydXJhbCBhbmQgdXJiYW4gcmVzaWRlbnRzLg0KDQpBbW9uZyBydXJhbCBwYXJ0aWNpcGFudHMsIHRoZSBtb3N0IGNvbW1vbiBvY2N1cGF0aW9ucyB3ZXJlIHNlcnZpY2UgKDMyJSksIGZhcm1pbmcgKDI5JSksIGFuZCBidXNpbmVzcyAoMTUlKS4NCg0KQW1vbmcgdXJiYW4gcGFydGljaXBhbnRzLCBidXNpbmVzcyAoMzAlKSBhbmQgc2VydmljZSAoMjglKSBvY2N1cGF0aW9ucyBwcmVkb21pbmF0ZWQsIHdoaWxlIGZhcm1pbmcgd2FzIGxlc3MgY29tbW9uICgyNSUpLg0KDQpVbmVtcGxveW1lbnQgd2FzIGNvbnNpZGVyYWJseSBoaWdoZXIgaW4gcnVyYWwgYXJlYXMgKDE0JSkgdGhhbiBpbiB1cmJhbiBzZXR0aW5ncyAoNS43JSksIHN1Z2dlc3RpbmcgbGltaXRlZCBlbXBsb3ltZW50IG9wcG9ydHVuaXRpZXMgaW4gcnVyYWwgY29tbXVuaXRpZXMuIFRoZSBwcm9wb3J0aW9uIG9mIHJldGlyZWQgaW5kaXZpZHVhbHMgd2FzIHNpbWlsYXIgaW4gYm90aCBncm91cHMgKDExJSkuDQoNCkhlYWx0aCBhbmQgQ2xpbmljYWwgQ2hhcmFjdGVyaXN0aWNzDQoNClRoZSBtZWRpYW4gYm9keSBtYXNzIGluZGV4IChCTUkpIHdhcyBzbGlnaHRseSBoaWdoZXIgYW1vbmcgcnVyYWwgcGFydGljaXBhbnRzICgyNS41IGtnL23CsiwgSVFSOiAyMS4x4oCTMjguMykgY29tcGFyZWQgdG8gdXJiYW4gcGFydGljaXBhbnRzICgyNC45IGtnL23CsiwgSVFSOiAyMS454oCTMjguNCkuIEJvdGggbWVkaWFucyBmYWxsIHdpdGhpbiB0aGUgb3ZlcndlaWdodCByYW5nZSwgc3VnZ2VzdGluZyBhIGNvbXBhcmFibGUgcHJldmFsZW5jZSBvZiBvdmVyd2VpZ2h0IGluZGl2aWR1YWxzIGFjcm9zcyBsb2NhdGlvbnMuDQoNCkJsb29kIHByZXNzdXJlIG1lYXN1cmVzIGluZGljYXRlZCB0aGF0IHJ1cmFsIHBhcnRpY2lwYW50cyBoYWQgc29tZXdoYXQgaGlnaGVyIHN5c3RvbGljIGJsb29kIHByZXNzdXJlIChtZWRpYW46IDEzNiBtbUhnIHZzLiAxMzEgbW1IZykgYW5kIHNsaWdodGx5IGxvd2VyIGRpYXN0b2xpYyBibG9vZCBwcmVzc3VyZSAobWVkaWFuOiA5MSBtbUhnIHZzLiA5MyBtbUhnKSB0aGFuIHRoZWlyIHVyYmFuIGNvdW50ZXJwYXJ0cy4gQm90aCBncm91cHMsIGhvd2V2ZXIsIGRlbW9uc3RyYXRlZCBibG9vZCBwcmVzc3VyZSB2YWx1ZXMgY29uc2lzdGVudCB3aXRoIGVsZXZhdGVkIG9yIGh5cGVydGVuc2l2ZSBsZXZlbHMuDQoNClRoZSBwcmV2YWxlbmNlIG9mIGRpYWJldGVzIHdhcyAyNiUgYW1vbmcgcnVyYWwgcmVzaWRlbnRzIGFuZCAyMCUgYW1vbmcgdXJiYW4gcmVzaWRlbnRzLCBpbmRpY2F0aW5nIGEgc2xpZ2h0bHkgaGlnaGVyIGJ1cmRlbiBvZiBkaWFiZXRlcyBpbiBydXJhbCBhcmVhcy4gU2ltaWxhcmx5LCBoeXBlcnRlbnNpb24gd2FzIG1vcmUgY29tbW9uIGFtb25nIHJ1cmFsIHBhcnRpY2lwYW50cyAoNDElKSBjb21wYXJlZCB0byB1cmJhbiBwYXJ0aWNpcGFudHMgKDMzJSkuDQoNCiMgTXVsdGl2YXJpYWJsZSBMb2dpc3RpYyBSZWdyZXNzaW9uIEFuYWx5c2lzDQpgYGB7cn0NCm1vZGVsIDwtIGdsbSggZmFjdG9yKGh5cGVydGVuc2lvbikgfiBhZ2UgKyBzZXggKyBibWkgKyByZXNpZGVuY2UgKyBlZHVjYXRpb24gKyBvY2N1cGF0aW9uICsgZGlhYmV0ZXMsIGRhdGEgPSBuY2QsIGZhbWlseSA9IGJpbm9taWFsKQ0KdGJsX3JlZ3Jlc3Npb24obW9kZWwpDQpgYGANCg0KIyMgSU5URVJQUkVUQVRJT04NClRhYmxlIFggcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYSBtdWx0aXZhcmlhYmxlIGxvZ2lzdGljIHJlZ3Jlc3Npb24gbW9kZWwgYXNzZXNzaW5nIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGRlbW9ncmFwaGljLCBzb2Npb2Vjb25vbWljLCBhbmQgaGVhbHRoLXJlbGF0ZWQgZmFjdG9ycyBhbmQgdGhlIG91dGNvbWUgdmFyaWFibGUgKHVuc3BlY2lmaWVkKS4gVGhlIHRhYmxlIHJlcG9ydHMgdGhlIGxvZyBvZGRzIHJhdGlvcyAobG9nW09SXSksIHRoZWlyIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgYW5kIHAtdmFsdWVzLg0KDQpBZ2UgYW5kIFNleA0KDQpBZ2Ugd2FzIG5vdCBzaWduaWZpY2FudGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgb3V0Y29tZSAobG9nW09SXSA9IDAuMDA7IDk1JSBDSTog4oCTMC4wMiwgMC4wMjsgcCA9IDAuOCksIGluZGljYXRpbmcgdGhhdCB2YXJpYXRpb25zIGluIGFnZSBkaWQgbm90IG1lYW5pbmdmdWxseSBpbmZsdWVuY2UgdGhlIG9kZHMgb2YgdGhlIG91dGNvbWUuDQpTaW1pbGFybHksIHNleCBzaG93ZWQgbm8gc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBlZmZlY3QsIHdpdGggbWFsZXMgaGF2aW5nIHNsaWdodGx5IGhpZ2hlciBvZGRzIGNvbXBhcmVkIHRvIGZlbWFsZXMgKGxvZ1tPUl0gPSAwLjMwOyA5NSUgQ0k6IOKAkzAuMjcsIDAuODc7IHAgPSAwLjMpLCB0aG91Z2ggdGhlIHdpZGUgY29uZmlkZW5jZSBpbnRlcnZhbCBjcm9zc2luZyB6ZXJvIHN1Z2dlc3RzIG5vIG1lYW5pbmdmdWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHNleGVzLg0KDQpCb2R5IE1hc3MgSW5kZXggKEJNSSkNCg0KQk1JIHdhcyBhbHNvIG5vdCBzaWduaWZpY2FudGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgb3V0Y29tZSAobG9nW09SXSA9IOKAkzAuMDE7IDk1JSBDSTog4oCTMC4wNywgMC4wNDsgcCA9IDAuNikuIFRoaXMgaW1wbGllcyB0aGF0IHZhcmlhdGlvbnMgaW4gQk1JIGRpZCBub3QgY29udHJpYnV0ZSB0byBkaWZmZXJlbmNlcyBpbiB0aGUgbGlrZWxpaG9vZCBvZiB0aGUgb3V0Y29tZSBpbiB0aGlzIHNhbXBsZS4NCg0KUmVzaWRlbmNlDQoNClBhcnRpY2lwYW50cyBsaXZpbmcgaW4gdXJiYW4gYXJlYXMgaGFkIGxvd2VyIG9kZHMgb2YgdGhlIG91dGNvbWUgY29tcGFyZWQgdG8gdGhvc2UgaW4gcnVyYWwgYXJlYXMgKGxvZ1tPUl0gPSDigJMwLjQxOyA5NSUgQ0k6IOKAkzEuMCwgMC4xODsgcCA9IDAuMikuIEhvd2V2ZXIsIHRoaXMgYXNzb2NpYXRpb24gd2FzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LCBhcyB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBpbmNsdWRlcyB6ZXJvLg0KDQpFZHVjYXRpb24NCg0KUmVsYXRpdmUgdG8gcGFydGljaXBhbnRzIHdpdGggaGlnaGVyIGVkdWNhdGlvbiwgbm9uZSBvZiB0aGUgb3RoZXIgZWR1Y2F0aW9uYWwgY2F0ZWdvcmllcyBzaG93ZWQgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb25zIHdpdGggdGhlIG91dGNvbWU6DQoNCk5vIGZvcm1hbCBlZHVjYXRpb246IGxvZ1tPUl0gPSAwLjUyICg5NSUgQ0k6IOKAkzAuNDgsIDEuNTsgcCA9IDAuMykNCg0KUHJpbWFyeSBlZHVjYXRpb246IGxvZ1tPUl0gPSAwLjA1ICg5NSUgQ0k6IOKAkzAuNzIsIDAuODQ7IHAgPSAwLjkpDQoNClNlY29uZGFyeSBlZHVjYXRpb246IGxvZ1tPUl0gPSAwLjA5ICg5NSUgQ0k6IOKAkzAuNjYsIDAuODU7IHAgPSAwLjgpDQoNClRoZSBkaXJlY3Rpb24gb2YgdGhlIGNvZWZmaWNpZW50cyBzdWdnZXN0cyBzbGlnaHRseSBoaWdoZXIgb2RkcyBvZiB0aGUgb3V0Y29tZSBhbW9uZyB0aG9zZSB3aXRoIGxlc3MgZWR1Y2F0aW9uLCBidXQgdGhlIGxhY2sgb2Ygc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIGluZGljYXRlcyBubyBjbGVhciBldmlkZW5jZSBvZiBhbiBlZHVjYXRpb25hbCBlZmZlY3QuDQoNCk9jY3VwYXRpb24NCg0KQ29tcGFyZWQgdG8gaW5kaXZpZHVhbHMgZW5nYWdlZCBpbiBidXNpbmVzcywgbm9uZSBvZiB0aGUgb2NjdXBhdGlvbmFsIGNhdGVnb3JpZXMgc2hvd2VkIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb25zOg0KDQpGYXJtZXI6IGxvZ1tPUl0gPSDigJMwLjQxICg5NSUgQ0k6IOKAkzEuMiwgMC40MTsgcCA9IDAuMykNCg0KUmV0aXJlZDogbG9nW09SXSA9IOKAkzAuNTYgKDk1JSBDSTog4oCTMS43LCAwLjQ5OyBwID0gMC4zKQ0KDQpTZXJ2aWNlOiBsb2dbT1JdID0g4oCTMC4xMiAoOTUlIENJOiDigJMwLjkxLCAwLjY3OyBwID0gMC44KQ0KDQpVbmVtcGxveWVkOiBsb2dbT1JdID0g4oCTMC4yNiAoOTUlIENJOiDigJMxLjQsIDAuODA7IHAgPSAwLjYpDQoNCkFsdGhvdWdoIHNldmVyYWwgb2NjdXBhdGlvbnMgc2hvd2VkIG5lZ2F0aXZlIGNvZWZmaWNpZW50c+KAlHN1Z2dlc3Rpbmcgc2xpZ2h0bHkgcmVkdWNlZCBvZGRzIHJlbGF0aXZlIHRvIGJ1c2luZXNz4oCUdGhlIGRpZmZlcmVuY2VzIHdlcmUgbm90IHN0YXRpc3RpY2FsbHkgbWVhbmluZ2Z1bC4NCg0KRGlhYmV0ZXMgU3RhdHVzDQoNClBhcnRpY2lwYW50cyB3aXRoIGRpYWJldGVzIGhhZCBuZWFybHkgaWRlbnRpY2FsIG9kZHMgb2YgdGhlIG91dGNvbWUgY29tcGFyZWQgdG8gdGhvc2Ugd2l0aG91dCBkaWFiZXRlcyAobG9nW09SXSA9IDAuMDY7IDk1JSBDSTog4oCTMC42MSwgMC43MTsgcCA9IDAuOSksIGluZGljYXRpbmcgbm8gc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24uDQoNClN1bW1hcnkNCg0KT3ZlcmFsbCwgbm9uZSBvZiB0aGUgZXhhbWluZWQgcHJlZGljdG9ycyB3ZXJlIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnRseSBhc3NvY2lhdGVkIHdpdGggdGhlIG91dGNvbWUgdmFyaWFibGUgYXQgdGhlIDAuMDUgc2lnbmlmaWNhbmNlIGxldmVsLiBBbGwgcC12YWx1ZXMgZXhjZWVkZWQgMC4yLCBhbmQgYWxsIDk1JSBjb25maWRlbmNlIGludGVydmFscyBpbmNsdWRlZCB6ZXJvLCBzdWdnZXN0aW5nIHRoYXQgZGlmZmVyZW5jZXMgYnkgYWdlLCBzZXgsIEJNSSwgcmVzaWRlbmNlLCBlZHVjYXRpb24sIG9jY3VwYXRpb24sIG9yIGRpYWJldGVzIHN0YXR1cyB3ZXJlIG5vdCBtZWFuaW5nZnVsIGluIHRoaXMgbW9kZWwuDQoNClRoZXNlIHJlc3VsdHMgaW1wbHkgdGhhdCwgd2l0aGluIHRoaXMgc2FtcGxlLCB0aGUgb3V0Y29tZSBvZiBpbnRlcmVzdCBtYXkgYmUgaW5mbHVlbmNlZCBieSBmYWN0b3JzIG5vdCBpbmNsdWRlZCBpbiB0aGUgY3VycmVudCBhbmFseXNpcyBvciB0aGF0IHRoZSB0cnVlIGVmZmVjdHMgb2YgdGhlc2UgdmFyaWFibGVzIGFyZSBzbWFsbCBhbmQgc3RhdGlzdGljYWxseSBub24tc2lnbmlmaWNhbnQuDQoNCg0K