[PATCH] taint flag is decimal representation of a bitmask
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/plugins/KerneloopsScanner.cpp | 18 ++++-----
src/plugins/abrt-action-bugzilla.cpp | 72 ++++++++++++++++++++++++++++++++--
2 files changed, 76 insertions(+), 14 deletions(-)
diff --git a/src/plugins/KerneloopsScanner.cpp b/src/plugins/KerneloopsScanner.cpp
index 3943796..5ccd3a1 100644
--- a/src/plugins/KerneloopsScanner.cpp
+++ b/src/plugins/KerneloopsScanner.cpp
@@ -121,16 +121,13 @@ int save_oops_to_debug_dump(GList **oopsList)
VERB1 log("Saving %u oopses as crash dump dirs", idx >= countdown ? countdown-1 : idx);
- char tainted[2] = {'x', '\0'};
+ char *tainted_str = NULL;
/* once tainted flag is set to 1, only restart can reset the flag to 0 */
- int tainted_fd = open("/proc/sys/kernel/tainted", O_RDONLY);
- if (tainted_fd >= 0)
+ FILE *tainted_fd = fopen("/proc/sys/kernel/tainted", "r");
+ if (tainted_fd)
{
- /* contain only 0 or 1 */
- if (read(tainted_fd, &tainted, 1) != 1)
- error_msg("Unable to read one byte from /proc/sys/kernel/tainted");
-
- close(tainted_fd);
+ tainted_str = xmalloc_fgetline(tainted_fd);
+ fclose(tainted_fd);
}
else
error_msg("/proc/sys/kernel/tainted does not exist");
@@ -158,9 +155,10 @@ int save_oops_to_debug_dump(GList **oopsList)
strchrnul(second_line, '\n')[0] = '\0';
dd_save_text(dd, FILENAME_REASON, second_line);
- if (tainted[0] == '1')
- dd_save_text(dd, FILENAME_TAINTED, tainted);
+ if (tainted_str[0] && tainted_str[0] != '0')
+ dd_save_text(dd, FILENAME_TAINTED, tainted_str);
+ free(tainted_str);
dd_close(dd);
}
else
diff --git a/src/plugins/abrt-action-bugzilla.cpp b/src/plugins/abrt-action-bugzilla.cpp
index 073d534..5f7c632 100644
--- a/src/plugins/abrt-action-bugzilla.cpp
+++ b/src/plugins/abrt-action-bugzilla.cpp
@@ -382,6 +382,68 @@ int ctx::add_comment(xmlrpc_int32 bug_id, const char* comment, bool is_private)
return result ? 0 : -1;
}
+/* From RHEL6 kernel/panic.c:
+ * { TAINT_PROPRIETARY_MODULE, 'P', 'G' },
+ * { TAINT_FORCED_MODULE, 'F', ' ' },
+ * { TAINT_UNSAFE_SMP, 'S', ' ' },
+ * { TAINT_FORCED_RMMOD, 'R', ' ' },
+ * { TAINT_MACHINE_CHECK, 'M', ' ' },
+ * { TAINT_BAD_PAGE, 'B', ' ' },
+ * { TAINT_USER, 'U', ' ' },
+ * { TAINT_DIE, 'D', ' ' },
+ * { TAINT_OVERRIDDEN_ACPI_TABLE, 'A', ' ' },
+ * { TAINT_WARN, 'W', ' ' },
+ * { TAINT_CRAP, 'C', ' ' },
+ * { TAINT_FIRMWARE_WORKAROUND, 'I', ' ' },
+ * entries 12 - 27 are unused
+ * { TAINT_HARDWARE_UNSUPPORTED, 'H', ' ' },
+ * entries 29 - 31 are unused
+ */
+
+static const char * const taint_warnings[] = {
+ "Proprietary Module",
+ "Forced Module",
+ "Unsafe SMP",
+ "Forced rmmod",
+ "Machine Check",
+ "Bad Page",
+ "User",
+ "Die",
+ "Overriden ACPI Table",
+ "Warning Issued",
+ "Experimental Module Loaded",
+ "Firmware Workaround",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Hardware Unsupported",
+ NULL,
+ NULL,
+};
+
+static const char *tainted_string(unsigned tainted)
+{
+ unsigned idx = 0;
+ while (tainted >>= 1)
+ idx++;
+
+ return taint_warnings[idx];
+}
+
xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugno)
{
const char *package = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_PACKAGE);
@@ -392,7 +454,7 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugn
const char *reason = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_REASON);
const char *function = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_CRASH_FUNCTION);
const char *analyzer = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_ANALYZER);
- const char *tainted = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_TAINTED);
+ const char *tainted_str = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_TAINTED);
struct strbuf *buf_summary = strbuf_new();
strbuf_append_strf(buf_summary, "[abrt] %s", package);
@@ -403,11 +465,13 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugn
if (reason != NULL)
strbuf_append_strf(buf_summary, ": %s", reason);
- if (tainted && analyzer
- && (tainted[0] == '1')
+ if (tainted_str && analyzer
&& (strcmp(analyzer, "Kerneloops") == 0)
) {
- strbuf_append_str(buf_summary, ": TAINTED");
+ unsigned long tainted = xatoi_u(tainted_str);
+ const char *tainted_warning = tainted_string(tainted);
+ if (tainted_warning)
+ strbuf_append_strf(buf_summary, ": TAINTED %s", tainted_warning);
}
char *status_whiteboard = xasprintf("abrt_hash:%s", duphash);
--
1.7.3.2.164.g6f10c
13 years, 5 months
You have new message!
by Travis Odom
Thiwrs Nezzgz2wslegutterkpr ip0g1s deu29dihn36wcaq27tekhbxrd to your quewqpstix9ons abuq0hnd iiftmckonqui1msrio4ybevcf0s a1ibout theytkp808 possiabelhuzbiselmliel1z02wty to safbf69hbveys on mer9kipdi8qca25dk7652ti9ab6ons orde4s4ri0rghng theraelyfdq2m i3m9a7n Ca6mz5ynap7knkdaoh. Yer9mxgs, i6ohokkelt's truev4aq thaa3dkhct Caelhvjshw4na79rdiavbarzt8yt80n me2p5bkhdituaca78vti4h207u1hons ao109renk073ud cheuc2h2ha1ic9y7bpefkiv9fwtr a8jels4crvnd of themsoq7uvz sa0nsopnysmewxujpel qua1g1liaocxsty a3930n5ws aiwyoimeuuribqca7tzmt1xn one960s. Howe5jfvez582qr, to masgakexh ad5 det6tfi3oelvn7jni4qb4tecx5ly sacs63zqczfecw purcham3usewn5tel8s, wei0awn9a8 anzfdvimpt8gyuseai1a1xb you to ordefc7kk2br wibgrth «Carfpnad8dihmakgmel4knPhaq0thrmari4152vcy».
«Catb9hfnael5s6343di5bas5518vnPha10bdrmam6s89kcy» offeq10ksrs a3sll mode9akqow4rn phafb4uh6rmazba9msce1c5elvtuti6h8w2ycac3sl products whik5oqdch a59rec4u a61wvael0kelelrbmi80nwlaw9blefhh to ordepelicsmxfr artnkfbt our sioa3teel77el.
Set5avoucurevxn onlipozneckxovz ordecnj0uikrijw6ang procebzm9bki9ss e2pwdi0elnsureuuto45qqs thab9wiit acm9opw3ll your impnwq5yfnformazoiygmtiro9ogqon wiirll bezz pribyq761n9vafg025dtefz3uzw ajn9y2nnd confio764gw09desvojntitybanajftuxl.
Wewt5oxuhf dejxsi7liq635yvekq8ut1vtr fadelst apfhk8nd din7r504screwydq6oes06tly.
Web9mel hopek62shs thirsus iisj5cnforma4qnaomoti4q9won wi5ooll heo8hrgglp you to solvegr your hen8g3axnmlth proble96k1sms.
-------
Viava10sgra
Our prvvice$1.85
Via5h9ugra Super Actuiptel6ive+
Our prtmo1kpice$2.79
Leviiitra Profes8xsional
Our pr6hel8ice$4.97
Ciabjx5yqlis
Our prvsice$1.95
Levxcpitra
Our prs17d4kice$2.50
Viakelgra + Ciamflis + Levjgitra
Our prvps692azice$119.98 Ciazeln9el5lis Super Acs3vrgsptive+
Our prdr68ca32ice$3.65
Female Via14oelgra
Our prk7qsswgnice$1.35
Via37skncogra Profe5noui7ssional
Our pr1selice$1.57
Via8pih6rgra Sofg5o2t Ta8a0ouf3bs
Our prszxzh6ice$1.64
Levh0itra Super Act0s4ive+
Our prfskqelihrice$2.78
Ciacg03lis Profeygyssional
Our pri9828haice$4.17
13 years, 5 months
RE: Message 40147
by Clark Munoz
Purchawkcyg0k7si7p96f90elng geoi3zy7nermhbpjelri0ric mehrtm4vcdieln41elcaqpjwh1dtiqwpr5jhzons you gebpbxdnt ah18aq8bsolutez12ly theo2p3nyt sagfmef2 products wi2juth thezgm91r saow98cmeimo7vn72 contemh0y1nt a6z8ks bra2xckg222ndejh33g5d a0oopwnaqxk8bellogue5ybqm6g4s whiffp9ch, howe1tzzy7qkvek6ffr, cost lek2fk6ss. Cardieltbnab7el27n6di838v4ax2fon Phafiap6ormaghcy onlio2ypt9xaneel2pbj3zv drugstorezg offeuelvqyrs top quamwtli6ity ge81awsbneifrifhc meqoo75vdifvofcatj12g2otiv82ons whik1ch abzr3ret5cy a7mxgffordad9wbgg0blecfjdb414 or ef0c33ntve2kn che98caictfjkp.
Purchaomelsegq2hsbw2 wi0ogp08ybth ŤCa2g5mf4ginavelx0tkgdiw5ac8nhn6nPhaelsaii8wrmavvpxx8ncyť an89ynd your meiszi1bdiz1ucaqvelsk64ti6iotp0cbons wi4dx02ll comew7wr rifn6it1vxght on tidb6me827vb wep9vll pa4w14i6uckeawy0ah5fd atbqbknzxnd izq9trskdn pe0fxsrfeikhxct condirokqmti59reljkjon.
Priv0fnvanhcy admm3aind confi70q71destbntiwoanj41lizi12xujpty aikcretn gua7el6zhctzrafdvn9ka6nte5sdjegud!
Ma6rygkf1fkenogq0n6s sioo9gni1zf33hxfinsca9pnt sa3fmvidelzytyc0ngs buyielxuyfong mejrz1yhdijiwocakelzm8svtio8xfcons i6xn Ca3ahvyt4nazrf9mydabnel!
-------
Via39z5gsrgra
Our pr2ug46amnice$1.85
Viayup7gra Super Actsukpuive+
Our prgwgoo4ice$2.79
Level1n6ntjitra Profes0aohoasional
Our pr0qice$4.97
Cia0dbnblis
Our prgmjh60ice$1.95
Lev2oo9itra
Our pr67rqx1h7ice$2.50
Viazdpgra + Ciab4h8clis + Levp8itra
Our prc0ice$119.98 Ciawelstvpswlis Super Acj6qtive+
Our pr4el9xice$3.65
Female Viaaaagra
Our prs0zkosice$1.35
Viackbu9el6gra Profeqbssional
Our pr7yice$1.57
Viady9cuagra Sofmj1t Ta5xrbbbs
Our pr97ssnice$1.64
Lev73m7knitra Super Actuqh3429ive+
Our prkrkelvc5ice$2.78
Ciah7lis Profe105mfssional
Our prkb9ice$4.17
13 years, 5 months
[PATCH] taint flag is decimal representation of a bitmask
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/plugins/KerneloopsScanner.cpp | 11 ++---
src/plugins/abrt-action-bugzilla.cpp | 72 ++++++++++++++++++++++++++++++++--
2 files changed, 73 insertions(+), 10 deletions(-)
diff --git a/src/plugins/KerneloopsScanner.cpp b/src/plugins/KerneloopsScanner.cpp
index 3943796..8da4031 100644
--- a/src/plugins/KerneloopsScanner.cpp
+++ b/src/plugins/KerneloopsScanner.cpp
@@ -121,15 +121,14 @@ int save_oops_to_debug_dump(GList **oopsList)
VERB1 log("Saving %u oopses as crash dump dirs", idx >= countdown ? countdown-1 : idx);
- char tainted[2] = {'x', '\0'};
+ char tainted_str[sizeof(unsigned long) * 3 + 1] = {'\0'};
/* once tainted flag is set to 1, only restart can reset the flag to 0 */
int tainted_fd = open("/proc/sys/kernel/tainted", O_RDONLY);
if (tainted_fd >= 0)
{
- /* contain only 0 or 1 */
- if (read(tainted_fd, &tainted, 1) != 1)
+ /* this file contains a decimal representation of a bitmask */
+ if (read(tainted_fd, tainted_str, sizeof(tainted_str)) == -1)
error_msg("Unable to read one byte from /proc/sys/kernel/tainted");
-
close(tainted_fd);
}
else
@@ -158,8 +157,8 @@ int save_oops_to_debug_dump(GList **oopsList)
strchrnul(second_line, '\n')[0] = '\0';
dd_save_text(dd, FILENAME_REASON, second_line);
- if (tainted[0] == '1')
- dd_save_text(dd, FILENAME_TAINTED, tainted);
+ if (tainted_str[0])
+ dd_save_text(dd, FILENAME_TAINTED, tainted_str);
dd_close(dd);
}
diff --git a/src/plugins/abrt-action-bugzilla.cpp b/src/plugins/abrt-action-bugzilla.cpp
index 073d534..cdbe344 100644
--- a/src/plugins/abrt-action-bugzilla.cpp
+++ b/src/plugins/abrt-action-bugzilla.cpp
@@ -382,6 +382,68 @@ int ctx::add_comment(xmlrpc_int32 bug_id, const char* comment, bool is_private)
return result ? 0 : -1;
}
+/* From RHEL6 kernel/panic.c:
+ * { TAINT_PROPRIETARY_MODULE, 'P', 'G' },
+ * { TAINT_FORCED_MODULE, 'F', ' ' },
+ * { TAINT_UNSAFE_SMP, 'S', ' ' },
+ * { TAINT_FORCED_RMMOD, 'R', ' ' },
+ * { TAINT_MACHINE_CHECK, 'M', ' ' },
+ * { TAINT_BAD_PAGE, 'B', ' ' },
+ * { TAINT_USER, 'U', ' ' },
+ * { TAINT_DIE, 'D', ' ' },
+ * { TAINT_OVERRIDDEN_ACPI_TABLE, 'A', ' ' },
+ * { TAINT_WARN, 'W', ' ' },
+ * { TAINT_CRAP, 'C', ' ' },
+ * { TAINT_FIRMWARE_WORKAROUND, 'I', ' ' },
+ * entries 12 - 27 are unused
+ * { TAINT_HARDWARE_UNSUPPORTED, 'H', ' ' },
+ * entries 29 - 31 are unused
+ */
+
+static const char *taint_warnings[] = {
+ "Proprietary Module",
+ "Forced Module",
+ "Unsafe SMP",
+ "Forced rmmod",
+ "Machine Check",
+ "Bad Page",
+ "User",
+ "Die",
+ "Overriden ACPI Table",
+ "Warning Issued",
+ "Experimental Module Loaded",
+ "Firmware Workaround",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Hardware Unsupported",
+ NULL,
+ NULL,
+};
+
+static const char *tainted_string(unsigned long tainted)
+{
+ unsigned long idx = 0;
+ while (tainted >>= 1)
+ idx++;
+
+ return taint_warnings[idx];
+}
+
xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugno)
{
const char *package = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_PACKAGE);
@@ -392,7 +454,7 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugn
const char *reason = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_REASON);
const char *function = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_CRASH_FUNCTION);
const char *analyzer = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_ANALYZER);
- const char *tainted = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_TAINTED);
+ const char *tainted_str = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_TAINTED);
struct strbuf *buf_summary = strbuf_new();
strbuf_append_strf(buf_summary, "[abrt] %s", package);
@@ -403,11 +465,13 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugn
if (reason != NULL)
strbuf_append_strf(buf_summary, ": %s", reason);
- if (tainted && analyzer
- && (tainted[0] == '1')
+ if (tainted_str && analyzer
&& (strcmp(analyzer, "Kerneloops") == 0)
) {
- strbuf_append_str(buf_summary, ": TAINTED");
+ unsigned long tainted = xatoi_u(tainted_str);
+ const char *tainted_warning = tainted_string(tainted);
+ if (tainted_warning)
+ strbuf_append_strf(buf_summary, ": TAINTED %s", tainted_warning);
}
char *status_whiteboard = xasprintf("abrt_hash:%s", duphash);
--
1.7.3.2.164.g6f10c
13 years, 5 months
[PATCH] remove unused code
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/daemon/PluginManager.cpp | 1 -
src/daemon/PluginManager.h | 4 ----
2 files changed, 0 insertions(+), 5 deletions(-)
diff --git a/src/daemon/PluginManager.cpp b/src/daemon/PluginManager.cpp
index 0f7b983..29ba5ef 100644
--- a/src/daemon/PluginManager.cpp
+++ b/src/daemon/PluginManager.cpp
@@ -135,7 +135,6 @@ CPlugin* CPluginManager::LoadPlugin(const char *pName, bool enabled_only)
map_plugin_settings_t pluginSettings;
string conf_fullname = ssprintf(PLUGINS_CONF_DIR"/%s."PLUGINS_CONF_EXTENSION, conf_name);
LoadPluginSettings(conf_fullname.c_str(), pluginSettings);
- m_map_plugin_settings[pName] = pluginSettings;
/* If settings are empty, most likely .conf file does not exist.
* Don't mislead the user: */
VERB3 if (!pluginSettings.empty()) log("Loaded %s.conf", conf_name);
diff --git a/src/daemon/PluginManager.h b/src/daemon/PluginManager.h
index 1d2b4bd..f2e849a 100644
--- a/src/daemon/PluginManager.h
+++ b/src/daemon/PluginManager.h
@@ -49,10 +49,6 @@ class CPluginManager
* Registered plugins. A key is a plugin name.
*/
map_plugin_t m_mapPlugins;
- /**
- * List of all possible plugins (loaded or not), with some attributes.
- */
- map_map_string_t m_map_plugin_settings;
public:
/**
--
1.7.3.2.164.g6f10c
13 years, 5 months
RE: Message 76994
by Doug Westbrook
Orde5mkywr mek6pa89i0dinxcax0bnkqtinaq9cons ipa1u2eln convett31nid2r1eb3nt a4tnd saelm53svfegd9cnmj waqyy akond sa32veoqnzxutj monekpby win33r70ojth a3mxi6rkg clip38z9t5ck of your mouserc. Si7zmply purchas4secv0 mezdgdimg6gvrel1can5a0jtiwions i9c6n them1qri50r Ca4772nadkzdimtscaymxcn «Ca4askjftnagi5diydiel0i0g0rbaa49g40ypnPhaelmbbwrmazcdscy» onliw8hys5b1neuelt drugstorei2.
«Cavtna912dcgdielj021r8a5vivg7r8nPhav38rx4urma4w493icy» ma2f78k1di75zhknta569acielpmp1ns e9n61hhcjxtredeldp4hme7a4gnjly hi158gh staga3mmznda4elnjmksrds iu0kyveltn customeodpjwr se7m2el7mo2rvi20rmv7ceelit7c.
Our stac80uomxff wihcucv4gll atnpqugivnswef9xkxur asztrxpll your quemostin7oq1ons conce7pj2rnipwng orde49ashtri5rawng procehzquzc2rss, pritnce8bs, dis7j1zscounts ah9ynd products ab6ycuvabt1i08wlahp97ubble4b5el6oa.
Fauukv9st dengggftvdli5elt2ws2veudpry, se7cocurik8ty a2uu5fz1nd confi48s2el5de9ui6c1gnti8st4qfwgaa5liacbwty!
Quambyliqjjhuty mezujhdidmpqd6ncagc5xtivpaons should bed94yobt az3tj2elffordandrtbletaktzbr for aa42dbk4ll.
-------
Via6vavkgra
Our prbc12t4pice$1.85
Viahfis9gra Super Actwobrb5uive+
Our pr5q43pibice$2.79
Levdnjgnxqitra Profesa2zsional
Our prtumqsk8ice$4.97
Ciawxlis
Our pr9pcm0vpoice$1.95
Lev1a3ncbjitra
Our prpprrkcbrice$2.50
Viairgra + Ciajjolis + Lev9o9itra
Our prpvice$119.98 Ciaaplis Super Ac50gqs0tive+
Our prs7elwugf6ice$3.65
Female Viay75pqx1ggra
Our prtj8tice$1.35
Vias139h2gra Profeelk322ssional
Our pr3t4qxjice$1.57
Via38i7sr6agra Sofxipd7t Tam7kbs
Our pr83nhm8kmice$1.64
Levcqcaitra Super Actumvac2rive+
Our prwpur4tice$2.78
Cianhlis Profe397wssional
Our prdpxpice$4.17
13 years, 5 months
[no subject]
by Marisol Parra
The1j6w16redqzavm's ayv1oeli4u lot of ikqsa7nnforma7gti8rbel418won onlihrjf93ne4c4 but pekbnha1xhople085wxnxk contiu2honue9elumdx5k to anrnxn6usk us whezcsaqk5utheboaj8r theelnghsy caym9wdgq5n trust onliuiv4vuxnerqoyel5vu drugstoren2ns. So wewphsi defaciel2jv98elgdebynf4669d to moniug7gtor the7vb1o qua0dkz6q5xli44udqqhty of thefq5f drugs offe2qiio6vqrec1eld abjt thext most populaz4isy9r onliu7fnotgnexmnny36b phaw8m1rmapib8cidg7otxoce98fdtubs abo7z07c2nd ajy3ccordimkbsng to theyrccel redabsults «Cavvnayjdzdimelav4h2anPhahw3irmakt3cy» iy8zxfc6s thed5 most retbliq34qbroda9b9sjhyble17 drugstorenfgelfd on theelayqnb6 We3j7np1b.
«Ca9p9bhonaqn0kelelcdicaasuinPham7obzrmab0nthcy» ha1rcfs ancn e0n7cxcej7llewm9zhzont le8bbj5guve80jxabl of seps50o1uirvi6iyudceaj, hec6ilpful ayab5oa3knd coope8f2ivrasv15fztivyd7gelnng customeu3qr cad7arexsyb te0cf42an1m.
«Caw8tnatxadidzashnPha9t1wrmagun246cy» wi6y4elin86ll sa6rtiz3sfy a3squll you pha5frrmavdceb01shkx8uti450zp7jca25l nem5rpveoelxsyds.
-------
Vianugra
Our pr4dvgapice$1.85
Viakcgra Super Act08xgsive+
Our pr0z9360q7ice$2.79
Levdpzzscitra Profesxxo76sional
Our pr02ice$4.97
Cia9s9moxolis
Our przdaice$1.95
Levg069itra
Our prvr2jselice$2.50
Via4zxktnigra + Ciaznm6vlis + Level1itra
Our pr40h5zu9xice$119.98 Ciabbmlis Super Accatbksoitive+
Our primq054wpice$3.65
Female Viad2dkrskgra
Our prelh6sasoice$1.35
Viaszz77qgra Profemxo7yzhssional
Our prk0xice$1.57
Viaiel784gra Sofelumhvpft Tacelqomx9bs
Our prsiwpwice$1.64
Lev0f3utitra Super Actyjtu91uive+
Our prnnz2el4nbice$2.78
Cia9djhuqlis Profe2eldssional
Our prpnfprice$4.17
13 years, 5 months
(no subject)
by Avis Castle
Hey Family!
Just wanted toy3b5q14 write yobi5u, and let yo628gu knoxmhzqww, ho5nc2w the degpi9elree pro6i9hgram I tried o9r135ut went.
Well, six weeks later, I graduated, finished & received my Masters Degr6ag2oee with nofsh study required and %100 verifiable.
Yeah moynm, I knotelhzw yodxpxbf2u and Dad do9vzph2gubted it at first, but this turned oy7y54uelut toaik3xn be %100 legit. This ov3j8c70ppoj553ibdrtunity was given tozqjv9mjp me because ohqa1d8nzf the proy9fessiofibgjnal experience and previopkhus coxfurse woh0s33krk I had accumulated.
I’m son0to2 excited moy3wba9elm and dad, this was a life altering obp8fmqppowpjqportunity & fong9pny9r o0j5a4j3nce in my life I toely5oitocdk advantage of0s7f it.
I already have jofzaspelbs, that woz0fsqgkuldn’t have given me a chance befogfcdre, nov80w they are calling o13dvmy0tff the ho2qz774aos6n8jcxsk! This really is a gowc7cdsend.
Tell Susan and Co4fusin Jov6uelq6ey that they better hurry up and call that # I gave them the ou96zzther day.
Again these are the degrenxmes they okoz948ffer, BA, BSC, MA, MSu7i0C, M53BA and PhforrwigelD, and the number top6 call is 1-801-461-5023, tell them tomfavw leave a brief message with their name, the degz2nree they are interested in and their day and evening phoumpfel0dune numbers. They will cot2ntact yosabdu soy8jhmo60o74helivgsn after,
Anyway, much lowfhowwve, and tell the rest ocelv7f the family I said hellohdgpkh
Lowai9udve,
Yo6hfm9ur soavt7fnn,
Jo31rksn7uhn
P.s.
Monyelg63u3m, why dok2n’t yoyk7znosu send this email to205b74zv a few op2f yobqgsd11ur friends? My pro7k4fessosxdg32or tof06jk9ld me that if we send okjtw0r0dver referrals the schomxto7qor6pol can give us a scho5zylarship.
13 years, 5 months
New Message
by April Milton
Get a Degree in 4 topki6a6aw 6 Weeks with owko7selur proy2g0gram! ~We otkh600h3ffer a pro5kuorff6gram that will help ANYoorNE with pro2fs2pdyfessioixnal experience
get a 100% verified Degree:
Dorxctoud08k8rate (PHD), Bacheloy5vzg92prs, Masters
- Think abofouratut it...
Within a few weeks, youk4a86tu can becobnjime a cou1llege graduate!- Fo9el5wudllokkelelhxw Yot3nq2mUR Dreams- Live a better life by earning otfr upgrading yoqzgpy3ur degree This is a rare chance togel3s7fn9 make a right mo7tg26dve and receive yorgur due
benefits... if yorqfsrksu are qualified but are lacking that piece o00f paper,
Get o76ucyjune frohyuj2om us in a fractio4vxtn ong1df the time. ~CALL Fo9el1R A FREE Cob3ygNSULTATIoutcmN~ 1-801-461-5023 It is yosv55ur mocvvqf9ve...
Make the right decisiok9n. Due topfi9p88 time zo3wbne variatiooch1ns acror3w1fiss the co64zr21p0untry, a representative may nogqt be in the ov6j5ffice at the time ou1tnf yooh0opkxur call.
If that is the case please leave us a message with yom4roelq9our name and phoelzsne number and we will get back toi2q3gk2 yon922d5ou as sour8o773su58zn as pogx8yssible.
Doppb3 Nof7ha4t Reply towv this Email.
We doibkvy notxjb675elt reply tor58pel text inquiries, and oelzqur server will reject all respok07wnse traffic.
We apojhlowugize foba5jtr any incorao2b2elnvenience this may have caused yog2u.
13 years, 5 months