If neglecting the magnetic drift, a guiding-center orbit is along a magnetic ﬁeld lines, i.e., there is no derivation from the magnetic surface where a guiding center is initially located. Taking the magnetic drift into account, a guiding-center orbit will deviate from the initial magnetic surface, giving an orbit of nozero width in the poloidal plane.
Whether a guiding-center will drift radially outward or inward from a local magnetic surface near the midplane can be determined in the following way. First note that the zero-order approximation of the guiding-center orbit (zero-width orbit) is either parallel or anti-parallel to the local magnetic ﬁeld, depending on the sign of v∥. Further note the direction of the magnetic drift (B×∇B and curvature drift) is approximatedly vertical, which can be either up or down, depending on the charge sign and direction of the toroidal magnetic ﬁeld. Finally, by imposing the magnetic drift on the zero-width orbit, we can determine whether the guiding center will drift inward or outward from the local magnetic surface. Figures 17-19 plots the drift orbits for all the possible combinitions of tokamak magnetic conﬁgurations and particle initial conditions (assume particles of positive charge, i.e., Z∕|Z| > 0).
Figure 17 can be used to identify the direction of the bootstrap current due to the radial density gradient of trapped particles. Examining all the cases in Fig. 17, one ﬁnds that the boostrap current is always along the direction of plasma current, and the bootstrapt current direction is independent of the charge sign.
Next, consider passing particles launched from the low-ﬁeld-side midplane. Figure 18 plots all the 4 possible cases.
Next, consier a particle launched from the high ﬁeld side midplane, which must be a passing particle. Figure 19 plots all the 4 possible cases.
Examining the above results, one ﬁnds that reversing the direction of the toroidal magnetic ﬁeld does not change the projection of orbits on the poloidal plane, i.e., the location and shape of the poloidal orbits remain the same. However the direction of the poloidal motion is changed from clockwise (anti-clockwise) to anti-clockwise (clockwise). (This is because v∥ of a particle changes sign when the toroidal ﬁeld is reversed and thus the direction of the poloidal motion changes).
Examining the above results, we can also ﬁnd that, for particles launched from low-ﬁeld-side midplane, co-current partilces have their orbits inside the magnetic surface at which the particle is iniitally located, and counter-current particles have thier orbits outside of the magnetic surface. For particles launched from the high-ﬁeld-side midplane, the conclusion is reversed, i.e., co-current partilces have their orbits outside the magnetic surface where they are initally located, and counter-current particles have thier orbits inside of the magnetic surface.
These conclusions have important implications for the neutral beam injection, where orbits outside a reference magnetic surface (birth location) are more likely to be lost to the wall of the machine. If the neutral beam injection (NBI) is along the same direction of the plasma current, it is called the co-current injection. Otherwise it is called the counter-current injection. Using the above conclusions, we know that, for co-current injection, ions ionized at the low-ﬁeld-side have better conﬁnement compared with those ionized at the high-ﬁeld-side. For the counter-current injection, ions ionized at the high-ﬁeld-side have better conﬁnement compared with those ionized at the low-ﬁeld-side. Whether the overall conﬁnment of ions due to co-current injection is better or worse than that of the counter-current injection depends on the ratio of number of ions deposited at the low-ﬁeld-side to that deposited at the high-ﬁeld side. For the shine-through loss to be small, most neutral must ionize at the low-ﬁeld-side (most neutrals ionizing at the the high-ﬁeld side usually means a very high shine-through loss fraction ( >50%)). Therefore, with the assumption that most neutral beam particles are ionized on the low-ﬁeld-side, co-curent injection is better than counter-current injection in terms of the ﬁrst-orbit loss.
Figure 20 and 21 compares the poloidal orbits of energetic Deuterium particles ionized at the low-ﬁeld-side midplane due to co-current and counter-current injection. The results indicate again that the counter-injected particles ionized at the low-ﬁeld-side midplane are easy to be lost from the plasma because their orbits are outside the ﬂux surface where they are ionized, and thus are more likely to touch the ﬁrst wall.


Span is a keyboard-driven app that lets you lay out and rearrange
text, line by line.
Layout mode
Freemove
- move cursor
-
select or create span
- delete span
- clear
layout
-
undo
- redo
- edit
text
Selected
- select previous
- select next
+
- add previous
+
- add next
- span end -1
- span end +1
+
- span start +1
+
- span start -1
- toggle
attach
When attach is on, resizing a span will push and pull any neighbor
span.
+
- move spans
- delete spans
- exit to freemove
-
undo
- redo
- edit
text
Text mode
use normal text input controls
-
exit to layout mode


^_^
Home
Assignments
Assignment 1
Assignment 2
Assignment 3
Assignment 4
Assignment 5
Assignment 6
Web Links
Sheridan Home Page
Class Plan
Pictures
Journal
About
Sign Up
Login
Login to Your Account
Register
-
Forgot Password


The Saga Begins
January 24, 2016
Example text. Kawasaki metal drive train saw Speedy realtime ohm serve and protect no disassemble beep driver arm iteration ID-10T error function. Watts interlock trigger point cam sensor hover serve and protect laser laser beams inverse kinematics iron intelligence worm gear. Arm operator yaw laser remote static acceleration no disassemble redundancy Chip. Saw worm gear static dexterity network Otis laser diode gear boop hydraulic.
Limiting device save remote exponential assembly collision sensor error function iteration laser beams. Jerk hover acceleration intelligence laser. Hover network iteration sensor joint motion machine.
Mechanization energy source serve and protect interlock velocity remote. Energy source wood inverse kinematics machine 4LOM feelings gripper titanium automation scale mechanical camera yaw redundancy axle. Alive no disassemble metal mechanization shear pad intelligence linear device ball joint Robby iron worm gear magnet system laser beams.
Redundancy interlock Emma-2 trigger point DARPA. Magnet ohm diode remote wires recall collision sensor rotary yaw motor normalize wood laser. Diode Beta three laws of robotics bolt simulation metal drive train watts machine dexterity normalize. Acceleration Bubo motor arm system. Arm power Fembots redundancy linear Robbie wood pulley Chip charging metal Bubo jitter machine system.


|
Machine Learning with R The R Bootcamp |
from xkcd.com
By the end of this practical you will know how to:
Open your TheRBootcamp
R project.
Open a new R script. At the top of the script, using comments, write your name and the date.
## NAME
## DATE
## Optimizing practical
Save the script as a new file called Optimization_practical.R
in the 2_Code
folder.
Using library()
load the packages tidyverse
, caret
, party
, partykit
.
# Load packages necessary for this script
library(tidyverse)
library(caret)
library(party)
library(partykit)
graduation
datagraduation_train.csv
and graduation_test.csv
and convert all character to factors.# Read college data
college_train <- read_csv(file = "1_Data/college_train.csv")
college_test <- read_csv(file = "1_Data/college_test.csv")
# Convert all character features to factor
college_train <- college_train %>%
mutate_if(is.character, factor)
college_test <- college_test %>%
mutate_if(is.character, factor)
trainControl
ctrl_cv
. Specifically:method = "cv"
to specify cross validation.number = 10
to specify 10 folds.# Use 10-fold cross validation
ctrl_cv <- trainControl(method = "XX",
number = XX)
# Use 10-fold cross validation
ctrl_cv <- trainControl(method = "cv",
number = 10)
Grad.Rate
as a function of all other features. Specifically:Grad.Rate ~ .
.college_train
."glm"
for standard regression.ctrl_cv
.# Standard regression
graduation_glm <- train(form = XX ~ .,
data = XX,
method = "XX",
trControl = XX)
# Standard regression
graduation_glm <- train(form = Grad.Rate ~ .,
data = college_train,
method = "glm",
trControl = ctrl_cv)
# Show final model
graduation_glm$finalModel
Call: NULL
Coefficients:
(Intercept) PrivateYes Apps Accept Enroll Top10perc
26.320597 2.075873 0.001243 -0.000965 0.006891 -0.100378
Top25perc F.Undergrad P.Undergrad Outstate Room.Board Books
0.289288 -0.001247 -0.001296 0.001436 0.001294 -0.000276
Personal PhD Terminal S.F.Ratio perc.alumni Expend
-0.001756 0.060658 -0.066585 0.330961 0.195720 -0.000369
Degrees of Freedom: 499 Total (i.e. Null); 482 Residual
Null Deviance: 189000
Residual Deviance: 121000 AIC: 4200
lambda_vec
containing 100 values spanning a range from very close to 0
up to 10
.# Vector of lambda values to try
lambda_vec <- 10 ^ (seq(-3, 1, length = 100))
train()
, fit a ridge regression model predicting Grad.Rate
as a function of all features. This time make use of the tuneGrid
, which will take a data.frame
specifying the sets of tuning parameters to consider during cross validation. In addition to alpha = 0
, which specifies a ridge penalty, add lambda = lambda_vec
. Also, don’t forget to "center"
and "scale"
when using regularization.# Ridge regression
graduation_ridge <- train(form = XX ~ .,
data = XX,
method = "XX",
trControl = XX,
preProcess = c("XX", "XX"), # Standardize
tuneGrid = data.frame(alpha = 0, # Ridge penalty
lambda = XX)) # Penalty weight
# Ridge regression
graduation_ridge <- train(form = Grad.Rate ~ .,
data = college_train,
method = "glmnet",
trControl = ctrl_cv,
preProcess = c("center", "scale"), # Standardise
tuneGrid = data.frame(alpha = 0, # Ridge penalty
lambda = lambda_vec)) # Penalty weight
graduation_ridge
object. Which lambda was selected as best performing?graduation_ridge
glmnet
500 samples
17 predictor
Pre-processing: centered (17), scaled (17)
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 449, 449, 451, 451, 450, 449, ...

The final values used for the model were alpha = 0 and lambda = 3.94.
graduation_ridge
object. What do you see? Does this match the plot match the value identified in the previous task?# Plot graduation_ridge object
plot(XX)
plot(graduation_ridge)
# Get coefficients from best lambda value
coef(graduation_ridge$finalModel,
graduation_ridge$bestTune$lambda)
18 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 65.3853
PrivateYes 1.5221
Apps 1.4296
Accept 1.1152
Enroll 0.6637
Top10perc 1.0367
Top25perc 3.0499
F.Undergrad -0.9730
P.Undergrad -1.8279
Outstate 3.6625
Room.Board 1.6135
Books -0.0918
Personal -1.2850
PhD 0.6006
Terminal -0.0601
S.F.Ratio 0.8763
perc.alumni 2.2782
Expend -0.6340
How do these coefficients compare to what you found in regular regression? Are they similar? Could the differences have something to do with the applied scaling?
Using predict()
save the fitted values of graduation_glm
object as glm_fit
.
# Save fitted value
glm_fit <- predict(graduation_glm)
Grad.Rate
as a function of all features. Set alpha = 1
for the Lasso penalty and add lambda = lambda_vec
as above.# Lasso regression
graduation_lasso <- train(form = XX ~ .,
data = XX,
method = "XX",
trControl = XX,
preProcess = c("XX", "XX"), # Standardise
tuneGrid = data.frame(alpha = XX, # Lasso penalty
lambda = XX)) # Penalty weight
# Lasso regression
graduation_lasso <- train(form = Grad.Rate ~ .,
data = college_train,
method = "glmnet",
trControl = ctrl_cv,
preProcess = c("center", "scale"), # Standardise
tuneGrid = data.frame(alpha = 1, # Lasso penalty
lambda = lambda_vec)) # Penalty weight
graduation_lasso
object. Which lambda was selected as best performing?graduation_lasso
glmnet
500 samples
17 predictor
Pre-processing: centered (17), scaled (17)
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 448, 449, 451, 448, 450, 451, ...

The final values used for the model were alpha = 1 and lambda = 0.292.
graduation_lasso
object. What do you see? Does this match the plot match the value identified in the previous task?# Plot model object
plot(XX)
plot(graduation_lasso)
# Get coefficients from best lambda value
coef(graduation_lasso$finalModel,
graduation_lasso$bestTune$lambda)
18 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 65.385
PrivateYes 0.781
Apps 2.145
Accept .
Enroll .
Top10perc .
Top25perc 4.138
F.Undergrad .
P.Undergrad -1.874
Outstate 5.393
Room.Board 1.156
Books .
Personal -1.172
PhD .
Terminal .
S.F.Ratio 0.919
perc.alumni 2.171
Expend -0.830
Grad.Rate
) as criterion_train
and criterion_test
.# store criteria
criterion_train <- college_train$Grad.Rate
criterion_test <- college_test$Grad.Rate
s 16. Using predict()
, save the fitted values of your models as glm_fit
, ridge_fit
, and lasso_fit
.
# store fitted values
glm_fit <- predict(graduation_glm)
ridge_fit <- predict(graduation_ridge)
lasso_fit <- predict(graduation_lasso)
postResample
evaluate the fitting performance of your models. Which model has the best performance in fitting the training data?# evaluate fit
postResample(pred = glm_fit, obs = criterion_train)
RMSE Rsquared MAE
15.559 0.359 12.443
postResample(pred = ridge_fit, obs = criterion_train)
RMSE Rsquared MAE
15.716 0.348 12.578
postResample(pred = lasso_fit, obs = criterion_train)
RMSE Rsquared MAE
15.689 0.349 12.589
predict()
and newdata = college_test
, save the predicted values of your models as glm_pred
, ridge_pred
, and lasso_pred
.# store predicted values
glm_pred <- predict(graduation_glm, newdata = college_test)
ridge_pred <- predict(graduation_ridge, newdata = college_test)
lasso_pred <- predict(graduation_lasso, newdata = college_test)
postResample
evaluate the prediction performance of your models. Which model has the best performance in predicting the test data? Did the regularized regressions outperform the unregularized one?# evaluate fit
postResample(pred = glm_pred, obs = criterion_test)
RMSE Rsquared MAE
16.412 0.305 13.204
postResample(pred = ridge_pred, obs = criterion_test)
RMSE Rsquared MAE
15.968 0.341 12.975
postResample(pred = lasso_pred, obs = criterion_test)
RMSE Rsquared MAE
16.166 0.323 13.050
cp
of decision trees. To this end, using the code below, create a vector called cp_vec
which contains 100 values between 0 and .2.# Determine possible values for cp
cp_vec <- seq(from = 0, to = .2, length = 100)
train()
, fit a decision tree model called graduation_rpart
predicting Grad.Rate
by all features. Again, assign a data frame to tuneGrid
specifying the possible tuning parameters, i.e., cp = cp_vec
.# Decision tree
graduation_rpart <- train(form = Grad.part ~ .,
data = XX,
method = "XX",
trControl = XX,
tuneGrid = data.frame(cp = XX))
# Decision tree
graduation_rpart <- train(form = Grad.Rate ~ .,
data = college_train,
method = "rpart",
trControl = ctrl_cv,
tuneGrid = data.frame(cp = cp_vec))
graduation_rpart
object. Which cp
was selected as best performing?graduation_rpart
CART
500 samples
17 predictor
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 449, 450, 451, 449, 450, 451, ...

The final value used for the model was cp = 0.0303.
graduation_rpart
object. What do you see? Does this match the plot match the value identified in the previous task?plot(graduation_rpart)
# Visualise your trees
plot(as.party(graduation_rpart$finalModel))
mtry_vec
containing values from 1 to 5, the tuning parameter candidates for our random forest.# mtry candidates
mtry_vec <- 1:5
Grad.Rate
as a function of all features. Make sure to use mtry = mtry_vec
within the data frame specifying the tuneGrid
. This one might take a bit longer than usual.# Random forest
graduation_rf <- train(form = XX ~ .,
data = XX,
method = "XX",
trControl = XX,
tuneGrid = data.frame(mtry = XX))
# Random forest
graduation_rf <- train(form = Grad.Rate ~ .,
data = college_train,
method = "rf",
trControl = ctrl_cv,
tuneGrid = data.frame(mtry = mtry_vec))
graduation_rf
object. What do you see? Which mtry
was selected as best performing?graduation_rf
Random Forest
500 samples
17 predictor
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 449, 449, 450, 451, 450, 449, ...
Resampling results across tuning parameters:
mtry RMSE Rsquared MAE
1 16.2 0.316 13.2
2 16.2 0.313 13.1
3 16.2 0.316 13.1
4 16.1 0.318 13.0
5 16.3 0.308 13.1
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was mtry = 4.
graduation_rf
object. What do you see? Does this match the plot match the value identified in the previous task?plot(graduation_rf)
predict()
, save the fitted values of your tree models as rpart_fit
and rf_fit
.# store fitted values
rpart_fit <- predict(graduation_rpart)
rf_fit <- predict(graduation_rf)
postResample
evaluate the fitting performance of your models. Which model has the best performance in fitting the training data? If you like compare to the regression models of the previous section.# evaluate fit
postResample(pred = rpart_fit, obs = criterion_train)
RMSE Rsquared MAE
16.358 0.291 13.268
postResample(pred = rf_fit, obs = criterion_train)
RMSE Rsquared MAE
6.935 0.925 5.481
predict()
and newdata = college_test
, save the predicted values of your models as rpart_pred
, and rf_pred
.# store predicted values
rpart_pred <- predict(graduation_rpart, newdata = college_test)
rf_pred <- predict(graduation_rf, newdata = college_test)
postResample
evaluate the prediction performance of your models. Which model has the best performance in predicting the test data? Did the tree models outperform the regularized regressions?# evaluate fit
postResample(pred = rpart_pred, obs = criterion_test)
RMSE Rsquared MAE
17.191 0.239 13.853
postResample(pred = rf_pred, obs = criterion_test)
RMSE Rsquared MAE
15.762 0.364 12.708
tuneGrid
already suggests that one may want to vary multiple tuning parameters at the same time. A handy function helping in this is expand.grid()
, which will produce all compbinations of values of the vectors supplied as its arguments. Try, e.g., expand.grid(a = c(1, 2), b = c(2, 3, 4))
. The template below shows you how you can use expand.grid()
to specify multiple tuning parameters at the same time.model <- train(form = XX ~ .,
data = XX,
method = "XX",
trControl = XX,
preProcess = c("XX", "XX"),
tuneGrid = expand.grid(parameter_1 = XX,
parameter_2 = XX))
Run and evaluate a regularized regression that uses cross validation to not only identify the best value for lambda
but also the best value for alpha
, e.g., using alpha = c(0, .5, 1)
. This way you can let the procedure decide whether to use ridge, lasso or both.
Run and evaluate a random forest while tuning not only mtry
but also ntree
, e.g., using ntree = c(100,500,1000)
. Tip: avoid high values for ntree
or mtry
.
As done in the previous sessions try predicting Private
rather than Grad.Rate
. Note, this may require a different range of lambda values. You’ll figure it out.
# Model optimization with Regression
# Step 0: Load packages-----------
library(tidyverse) # Load tidyverse for dplyr and tidyr
library(caret) # For ML mastery
library(partykit) # For decision trees
library(party) # For decision trees
# Step 1: Load, clean, and explore data ----------------------
# training data
data_train <- read_csv("1_Data/diamonds_train.csv")
# test data
data_test <- read_csv("1_Data/diamonds_test.csv")
# Convert all characters to factor
# Some ML models require factors
data_train <- data_train %>%
mutate_if(is.character, factor)
data_test <- data_test %>%
mutate_if(is.character, factor)
# Explore training data
data_train # Print the dataset
View(data_train) # Open in a new spreadsheet-like window
dim(data_train) # Print dimensions
names(data_train) # Print the names
# Define criterion_train
criterion_train <- data_train$price
criterion_test <- data_test$price
# Step 2: Define training control parameters -------------
# Use 10-fold cross validation
ctrl_cv <- trainControl(method = "cv",
number = 10)
# Step 3: Train models: -----------------------------
# Normal Regression --------------------------
price_glm <- train(form = price ~ carat + depth + table + x + y,
data = data_train,
method = "glm",
trControl = ctrl_cv)
# Print key results
price_glm
# Coefficients
coef(price_glm$finalModel)
# Lasso --------------------------
# Vector of lambda values to try
lambda_vec <- 10 ^ seq(-3, 3, length = 100)
price_lasso <- train(form = price ~ carat + depth + table + x + y,
data = data_train,
method = "glmnet",
trControl = ctrl_cv,
preProcess = c("center", "scale"), # Standardise
tuneGrid = data.frame(alpha = 1, # Lasso
lambda = lambda_vec))
# Print key results
price_lasso
# Plot regularisation parameter versus error
plot(price_lasso)
# Print best regularisation parameter
price_lasso$bestTune$lambda
# Get coefficients from best lambda value
coef(price_lasso$finalModel,
price_lasso$bestTune$lambda)
# Ridge --------------------------
# Vector of lambda values to try
lambda_vec <- 10 ^ seq(-3, 3, length = 100)
price_ridge <- train(form = price ~ carat + depth + table + x + y,
data = data_train,
method = "glmnet",
trControl = ctrl_cv,
preProcess = c("center", "scale"), # Standardise
tuneGrid = data.frame(alpha = 0, # Ridge penalty
lambda = lambda_vec))
# Print key results
price_ridge
# Plot regularisation parameter versus error
plot(price_ridge)
# Print best regularisation parameter
price_ridge$bestTune$lambda
# Get coefficients from best lambda value
coef(price_ridge$finalModel,
price_ridge$bestTune$lambda)
# Decision Trees --------------------------
# Vector of cp values to try
cp_vec <- seq(0, .1, length = 100)
price_rpart <- train(form = price ~ carat + depth + table + x + y,
data = data_train,
method = "rpart",
trControl = ctrl_cv,
tuneGrid = data.frame(cp = cp_vec))
# Print key results
price_rpart
# Plot complexity parameter vs. error
plot(price_rpart)
# Print best complexity parameter
price_rpart$bestTune$cp
| File | Rows | Columns |
|---|---|---|
| college_train.csv | 50 | 20 |
| college_test.csv | 213 | 20 |
| college_train.csv | 500 | 18 |
| college_test.csv | 277 | 18 |
| house_train.csv | 5000 | 21 |
| house_test.csv | 1000 | 21 |
The college_train
and college_test
data are taken from the College
dataset in the ISLR
package. They contain statistics for a large number of US Colleges from the 1995 issue of US News and World Report.
The house_train
and house_test
data come from https://www.kaggle.com/harlfoxem/housesalesprediction
college_train
and college_test
| Name | Description |
|---|---|
Private |
A factor with levels No and Yes indicating private or public university. |
Apps |
Number of applications received. |
Accept |
Number of applications accepted. |
Enroll |
Number of new students enrolled. |
Top10perc |
Pct. new students from top 10% of H.S. class. |
Top25perc |
Pct. new students from top 25% of H.S. class. |
F.Undergrad |
Number of fulltime undergraduates. |
P.Undergrad |
Number of parttime undergraduates. |
Outstate |
Out-of-state tuition. |
Room.Board |
Room and board costs. |
Books |
Estimated book costs. |
Personal |
Estimated personal spending. |
PhD |
Pct. of faculty with Ph.D.’s. |
Terminal |
Pct. of faculty with terminal degree. |
S.F.Ratio |
Student/faculty ratio. |
perc.alumni |
Pct. alumni who donate. |
Expend |
Instructional expenditure per student. |
Grad.Rate |
Graduation rate. |
house_train
and house_test
| Name | Description |
|---|---|
price |
Price of the house in $. |
bedrooms |
Number of bedrooms. |
bathrooms |
Number of bathrooms. |
sqft_living |
Square footage of the home. |
sqft_lot |
Square footage of the lot. |
floors |
Total floors (levels) in house. |
waterfront |
House which has a view to a waterfront. |
view |
Has been viewed. |
condition |
How good the condition is (Overall). |
grade |
Overall grade given to the housing unit, based on King County grading system. |
sqft_above |
Square footage of house apart from basement. |
sqft_basement |
Square footage of the basement. |
yr_built |
Built Year. |
yr_renovated |
Year when house was renovated. |
zipcode |
Zip code. |
lat |
Latitude coordinate. |
long |
Longitude coordinate. |
sqft_living15 |
Living room area in 2015 (implies some renovations). This might or might not have affected the lotsize area. |
sqft_lot15 |
lot-size area in 2015 (implies some renovations). |
| Package | Installation |
|---|---|
tidyverse |
install.packages("tidyverse") |
caret |
install.packages("caret") |
partykit |
install.packages("partykit") |
party |
install.packages("party") |
| Function | Package | Description |
|---|---|---|
trainControl() |
caret |
Define modelling control parameters |
train() |
caret |
Train a model |
predict(object, newdata) |
stats |
Predict the criterion values of newdata based on object |
postResample() |
caret |
Calculate aggregate model performance in regression tasks |
confusionMatrix() |
caret |
Calculate aggregate model performance in classification tasks |


At
some point along your journey to write your own .swf files, you are going to
have to be able to read and understand the raw bits and bytes. I created a one frame flash movie that
contained only a rectangle and saved it as Rectangle.swf. Let’s take a look at the way the file is
represented in its .swf format. Below
is the hexadecimal representation of Rectangle.swf. Let’s take a closer look…
000000 46 57
53 03 4F 00 00 00 78 00 05 5F 00 00
0F A0
000010 00 00
0C 01 00 43 02 FF FF FF BF 00 23 00
00 00
000020 01 00
70 FB 49 97 0D 0C 7D 50 00 01 14 00
00 00
000030 00 01
25 C9 92 0D 21 ED 48 87 65 30 3B 6D
E1 D8
000040 B4 00
00 86 06 06 01 00 01 00 00 40 00 00
00
Every
Macromedia Flash (SWF) file has two parts, the header block and a series of
tagged data blocks. Let’s begin with
the header.
The
header is always the first 21 bytes of
the .swf file (true?). It
describes the file version(1,2, or 3), length of the file in bytes, the frame
size in TWIPS, frame rate in frames per second, and the frame count.
Here is the “Macromedia Flash (SWF) File Reference’ description of the header:
Field
|
Type |
Comment |
|
Signature |
UI8 |
Signature
byte always ‘F’ |
|
Signature |
UI8 |
Signature
byte always ‘W’ |
|
Signature |
UI8 |
Signature
byte always ‘S’ |
|
Version |
UI8 |
Single
byte file version |
|
File
Length |
UI32 |
Length
of entire file in bytes |
|
Frame
Size |
RECT |
Frame
size in TWIPS |
|
Frame
Rate |
UI16 |
Frame
delay in 8.8 fixed number of frames per second |
|
Frame
Count |
UI16 |
Total
number of frames in movie |
The first three bytes are the standard signature for all .swf files. They are the ASCII values of the characters ‘F’, ‘W’, and ‘S’ in that order. The fourth byte indicates the version of the file. Although a file can be of version 1, 2, or 3, we will always be creating version 3 files so this value will also be fixed.
0x46 ‘F’ 0x57 ‘W’ 0x53 ‘S’ 0x03 3
The
next 4 bytes represent an unsigned 32-bit integer indicating the file
size. Here’s where it starts getting
tricky and machine architecture gets involved!
The next 4 bytes are 0x4F000000 so that would imply that the file length is<PHONE_NUMBER>
bytes, a very large number which doesn’t make sense. What we failed to do is swap all the bytes.
In
Macromedia Flash (SWF) files, bytes are swapped whenever reading words and
dwords such that a 32 bit value B1B2B3B4 is written as B4B3B2B1, and a 16 bit
value B1B2 is written as B2B1. Single
bytes are written unchanged since there is NO bit-swapping. The
reason for this is the differences in storage and retrieval between the Mac and
PC processors.
Reversing the bytes we can read the 4 bytes correctly and see that file is 79 bytes long.
0x4F000000 0x0000004F 79
The next 9 bytes represent a
data structure used in the Macromedia Flash (SWF) format called a
Rectangle. Here is the file description
of a rectangle:
Field
|
Type |
Comment |
|
Nbits |
nBits = UB[5] |
Bits
in each rect value field |
|
Xmin |
SB[nBits] |
X minimum position for rect |
|
Xmax |
SB[nBits] |
X maximum position for rect |
|
Ymin |
SB[nBits] |
Y minimum position for rect |
|
Ymax |
SB[nBits] |
Y
maximum position for rect |
To
understand these bytes, we need to look at the individual bits.
78 00 05 5F 00 00 0F A0 00
0111 1000 0000 0000 0000 0101 0101 1111
0000 0000
0000
0000 0000 1111 1010
0000 0000 0000
There
are five fields in a rectangle structure: nBits, xmin, xmax, ymin, ymax. The unsigned nBits field occupies the first
five bits of the rectangle and indicates how long the next four signed fields
are.
Here’s where we hit another subtle point about the .swf file representation. Reading and writing bits is different from reading and writing words and dwords. There is no swapping at all! This is because when Macromedia Flash is reading an n-bit field, it reads a byte at a time until it has read all n bits. You don’t do any swapping inside of bytes so there is no swapping at all. So the next five bits are read in order and evaluate to 15. Although the nBit field usually varies, it appears fixed in the header so that header has a fixed size (It may just be because the movie dims are usually the same).
01111 15
What if nBit has a value of sixteen? This is exactly the size of a word so do we read the following fields as words and swap bytes? No. Fields described by bit size are always read a byte at a time. No swapping, just read the next n bits in that order.
000000000000000 0
= xmin
010101011111000 11000 = xmax
000000000000000 0 = ymin
001111101000000 8000 = ymax
For
the header, the rectangle is used to store the movie dimensions with xmax
corresponding to the movie width and ymax corresponding to the movie height,
both in TWIPS. “What’s this TWIPS
thing?” you ask. According to
whatis.com :
A twip (twentieth of a point) is a measure used in laying out space or
defining objects on a page or other area that is to be printed or displayed on
a computer screen. A twip is 1/1440th of an inch or 1/567th of a centimeter.
That is, there are 1440 twips to an inch or 567 twips to a centimeter. The twip
is 1/20th of a point, a traditional measure in printing. A point is
approximately 1/72nd of an inch.
For
Macromedia Flash a point corresponds to a pixel, so if we convert from TWIPS to
pixels, we see that our movie is 550 x 400.
Now we have looked at all of the fields of the rectangle and evaluated them, but what about those last seven bits which are all 0’s. Well, they were just “filled.”
0000000 = filled bits
After the end of any structure, if the structure does not completely fill up its last byte, then that last byte is filled with 0’s to keep the next item byte aligned. So if the next item is a word or dword, you can read it as such and not worry about being in the middle of a byte. In this case, only 1 bit in the last byte is used so the last 7 bits are filled with 0’s.
Next in the header is the frame rate, which is kind of weird. It is supposed to be stored as a 16bit integer, but the first byte (or last depending on how you look at it) is completely ignored. So the frame rate is 12 fps.
0x000C 0x0C00 0x0C 12 = frame rate
Next is the frame count,
which is also a 16-bit integer. So the
frame count is 1.
0x0100 0x0001(byte swapping) 1 = frame count
Now
we are done with the header. After the
header is a series of tagged data blocks.
Here is the file description of a tag:
Short Tag
|
Field |
Type |
Comment |
|
Tag |
UB[10] |
Tag
id |
|
Length |
UB[6] |
Length
of tag |
Long Tag
|
Field |
Type |
Comment |
|
Tag |
UB[10] |
Tag
id |
|
Long
Header Flag |
UB[6] |
Always
0x3F |
|
Length |
UI32 |
Length
of tag |
There are 2 types of tags. They are the short and long data header. Regardless of which case you have, you begin by looking at the first word.
0x4302 0x0243
0000 0010 0100 0011
The first 10 bits of the tag are the unsigned tag ID. The tag ID indicates what type of data is to follow in the body of the data block to follow. In this case the value of the tag ID is 9 which corresponds to a setBackgroundColor block. (APPENDIX SHOULD HAVE ALL ID MEANINGS). The last 6 unsigned bits of the tag indicate the length of the data block to follow if it is 62 bytes or less. If the length of the data block is more than 62 bytes, then this field has all 1’s and the length is indicated in the following dword. In this situation though the field does not have all 1’s so the field does indicate the actual length which is 3 bytes.
0000001001 = 9 = setBackgroundColor 000011 = 3 = body length
Since we know that the length of the body is 3 bytes, let’s take a look at it. A setBackgroundColor block only contains the 3 byte rgb color description so we evaluate it as such. A color is its own 3 byte data type so there is no byte swapping.
0XFFFFFF = white
The next tag is a long tag and is a defineShape tag.
0xBF00 0x00BF 0000 0000 1011 1111
0000000010 = 3 = defineShape 111111 = body length (so we have to look at the
next dword)
0x23000000 0x00000023 35 = body length
Here
is the file description of defineShape:
|
Field |
Type |
Comment |
|
Header |
RECORDHEADER |
Tag
ID = 2 |
|
ShapeId |
UI16 |
ID
for this character |
|
ShapeBounds |
RECT |
Bounds
of the shape |
|
Shapes |
SHAPEWITHSTYLE |
Shape
information |
The
body of a defineShape is composed of an unsigned 16-bit character ID, a
rectangle defining the bounds for the shape, and a ShapeWithStyle structure
which contains shape information.
0x0100 0x0001 1 = shape ID
Now the Rect which defines the boundaries:
70 FB 49 97 0D 0C 7D 50
0111 0000 1111 1011 0100
1001 1001 0111 0000
1101 0000 1100 0111 1101 0101 0000
01110 = 14 = nBits
00011111011010 = 2010 = xmin /20 to covert to pixels from TWIPS 100.5
01001100101110 = 4910 = xmax 245.5
00011010000110 = 1670 = ymin 83.5
00111110101010 = 4010 = ymax 200.5
000 = fill bits
The ShapeWithStyle structure has five parts. A fill style array, a line style array, a nFillBits field, a nLineBits field, and an array of shape records. Here is the file description:
|
Field |
Type |
Comment |
|
FillStyles |
FILLSTYLEARRAY |
Array
of fill styles |
|
LineStyles |
LINESTYLEARRAY |
Array
of line styles |
|
NumFillBits |
nFillBits = UB[4] |
Number
of fill index bits |
|
NumLineBits |
nLineBits = UB[4] |
Number
of line index bits |
|
ShapeRecords |
SHAPEREC[one
or more] |
Shape
records - see below |
A
fill style array itself has three fields.
The first field is an 8 bit integer count which indicates how many fill
styles are in the array. This count
works similar to the tag’s length field in that if it is all 1’s, you have to
look at the next 16-bits to get the actual length. Here is the file description:
|
Field |
Type |
Comment |
|
FillStyleCount |
count = UI8 |
Count
of fill styles |
|
FillStyleCountExtended |
If
count = 0xFF count = UI16 |
Extended
count of fill styles. Supported only for Shape2 and Shape3. |
|
FillStyles |
FILLSTYLE[count] |
Array
of fill styles |
In this case, the 8 bit count is equal to 0 so there is nothing to follow it.
0x00 = 0 = count This is the end of the fill style array because it has no elements
A line style array is exactly the same as a fill style array except it stores line styles. Here is the file description:
|
Field |
Type |
Comment |
|
LineStyleCount |
count = UI8 |
Count
of line styles |
|
LineStyleCountExtended |
If
count = 0xFF count = UI16 |
Extended
count of line styles |
|
LineStyles |
LINESTYLE[count] |
Array
of line styles |
0x01
= 1 = count So there is one line style in the array.
A
line style has two parts, an unsigned 16-bit integer indicating the width of a
line in TWIPS, and a color. Here is the
file description:
|
Field |
Type |
Comment |
|
Width |
UI16 |
Width
of line in twips |
|
Color |
RGB
(Shape1 or Shape2) |
Color
value including alpha channel information for Shape3s |
The color in this case is a 24-bit RGB, but if we were doing a defineShape3, it would be a 32-bit RGBA where alpha is the transparency of the color.
0x1400 0x0014 = 20 = width = 1 pixel
0x000000 = RGB = black
Back to the ShapeWithStyle, the nFillBits field is 4 bits, as is the nLineBits.
0x0 = 0 = nFillBits 0x1 = 1 = nLineBits
Now
for the array of shape records. There
are three types of shape records. Here
are the file descriptions:
Shape Record Type 0
|
Field |
Type |
Comment |
|
TypeFlag |
UB[1]
= 0 |
Non-edge
record flag |
|
EndOfShape |
UB[5]
= 0 |
End
of shape flag |
Shape Record Type 1
|
Field |
Type |
Comment |
|
TypeFlag |
UB[1]
= 0 |
Non-edge
record flag |
|
StateNewStyles |
newStyles = UB[1] |
New
styles flag. Used by DefineShape2 and DefineShape3 only. |
|
StateLineStyle |
lineStyle = UB[1] |
Line
style change flag |
|
StateFillStyle0 |
fillStyle0 = UB[1] |
Fill
style 0 change flag |
|
StateFillStyle1 |
fillStyle1
= UB[1] |
Fill
style 1 change flag |
|
StateMoveTo |
moveTo
= UB[1] |
Move
to flag |
|
MoveBits |
If
moveTo nMoveBits = UB[5] |
Move
bit count |
|
MoveDeltaX |
If
moveTo UB[nMoveBits] |
Delta
X value |
|
MoveDeltaY |
If
moveTo UB[nMoveBits] |
Delta
Y value |
|
Fill0Style |
If
fillStyle0 UB[nFillBits] |
Fill
0 Style |
|
Fill1Style |
If
fillStyle1 UB[nFillBits] |
Fill
1 Style |
|
LineStyle |
If
lineStyle UB[nLineBits] |
Line
Style |
|
FillStyles |
If
newStyles FILLSTYLEARRAY |
Array
of fill styles |
|
LineStyles |
If
newStyles LINESTYLEARRAY |
Array
of line styles |
Shape Record Type 2
|
Field |
Type |
Comment |
|
TypeFlag |
UB[1]
= 1 |
This
is an edge record |
|
EdgeRecord |
EDGERECORD |
Line
or curve edge record |
Type 0 defines the end of the shape record array. Type 1 defines changes in line style, fill style, position, or a new set of styles. Type 2 defines a straight or curved edge. The first bit in a shape record is a type flag. A 0 corresponds to a non-edge record, and a 1 corresponds to an edge record. Looking at the first bit of our first shape record, we see that it is not an edge record. Now we must look at the next 5 bits which are all flags which tell us what is to follow. If all of the 5 bits are 0, then that is a type0 shape record and defines the end of the array of shape records.
25 C9 92 0D 21
0010 0101 1100
1001 1001 0010 0000
1101 0010 0001
0 = 0 = non edge record
01001 = 5 flags line style flag is true, and move to flag is true
Since the move to flag is true, the next 5
bits are the nMoveToBits field. This
value is 14 so the next two fields which are the moveDeltaX, and the moveDeltaY
are of size 14. These are unsigned
numbers.
01110 = nMoveToBits
01001100100100 = 4900 (TWIPS) = 245 pixels = moveDeltaX
00011010010000 = 1680 = 84 pixels = moveDeltaY
Since
the line style flag is true, the next field is a nLineBits = 1 bit field
representing the line style. This field
is equal to 1. What exactly does this
mean? It means that the line style for the line to follow is the first one
in the line style array.
1 = 1 = line style
Now for the rest of the shape records:
ED 48 87 65 30 3B 6D E1 D8 B4 00 00
1110 1101 0100 1000 1000 0111 0110 0101 0011 0000 0011 1011 0110 1101 1110 0001 1101 1000 1011 0100 0000 0000 0000 0000
The
next shape record begins with a 1 so it is an edge record. There are two types of edge records. Here are the file descriptions:
Edge Record Type 0 (Curved)
|
Field |
Type |
Comment |
|
EdgeFlag |
UB[1]
= 0 |
Curved
edge - always 0 |
|
NumBits |
nBits = UB[4] + 2 |
Number
of bits per value |
|
ControlDeltaX |
SB[nBits] |
X
control point change |
|
ControlDeltaY |
SB[nBits] |
Y
control point change |
|
AnchorDeltaX |
SB[nBits] |
X
anchor point change |
|
AnchorDeltaY |
SB[nBits] |
Y control point change |
Edge Record Type 1
(Straight)
|
Field |
Type |
Comment |
|
EdgeFlag |
UB[1]
= 1 |
Straight
edge - always 1 |
|
NumBits |
nBits = UB[4] + 2 |
Number
of bits per value |
|
GeneralLineFlag |
lineFlag = UB[1] |
General
Line equals 1 |
|
DeltaX |
If
lineFlag = 1 SB[nBits] |
X
delta |
|
DeltaY |
If
lineFlag = 1 SB[nBits] |
Y
delta |
|
VertLineFlag |
If
lineFlag = 0 vertFlag = SB[1] |
Vertical
Line equals 1 |
|
DeltaX |
If
vertFlag = 0 SB[nBits] |
X
delta |
|
DeltaY |
If
vertFlag = 1 SB[nBits] |
Y
delta |
The
next bit indicates if it is a straight or curved edge. It is a 1 which stands for a straight
edge. The next 4 bits indicate the size
of any delta fields which follow. The
formula for the nbits value is 2 + whatever the value of that 4 bit field. In this case, the value of nbits is 13. Following the nbit field is a 1-bit line
flag. This indicates whether the line
being described is a general line or horizontal/vertical line. The value of 0 corresponds to a hor/vert
line, so the next bit is a vertFlag field and indicates whether the line is
horizontal or vertical. The value of
the bit is 1 which corresponds to a vertical line. The next field for a vertical line is the signed DeltaY field
which is nbits = 13 bits long. The
value corresponds to 116 pixels. That
is the end of the shape record.
1 = 1 = edge record
1 = 1 = straight edge
1011 = 11 + 2 = 13 = nbits
0 = 0 = hor/vert line
1 = 1 = vertical line
0100100010000 = 2320 TWIPS = 116 pixels = DeltaY
The next three records are very similar to the last one:
1 = 1 = edge record
1 = 1 = straight edge
1011 = 11 + 2 = 13 = nbits
0 = 0 = hor/vert line
0 = 0 = horizontal line
1010011000000 = -2880 TWIPS (2’s complement number) = -144 pixels = DeltaX
1 = 1 = edge record
1 = 1 = straight edge
1011 = 11 + 2 = 13 = nbits
0 = 0 = hor/vert line
1 = 1 = vertical line
1011011110000 = -2320 TWIPS = -116 pixels = DeltaY
1 = 1 = edge record
1 = 1 = straight edge
1011 = 11 + 2 = 13 = nbits
0 = 0 = hor/vert line
0 = 0 = horizontal line
0101101000000 = 2880 TWIPS = 144 pixels = DeltaX
Finally, the last shape record begins with a 0 which means it is not an edge record. Furthermore all of it’s flag bits are equal to 0 which means that it is the last shape record and we are through with our shape record array.
0 = 0 = non-edge record
000000 = flags (since they are all 0, this is the end of the shape record array
Since we are done with our structure, we must now fill our last byte with 0’s to keep byte aligned.
000000 = filled 0’s
We are also done with our shape with style
since the shape record array is the last element of the shape with style. Since we are already byte aligned, we can go
on to our next tagged data block.
The tag ID of the block is equal to 26 which corresponds to a placeObject2. The length field has a value of 6 so the length of the data block is 6 bytes.
0x8606 0x0686 0000 0110 1000 0110
0000011010 = 26 = tag ID = placeObject2
000110 = 6 = length
06 01 00 01 00 00
0000
0110 0000
0001 0000 0000 0000 0001 0000 0000 0000 0000
Here
is the file description of the placeObject2:
|
Field |
Type |
Comment |
|
Header |
RECORDHEADER |
Tag
ID = 26 |
|
PlaceFlagsReserved |
UB[2] |
Reserved
Flags |
|
PlaceFlagHasName |
UB[1] |
Has
name |
|
PlaceFlagHasRatio |
UB[1] |
Has
ratio |
|
PlaceFlagHasColorTransform
|
UB[1] |
Has
color transform |
|
PlaceFlagHasMatrix |
UB[1] |
Has matrix |
|
PlaceFlagHasCharacter |
UB[1] |
Places
a character |
|
PlaceFlagMove |
UB[1] |
|
|
Depth |
UI16 |
Depth
of character |
|
CharacterId |
If
PlaceFlagHasCharacter = 1 UI16 |
ID
of character to place |
|
Matrix |
If PlaceFlagHasMatrix = 1 MATRIX |
Transform matrix data |
|
ColorTransform |
If
PlaceFlagHasColorTransform = 1 CXFORM |
Color
transform data |
|
Ratio |
If
PlaceFlagHasRatio = 1 UI16 |
|
|
Name |
If
PlaceFlagHasName = 1 STRING |
Name
of character |
The
first 8 bits of the body are all flags indicating what is to follow. A 1 in the 6th bit indicates that
the body has a transform matrix, and the 1 in the 7th bit indicates
that the object to be placed has a character ID.
00000110 body has a transform matrix and object has a character ID
Following the flags is a 16-bit unsigned integer which indicates the depth of the character. In this case the depth is 1 which makes sense since the rectangle is the only object in the movie.
0x0100 0x0001 depth = 1
Since the object has a character ID, the next field in the body is the unsigned 16-bit ID. Being the only object in the movie, the ID of the rectangle is 1.
0x0100 0x0001 character ID = 1
The final field for this placeObject2 is the transform matrix. Here is the file description:
Field
|
Type |
Comment |
|
HasScale |
hasScale
= UB[1] |
Has
scale values if equal to 1 |
|
NscaleBits |
If
hasScale nScaleBits =UB[5] |
Bits
in each scale value field |
|
ScaleX |
If
hasScale FB[nScaleBits] |
X
scale value |
|
ScaleY |
If
hasScale FB[nScaleBits] |
Y
scale value |
|
HasRotate |
hasRotate
= UB[1] |
Has
rotate and skew values if equal to 1 |
|
NrotateBits |
If
hasRotate nRotateBits = UB[5] |
Bits
in each rotate value field |
|
RotateSkew0 |
If
hasRotate FB[nRotateBits] |
First
rotate and skew value |
|
RotateSkew1 |
If
hasRotate FB[nRotateBits] |
Second
rotate and skew value |
|
NtranslateBits |
nTranslateBits = UB[5] |
Bits
in each translate value field |
|
TranslateX |
SB[nTranslateBits] |
X
translate value |
|
TranslateY |
SB[nTranslateBits] |
Y
translate value |
Since this shape has no transform information, the matrix is empty. All of its flag bits have values of zero. This is not super efficient but it is valid.
0x00 completely empty matrix with leftover bits filled
Since we are done with our placeObject2, let’s take a look at our next tag.
0x4000 0x0040 0000 0000 0100 0000
tag ID = 1 = showFrame
length = 0
We see that the tag is an instruction to show the frame. A showFrame has no body. Its length is 0, so we move on to the next tag.
0x0000
0x0000 0000 0000 0000 0000
tag ID = 0 = end
length = 0
We
have reached the end tag which signals the end of our Macromedia Flash (SWF)
file.


- Focus on subjects ($\equiv$ class)
- All verbs ($\equiv$ methods) can only be applied to a single subject, e.g.
-
person->walk()
-
socket->send(data)
-
number1->add(number2)
- etc.
|
- Focus on actions ($\equiv$ methods)
- All verbs can be applied to any number of subjects, e.g.
-
walk(person)
-
send(socket, data)
-
add(num1, num2, num3, ...)
- etc.
|


Publications
2021
- Katelyn Morrison. Reducing discrimination in learning algorithms for social good in sociotechnicalsystems. In IJCAI 2021 Workshop on AI for Social Good, 2021
2020
- Katelyn Morrison, Daniel Yates, and Maya Roman, William W. Clark. Using Object Tracking Techniques to Non-Invasively Measure Thoracic Rotation Range of Motion. In Adjunct Proceedings of the ACM International Conference on Multimodal Interaction (ICMI 2020), Utrecht, the Netherlands. 2020.
Talks
- "Reducing Discrimination in Learning Algorithms for Social Good in Sociotechnical Systems" ~ AI for Social Good Workshop at IJCAI-PRICAI 2020
- "Evaluating the Fairness of Bike Sharing Programs using Geospatial Analysis" ~ Computational Sustainability Doctoral Consortium 2020
- "Using Object Tracking Techniques to Non-Invasively Measure Thoracic Rotation Range of Motion" ~ Face & Gesture Analysis for Health Informatic (FGAHI) Workshop at ACM International Conference on Multimodal Interaction (ICMI) 2020
- "Data Visualization: Creating a Plotly Dash App" ~ Women in Computer Science @ Pitt October 2020 Meeting ~ Tutorial
- "Civic Hacking & Urban Informatics: Mapping Data with GeoPandas" ~ PyOhio 2020 ~ Tutorial
- "Dual Live Angle Calculation to Determine Torso Flexibility using Computer Vision" ~ Science2019 Undergraduate Research Symposium
Awards, Honors, & Program Organization
Attended Events


Oslo Marathon
Oslo NOR
Website: www.oslomaraton.no
Race Winners
(34 runnings)
2:52:30 2:45:39 2:49:49 2:57:03 30 Sep 2007
2:35:06
2:52:31
01 Oct 2006
2:24:03
2:56:06
02 Oct 2005
2:26:09
2:54:08
03 Oct 2004
2:27:05
2:51:53
2001-2003
---
---
02 Sep 2000
2:45:27
3:02:59
04 Sep 1999
2:34:07
3:11:53
12 Sep 1998
2:43:17
2:56:09
13 Sep 1997
2:31:59
2:56:48
14 Sep 1996
2:24:32
2:48:40
09 Sep 1995
2:23:23
3:04:31
24 Sep 1994
2:25:16
2:56:39
04 Sep 1993
2:19:33
2:48:15
12 Sep 1992
2:20:11
2:35:44 07 Sep 1991
2:23:11
2:46:41
08 Sep 1990
---
---
09 Sep 1989
2:19:05
2:38:15
03 Sep 1988
2:22:30
2:42:39
12 Sep 1987
2:19:07
2:42:35
13 Sep 1986
2:14:59
2:40:36
31 Aug 1985
2:19:00
2:43:39
01 Sep 1984
2:13:01
3:02:13-
27 Aug 1983
2:19:24
2:41:52
03 Jul 1982
2:19:40
2:51:38
12 Jul 1981
2:13:06
2:51:02
Note: 1981 was the inaugural year. The 1992 course was about 1200m short. A half marathon has been held 2001-date.
The 2014 and 2015 times are net times.
16 Sep
2017
2:15:58
Yuki Kawauchi (JPN)
2:54:31
Hilde Aders-2
17 Sep
2016
2:21:53
Marius-Oyre Vedvik (NOR)
2:43:34
Marthe-Katrine Myhre-3
19 Sep
2015
2:20:49
Taye Babeker Tirfea-2
2:52:35
Hilde Aders (NOR)
20 Sep
2014
2:21:36
Taye Babeker Tirfea (ETH)
2:54:27
Laila Mehus (NOR)
21 Sep
2013
2:24:52
Andreas-Myhre Sjurseth-2
2:53:54
Eva Schiefloe (NOR)
22 Sep
2012
2:25:42
Øystein Sylta (NOR) (nc)
2:44:43
Marthe-Katrine Myhre-2 (nc)
25 Sep
2011
2:27:28
Andreas-Myhre Sjurseth (NOR) (nc)
Marthe-Katrine Myhre (NOR) (nc)
26 Sep
2010
2:29:24
Andreas Høye (NOR) (nc)
Fride Vullum (NOR) (nc)
27 Sep
2009
2:32:29
John-Henry Strupstadt (NOR)
Margaretha
Baumann-2
28 Sep
2008
2:26:15
Martin Kjäll-Ohlsson (NOR)
Sharon Lynn Broadwell (NOR)
Ronny Hognestad (NOR)
Margaretha Baumann (NOR)
Hendrik Sandstad (NOR) (nc)
Margrethe Løgavlen (NOR)
(nc)
Jan Helgeson (NOR) (nc)
Sofie Spiten (NOR) (nc)
Carlos Silva deBrito (NOR)
Gry Christine Wilhelmsen-2
not held
not held
Arild Johnsen (NOR)
Hilde Mæhlum-2
Henrik Allan Lau (NOR)
Hilde Mæhlum (NOR)
Rolf Johansson (NOR)
Wenche Lægreid (NOR)
Mounir Benoumma (NOR)
Gry Christine Wilhelmsen (NOR)
Terje Hole-2
Jorunn Rekkedal (NOR)
Helge Dolsvåg (NOR)
Bodil Sandvik (NOR)
Taisuke Kodama
Eryl Davies (WAL)
Helge Dolsvag (NOR) (nc)
Marianne Fløymo (NOR) (nc)
Viktor Vikhristenko (UKR)
Mariya Daskoch (UKR)
Terje Hole (NOR) (nc)
Bente Moe-2 (nc)
not
held ?
not
held ?
Ronald Boreham (ZIM) (nc)
Olga Durynina (RUS) (nc)
Oyvind Trongmo (NOR)
Cassandra Mihailovic (FRA)
Roy Anderson (NOR) (nc)
Oddrun Hovsengen-2 (nc)
Kjell-Erik Stahl-2
Sissel Grottenberg-2
Josef Machalek (SVK)
Oddrun Hovsengen (NOR)
Kjell-Erik Stahl (SWE)
Marit
Groendalen (NOR)
Ole Folling-Hansen (NOR)
Bente Moe (NOR)
Johan Skovbjerg (DEN)
Bjorg Moen (NOR)
Hugh Jones (ENG) (nc)
Sissel Grottenberg (NOR)
(nc) => national championship
1989 Thor-Sverre Pedersen was the national champion (place unknown, 2:28:40)
1989 Oddrun Hovsengen was the national champion (place unknown, 2:45:24)
1981 Erik Toogood was the national champion (place unknown, 2:20:36)
Most Wins (1981/date)
Men
2
Kjell-Erik Stahl (SWE)
1984,1986
.
Terje Hole (NOR)
1991,1996
Women
3
Marthe-Katrine Myhre (NOR)
2011-2012,2016
Prize Money (ADR qualified runners)
Year Men Women Total 2017 $3,000 $2,000 $5,000
Race Time Bias
Insufficient data to calculate the race time bias.
Competitive Level
Insufficient data to calculate the competitive level.
Quality Performances
Men
<2:14 2
<2:15 3
<2:16 4
<2:17 5
<2:18 5
<2:19 5
<2:20 14
Women
<2:40 1
<2:42 3
<2:44 8
<2:46 13
<2:48 15
<2:50 18
Last Updated on 07
Oct 2017
Contributors: Klaas Loonstra (50), Juraj Gasparovic (23)


SKILLS
Proficient :
C/C++, HTML, CSS, Java
Worked with :
Bootstrap, SQL, Python, Git, ReactJs
EDUCATION
L.J.INSTITUTE OF ENGINEERING AND TECHNOLOGY
|
2017 - 2021
|
B.TECH, INFORMATION AND COMMUNICATION TECHNOLOGY
|
CGPA 9.81
|
AMRITA VIDYALAYAM
|
2016 - 2017
|
CBSE, HSC
|
81.40%
|
AMRITA VIDYALAYAM
|
2014 - 2015
|
CBSE, SSC
|
CGPA 9.4
|
PROJECTS
Feasta
It is a Canteen Management System. Using this website student can order food online and payment can be
done by online/offline mode. Admin can handle Inventory Food Management and Generate reports.
Tools - HTML, CSS, Javascript, Bootstrap, Django
Smart Attendance System using Face Recognition
Student's Attendance is automatically taken using face recognition method. Recognition is done using the
data stored in the database and Attendance Excel sheet is created and updated dynamically.
Tools - Python, OpenCv, Numpy, Tkinter, Pillow, Openpyxl, HTML, CSS
Facial Expression Recognition
It classifies face based on the emotion shown in the facial expression into one of seven categories.
Tools - Python, OpenCv, Keras, CNN, Flask
Object Following Robot
Created a robot using IR sensors, Arduino. It will follow the object.
Tools - Arduino, Ultrasonic Sensor, IR Sensors
EXPERIENCE
Web Development Intern - Yuvaleads
|
Jun 2020 - Aug 2020
|
Worked on Laravel, PHP, Bootstrap, HTML, CSS and MySQL
|
|
ACHIEVEMENTS
Placed second at YI Hackathon hosted by
Young Indians, Ahmedabad
|
July 2020
|
Worked as a Team Member in Smart Gujarat
for New India Hackathon
|
February 2020
|
Worked as a Team Member in LJ Innovation
Village
|
January 2020
|


Name
Cost
Date
Priority
A very long expense name because I can so
$1000000
11/27/18
Low
A very long ex
$999999
A ver
$500000000000
$0


- GameEngine - Class in ControlLayer
-
Manages/controls one game session/scenario.
- GameEngine(SwingUICore, SoundEngine) - Constructor for class ControlLayer.GameEngine
-
Manages/controls one game session/scenario.
- GameMode - Enum in ModelLayer.Enumerations
-
Represents the selected game mode by the user.
- GameMode() - Constructor for enum ModelLayer.Enumerations.GameMode
-
- GameOver() - Method in class ControlLayer.GameEngine
-
Stops the frame rate triggering timer, orders the top level JFrame to show a popup message to the
user about the game is being ended.
- GameSettingsMenuBarMapTextureChanged(boolean) - Method in class ControlLayer.Controller
-
Sets the in-game map texture on or off.
- GameSettingsMenuBarMusicChanged(boolean) - Method in class ControlLayer.Controller
-
Directs the SoundEngine to turn on/off the background music.
- GameSettingsMenuBarSoundChanged(boolean) - Method in class ControlLayer.Controller
-
Directs the SoundEngine to turn on/off the in-game sounds.
- GCS_Car_ColdStart_Acceleration_Percentage - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_HighSpeedAcceleration_Ratio - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_NoAcceleration_Slowdown_Ratio - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_NormalAcceleration_Ratio - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_NormalAcceleration_SpeedLimit - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_RadicalAcceleration_Ratio - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_RadicalAcceleration_SpeedLimit - Static variable in class ControlLayer.SharedResources
-
- GCS_Car_Virtual_Speed_Max - Static variable in class ControlLayer.SharedResources
-
- GCS_CarNoAcceleration_Stop_Threshold - Static variable in class ControlLayer.SharedResources
-
- GCS_ControlKeys_Player_1 - Static variable in class ControlLayer.SharedResources
-
- GCS_ControlKeys_Player_2 - Static variable in class ControlLayer.SharedResources
-
- GCS_Maximum_Car_Grass_Speed - Static variable in class ControlLayer.SharedResources
-
- GCS_Maximum_Car_Reverse_Speed - Static variable in class ControlLayer.SharedResources
-
- GCS_Maximum_Car_Speed - Static variable in class ControlLayer.SharedResources
-
- get_Car() - Method in class ModelLayer.Player
-
Returns the associated car's model layer representation.
- get_CarDisplay() - Method in class ModelLayer.Car
-
Retrieves the JLabel associated with this car object.
- get_CollisionManager() - Static method in class ControlLayer.CurrentGameSession
-
Returns the only CollisionManager object instance of the game, which is used to calculate collisions
- get_CurrentPlayers() - Static method in class ControlLayer.CurrentGameSession
-
Getter for the CurrentPlayers
- get_GameEngine() - Method in class ControlLayer.Controller
-
Getter for the instantiated GameEngine.
- get_GameMode() - Static method in class ControlLayer.CurrentGameSession
-
Returns the currently set game mode (single player, side by side etc.)
- get_InGameScreen() - Method in class ViewLayer.SwingUICore
-
Returns the only instance of the InGameScreen.
- get_MapModel() - Static method in class ControlLayer.CurrentGameSession
-
Getter for the MapModel.
- get_MapView() - Static method in class ControlLayer.CurrentGameSession
-
Getter for the MapView
- get_PlayerName() - Method in class ModelLayer.Player
-
Returns the player's name.
- get_SelectedMapName() - Static method in class ControlLayer.CurrentGameSession
-
Getter for the SelectedMap
- GetAngleIndexFromAngle(float) - Method in class ModelLayer.Car
-
Searches within the SharedResources.CAR_Simulated_Angle_Values.length array to find the angle in the parameter.
- GetBackgroundMusic() - Static method in class ModelLayer.FileLoaders.AudioFileLoader
-
Loads in the background music of the game.
- GetBoundsAsRectangle() - Method in class ModelLayer.Car
-
Retrieves the car's current location as a rectangle.
- GetBoundsAsRectangle(Point) - Method in class ModelLayer.Car
-
Retrieves a car's hypothetical location as a rectangle.
- getCAR_Starting_Angle() - Method in class ModelLayer.MapML.MapModel
-
Getter for the cars starting angle.
- getCAR_StartingPoint_X_Player1() - Method in class ModelLayer.MapML.MapModel
-
Getter for the player 1 car's starting point's X coordinate.
- getCAR_StartingPoint_X_Player2() - Method in class ModelLayer.MapML.MapModel
-
Getter for the player 2 car's starting point's X coordinate.
- getCAR_StartingPoint_Y_Player1() - Method in class ModelLayer.MapML.MapModel
-
Getter for the player 1 car's starting point's Y coordinate.
- getCAR_StartingPoint_Y_Player2() - Method in class ModelLayer.MapML.MapModel
-
Getter for the player 2 car's starting point's Y coordinate.
- GetCarBounds(Rectangle) - Method in class ModelLayer.CollisionManagement.CarBounds
-
Returns the edges of the car described as an array of 4 lines forming a rectangle.
- GetCarCrashSound() - Static method in class ModelLayer.FileLoaders.AudioFileLoader
-
Loads in the sound effect played when two cars crash into each other.
- GetCarImages() - Method in class ViewLayer.Screens.InGameScr.CarInGameDisplayLabel
-
Asks the model layer car object to provide the car image files from the disk.
- GetCarImpactSound() - Static method in class ModelLayer.FileLoaders.AudioFileLoader
-
Loads in the sound effect played when a car hits an another non-car object.
- GetCarSelectionHolderPosition() - Method in class ViewLayer.Screens.LaunchScr.CarSelectionPanel
-
Calculates the on-screen position of the car selection JPanel.
- GetCrashedCarImage() - Method in class ModelLayer.Car
-
Retrieves an image from disk representing a crashed car.
- GetCurrentAngleIndex() - Method in class ModelLayer.Car
-
Returns the current angle represented as an index of the SharedResources.CAR_Simulated_Angle_Values array.
- GetFirstCarImageForHUD() - Method in class ViewLayer.Screens.InGameScr.CarInGameDisplayLabel
-
Returns an image of the car for the Heads Up Display to be displayed.
- GetLatestCarSpeedForHUD() - Method in class ModelLayer.Player
-
Returns the virtual (scaled) current speed of the car to be displayed by the HUD.
- GetMainMenuLocation() - Method in class ViewLayer.Screens.MainMenuScr.MainMenuScreen
-
Returns the size and location of the menu containing the buttons.
- GetMapObjects() - Method in class ModelLayer.MapML.MapModel
-
Gets the list of MapObjects which are used for collision detection.
- GetMapTextureImage() - Method in class ModelLayer.MapML.MapModel
-
Returns the maps' background texture as an Image.
- GetMotorPowerUpSound() - Static method in class ModelLayer.FileLoaders.AudioFileLoader
-
Loads in the sound effect played when the car is accelerating.
- GetNewCarImageIndexIfTurned(boolean) - Method in class ViewLayer.Screens.InGameScr.CarInGameDisplayLabel
-
Calculates which car image to use after a turn.
- GetPanelBoundSize() - Method in class ViewLayer.Screens.LaunchScr.MapSelectionPanel
-
Calculates the size of the panel based on the number of available maps.
- GetPlayerCarIconForHUD() - Method in class ModelLayer.Player
-
Returns the car's image to display in the Heads Up Display.
- GetRacingTrackEdgesAsLines(boolean) - Method in class ViewLayer.MapVL.MediumMapVL
-
Returnes the list of lines representing the edges of the racing track.
- GetStream(String) - Static method in class ModelLayer.FileLoaders.AudioFileLoader
-
Loads in an audio file as an AudioInputStream.
- GetVirtualSpeed() - Method in class ModelLayer.Car
-
Returns the current speed of the car.
- GO_GameOver_Message - Static variable in class ControlLayer.SharedResources
-
- Go_GameOver_Title - Static variable in class ControlLayer.SharedResources
-


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Nick Clegg unveils a new scheme to get 16- and 17-year-olds earning or learning again.
Today the Deputy Prime Minister Nick Clegg will unveil a pioneering scheme to get 16- and 17-year-olds who are out of work and not in education, earning or learning again.
As part of the Deputy Prime Minister’s Youth Contract, the coalition government will, for the first time, target funding to this group of teenagers through tailored support on a payment-by-results system.
Help will focus on at least 55,000 young people - those 16- and 17-year-old NEETs (Not in Education, Employment or Training) with no GCSEs at A* - C at the highest risk of long term disengagement. The Government is making £126m of new money available to give teenagers opportunities to train, work and get their lives on track.
Charities and businesses with expertise in supporting young people are being invited to bid for contracts worth up to £2,200 for every young person they help. Support will be tailored to suit individuals’ needs, and may include support to help them access and remain in education, training or an apprenticeship.
Unlike any past schemes for this age group, payment will depend on results. Organisations will receive an initial payment for taking young people on, followed by subsequent payments when they show progress - including remaining in education, undertaking apprenticeships, or holding down a job. To achieve the best results, the scheme will give total freedom to those providing support - as long as the end result is success for the young person.
Disengaged 16- and 17-year-olds are being singled out for special funding because of compelling evidence that being NEET in early life can leave a permanent scar on earning potential, with the effects on their careers still evident decades later. By the age of 42, someone who had frequent periods of unemployment in their teens is likely to earn 12-15 per cent less than their peers.
Announcing the funding at the Groundwork Hub in south east London, the Deputy Prime Minister said:
Sitting at home with nothing to do when you’re so young can knock the stuffing out of you for years. It is a tragedy for the young people involved - a ticking time bomb for the economy and our society as a whole. This problem isn’t new, but in the current economic climate we urgently need to step up efforts to ensure some of our most troubled teenagers have the skills, confidence and opportunities to succeed.
Many of them will have complex problems: truancy, teenage pregnancy, a lack of GCSEs and health problems. So helping them onto their feet will not be without challenges and Government cannot do this alone. But we all have a duty to reach out to the young people who can be hardest to reach. That’s why today I am calling on charities and other organisations at the coal face to work with Government to help tens and thousands of lost teenagers onto a brighter path.
Funding will be awarded to organisations across England with a proven track record in getting young people into education, work, apprenticeships, or training. Three areas - Liverpool, Leeds-Bradford-Wakefield and Newcastle-Gateshead - will be able to allocate their own pot of money as part of the Government City Deal agenda, aimed at giving more autonomy to England’s core cities.
Local authorities will be central to the success of the programme. They will work with successful providers to target those young people in their area who will benefit most, fitting this programme with other provision on offer locally.
Payment-by-results will free the charities to do what they know works for young people. Tightly controlled schemes are less effective with lower success rates. The package of support offered will be encouraged to be innovative, to use new methods, to do whatever is right to get that 16- or 17-year-old earning or learning again.
Children and Young People’s Minister Tim Loughton said:
We are committed to supporting those 16- and 17-year-olds who have found it hard to find training or work upon leaving school. We want them to receive personal, targeted support from experts who will give them the confidence, skills and motivation to stay in education or find a job with training.
Providers know how best to support young people back into education training and employment. It’s time we put them back on the road to success.
We are looking forward to receiving some innovative ideas that really work from experienced organisations in all sectors.
Data from the 2011 Labour Force Survey for Quarter 3 showed that 150,000 16- and 17-year-olds (11.9 per cent) were not in education, employment or training.
Research from the National Foundation for Educational Research (NfER) in 2009 showed that 40 per cent of 16- and 17-year-olds not in education, employment or training face significant barriers to re-engagement once they fall out of the system. They have a greater likelihood of long-term disengagement.
Survey data from the Longitudinal Study of Young People in England showed that whilst on average young people spent one-and-a-half months not in education, employment or training in the 21 months immediately following compulsory schooling, a significant minority - 11 per cent - did spend at least six months of that time not in education, employment or training.
The Young People’s Learning Agency (YPLA) will be responsible for awarding the contracts for the programme in England. The outline specification for the tender is published today and the deadline for the first stage is 5 March 2012. Shortlisted organisations will be invited to tender and contracts will be awarded in June, with provision getting off the ground as soon as possible after that. The specification and further information for potential bidders are available on the Contracts Finder website.
8.The funding available for each region will be broken down as follows:
| Region | Share of 16/17 NEET group | Funding (£) |
| SOUTH EAST (A) | 7.43% | 9,367,843 |
| SOUTH EAST (B) | 7.03% | 8,854,098 |
| LONDON NORTH | 6.72% | 8,463,731 |
| LONDON SOUTH | 3.89% | 4,900,791 |
| EAST OF ENGLAND | 10.87% | 13,695,096 |
| SOUTH WEST | 8.83% | 11,120,602 |
| WEST MIDLANDS | 11.50% | 14,488,508 |
| EAST MIDLANDS | 7.86% | 9,901,180 |
| LEEDS, BRADFORD AND WAKEFIELD | 4.50% | 5,666,452 |
| YORKS & HUMBER (remainder) | 8.54% | 10,758,640 |
| MANCHESTER & CHESHIRE | 7.31% | 9,215,141 |
| LIVERPOOL | 1.23% | 1,550,376 |
| MERSEYSIDE, LANCS & CUMBRIA | 7.77% | 9,790,009 |
| NEWCASTLE & GATESHEAD | 1.38% | 1,733,086 |
| NORTH EAST (remainder) | 5.15% | 6,494,447 |
| Total: | 100.00% | 126,000,000 |
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 21 February 2012
From: Department for Education Deputy Prime Minister's Office
Part of: Young people


Your gold: {{gold}}
(earns 10-20 gold)
(earns 5-10 gold)
(earns 2-5 gold)
(earns/takes 0-50 gold)
Activities:
{{value}}


CrimPapers
Articles published on 24 February 2020
On 24 February 2020, 4 new articles were published in 3 journals.
Italian Organized Crime Since 1950 by Maurizio Catino
Life Psychology and Significance Quest: A Complementary Approach to Violent Extremism and Counter-Radicalisation by Arie W. Kruglanski, Preben Bertelsen
Permanent Record by Paul McFarlane
The Evidence of Effectiveness: Beyond the Methodological Standards by Stephen V. Gies, Eoin Healy, Rachel Stephenson


An autonomous robot is a robot that performs behaviors or tasks with a high degree of autonomy.
Autonomous robotics is usually considered to be a subfield of artificial intelligence, robotics,
and information engineering.
The Main Parts of a Robot.
Control System At the most basic level, human beings and other animals survive through a principle called feedback


The wetlands of the Brazilian Pantanal host large concentrations of diverse wildlife species and hematophagous arthropods, conditions that favor the circulation of zoonotic arboviruses. A recent study from the Nhecolândia sub-region of Pantanal reported serological evidence of various flaviviruses, including West Nile virus and Ilheus virus (ILHV). According to the age of seropositive horses, at least three flaviviruses, including ILHV, circulated in the Brazilian Pantanal between 2005 and 2009. To extend this study, we collected 3,234 adult mosquitoes of 16 species during 2009 and 2010 in the same sub-region. Mosquito pool homogenates were assayed for infectious virus on C6/36 and Vero cell monolayers and also tested for flaviviral RNA by a group-specific real-time RT-PCR. One pool containing 50 non-engorged female specimens of Aedes scapularis tested positive for ILHV by culture and for ILHV RNA by real-time RT-PCR, indicating a minimum infection rate of 2.5 per 1000. Full-length genomic sequence exhibited 95% identity to the only full genome sequence available for ILHV. The present data confirm the circulation of ILHV in the Brazilian Pantanal.
Ilheus virus causes mainly asymptomatic infections in humans with rare reports of encephalitis in northern South America. Ilheus virus is believed to be maintained in zoonotic cycles between birds and mosquitoes in Central and South America. Aiming to detect Ilheus virus and other arboviruses in the Pantanal region of west-central Brazil, host-seeking mosquitoes were collected by aspiration as they landed on horses, research team members, and caimans. Resting mosquitoes were collected from the walls inside a local residence and additional flying mosquitoes were captured in light traps. We isolated a Brazilian strain of Ilheus virus from a pool of 50 Aedes scapularis mosquitoes that were collected while landing on a member of our research team, in April, 2010. Our finding confirms a recent report of Ilheus virus activity in the Pantanal derived from the detection of neutralizing antibodies in horses. The anthropophilic behavior of the infected mosquito(es) suggests a risk of Ilheus virus transmission from mosquitoes to humans in the region. We provide the virus' complete genomic sequence and present its phylogenetic relationship with other isolates.
Ilheus virus (ILHV) was first described in 1944, when it was isolated from Aedes and Psorophora spp. mosquitoes during an epidemiological investigation of yellow fever in the city of Ilhéus, state of Bahia, northeast Brazil [1] , [2] . According to the Ninth Report of the International Committee on Taxonomy of Viruses, ILHV is included in the Ntaya virus group [3] . ILHV causes mainly asymptomatic infections in humans with rare reports of encephalitis throughout northern South America [4] , [5] . Human infection with ILHV has been reported in Trinidad, Panama, Colombia, French Guyana, Brazil, Ecuador and Bolivia [6] , [7] , [8] , [9] , [10] , [11] , [12] .
ILHV is believed to be maintained in zoonotic cycles between birds and mosquitoes and has been isolated in Central and South America primarily from mosquitoes [13] , [14] , [15] , [16] . ILHV has been previously isolated from eight mosquito genera, but also from sentinel monkeys, man and birds. In antibody surveys, neutralizing antibodies for ILHV have been found in rodents, birds, sentinel monkeys and man [17] . In the 1990s, ILHV was isolated from wild birds in southeast Brazil [18] .
Little is known about ILHV infections in domestic animals. In the 1990s, a serological investigation conducted among equines from the Pantanal region of west-central Brazil found neutralizing antibodies to ILHV suggesting its circulation in the region [19] . In 2009, a flavivirus serosurvey conducted in the same area among equines from the Nhecolândia sub-region of the Pantanal detected evidence of past infection with, in increasing order of seroprevalence, Cacipacore virus (CPCV), West Nile virus (WNV), Saint Louis encephalitis virus (SLEV) and ILHV [20] .
The Brazilian Pantanal is a seasonally flooded surface of approximately 140,000 km 2. The area is divided into 11 sub-regions based on characteristics of seasonal floods, physiography and ecology. Nhecolândia is the second largest of these sub-regions with approximately 27,000 km 2 and the world's largest and most diverse area of subtropical lakes encompassing approximately 10,000 lakes [21] , [22] , and a human population of less than 22,500 in 2010 [23] .
The wetlands of the Brazilian Pantanal host large concentrations of diverse wildlife species and hematophagous arthropods, conditions that favor the circulation of zoonotic arboviruses. In spite of scarce data concerning arbovirus vectors in the area, the local movement of mosquito species previously reported as arbovirus vectors has been reported in the north and south of Pantanal [24] , [25] .
Serological surveys conducted in local horses have found neutralizing antibodies for at least eight arboviruses, including the bunyaviruses Tacaiuma virus and Maguari virus, the alphaviruses eastern equine encephalitis virus and western equine encephalitis virus and the flaviviruses CPCV, SLEV, WNV and ILHV [19] , [20] , [26] , [27] .
Despite the recent detection of neutralizing antibodies to various flaviviruses in horses from the Nhecolândia sub-region, circulation of these arboviruses in this area was never confirmed by virus isolation. Therefore, in an effort to detect flaviviruses currently being transmitted in this region, we collected and tested adult female mosquitoes for infectious virus and for flavivirus RNA detection.
In October 2009, April and October 2010, attempts to collect adult mosquitoes were undertaken at sites randomly selected within eight beef cattle ranches comprising a large area of approximately 1,500 km 2 in the Nhecolândia sub-region of Pantanal, west-central Brazil (18°18′–19°15′S, 57°05′–55°24′W) ( Figure 1). The collections for this study were authorized by the owners or residents of the sampled properties and also by the Animal Ethics Committee of Fundação Oswaldo Cruz (License CEUA-Fiocruz LW-1/12, protocol P-74/10-5) and the Brazilian Institute of Environment and Natural Resources (licenses IBAMA 18363-1/2009 and 18363-2/2010).
A total of 50 attempts to collect adult mosquitoes were undertaken, but only 39 were positive for mosquitoes. From 11 unsuccessful attempts, five were undertaken in October 2009 and six in October 2010, during the local dry season. Among the 39 positive collections, 12 were undertaken in October 2009, 15 in April 2010 and 12 in October 2010. Seventeen collections were conducted using CDC light traps, six collections using manual aspirators from horses, ten on research team members, three on caimans and three using manual aspirators while landing on walls inside a local residence. Mosquitoes were transported alive to a field laboratory where they were immobilized by cold anesthesia and were identified by species based on morphologic appearance according to taxonomic keys [28] , [29] . The mosquitoes were grouped into pools of up to 50 individuals that were sorted with respect to collection method, site of capture, species and gender and then stored in liquid nitrogen.
Mosquito samples were assayed for viral cytopathic effect (CPE) on C6/36 and plaque formation on Vero cell cultures using standard protocols [30] . Briefly, pools from one up to 50 mosquito specimens were placed in polypropylene capped 2 mL tubes with copper-clad steel beads and 1 mL of BA-1 diluent (1× Medium 199-H, 0.05 M TRIS-HCI, 1% Bovine serum albumin, 4 mM L-Glutamine, 0.35 g/L Sodium bicarbonate, 200 U/mL Penicillin, 200 µg/mL Streptomycin, 2 µg/mL Amphotericin B and 50 µg/mL Gentamycin). A 0.1 mL aliquot of each triturated mosquito pool was inoculated in duplicate onto C6/36 and Vero monolayers prepared in 6-well polystyrene culture plates. The plates were maintained at 28°C and 37°C, respectively, for 1 h with discrete motion every 15 min to optimize virus adsorption. At the end of this period, 3 mL of maintenance media (1× DMEM, Sterile water, 2% Fetal bovine serum, 7.5% Sodium bicarbonate, 1 M HEPES, Non-essentials amino acids, Sodium pyruvate, 200 U/mL Penicillin, 200 µg/mL Streptomycin, 2 µg/mL Amphotericin B and 50 µg/mL Gentamycin) were added to the C6/36 cultures and 3 mL of 0.5% agarose in overlay media with 2× Ye-Lah overlay medium (10× Earle's BBS, Ye-Lah medium, 2% Fetal bovine serum and Sterile distilled water), 7.5% Sodium bicarbonate, 200 U/mL Penicillin, 200 µg/mL Streptomycin, 2 µg/mL Amphotericin B and 50 µg/mL Gentamycin) were added to the Vero cultures, respectively. Plates with C6/36 monolayers were incubated at 28°C in 5% CO
A Sybr green real-time RT-PCR method for the universal detection of flaviviruses was performed to test all mosquito samples for flaviviral nucleic acid. First, RNA was extracted from triturated mosquitoes, and then tested for flavivirus genus-specific viral RNA by real-time RT-PCR using the QiaAmp viral RNA kit (Qiagen, Valencia, CA, USA). The protocol chosen is based on the amplification of a 269–272 nucleotide region at the N terminus of the NS5 gene [31] . Amplicons of samples that presented a melting curve peak above 90 RFU at a temperature above 75°C were considered positive and selected for purification and cDNA sequencing using both forward and reverse primers in separate reactions. DNA amplifications and sequencing reactions were completed on a DNA Engine PTC-200 thermal cycler (Bio-Rad Laboratories, Hercules, CA, USA) and analyzed on an ABI 3130 genetic analyzer (Applied Byosystems, Foster City, CA, USA). Sequences were assembled using Lasergene 9 software (DNA STAR, Madison, WI, USA) and subjected to a BLASTn analysis.
Amplification of total RNA was performed utilizing the SuperScript III one-step RT-PCR kit (Invitrogen, Carlsbad, CA, USA) and universal NS5 specific flavivirus primers (cFD3 and FU1) [32] . An initial fragment of approximately 1,000 base pairs was generated and subjected to GenBank BLAST analysis for identification. Once initial sequencing of the NS5 region indicated high identity with ILHV, primers for full-length sequencing were designed utilizing Primer 3 software in Geneious R6 based on the full-length ILHV sequence in GenBank (NC_009028). Fragments were extracted from an agarose gel with the Qiagen Qiaquick kit and subjected to nucleotide sequencing using BigDye Terminator V3.1 Cycle Sequencing kit (Applied Biosystems, Foster City, CA, USA) on a DNA Engine PTC-200 thermal cycler (Bio-Rad Laboratories, Hercules, CA, USA). The products were purified using BigDye Xterminator product (Applied Biosystems, Foster City, CA, USA) and then subjected to an ABI 3130 Genetic Analyzer (Applied Byosystems, Foster City, CA, USA). Sequencing files were aligned and analyzed utilizing Geneious R6 software. The full-length sequence was aligned with homologous flavivirus genomes utilizing MAFFT v7.017 [33] , and trees analyzing the full genome sequence as well as the individual NS5 and E genes were generated using maximum-likelihood analyses with a PhyML algorithm in SeaView 4.0 [34] with 1,000 bootstrap replicates.
A total of 3,234 mosquitoes of at least 16 species were collected from five out of the eight ranches where mosquito collection attempts were undertaken ( Table 1 ). Mosquitoes of at least 11 species were identified from human landing collections, 11 from equine landing collections, 11 from CDC light traps, four from caimans and only one indoor.
| OCTOBER 2009 | APRIL 2010 | OCTOBER 2010 | |||||||||||||||||||||||||||||
| CDC | EQ | H | S-T | CDC | EQ | H | S-T | CDC | EQ | H | C | I | S-T | Total | |||||||||||||||||
| NE | E | NE | E | NE | E | NE | E | M | NE | E | M | NE | E | NE | E | M | NE | E | M | NE | E | NE | E | NE | E | M | |||||
| Mansonia spp. | 1 | 1 | 44 | 1 | 384 | 259 | 9 | 3 | 700 | 1 | 1 | 702 (21.7%) | |||||||||||||||||||
| Culex spp. | 0 | 384 | 6 | 101 | 26 | 4 | 1 | 8 | 531 | 531 (16.4%) | |||||||||||||||||||||
| Aedes scapularis | 5 | 2 | 3 | 126 | 6 | 142 | 20 | 1 | 61 | 20 | 139 | 7 | 248 | 14 | 2 | 41 | 13 | 70 | 460 (14.2%) | ||||||||||||
| Culex quinquefasciatus | 8 | 2 | 10 | 25 | 1 | 1 | 27 | 50 | 8 | 57 | 1 | 87 | 10 | 118 | 331 | 368 (11.4%) | |||||||||||||||
| Mansonia pseudotitillans | 2 | 15 | 17 | 0 | 1 | 131 | 45 | 5 | 14 | 196 | 213 (6.6%) | ||||||||||||||||||||
| Mansonia titillans | 19 | 5 | 1 | 45 | 70 | 13 | 20 | 48 | 81 | 42 | 8 | 50 | 201 (6.2%) | ||||||||||||||||||
| Culex chidesteri | 0 | 146 | 27 | 2 | 175 | 175 (5.4%) | |||||||||||||||||||||||||
| Anopheles Nyssorhynchus spp. | 1 | 1 | 9 | 1 | 25 | 21 | 12 | 68 | 90 | 90 | 159 (4.9%) | ||||||||||||||||||||
| Anopheles Nyssorhynchus argyrotarsis | 0 | 1 | 69 | 23 | 8 | 101 | 38 | 2 | 40 | 141 (4.4%) | |||||||||||||||||||||
| Culex declarator | 0 | 38 | 7 | 2 | 47 | 47 (1.5%) | |||||||||||||||||||||||||
| Psorophora albigenu | 1 | 32 | 4 | 37 | 1 | 2 | 3 | 5 | 5 | 45 (1.4%) | |||||||||||||||||||||
| Anopheles Nyssorhynchus triannulatus s.l. | 0 | 2 | 2 | 36 | 6 | 42 | 44 (1.4%) | ||||||||||||||||||||||||
| Mansonia amazonenses | 29 | 29 | 0 | 2 | 7 | 9 | 38 (1.2%) | ||||||||||||||||||||||||
| Mansonia humeralis | 0 | 2 | 22 | 24 | 24 (0.7%) | ||||||||||||||||||||||||||
| Uranotaenia spp. | 2 | 2 | 17 | 3 | 20 | 1 | 1 | 23 (0.7%) | |||||||||||||||||||||||
| Culex coronator | 0 | 16 | 16 | 16 (0.5%) | |||||||||||||||||||||||||||
| Aedeomyia squamipennis | 0 | 12 | 1 | 13 | 2 | 2 | 15 (0.5%) | ||||||||||||||||||||||||
| Psorophora spp. | 0 | 1 | 8 | 2 | 11 | 11 (0.3%) | |||||||||||||||||||||||||
| Uranotaenia lowii | 0 | 7 | 1 | 8 | 8 (0.2%) | ||||||||||||||||||||||||||
| Anopheles Nyssorhynchus albitarsis s.l. | 1 | 1 | 6 | 6 | 7 (0.2%) | ||||||||||||||||||||||||||
| Psorophora ciliata | 2 | 1 | 3 | 1 | 1 | 4 (0.1%) | |||||||||||||||||||||||||
| Anopheles sp. | 0 | 1 | 1 | 1 (0.03%) | |||||||||||||||||||||||||||
| Aedes stegomya spp. | 0 | 1 | 1 | 1 (0.03%) | |||||||||||||||||||||||||||
| Total | 39 | 9 | 5 | 250 | 10 | 313 | 734 | 10 | 107 | 601 | 331 | 1 | 286 | 14 | 2084 | 55 | 9 | 57 | 296 | 53 | 1 | 26 | 2 | 97 | 26 | 87 | 10 | 118 | 837 | 3234 (100%) |
CDC- Outdoors Centers for Disease Control light trap; EQ- Equine landing collections; H- Human landing collections; NE- Non-engorged; E- Engorged; C- Caiman landing collections; I- Indoor collections; M- Male; S-T- Sub-total.
Among the 1,297 specimens caught landing on horses, the most common species was Mansonia pseudotitillans ( n = 177; 13,6%). Interestingly, all the specimens were only collected in October 2010, indicating a marked fluctuation of this species in the region. On the other hand, among all different methods of capture used, Uranotaenia lowii, Cx. coronator, Cx. declarator, Cx. chidesteri and Ma. humeralis were only detected in the April collections.
Among the mosquitoes identified to species, Ae. scapularis was the most prevalent with 460 (14.2%) specimens of all mosquitoes captured. Most were caught while attempting to acquire blood from humans (n = 294; 64%) and horses (n = 87; 18.7%) while only 54 (11.7%) were captured on caimans, 26 (5.7%) in CDC light traps, and none indoors, indicating anthropophilic behavior with no evidence for endophily. Ae. scapularis was the most abundant species identified in October 2009 and in April 2010, whereas Cx. quinquefasciatus was the most prevalent species among mosquitoes collected in October, 2010.
Ae. scapularis tested positive for ILHV by culture and for ILHV RNA by real-time RT-PCR, indicating a minimum infection rate of 2.5 per 1,000. Among the 331 specimens of Cx. quinquefasciatus collected in October 2010, 215 (64.9%) were removed from the walls of a local residence, 115 (34.7%) were obtained using CDC light traps and only one (0.3%) specimen was caught while blood-feeding on a horse, confirming its endophilic behavior.
A total of 292 mosquito pools were assayed by cell culture and real-time RT-PCR. One pool of 50 non-engorged female Ae. scapularis demonstrated plaques on Vero cells and CPE in C6/36 cells on the 3 rd and 6 th day post-inoculation, respectively. A 1,034-bp cDNA amplicon was obtained, and identified as closely related to ILHV. The NCBI file with the highest identity was the Ilheus virus isolate PE163615 (GenBank: EF396950.1) and had an e-value of 0.0, a maximum score of 1688, coverage of 95%, and a maximum identity of 98%.The complete genome (10,759-bp) was sequenced and the alignment with the only full-length genome available in GenBank revealed a 95% similarity to the original strain of ILHV, isolated in Brazil in 1944 (NCBI Reference Sequence: NC_009028) ( Figure 2). Phylogenetic analysis grouped the NS5 and Envelope sequences of our isolate with Ilheus virus isolate FSE800 (GenBank: EF396947.1) ( Figure 3) isolated from a human case in Ecuador [11] . A total of 44 nonsynonymous amino acid changes were identified between our isolate and the GenBank Ilheus 1944 isolate. Three nucleotide inserts were identified in the capsid region creating an amino acid shift between amino acid residue number 24 and 37 (nucleotides 166–204) ( Figure 4; Table 2 ). The genome sequence of our isolate of ILHV designated as BrMS-MQ10 was deposited in the publicly accessible database GenBank under accession number KC481679. This strain was isolated from mosquitoes landing on research team members on April 18 th, 2010 from 5:35 to 7:00 pm in a natural drying lake near an artificial reservoir. Several additional viruses were detected by mosquito cell culture and/or real-time RT-PCR that did not align with known sequences on GenBank. These viruses will be described separately.
Maximum-likelihood tree obtained from full coding sequences using a GTR substitution model. Branches are labeled with bootstrap values that represent the percentage of 1,000 replicates in which the members of a given clade were predicted to relate in the same topography.
Neighbor-joining trees obtained from (A) available NS5 sequences and (B) available Envelope sequences. Percentage above the branches represents bootstrap values from 1,000 replicates.
(A) Alignment between capsid amino acid 24 and 37 (nucleotides 166–204) and (B) the corresponding sequence chromatograph for the same region of BrMS-MQ10.
| Region | Nucleotide | Amino Acid | ILHV 1944 | ILHV BrMS-MQ10 |
| 5′ UTR | 20 | - | - | A (insert) |
| Capsid | 168 | 25 | - | T (insert) |
| 186 * | 31 | - | G (insert) | |
| 190 * | 32 | T | C | |
| 199 * | 35 | - | T (insert) | |
| 205 | 37 | Asp | Ser | |
| 208 | 38 | Val | Gly | |
| 211 | 39 | Arg | Lys | |
| 220 | 42 | Pro | Ile | |
| 440 | 116 | Ala | Val | |
| Pre | 473 | 10 | Asp | Gly |
| Env | 1391 | 147 | Ile | Thr |
| 2052 | 367 | Lys | Asn | |
| 2123 | 391 | Asn | Ser | |
| NS1 | 3053 | 200 | Phe | Tyr |
| 3061 | 202 | Gln | Glu | |
| 3068 | 205 | Thr | Lys | |
| 3385 | 310 | Asn | Asp | |
| 3438 | 328 | Glu | Asp | |
| 3454 | 333 | Val | Met | |
| NS2A | 3590 | 25 | Arg | Lys |
| 4124 | 203 | Ala | Val | |
| NS3 | 5027 | 147 | Thr | Ile |
| 5047 | 153 | Ile | Lys | |
| 5049 | 154 | Ile | Lys | |
| 5057 | 157 | Glu | Ala | |
| 5061 | 158 | Arg | Ser | |
| 5255 | 223 | Val | Ala | |
| 5366 | 260 | Ala | Val | |
| 5371 | 261 | Arg | Cys | |
| 6311 | 575 | Val | Asp | |
| 6314 | 576 | Arg | Asn | |
| 6318 | 577 | Gly | Asn | |
| 6321 | 578 | Asp | Glu | |
| 6324 | 579 | Pro | Val | |
| 6328 | 580 | Val | Ile | |
| NS4A | 6646 | 68 | Thr | Ala |
| NS4B | 6947 | 20 | Ser | Thr |
| 6970 | 27 | Thr | Ala | |
| 6978 | 30 | Gln | His | |
| NS5 | 9330 | 559 | Asp | Glu |
| 9509 | 619 | Ala | Val | |
| 9790 | 712 | Gly | Ser | |
| 10162 | 836 | Trp | Gly | |
| 10180 | 842 | Ile | Leu | |
| 10310 | 886 | Cys | Tyr | |
| 3′UTR | 10383 | - | C | A |
| 10504 | - | T | C | |
| 10552 | - | - | C (insert) | |
| 10562 | - | C | T | |
| 10645 | - | G | T | |
| 10731 | - | A | T | |
| 10754 | - | T | - |
Falls in a region where inserts have offset the alignment (see figure 4).
In the present work we confirm ILHV activity in the Nhecolândia sub-region of Pantanal, through the isolation of ILHV from a pool of Ae. scapularis, which was the most prevalent mosquito species identified, and one that has transmitted ILHV efficiently in laboratory vector competence studies [35] . The anthropophilic behavior, relatively high prevalence, and susceptibility to infection (minimum infection rate observed 2.5 per 1,000) implicate Ae. scapularis as a suspect vector of medical importance for ILHV in the Brazilian Pantanal. This species is known for its gonotrophic discordance, a trait that amplifies its importance as a vector [36] .
The isolated strain, BrMS-MQ10 had 44 nonsynonymous mutations identified as compared to the only other ILHV full genome sequence available in GenBank. Interestingly, there were three individual nucleotide insertions identified between codon 24 and 37 of the capsid region. The capsid protein is known to form secondary structures that likely indicate the protein interacts with itself during nucleocapsid assembly [37] . Similarly, capsid has been implicating with modulating cellular pathways as well as plays a role in cis-acting interactions with other regions of the viral genome [38] , [39] . Being only the isolate of ILHV with a full genome sequence record, the importance of these changes in the capsid region are as yet undefined. Future studies should strive to characterize the differences between the two known isolates and determine the significance of insertions in that region of the capsid.
Much remains undiscovered regarding mosquito populations in the Pantanal region. Four mosquito species, including Ma. pseudotitillans, Anopheles argyritarsis, Cx. coronator and Ur. lowii, are herein reported for the first time in the Nhecolândia sub-region. The abundance of several mosquito species differed greatly compared with a study conducted in the same region in 2007 [25] . This marked fluctuation of local mosquito populations was probably due to variations in annual rainfall and may influence arbovirus transmission dynamics in the region.
Little is known about human health conditions in the Brazilian Pantanal [40] . The previously reported high prevalence of neutralizing antibodies for ILHV in horses [20] combined with our isolation of ILHV in local mosquitoes confirm the activity of an arbovirus of potential medical importance in the region. The isolation of ILHV infection in mosquitoes while attempting to blood feed on a human warrants further investigation of this virus by the Brazilian arbovirus surveillance program and local physicians.
We thank the ranch workers João Fernandes, Ramon Muniz Almada, Marcelo Martins Dias, Marcio da Silva, Vandir Dias da Silva, Oziel Alex da Silva, Luis Ferreira de Arruda, Leandro Correa Ferreira and João Marcelino de Arruda. We thank Thierry Tomich, Marcia Furlan, Marcos Tadeu and all staff from Embrapa Pantanal as well as the ranch owners for granting access for mosquito collections. We thank Kristy Burkalther, Jason Velez, Janae Stovall and Karen Burroughs from CDC provided laboratory assistance. In the memory of Hermann G. Schatzmayr.


Login/SignUp
Home
Videos
Images
Musics
SignUp
Required Fields are followed by *
Please SignUp
SignUp


Female drug dealer falls in QC bust
by Alfred P. DalizonAGENTS of the Philippine Drug Enforcement Agency shortly after noon yesterday arrested a 23-year-old woman who sold 500 grams of shabu worth P3.4 million to an undercover officer in Novaliches, Quezon City, PDEA chair, Director General Aaron N. Aquino said.
Suspect Roselle Bolivar, a jobless resident of Pangarap Village, Caloocan City yielded five knot-tied transparent plastic packets each containing 100 grams of the so-called ‘poor man’s cocaine’ during the buy-bust operation at the parking lot of a shopping mall in Barangay Pasong Putik in Novaliches at 12:45 p.m. yesterday, the official said.
Aquino said that undercover officers of the PDEA National Capital Region under Director Joel Plaza and the PDEA Regional Special Enforcement Team conducted the sting following weeks of surveillance and eventual drug negotiation.
The suspect will be facing non-bailable charges for violation of Section 5 (Sale of Dangerous Drugs) of Article II of the Republic Act 9165 otherwise known as “The Comprehensive Dangerous Drugs Act of 2002.”
Aquino said that the suspect is now being held at the PDEA lock-up facility in Q.C.


@(title: String)(content: Html)
Description
Follow us on our social networks!
The information presented on this site about Magic: The Gathering, both literal and graphical, is copyrighted by Wizards of the Coast.
MTGU 2014 © All Right Reserved.


Wouldn't it be great to have our content in multiple containers? How about putting it all over an image background? And wouldn't it be neat if we could have the content flow there, without us having to mark it up that way? Not long ago, this was impossible. But now that we have CSS Regions, we can make content flow from one container into the next — and we can handle these containers like regular DOM objects. This may all sound very confusing, but you'll know what we mean by the end of this article.
Demonstrate this great idea of yours, then
How does it work?
We created a

(or, in the case of IE10, an iframe - but more on that later) which contains all
our content. We also created some empty "region"

elements. These regions are the elements we
will fill with whatever is in the content div. This is done by setting flow-into: myregion
on the content div, and
flow-from: myregion
on the region div.
Now we've got the basics firing on all cylinders, we can style our region divs as we see fit. You'll notice that if you add content to the content div (or the iframe), the content flows through all the region boxes.
In IE10, that's about as far as this feature will take you feature (still quite awesome though, right?). The spec, as
implemented in Webkit Nightlies and Chrome Canary, has a lot more to offer though. We can control how the elements
should break across regions (break-before/after/inside: region/avoid-region
), how text should be styled within a
specific region (with the @region
rule), and how the region should overflow (region-overflow: auto/break
).
Useful?
This powerhouse of a feature allows us to easily build modern designs and make them highly flexible at the same time. The uses are virtually endless, so we won't even attempt to list them. So yeah, very useful indeed.
Great, but can I use it today?
We hate to break it to you, but unfortunately you can't. The implementation that comes closest to the spec is the one in Chrome Canary, but even in that browser you have to enable the "Experimental WebKit Features" in about:flags. The IE10 version is slightly crippled as it only works with iframes. In conclusion, we think this would an awesome feature, but for now we have to wait until gains wider support (browser vendors, this is your cue!).
Show me the source!
Feel free to look around the differente source files we used for this example.


User Management System
All User
New User
Use the below from to create a new account
Name
Email
Gender
Male
Female
Status
Active
Inactive
Save


Resize the window for a new color!